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

Re: custom completion for listing *.tex is not working



Thanks for you prompt answer, Bart. I have tried your suggestion.
zstyle ':completion:*:*:vi:*' file-patterns '*.tex:TeX-files' '%p:all-files'


However, by doing so, it only through TeX files. So if <tab> multiples
times it keeps suggesting the same TeX files, repeatedly, to me. I'd
like TeX files to be priority, but, in case of more <tab>'s, it cycles
through other files in the menu, too.

I saw you example is similar to this example in the zsh manual:
zstyle ':completion:*:*:rm:*' file-patterns \ '*.o:object-files' '%p:all-files'

So in theory, it should have worked. Any idea?

An just one more question, how can i make zsh to highlight the
selected file in the menu while cycling through files?

Best

Leo

On Tue, Sep 3, 2013 at 11:32 AM, Bart Schaefer
<schaefer@xxxxxxxxxxxxxxxx> wrote:
> On Sep 3,  8:11am, Leonardo Barbosa wrote:
> }
> } I have tried this in order to make zsh suggests TeX files first to vi.
> }
> } vi() { command vi ${*:-*.tex(om[1])} }
>
> That doesn't do anything except cause "vi" with no arguments to attempt
> to open the single most recent .tex file in the current directory; it
> has no effect on tab completion.
>
> } zstyle ':completion:*:*:.tex:*' menu yes select
> } zstyle ':completion:*:*:.tex:*' file-sort time
>
> The components of a completer style are (from the manual):
>
>     :completion:FUNCTION:COMPLETER:COMMAND:ARGUMENT:tag
>
> Mapping that onto the zstyles above, you've told the completion system
> that a command named ".tex" should use menu selection sorted by time.
> What you want is to have "vi" in that slot.
>
> } However, it doesn't work. Zsh is listing all types of files and not
> } necessarily the TeX ones first.
>
> To do that, you adjust the set of possible tags (that last component of
> the completion style).  You can see what the current set of tags for "vi"
> is by:
>
> zsh% vi <ctrl+x h>
> tags in context :completion::complete:vi::
>     all-files  (_files _default)
>
> That's not very useful, so you can use the file-patterns style to add
> details (see the manual under file-patterns to explain %p):
>
>     zstyle ':completion:*:*:vi:*' file-patterns \
>         '*.tex:TeX-files' '%p:all-files'
>
> Note that because file-patterns is defining what the tags will become, the
> tag part of the context pattern is always empty for this style.
>
> Now:
>
> torch% vi <ctrl+x h>
> tags in context :completion::complete:vi::
>     TeX-files  (_files _default)
>     all-files  (_files _default)
>
> You can further refine this using the tag-order style.
>
> } Could any of you suggest me a hands on tutorial for zsh new completion
> } system?
>
> The most comprehensive is probably the chapter on zsh completion published
> in the "From Bash to Zsh" book.  There is also
>
>    http://zsh.sourceforge.net/Guide/zshguide06.html#l156
>
> but it doesn't really work through a single increasingly complex example
> the way you might want a tutorial to do.



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