From ecdfa912ae9dc5bd7d98160ab88ae4f17fe761b1 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 5 Jun 2003 09:51:25 +0000 Subject: 18526: -O option to _describe for prefix-needed in _arguments --- ChangeLog | 7 +++++++ Completion/Base/Utility/_arguments | 4 ++-- Completion/Base/Utility/_describe | 10 +++++++++- Doc/Zsh/compsys.yo | 6 ++++-- 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 + + * 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 * 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)'. -- cgit 1.4.1