Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Standard 'filtering' mechanism?
- X-seq: zsh-users 14836
- From: "Benjamin R. Haskell" <zsh@xxxxxxxxxx>
- To: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- Subject: Re: Standard 'filtering' mechanism?
- Date: Sun, 14 Feb 2010 16:10:22 -0500 (EST)
- Cc: Zsh Users <zsh-users@xxxxxxx>
- In-reply-to: <201002142055.o1EKsxfr003143@xxxxxxxxxxxxxxxxxxx>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <201002142055.o1EKsxfr003143@xxxxxxxxxxxxxxxxxxx>
On Sun, 14 Feb 2010, Peter Stephenson wrote:
> "Benjamin R. Haskell" wrote:
> > I'm still getting acquainted with the intricacies of Zsh completion 
> > and pattern matching.  One thing I've wanted to do for a while is 
> > prevent 'vim' completion from matching the various 'junk' files that 
> > are associated with various phases of TeX compilation.
> 
> If I've worked out correctly what you're trying to do (exclude files 
> which have the same basename as a .tex file)
Roughly, but not quite 'basename' exactly.  From my example, 
'document.tex' also produces the intermediate file: document-mpgraph.mp
> , how about something like this...
> 
> 
> vim-files() {
>   local dir
>   if [[ $PREFIX = */* ]]; then
>     if [[ $PREFIX[-1] = / ]]; then
>       dir=$PREFIX[1,-2]
>     else
>       dir=${PREFIX:h}
>     fi
>   else
>     dir=.
>   fi
>   local -a texfiles nontexfiles
>   local -aU suffixes
>   texfiles=($dir/*.tex(N))
>   if (( $#texfiles )); then
>     nontexfiles=(${texfiles:r}.*)
>     suffixes=(${${nontexfiles:e}:#tex})
>     reply=("^*.(${(j.|.)suffixes})")
>   fi
> }
> zstyle -e ':completion:*:*:vim:*' file-patterns vim-files
[example fixed for 'non' vs. 'no' that was just mentioned in a followup 
before I could send]
That, modulo the not-quite-basename problem will probably work.  But, it 
kind of gets to the heart of what I wanted to avoid (namely: doing the 
globbing manually).  It'd be much nicer to have _path_files handle the 
various PREFIX things your function does there, and then filter as a 
post-processing step.  I guess there's no zstyle way to 'hook' into that 
stage of completion?
-- 
Thanks,
Ben
Messages sorted by:
Reverse Date,
Date,
Thread,
Author