Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: _pick_variants -b option
- X-seq: zsh-workers 29820
- From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
- To: Zsh Hackers' List <zsh-workers@xxxxxxx>
- Subject: PATCH: _pick_variants -b option
- Date: Wed, 12 Oct 2011 19:18:18 +0100
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
I wrote this some time ago but never got around to posting it. It's
only lightly tested.
Index: Completion/Base/Utility/_pick_variant
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Base/Utility/_pick_variant,v
retrieving revision 1.4
diff -p -u -r1.4 _pick_variant
--- Completion/Base/Utility/_pick_variant 7 Dec 2010 15:10:48 -0000 1.4
+++ Completion/Base/Utility/_pick_variant 12 Oct 2011 18:16:58 -0000
@@ -6,7 +6,7 @@ local -A opts
(( $+_cmd_variant )) || typeset -gA _cmd_variant
-zparseopts -D -A opts c: r:
+zparseopts -D -A opts b: c: r:
: ${opts[-c]:=$words[1]}
while [[ $1 = *=* ]]; do
@@ -19,6 +19,12 @@ if (( $+_cmd_variant[$opts[-c]] )); then
return 0
fi
+if [[ $+opts[-b] -eq 1 && -n $builtins[$opts[-c]] ]]; then
+ _cmd_variant[$opts[-c]]=$opts[-b]
+ (( $+opts[-r] )) && eval "${opts[-r]}=${_cmd_variant[$opts[-c]]}"
+ return 0
+fi
+
output="$(_call_program variant $opts[-c] "${@[2,-1]}" </dev/null 2>&1)"
for cmd pat in "$var[@]"; do
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.242
diff -p -u -r1.242 compsys.yo
--- Doc/Zsh/compsys.yo 7 Sep 2011 13:43:38 -0000 1.242
+++ Doc/Zsh/compsys.yo 12 Oct 2011 18:16:58 -0000
@@ -4387,7 +4387,9 @@ tt(ambiguous), tt(special-dirs), tt(list
described above.
)
findex(_pick_variant)
-item(tt(_pick_variant [ tt(-c) var(command) ] [ tt(-r) var(name) ] var(label)tt(=)var(pattern) ... var(label) [ var(args) ... ]))(
+xitem(tt(_pick_variant) [ tt(-b) var(builtin-label) ] [ tt(-c)
+var(command) ] [ tt(-r) var(name) ])
+item( var(label)tt(=)var(pattern) ... var(label) [ var(args) ... ])(
This function is used to resolve situations where a single command name
requires more than one type of handling, either because it
has more than one variant or because there is a name clash between two
@@ -4403,6 +4405,10 @@ tt(...)' contains var(pattern), then tt(
for the command variant. If none of the patterns match, the final
command label is selected and status 1 is returned.
+If the `tt(-b) var(builtin-label)' is given, the command is tested to
+see if it is provided as a shell builtin, possibly autoloaded; if so,
+the label var(builtin-label) is selected as the label for the variant.
+
If the `tt(-r) var(name)' is given, the var(label) picked is stored in
the parameter named var(name).
--
Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
Web page now at http://homepage.ntlworld.com/p.w.stephenson/
Messages sorted by:
Reverse Date,
Date,
Thread,
Author