decl str docsclient hook global WinSetOption filetype=man %{ addhl group man-highlight addhl -group man-highlight regex ^\S.*?$ 0:blue addhl -group man-highlight regex ^\h+-+[-a-zA-Z_]+ 0:yellow addhl -group man-highlight regex [-a-zA-Z_.]+\(\d\) 0:green hook window -group man-hooks NormalKey man set buffer tabstop 8 } hook global WinSetOption filetype=(?!man).* %{ rmhl man-higlight rmhooks window man-hooks } def -hidden -shell-params _man %{ %sh{ manout=$(mktemp /tmp/kak-man-XXXXXX) colout=$(mktemp /tmp/kak-man-XXXXXX) MANWIDTH=${kak_window_width} man "$@" > $manout retval=$? col -b > ${colout} < ${manout} rm ${manout} if [ "${retval}" -eq 0 ]; then echo "${output}" | echo "edit! -scratch '*man*' exec |cat${colout}gk nop %sh{rm ${colout}} set buffer filetype man" else echo "echo -color Error %{man '$@' failed: see *debug* buffer for details }" rm ${colout} fi } } def -shell-params \ -shell-completion %{ prefix=${1:0:${kak_pos_in_token}} for page in /usr/share/man/*/${prefix}*.1.gz; do candidate=$(basename $page .1.gz) case $candidate in *\*) ;; *) echo $candidate ;; esac done } \ man %{ %sh{ [ -z "$@" ] && set -- "$kak_selection" echo "eval -try-client %opt{docsclient} _man $@" } }