From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15446 invoked by alias); 3 Sep 2013 14:32:13 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 17972 Received: (qmail 12527 invoked from network); 3 Sep 2013 14:32:06 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at closedmail.com does not designate permitted sender hosts) From: Bart Schaefer Message-id: <130903073216.ZM27351@torch.brasslantern.com> Date: Tue, 03 Sep 2013 07:32:16 -0700 In-reply-to: Comments: In reply to Leonardo Barbosa "custom completion for listing *.tex is not working" (Sep 3, 8:11am) References: X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: Leonardo Barbosa , zsh-users@zsh.org Subject: Re: custom completion for listing *.tex is not working MIME-version: 1.0 Content-type: text/plain; charset=us-ascii 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 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 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.