def -hidden -params 1..2 _doc-open %{ %sh{ manout=$(mktemp /tmp/kak-man-XXXXXX) colout=$(mktemp /tmp/kak-man-XXXXXX) MANWIDTH=${kak_window_width} man "$1" > $manout retval=$? col -b -x > ${colout} < ${manout} rm ${manout} if [ "${retval}" -eq 0 ]; then printf %s\\n " edit! -scratch '*doc*' exec |cat${colout}gg nop %sh{rm ${colout}} set buffer filetype man " if [ $# -gt 1 ]; then needle=$(printf %s\\n "$2" | sed 's,<,,g') printf %s\\n "try %{ exec '%(?i)^\h+[^\n]*?\Q${needle}\E\'' } catch %{ exec gg }" fi else printf %s\\n "echo -color Error %{doc '$@' failed: see *debug* buffer for details}" rm ${colout} fi } } def -params 1..2 \ -shell-candidates %{ find "${kak_runtime}/../doc/kak/manpages/" -type f -iname "*.gz" -printf '%f\n' | while read l; do printf %s\\n "${l%.*}" done } \ doc -docstring "Open a buffer containing the documentation about a given subject" %{ %sh{ readonly PATH_DOC="${kak_runtime}/../doc/kak/manpages/${1}.gz" shift if [ ! -f "${PATH_DOC}" ]; then printf %s\\n "echo -color Error No such doc file: ${PATH_DOC}" exit fi printf %s\\n "eval -try-client %opt{docsclient} _doc-open ${PATH_DOC} $@" } }