summaryrefslogtreecommitdiff
path: root/Functions/Misc/run-help
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-06-08 09:26:01 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-06-08 09:26:01 +0000
commitfcd7cd1cfa2ba286f4bf73da7a60116cd3912629 (patch)
treed2aa5a9369bf3af8841d3abde69f52bd483f5526 /Functions/Misc/run-help
parentb39cafaa22ad7efc2ac4b64a5eeac8f49bc80e00 (diff)
downloadzsh-fcd7cd1cfa2ba286f4bf73da7a60116cd3912629.tar.gz
zsh-fcd7cd1cfa2ba286f4bf73da7a60116cd3912629.zip
Initial revision
Diffstat (limited to 'Functions/Misc/run-help')
-rw-r--r--Functions/Misc/run-help72
1 files changed, 72 insertions, 0 deletions
diff --git a/Functions/Misc/run-help b/Functions/Misc/run-help
new file mode 100644
index 000000000..a8109e3ea
--- /dev/null
+++ b/Functions/Misc/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