From deca7c928520fba5a73383f1cac0b3ace8e0e45d Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Mon, 27 Apr 2020 19:30:40 +0000 Subject: 45730: _arguments: Add the -0 flag, which makes $opt_args be populated sanely. Also, write/extend docstrings for sepjoin() and zjoin(). --- Completion/Base/Utility/_arguments | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'Completion/Base/Utility/_arguments') diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments index 136dd5826..3f1b39304 100644 --- a/Completion/Base/Utility/_arguments +++ b/Completion/Base/Utility/_arguments @@ -7,11 +7,13 @@ local long cmd="$words[1]" descr odescr mesg subopts opt opt2 usecc autod local oldcontext="$curcontext" hasopts rawret optarg singopt alwopt local setnormarg start rest local -a match mbegin mend +integer opt_args_use_NUL_separators=0 subopts=() singopt=() -while [[ "$1" = -([AMO]*|[CRSWnsw]) ]]; do +while [[ "$1" = -([AMO]*|[0CRSWnsw]) ]]; do case "$1" in + -0) opt_args_use_NUL_separators=1; shift ;; -C) usecc=yes; shift ;; -O) subopts=( "${(@P)2}" ); shift 2 ;; -O*) subopts=( "${(@P)${1[3,-1]}}" ); shift ;; @@ -388,7 +390,7 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then if [[ "$action" = -\>* ]]; then action="${${action[3,-1]##[ ]#}%%[ ]#}" if (( ! $state[(I)$action] )); then - comparguments -W line opt_args + comparguments -W line opt_args $opt_args_use_NUL_separators state+=( "$action" ) state_descr+=( "$descr" ) if [[ -n "$usecc" ]]; then @@ -406,7 +408,7 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then local=yes fi - comparguments -W line opt_args + comparguments -W line opt_args $opt_args_use_NUL_separators if [[ "$action" = \ # ]]; then -- cgit v1.2.3 From c7a391fa0562a86605a676a313a4f512d8de1979 Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Sun, 24 Oct 2021 21:32:58 +0900 Subject: 49493: fix '_arguments --' to correctly recognize optional argument --- ChangeLog | 5 +++++ Completion/Base/Utility/_arguments | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'Completion/Base/Utility/_arguments') diff --git a/ChangeLog b/ChangeLog index 21e72305a..22cbff507 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2021-10-24 Jun-ichi Takimoto + + * 49493: Completion/Base/Utility/_arguments: fix handling of + optional argument of long option in help text + 2021-10-23 Oliver Kiddle * 49499 based on 49496 by Jun T.: Src/Zle/computil.c diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments index 3f1b39304..cab7c929e 100644 --- a/Completion/Base/Utility/_arguments +++ b/Completion/Base/Utility/_arguments @@ -132,8 +132,8 @@ if (( long )); then # variant syntax seen in fetchmail: # --[fetch]all means --fetchall or --all. # maybe needs to be more general - if [[ $start = (#b)(*)\[(*)\](*) ]]; then - tmp+=("${match[1]}${match[2]}${match[3]}" "${match[1]}${match[3]}") + if [[ $start = (#b)--\[(*)\](*) ]]; then + tmp+=("--${match[1]}${match[2]}" "--${match[2]}") else tmp+=($start) fi -- cgit v1.2.3 From 4e9d0075f438c4404b29ad6901f6ed6aa4d0fdc6 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Tue, 26 Oct 2021 18:35:36 +0200 Subject: 49519: quote completed options as needed and remove the now superfluous quotes from option specifications --- ChangeLog | 9 ++++++++- Completion/Base/Utility/_arguments | 10 +++++----- Completion/Darwin/Command/_qtplay | 2 +- Completion/Unix/Command/_less | 4 ++-- Completion/Unix/Command/_nm | 2 +- Completion/Unix/Command/_php | 2 +- Completion/Unix/Command/_strings | 2 +- Completion/Unix/Command/_zip | 2 +- Completion/X/Command/_gnome-gv | 2 +- 9 files changed, 21 insertions(+), 14 deletions(-) (limited to 'Completion/Base/Utility/_arguments') diff --git a/ChangeLog b/ChangeLog index abdab0ffe..ff8a738c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2021-10-26 Oliver Kiddle + * 49519: Completion/Base/Utility/_arguments, + Completion/Darwin/Command/_qtplay, Completion/Unix/Command/_less, + Completion/Unix/Command/_nm, Completion/Unix/Command/_php, + Completion/Unix/Command/_strings, Completion/Unix/Command/_zip, + Completion/X/Command/_gnome-gv: quote completed options as needed + and remove the now superfluous quotes from option specifications + * 49516: Src/Zle/compmatch.c: bail out early from matching control if command line content is too short for the coanchor @@ -12,7 +19,7 @@ 2021-10-23 Oliver Kiddle - * 49499 based on 49496 by Jun T.: Src/Zle/computil.c + * 49499 based on 49496 by Jun T.: Src/Zle/computil.c, Test/Y03arguments.ztst: fixes to option -A of _arguments * 49500: Completion/Linux/Command/_lsns: new completion diff --git a/Completion/Base/Utility/_arguments b/Completion/Base/Utility/_arguments index cab7c929e..5ff34ff47 100644 --- a/Completion/Base/Utility/_arguments +++ b/Completion/Base/Utility/_arguments @@ -513,8 +513,8 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then tmp2=( "${PREFIX}${(@M)^${(@)${(@)tmp1%%:*}#[-+]}:#?}" ) _describe -O option \ - tmp1 tmp2 -Q -S '' -- \ - tmp3 -Q + tmp1 tmp2 -S '' -- \ + tmp3 [[ -n "$optarg" && "$single" = next && nm -eq $compstate[nmatches] ]] && _all_labels options expl option \ @@ -525,9 +525,9 @@ if (( $# )) && comparguments -i "$autod" "$singopt[@]" "$@"; then else next+=( "$odirect[@]" ) _describe -O option \ - next -Q -M "$matcher" -- \ - direct -QS '' -M "$matcher" -- \ - equal -QqS= -M "$matcher" + next -M "$matcher" -- \ + direct -S '' -M "$matcher" -- \ + equal -qS= -M "$matcher" fi PREFIX="$prevpre" IPREFIX="$previpre" diff --git a/Completion/Darwin/Command/_qtplay b/Completion/Darwin/Command/_qtplay index 39a7c6de2..839efee83 100644 --- a/Completion/Darwin/Command/_qtplay +++ b/Completion/Darwin/Command/_qtplay @@ -15,6 +15,6 @@ _arguments -S \ '-t[specify update time]:update time (seconds)' \ '-T[kill time]:ticks' \ '-V[volume]:percentage of normal volume' \ - '(-)'{-?,--help,-h}'[display help information]' \ + '(-)'{-\?,--help,-h}'[display help information]' \ '(-)*:quicktime file:_files' diff --git a/Completion/Unix/Command/_less b/Completion/Unix/Command/_less index 0b474b991..ae912a633 100644 --- a/Completion/Unix/Command/_less +++ b/Completion/Unix/Command/_less @@ -80,9 +80,9 @@ _arguments -S -s -A "[-+]*" \ '--no-keypad[disable use of keypad terminal init string]' \ '(-y --max-forw-scroll)'{-y,--max-forw-scroll}'[specify forward scroll limit]' \ '(-z --window)'{-z+,--window=}'[specify scrolling window size]:lines' \ - '(-\" --quotes)'{-\"+,--quotes=}'[change quoting character]:quoting characters' \ + '(-" --quotes)'{-\"+,--quotes=}'[change quoting character]:quoting characters' \ '(-~ --tilde)'{-~,--tilde}"[don't display tildes after end of file]" \ - '(-\# --shift)'{-\#+,--shift=}"[specify amount to move when scrolling horizontally]:number" \ + '(-# --shift)'{-\#+,--shift=}"[specify amount to move when scrolling horizontally]:number" \ '--file-size[automatically determine the size of the input file]' \ '--incsearch[search file as each pattern character is typed in]' \ '--line-num-width=[set the width of line number field]:width [7]' \ diff --git a/Completion/Unix/Command/_nm b/Completion/Unix/Command/_nm index 79f537ac6..888f1ef87 100644 --- a/Completion/Unix/Command/_nm +++ b/Completion/Unix/Command/_nm @@ -53,7 +53,7 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu '(-C)--demangle[decode symbol names]' '(--format -P)-f+[specify output format]:format:(bsd sysv posix)' '(- *)--usage[give a short usage message]' - '(- *)-\\?[display help information]' + '(- *)-?[display help information]' ) ;; binutils) diff --git a/Completion/Unix/Command/_php b/Completion/Unix/Command/_php index c4c4ab3e2..9a8f519b1 100644 --- a/Completion/Unix/Command/_php +++ b/Completion/Unix/Command/_php @@ -93,7 +93,7 @@ _php() { + '(hv)' # Help/version options; kept separate by convention '(- 1 *)'{-h,--help}'[display help information]' '(- 1 *)'{-v,--version}'[display version information]' - '!(- 1 *)'{-\?,-\\\?,--usage} + '!(- 1 *)'{-\?,--usage} + '(im)' # Info/module options (exclusive with everything but -c/-n) '(fi mc pb pf rf rn sc sv *)'{-i,--info}'[display configuration information (phpinfo())]' diff --git a/Completion/Unix/Command/_strings b/Completion/Unix/Command/_strings index af95af52f..685daa286 100644 --- a/Completion/Unix/Command/_strings +++ b/Completion/Unix/Command/_strings @@ -45,7 +45,7 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu elfutils) args+=( '(- *)--usage[display a short usage message]' - '(- *)-\\?[display help information]' + '(- *)-?[display help information]' ) ;; esac diff --git a/Completion/Unix/Command/_zip b/Completion/Unix/Command/_zip index bc9aab1a5..cfa51be36 100644 --- a/Completion/Unix/Command/_zip +++ b/Completion/Unix/Command/_zip @@ -115,7 +115,7 @@ case $service in '(-U)-UU[ignore any Unicode fields]' \ '-W[modify pattern matching so only ** matches /]' \ '-\:[allow extraction outside of extraction base directory]' \ - '-\\\^[allow control characters in extracted entries]' \ + '-^[allow control characters in extracted entries]' \ '-i[include the following names]:*-*:pattern' \ '-x[exclude the following names]:*-*:pattern' \ "(-p -f -u -l -t -z -n -o -j -C -X -q -qq -a -aa -v -L -M)1:zip file:_files -g '(#i)*.(zip|xpi|[ejw]ar)(-.)'" \ diff --git a/Completion/X/Command/_gnome-gv b/Completion/X/Command/_gnome-gv index 25de6fadf..b1b66e2a4 100644 --- a/Completion/X/Command/_gnome-gv +++ b/Completion/X/Command/_gnome-gv @@ -1,6 +1,6 @@ #compdef gnome-gv ggv _arguments \ - '(--help)-\\?[help]' \ + '(--help)-?[help]' \ '(--windows)-w[number of empty windows]:number:' \ '*:file: _pspdf -z' -- -- cgit v1.2.3