diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:05:35 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:05:35 +0000 |
commit | c175751b501a3a4cb40ad4787340a597ea769be4 (patch) | |
tree | f5cd9e9bf7dbfb5b91569181f260965c0a3cb8ad /Functions/run-help | |
download | zsh-c175751b501a3a4cb40ad4787340a597ea769be4.tar.gz zsh-c175751b501a3a4cb40ad4787340a597ea769be4.tar.xz zsh-c175751b501a3a4cb40ad4787340a597ea769be4.zip |
Initial revision
Diffstat (limited to 'Functions/run-help')
-rwxr-xr-x | Functions/run-help | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Functions/run-help b/Functions/run-help new file mode 100755 index 000000000..a8109e3ea --- /dev/null +++ b/Functions/run-help @@ -0,0 +1,72 @@ +#!/usr/local/bin/zsh +# +# Figure out where to get the best help, and get it. +# +# Install this function by placing it in your FPATH and then +# adding to your .zshrc the lines: +# unalias run-help +# autoload run-help +# + +emulate -R zsh +setopt localoptions + +# Check whether Util/helpfiles has been used to generate zsh help +if [[ $1 == "-l" ]] +then + if [[ -n "${HELPDIR:-}" ]] + then + echo 'Here is a list of topics for which help is available:' + echo "" + print -rc $HELPDIR/*(:t) + else + echo 'There is no list of help topics available at this time' + fi + return 0 +elif [[ -n "${HELPDIR:-}" && -r $HELPDIR/$1 && $1 != compctl ]] +then + ${=PAGER:-more} $HELPDIR/$1 + return $? +fi + +# No zsh help, use "whence" to figure out where else we might look +local what places newline=' +' +integer i=0 didman=0 + +places=( "${(@f)$(builtin whence -va $1)}" ) + +while ((i++ < $#places)) +do + what=$places[$i] + builtin print -r $what + case $what in + (*( is an alias)*) + [[ ${what[(w)6]:t} != ${what[(w)1]} ]] && run-help ${what[(w)6]:t} + ;; + (*( is a * function)) + builtin functions ${what[(w)1]} | ${=PAGER:-more} + ;; + (*( is a * builtin)) + case ${what[(w)1]} in + (compctl) man zshcompctl;; + (bindkey) man zshzle;; + (*setopt) man zshoptions;; + (*) man zshbuiltins;; + esac + ;; + (*( is hashed to *)) + man ${what[(w)-1]:t} + ;; + (*) + ((! didman++)) && man $1 + ;; + esac + if ((i < $#places && ! didman)) + then + builtin print -nP "%SPress any key for more help or q to quit%s" + builtin read -k what + [[ $what != $newline ]] && echo + [[ $what == [qQ] ]] && break + fi +done |