From f9835b5077e6aa23db2aa63ecc88b43fc36a2eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radom=C3=ADr=20Bos=C3=A1k?= Date: Mon, 26 Dec 2016 14:27:38 +0100 Subject: [PATCH] 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. --- share/functions/__fish_man_page.fish | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/share/functions/__fish_man_page.fish b/share/functions/__fish_man_page.fish index 718a93c06..8bc32b76f 100644 --- a/share/functions/__fish_man_page.fish +++ b/share/functions/__fish_man_page.fish @@ -1,4 +1,24 @@ function __fish_man_page - man (basename (commandline -po; echo)[1]) ^/dev/null - or printf \a + # 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 + end + + commandline -f repaint end