From 5c28031ea6f0095aa80afa56c3264c6cc5f36fbb Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Sat, 5 Nov 2016 00:30:42 +0100 Subject: 39834: when print used with -v and -l, include a final newline Also complete print -S option and make further use of the new printf to an array feature in other completion functions. --- Completion/Zsh/Command/_fc | 5 +++-- Completion/Zsh/Command/_print | 33 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 18 deletions(-) (limited to 'Completion/Zsh/Command') diff --git a/Completion/Zsh/Command/_fc b/Completion/Zsh/Command/_fc index b90436a01..6cc01f32d 100644 --- a/Completion/Zsh/Command/_fc +++ b/Completion/Zsh/Command/_fc @@ -1,7 +1,8 @@ #compdef fc history r local curcontext="$curcontext" state state_descr line ret=1 -local events num cmd sep +local num cmd sep +local -a events typeset -A opt_args local fc_common fc_hist fc_r @@ -71,7 +72,7 @@ if [[ -n $state ]]; then if [[ -z ${line:#*=*} ]] && compset -P 1 '*='; then _message -e replacements 'replacement' elif [[ -prefix [0-9] ]]; then - events=( ${(0)"$(printf "%-${#HISTNO}.${#HISTNO}s $sep %s\0" "${(kv)history[@]}")"} ) + print -v events -f "%-${#HISTNO}.${#HISTNO}s $sep %s" "${(kv)history[@]}" _wanted -2V events expl "$state_descr" compadd -M "B:0=" -ld events - \ "${events[@]%% *}" elif [[ -prefix - ]]; then diff --git a/Completion/Zsh/Command/_print b/Completion/Zsh/Command/_print index 8df094107..0610cd4cf 100644 --- a/Completion/Zsh/Command/_print +++ b/Completion/Zsh/Command/_print @@ -21,27 +21,28 @@ if [[ $service = print ]]; then _arguments -C -s -A "-*" -S \ '-r[ignore escape conventions of echo]' \ - '(-r -b -f -m -s -l -N -o -O -i -c -u -p -z -D -P)-R[emulate BSD echo (no escapes, -n & -e flags only)]' \ + '(-r -b -f -m -s -S -l -N -o -O -i -c -u -p -z -D -P)-R[emulate BSD echo (no escapes, -n & -e flags only)]' \ '-b[recognise bindkey escape sequences]' \ '-m[remove arguments not matching specified pattern]:pattern' \ - '(-n -R -l -N -c)-f+[print arguments as for the printf builtin]:format:->printfformat' \ - '(-u -p -z)-s[place results in the history list]' \ + '(-n -R -l -N -c -S)-f+[print arguments as for the printf builtin]:format:->printfformat' \ + '(-u -p -z -S)-s[place results in the history list]' \ + '(-a -f -c -C -i -l -o -O -N -u -p -v -z -s -x -X)-S[place results in the history list, after splitting argument into words]' \ '(-c -f)-n[do not add a newline to the result]' \ - '(-N -c -f)-l[print arguments separated by newlines]' \ - '(-n -l -c -f)-N[print arguments separated and terminated by nulls]' \ - '(-O)-o[sort arguments in ascending order]' \ - '(-o)-O[sort arguments in descending order]' \ - '-i[case-insensitive sorting]' \ - '(-n -l -N -f -s -z)-a[with -c/-C, print arguments across before down]' \ - '(-n -l -N -f -C -s -z)-c[print arguments in columns]' \ - '(-n -l -N -f -c -s -z)-C+[print arguments in specified number of columns]:columns' \ - '(-s -p -z)-u+[specify file descriptor to print arguments to]:file descriptor:_file_descriptors' \ - '(-s -z -p -u)-v[store output in named parameter]:parameter:_parameters' \ - '(-s -p -u)-z[push arguments onto editing buffer stack]' \ + '(-N -c -f -S)-l[print arguments separated by newlines]' \ + '(-n -l -c -f -S)-N[print arguments separated and terminated by nulls]' \ + '(-O -S)-o[sort arguments in ascending order]' \ + '(-o -S)-O[sort arguments in descending order]' \ + '(-S)-i[case-insensitive sorting]' \ + '(-n -l -N -f -s -S -z)-a[with -c/-C, print arguments across before down]' \ + '(-n -l -N -f -C -s -S -z)-c[print arguments in columns]' \ + '(-n -l -N -f -c -s -S -z)-C+[print arguments in specified number of columns]:columns' \ + '(-s -S -p -z)-u+[specify file descriptor to print arguments to]:file descriptor:_file_descriptors' \ + '(-s -S -z -p -u)-v[store output in named parameter]:parameter:_parameters' \ + '(-s -S -p -u)-z[push arguments onto editing buffer stack]' \ '-D[substitute any arguments which are named directories using ~ notation]' \ '-P[perform prompt expansion]' \ - '(-X -f -a -C -c -z)-x+[expand leading tabs]:tab width' \ - '(-x -f -a -C -c -z)-X+[expand all tabs]:tab width' \ + '(-X -f -a -C -c -s -S -z)-x+[expand leading tabs]:tab width' \ + '(-x -f -a -C -c -s -S -z)-X+[expand all tabs]:tab width' \ $pflag $eflag $rflag $rest && ret=0 elif [[ $service = printf ]]; then state=printf -- cgit 1.4.1