Add support for subcommands in __fish_man_page

This commit adds a feature that after typing "git add" and pressing
"alt+h", the manpage for "git-add" instead of "git" would be displayed.

The new logic takes the first argument which doesn't start with a dash
and tries to display manpage for "command-argument"; it falls back to
"man command" it the first try doesn't succeed.

Fixes #3618.
This commit is contained in:
Radomír Bosák 2016-12-26 14:27:38 +01:00 committed by Kurtis Rader
parent 52c7ebe502
commit f9835b5077

View file

@ -1,4 +1,24 @@
function __fish_man_page function __fish_man_page
man (basename (commandline -po; echo)[1]) ^/dev/null # Get all commandline tokens not starting with "-"
set -l args (commandline -po | string match -rv '^-')
# If commandline is empty, exit.
if not set -q args[1]
printf \a
return
end
# If there are at least two tokens not starting with "-", the second one might be a subcommand.
# Try "man first-second" and fall back to "man first" if that doesn't work out.
set -l maincmd (basename $args[1])
if set -q args[2]
man "$maincmd-$args[2]" ^/dev/null
or man "$maincmd" ^/dev/null
or printf \a
else
man "$maincmd" ^/dev/null
or printf \a or printf \a
end end
commandline -f repaint
end