about summary refs log tree commit diff
path: root/Completion/Base/Utility/_describe
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Base/Utility/_describe')
-rw-r--r--Completion/Base/Utility/_describe10
1 files changed, 9 insertions, 1 deletions
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