zsh-users
 help / color / mirror / code / Atom feed
* completion help?
@ 1997-11-17  1:11 Timothy J Luoma
  1997-11-17  2:48 ` Bart Schaefer
  0 siblings, 1 reply; 2+ messages in thread
From: Timothy J Luoma @ 1997-11-17  1:11 UTC (permalink / raw)
  To: zsh-users


I've never really understood completions functions.

I have two commands "run" and "open -a" which I would like to be able to  
supply Application's names to.

I can get the names of the applications using this:

sed 's/.*\///g' ~/.AppInfo/LaunchBar/Setup|sed 's/\.app$//g'

(~/.AppInfo/LaunchBar/Setup is an ASCII file, one app per line)

How can I make a function that will allow me to do:

run [tab]

to cycle through the apps and

run S[tab]

to cycle through the apps which start with an 'S'?


I tried this (adapted from something someone gave me for something else)


allapps ()
   {
   apppath=(`sed 's/.*\///g' ~/.AppInfo/LaunchBar/Setup \
   | sed 's/\.app$//g'`)
   reply=$apppath;
   }


compctl -K allapps 'S[-]' -- run

but when I hit tab nothing happens....

Clues for the clueless?

TjL


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: completion help?
  1997-11-17  1:11 completion help? Timothy J Luoma
@ 1997-11-17  2:48 ` Bart Schaefer
  0 siblings, 0 replies; 2+ messages in thread
From: Bart Schaefer @ 1997-11-17  2:48 UTC (permalink / raw)
  To: Timothy J Luoma, zsh-users

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1997-11-17  3:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-11-17  1:11 completion help? Timothy J Luoma
1997-11-17  2:48 ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).