From: Mikael Magnusson <mikachu@gmail.com>
To: zsh-users <zsh-users@sunsite.dk>
Subject: Re: Problem with fake-files style and cd
Date: Sat, 14 Feb 2009 20:41:45 +0100 [thread overview]
Message-ID: <237967ef0902141141y609b61d3i154546f6f6886c65@mail.gmail.com> (raw)
In-Reply-To: <090214111316.ZM15188@torch.brasslantern.com>
2009/2/14 Bart Schaefer <schaefer@brasslantern.com>:
> On Feb 14, 7:19pm, Mikael Magnusson wrote:
> }
> } (No, I've modified the _cd completer a bit to only add $cdpath things
> } if the first component is already typed out, because when I'm sitting
> } in a dir with only one subdir and type cd <tab> i would like that
> } directory completed and not the 50 ones in my cdpath. [...])
>
> Well, that was your first mistake. :-) You should be able to get the
> effect you want using styles.
>
> } Of course, my real question should have been if I can make the
> } completion listing remove duplicate entries when I have both a real
> } directotry and an entry in cdpath that matches, but I guess if you
> } have a real dir foo/bar and a cdpath dir foo/baz you want to be able
> } to complete to foo/baz too. Maybe it doesn't have to show up as a
> } cdpath entry at the foo point though, since the cd builtin won't
> } actually go there anyway?
>
> 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. After thinking for a few minutes
I realized I can find the strings "local-directories" and
"path-directories" with the _complete_help keybind I have on alt-f9,
or reading through the rest of the documentation in its entirety,
unless I had stumbled across the "Standard Tags" section by chance. In
the context of having read your mail it is very helpful though :). 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?
> I use this:
>
> zstyle :completion::complete:cd:: tag-order \
> local-directories path-directories
>
> This says to complete only local directories if there are matches for
> those, and if there are no local matches then complete only directories
> that are found in the cdpath. Look at the documentation for "Standard
> Tags" to find explanation of local-directories and path-directories.
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 don't expect anyone to do
anything about this, I'm just saying it would be nice :).
Thanks a lot for your and Peter's help.
> If you want to complete directories in both places but only show the
> local ones in listings, you can use the "hidden" style like so:
>
> zstyle :completion::complete:cd::path-directories hidden yes
>
> (That's not very clear from the documentation for the "hidden" style.)
> You probably don't want to use both tag-order and hidden in this case,
> but there might be contexts in which you would.
I tried this but it seemed less useful.
--
Mikael Magnusson
next prev parent reply other threads:[~2009-02-14 19:42 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mikachu@gmail.com>
2009-02-14 14:22 ` Mikael Magnusson
2009-02-14 18:01 ` Peter Stephenson
2009-02-14 18:19 ` Mikael Magnusson
2009-02-14 19:13 ` Bart Schaefer
2009-02-14 19:41 ` Mikael Magnusson [this message]
2009-02-14 21:39 ` Bart Schaefer
2009-02-14 22:09 ` Mikael Magnusson
2009-02-14 23:26 ` Bart Schaefer
2009-02-14 23:35 ` Mikael Magnusson
2009-02-15 2:28 ` Mikael Magnusson
2009-02-15 4:59 ` Bart Schaefer
2009-02-15 9:36 ` Mikael Magnusson
2009-02-16 9:46 ` Peter Stephenson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=237967ef0902141141y609b61d3i154546f6f6886c65@mail.gmail.com \
--to=mikachu@gmail.com \
--cc=zsh-users@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).