From 25d0b2dfbd4f4c915a9c04e29a97b82ebd4e612c Mon Sep 17 00:00:00 2001 From: wurza Date: Thu, 21 May 2020 20:24:43 +0200 Subject: [PATCH] man: look for man page for subcommands (#8798) --- plugins/man/man.plugin.zsh | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/plugins/man/man.plugin.zsh b/plugins/man/man.plugin.zsh index 3ab15d323..dcba613ae 100644 --- a/plugins/man/man.plugin.zsh +++ b/plugins/man/man.plugin.zsh @@ -16,16 +16,22 @@ man-command-line() { # if there is no command typed, use the last command [[ -z "$BUFFER" ]] && zle up-history - # prepend man to only the first part of the typed command + # if typed command begins with man, do nothing + [[ "$BUFFER" = man\ * ]] && return + + # get command and possible subcommand # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags - [[ "$BUFFER" != man\ * ]] && BUFFER="man ${${(Az)BUFFER}[1]}" + local -a args + args=(${${(Az)BUFFER}[1]} ${${(Az)BUFFER}[2]}) + + # check if man page exists for command and first argument + if man "${args[1]}-${args[2]}" >/dev/null 2>&1; then + BUFFER="man $args" + else + BUFFER="man ${args[1]}" + fi } + zle -N man-command-line # Defined shortcut keys: [Esc]man bindkey "\e"man man-command-line - - -# ------------------------------------------------------------------------------ -# Also, you might want to use man-preview included in 'osx' plugin -# just substitute "man" in the function with "man-preview" after you included OS X in -# the .zshrc