Use complete-command for the :doc command

This commit is contained in:
Maxime Coste 2022-10-19 20:35:05 +11:00
parent d1bfc5ecdc
commit e43c7d6aba

View File

@ -134,34 +134,7 @@ define-command -params 1 -hidden doc-render %{
map buffer normal <ret> :doc-follow-link<ret> map buffer normal <ret> :doc-follow-link<ret>
} }
define-command -params 0..2 \ define-command doc -params 0..2 -menu -docstring %{
-shell-script-candidates %{
case "$kak_token_to_complete" in
0)
find -L \
"${kak_config}/autoload/" \
"${kak_runtime}/doc/" \
"${kak_runtime}/rc/" \
-type f -name "*.asciidoc" 2>/dev/null |
sed 's,.*/,,; s/\.[^.]*$//';;
1)
page=$(
find -L \
"${kak_config}/autoload/" \
"${kak_runtime}/doc/" \
"${kak_runtime}/rc/" \
-type f -name "$1.asciidoc" 2>/dev/null |
head -1
)
if [ -f "${page}" ]; then
awk '
/^==+ +/ { sub(/^==+ +/, ""); print }
/^\[\[[^\]]+\]\]/ { sub(/^\[\[/, ""); sub(/\]\].*/, ""); print }
' < $page | tr '[A-Z ]' '[a-z-]'
fi;;
esac
} -menu \
doc -docstring %{
doc <topic> [<keyword>]: open a buffer containing documentation about a given topic doc <topic> [<keyword>]: open a buffer containing documentation about a given topic
An optional keyword argument can be passed to the function, which will be automatically selected in the documentation An optional keyword argument can be passed to the function, which will be automatically selected in the documentation
@ -192,4 +165,31 @@ define-command -params 0..2 \
} }
} }
complete-command doc shell-script-candidates %{
case "$kak_token_to_complete" in
0)
find -L \
"${kak_config}/autoload/" \
"${kak_runtime}/doc/" \
"${kak_runtime}/rc/" \
-type f -name "*.asciidoc" 2>/dev/null |
sed 's,.*/,,; s/\.[^.]*$//';;
1)
page=$(
find -L \
"${kak_config}/autoload/" \
"${kak_runtime}/doc/" \
"${kak_runtime}/rc/" \
-type f -name "$1.asciidoc" 2>/dev/null |
head -1
)
if [ -f "${page}" ]; then
awk '
/^==+ +/ { sub(/^==+ +/, ""); print }
/^\[\[[^\]]+\]\]/ { sub(/^\[\[/, ""); sub(/\]\].*/, ""); print }
' < $page | tr '[A-Z ]' '[a-z-]'
fi;;
esac
}
alias global help doc alias global help doc