From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22864 invoked from network); 17 Nov 1997 03:08:26 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 17 Nov 1997 03:08:26 -0000 Received: (from list@localhost) by math.gatech.edu (8.8.5/8.8.5) id VAA25250; Sun, 16 Nov 1997 21:49:41 -0500 (EST) Resent-Date: Sun, 16 Nov 1997 21:49:02 -0500 (EST) From: "Bart Schaefer" Message-Id: <971116184857.ZM21568@candle.brasslantern.com> Date: Sun, 16 Nov 1997 18:48:57 -0800 In-Reply-To: <199711170111.UAA01143@luomat.peak.org> Comments: In reply to Timothy J Luoma "completion help?" (Nov 16, 8:11pm) References: <199711170111.UAA01143@luomat.peak.org> X-Mailer: Z-Mail (4.0b.820 20aug96) To: Timothy J Luoma , zsh-users@math.gatech.edu Subject: Re: completion help? MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Resent-Message-ID: <"iXBXr3.0.o96.T2xRq"@math> Resent-From: zsh-users@math.gatech.edu X-Mailing-List: archive/latest/1143 X-Loop: zsh-users@math.gatech.edu X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu On Nov 16, 8:11pm, Timothy J Luoma wrote: } Subject: completion help? } } I've never really understood completions functions. You aren't alone. } compctl -K allapps 'S[-]' -- run That assigns the completion `-K allapps' to the three commands S[-], --, and run. I'm pretty sure that's not what you mean. Normally you'd only use things that look like 'S[-]' and '--' when the -x option is present. } I can get the names of the applications using this: } } sed 's/.*\///g' ~/.AppInfo/LaunchBar/Setup|sed 's/\.app$//g' That's the same as sed 's/.*\/\(.*\)\.app$/\1/' ~/.AppInfo/LaunchBar/Setup The \1 in the replacement refers to the stuff inside \( \) in the pattern. You could write a cryptic-looking variable replacement that's equivalent, using $(<...), but I wouldn't bother. } How can I make a function that will allow me to do: } } run [tab] } run S[tab] If you can do the former, you can do the latter; zsh takes care of that part itself, so nothing special is necessary. function allapps() { reply=( $(sed 's/.*\/\(.*\)\.app$/\1/' ~/.AppInfo/LaunchBar/Setup) ) } compctl -K allapps run compctl -x 'c[-1,-a]' -K allapps -- open } Clues for the clueless? The first compctl should be pretty obvious. The second one says: -x we're going to use extended completion to c[,] match a string in some other word relative to the "c"urrent one -1 and that word is the word immediately preceding the current one -a and if that word matches "-a" -K then run the function allapps -- now we're done defining the completion, so open is the command to which this completion applies. Hence `allapps' will generate the completions for `run' and `open -a'. More clueful? -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com