Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Problem with fake-files style and cd
- X-seq: zsh-users 13855
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: zsh-users <zsh-users@xxxxxxxxxx>
- Subject: Re: Problem with fake-files style and cd
- Date: Sat, 14 Feb 2009 13:39:04 -0800
- In-reply-to: <237967ef0902141141y609b61d3i154546f6f6886c65@xxxxxxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <mikachu@xxxxxxxxx> <237967ef0902140622s7389d2c8h5a0c786dcf207422@xxxxxxxxxxxxxx> <200902141801.n1EI1E2l003603@xxxxxxxxxxxxxxxxxxx> <237967ef0902141019t30118690m30116c9413015d96@xxxxxxxxxxxxxx> <090214111316.ZM15188@xxxxxxxxxxxxxxxxxxxxxx> <237967ef0902141141y609b61d3i154546f6f6886c65@xxxxxxxxxxxxxx>
On Feb 14, 8:41pm, Mikael Magnusson wrote:
}
} 2009/2/14 Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>:
} > I'm not sure I'm following the last part of that, but what you need to
} > look at is the documentation for the tag-order zstyle.
}
} Even if I had accidentally read that whole section, it would not have
} occurred to me it could be used here.
Next you need to read chapters 10 and 15 of "From Bash to Z Shell". :-)
(Hey, Peter and Oliver ... any updated revision of the book planned?)
} It is a tiny bit confusing why the name of the "directories" tag is
} changed to local-directories only when $cdpath is set, is it for any
} other reason than to break all your styles when you set/unset cdpath?
It's been like that for years ... in fact originally it appears that
the local-directories style was *always* used, even if cdpath was not
set, so someone (Sven?) probably decided that it didn't make sense to
differentiate "local" if there was no possibility of "non-local". The
ChangeLog from that time gives no hints.
I'm also sure the expectation was that cdpath is not something that
changes state frequently; it's value might change but not whether it
*has* a value.
} > I use this:
} >
} > zstyle :completion::complete:cd:: tag-order \
} > local-directories path-directories
This can easily be modified to deal with a flip-flop of cdpath:
zstyle :completion::complete:cd:: tag-order \
'directories local-directories' path-directories
The local-directories style doc ought to mention this, I guess.
} Thanks, with my hack to _cd removed, I think this does more or less
} exactly what I want. I wouldn't mind if it was on a per-completion
} entry, ie it would be nice if I got this:
} % mkdir -p local/code/foo
} % mkdir -p path/code/bar
} % cdpath=$PWD/path
} % cd local
} % cd code<tab>
} ---- local directory
} foo/
} ---- directory in cdpath
} bar/
}
} which is what I get without the above style set. However,
} % mkdir arg
} % cd <tab>
} ---- local directory
} arg/ code/
} ---- directory in cdpath
} code/
}
} I don't want the cdpath to appear in this case, only once I'm actually
} completing at a place where they differ.
I'm not entirely sure, but I think what you're asking for is to have
duplicate completions removed from the listing even when the duplicates
are in different tag groups. Suppose we add
% mkdir -p path/other/thing
to the above. Is what you'd like to see:
% cd <tab>
---- local directory
arg/ code/
---- directory in cdpath
other/
?? That isn't something that's supported in the internals, but for a
specific case like this we can the the same effect like so:
zstyle -e :completion::complete:cd::path-directories ignored-patterns \
'reply=( *(/) )'
This says that when completing in the cdpath, ignore any name that matches
the name of a directory in the current directory.
In fact I like that so much I might even replace my tag-order with it.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author