Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Completion... but only for the extension part

From: Mikael Magnusson <mikachu@xxxxxxxxx>
> On 7/31/22, Thomas Lauer <thomas.lauer@xxxxxxxxxx> wrote:
> > Sorry if this is in the Fine Manual but I couldn't find it (and googling
> > also brought no great enlightenment).
> >
> > I have directories with many files in them which all have rather long
> > extensions (12+ chars). There can be quite a few separate extensions,
> > say "*.winter-music" or "*.spanish-photos"... you get the idea.
> >
> > So, often I want to complete filenames as normal but sometimes I want to
> > limit completion to files with just one specific extension, say
> > "*.indonesian-videos". So... I'd like to type "*.indo" and then press
> > <whatever> to get "*.indonesian-videos" which in its turn will complete
> > only those files. The problem is the <whatever> bit... or rather a
> > function that does that and can be bound to <whatever>. Do I have to
> > write such a function or is there something in the completion system
> > that will do this OOTB?
> There is _extensions, you probably want it on a separate keybind from
> normal completion, look at the _all_matches entry for an example of
> how to do that.
> https://www.zsh.org/mla/workers/2014/msg00230.html is the thread for
> the patch that adds _extensions if you're curious.

Right. That _extensions extension works, thanks for the pointer!

The only problem now is that my "normal" completions add a space after
the completion and that happens here as well. As I want to use these
completions as bases for further completions that means I have to
backspace and press <tab> again. I have no problem with the <tab> but
not adding a space would make things a bit faster. Alas I've not found
the right place to do that.

I have this

zstyle ':completion:*' menu select=2 interactive

if that helps.

Again thanks, much appreciated!


Messages sorted by: Reverse Date, Date, Thread, Author