Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: _files vs _path_files discussion (old thread)
- X-seq: zsh-workers 10084
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
- To: Adam Spiers <adam@xxxxxxxxxx>, zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: _files vs _path_files discussion (old thread)
- Date: Sun, 12 Mar 2000 06:21:34 +0000
- In-reply-to: <20000312005127.A28688@xxxxxxxxxxxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
- References: <199909170728.JAA01949@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20000311222225.A27795@xxxxxxxxxxxxxxxxxxxxxxx> <1000312001854.ZM26814@xxxxxxxxxxxxxxxxxxxxxxx> <20000312005127.A28688@xxxxxxxxxxxxxxxxxxxxxxx>
On Mar 12, 12:51am, Adam Spiers wrote:
} Subject: Re: _files vs _path_files discussion (old thread)
}
} Bart Schaefer (schaefer@xxxxxxxxxxxxxxxxxxxxxxx) wrote:
} > zstyle ':completion::complete:tar::' \
} > tag-order 'globbed-files directories' all-files
}
} That's exactly what I'd tried, with once difference; as I mentioned, I
} want this behaviour everywhere, not just for tar, so I'd tried:
}
} zstyle ':completion::complete:*' \
} tag-order 'globbed-files directories' all-files
}
} However, neither your version nor mine seem to work. Maybe I'm just
} missing a bugfix because I'm behind on patches.
No; Sven explained this back in 9858, and asked whether it should be
changed [*]. It's not sufficient to give the tag-order style, you
also have to specify the file-patterns for each of the tags that you
actually want to generate completions. So you also need e.g.:
zstyle ':completion::complete:tar::directories' file-patterns '*(-/)'
You can of course replace :tar:: there with :*:*: to make all commands
that use _files complete directories; but as Sven mentions in 9864,
you may not want that, which is why the file-patterns are required to
be given in the first place.
_tar already supplies a file pattern for globbed-files by passing a -g
option to _files, so (unlike many other commands) you _don't_ need to
specify the file-patterns for *:tar::globbed-files. You _do_ need to
specify file-patterns for all-files if you want those included.
[*] Sven's suggested change was:
} ... should we make the directories tag with its usual pattern be
} tried automatically if the user explicitly sets the file-patterns tag
} for globbed-files? Or should we do that only if the directories tag,
} file-patterns style is given, but allow an empty value to stand for
} `the normal pattern'?
I meant to reply to that and hadn't got around to it yet.
My short answer is that I don't think there's any good solution. The
tag-order style is going to be confusing no matter what we do; people
are always going to wonder why, when they can see "directories" in the
tag-order style, they still don't get any directories completed. It's
a case of intuition being at odds with logical semantics, and I can't
think of any way to make the intuition work without ruining the logic.
Automatically adding directories when globbed-files is given only makes
things cloudier; allowing an empty pattern to stand for '*(-/)' doesn't
alleviate the need to provide the directories style, which is the real
basis of the confusion. So I think I'd leave the code as is, and put
some kind of blaring all-caps text in the tag-order documentation:
NAMING A TAG IN TAG-ORDER DOES NOT CAUSE COMPLETIONS FOR THAT TAG TO BE
GENERATED; RATHER, IT SORTS THE COMPLETIONS AFTER THEY ARE GENERATED.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author