about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2003-06-05 09:51:25 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2003-06-05 09:51:25 +0000
commitecdfa912ae9dc5bd7d98160ab88ae4f17fe761b1 (patch)
treecde3d39a4d0d2b6e5064360cea308589d0c17fef
parent4018e3c1493ea415ef9ad5eba83ad153263d3371 (diff)
downloadzsh-ecdfa912ae9dc5bd7d98160ab88ae4f17fe761b1.tar.gz
zsh-ecdfa912ae9dc5bd7d98160ab88ae4f17fe761b1.tar.xz
zsh-ecdfa912ae9dc5bd7d98160ab88ae4f17fe761b1.zip
18526: -O option to _describe for prefix-needed in _arguments
-rw-r--r--ChangeLog7
-rw-r--r--Completion/Base/Utility/_arguments4
-rw-r--r--Completion/Base/Utility/_describe10
-rw-r--r--Doc/Zsh/compsys.yo6
4 files changed, 22 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ffd7b588..17d3dce98 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-06-05  Peter Stephenson  <pws@csr.com>
+
+	* 18526 tweaked (c.f. 18527): Completion/Base/Utility/_arguments,
+	Completion/Base/Utility/_describe, Doc/Zsh/compsys.yo:
+	fix use of style prefix-needed in _arguments by adding an
+	option -O to _describe.
+
 2003-06-03  Peter Stephenson  <pws@csr.com>
 
 	* 18600: Src/pattern.c: bug matching against [[:xdigit:]].
diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments
index fe8edd61a..44be6db84 100644
--- a/Completion/Base/Utility/_arguments
+++ b/Completion/Base/Utility/_arguments
@@ -387,7 +387,7 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then
 	    tmp1=( "${(M@)tmp1:#[-+]?(|:*)}" )
 	    tmp2=( "${PREFIX}${(@M)^${(@)${(@)tmp1%%:*}#[-+]}:#?}" )
 
-            _describe -o option \
+            _describe -O option \
                       tmp1 tmp2 -Q -S '' -- \
 		      tmp3 -Q
 
@@ -399,7 +399,7 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then
           single=yes
         else
           next=( "$next[@]" "$odirect[@]" )
-          _describe -o option \
+          _describe -O option \
                     next -Q -M "$matcher" -- \
                     direct -QS '' -M "$matcher" -- \
                     equal -QqS= -M "$matcher"
diff --git a/Completion/Base/Utility/_describe b/Completion/Base/Utility/_describe
index eafdcc35b..d5d7aeba7 100644
--- a/Completion/Base/Utility/_describe
+++ b/Completion/Base/Utility/_describe
@@ -2,7 +2,7 @@
 
 # This can be used to add options or values with descriptions as matches.
 
-local _opt _expl _tmpm _tmpd _mlen
+local _opt _expl _tmpm _tmpd _mlen _noprefix
 local _type=values _descr _ret=1 _showd _nm _hide _args _grp _sep
 local csl="$compstate[list]" csl2
 local _oargv _argv _new _strs _mats _opts _i _try=0
@@ -12,6 +12,10 @@ local _oargv _argv _new _strs _mats _opts _i _try=0
 if [[ "$1" = -o ]]; then
   _type=options
   shift
+elif [[ "$1" = -O ]]; then
+  _type=options
+  _noprefix=1
+  shift
 elif [[ "$1" = -t ]]; then
   _type="$2"
   shift 2
@@ -20,6 +24,10 @@ elif [[ "$1" = -t* ]]; then
   shift
 fi
 
+[[ "$_type$_noprefix" = options && ! -prefix [-+]* ]] && \
+    zstyle -T ":completion:${curcontext}:options" prefix-needed &&
+        return 1
+
 # Do the tests. `showd' is set if the descriptions should be shown.
 
 zstyle -T ":completion:${curcontext}:$_type" verbose && _showd=yes
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 4009f3324..3ea302872 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -3665,7 +3665,7 @@ tt(compadd) when generating matches from the style value, or to
 the functions for the fields if they are called.
 )
 findex(_describe)
-item(tt(_describe) [ tt(-o) | tt(-t) var(tag) ] var(descr) var(name1) [ var(name2) ] var(opts) ... tt(-)tt(-) ...)(
+item(tt(_describe) [ tt(-oO) | tt(-t) var(tag) ] var(descr) var(name1) [ var(name2) ] var(opts) ... tt(-)tt(-) ...)(
 This function associates completions with descriptions.
 Multiple groups separated by tt(-)tt(-) can be supplied, potentially with
 different completion options var(opts).
@@ -3688,7 +3688,9 @@ line.  In this case tt(_describe) uses the tt(prefix-hidden),
 tt(prefix-needed) and tt(verbose) styles to find out if the strings should
 be added as completions and if the descriptions should be shown.  Without
 the `tt(-o)' option, only the tt(verbose) style is used to decide how
-descriptions are shown.
+descriptions are shown.  If `tt(-O)' is used instead of `tt(-O)', command
+options are completed as above but tt(_describe) will not handle the
+tt(prefix-needed) style.
 
 With the tt(-t) option a var(tag) can be specified.  The default is
 `tt(values)' or, if the tt(-o) option is given, `tt(options)'.