From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by coral.primenet.com.au (8.7.5/8.7.3) with ESMTP id SAA06146 for ; Mon, 5 Aug 1996 18:46:24 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id EAA15419; Mon, 5 Aug 1996 04:17:06 -0400 (EDT) Resent-Date: Mon, 5 Aug 1996 04:17:06 -0400 (EDT) From: "Bart Schaefer" Message-Id: <960805011813.ZM10875@candle.brasslantern.com> Date: Mon, 5 Aug 1996 01:18:13 -0700 Reply-To: schaefer@nbn.com X-Mailer: Z-Mail (4.0b.702 02jul96) To: zsh-workers@math.gatech.edu Subject: Rewrite of Functions/run-help MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"afAyJ3.0.pm3.1uQ1o"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1922 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu Now that the help subdirectory isn't distributed with zsh any longer, the Functions/run-help autoloadable function isn't very useful. Here's a new version that uses `whence' to figure out the best way to run `man' (which may mean not running it at all). It also happens to demonstrate "emulate" plus the new POSIX case-statement syntax combined with zsh glob patterns containing significant whitespace. ;-> ----- snip ----- 8< ----- snip ----- #!/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 # # Bart Schaefer # emulate -R zsh # Requires zsh 3.0-pre5 or later setopt localoptions local what places integer i=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 ;; (*) man $1 ;; esac if ((i < $#places)) then builtin print -nP "%SPress return for more help%s" builtin read -q what fi done ----- snip ----- 8< ----- snip ----- -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.nbn.com/people/lantern New male in /home/schaefer: >N 2 Justin William Schaefer Sat May 11 03:43 53/4040 "Happy Birthday"