summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2016-11-05 00:30:42 +0100
committerOliver Kiddle <opk@zsh.org>2016-11-05 00:31:01 +0100
commit5c28031ea6f0095aa80afa56c3264c6cc5f36fbb (patch)
tree46849487bb2aee2ba62e98d08e7019d3c13ceda4
parent4b41e33cbcf8027b53ecae4467dc9232becb0420 (diff)
downloadzsh-5c28031ea6f0095aa80afa56c3264c6cc5f36fbb.tar.gz
zsh-5c28031ea6f0095aa80afa56c3264c6cc5f36fbb.zip
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.
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Zsh/Command/_fc5
-rw-r--r--Completion/Zsh/Command/_print33
-rw-r--r--Completion/Zsh/Type/_ps12345
-rw-r--r--Src/builtin.c3
5 files changed, 31 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ebcc3725..9f8e5a0c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2016-11-04 Oliver Kiddle <opk@zsh.org>
+ * 39834: Src/builtin.c, Completion/Zsh/Command/_print,
+ Completion/Zsh/Command/_fc, Completion/Zsh/Type/_ps1234:
+ when print used with -v and -l, include a final
+ newline; complete print -S option and make further use
+ of the new printf to an array feature
+
* 39389: Src/builtin.c, Test/B03print.ztst, Doc/Zsh/builtins.yo,
Completion/Zsh/Type/_globquals, Completion/Zsh/Command/_print:
when printf -v is used with an array use separate elements each
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
diff --git a/Completion/Zsh/Type/_ps1234 b/Completion/Zsh/Type/_ps1234
index 0671cebb2..cf1982219 100644
--- a/Completion/Zsh/Type/_ps1234
+++ b/Completion/Zsh/Type/_ps1234
@@ -1,6 +1,6 @@
#compdef -value-,PROMPT,-default- -value-,PROMPT2,-default- -value-,PROMPT3,-default- -value-,PROMPT4,-default- -value-,RPROMPT,-default- -value-,RPROMPT2,-default- -value-,PS1,-default- -value-,PS2,-default- -value-,PS3,-default- -value-,PS4,-default- -value-,RPS1,-default- -value-,RPS2,-default- -value-,SPROMPT,-default-
-local -a specs
+local -a specs ccol
local expl grp cols bs suf pre changed=1 ret=1
local -A ansi
@@ -39,7 +39,8 @@ if compset -P '%[FK]'; then
_description -V ansi-colors expl 'ansi color'
grp="$expl[expl[(i)-V]+1]"
- _comp_colors+=( ${(ps.\0.)"$(printf "($grp)=%s=%s\0" ${(kv)ansi})"} )
+ print -v ccol -f "($grp)=%s=%s" ${(kv)ansi}
+ _comp_colors+=( $ccol )
compadd "$expl[@]" $suf $pre -k ansi && ret=0
if (( $#suf )) && compset -P "(<->|%v)"; then
_wanted ansi-colors expl 'closing brace' compadd -S '' \} && ret=0
diff --git a/Src/builtin.c b/Src/builtin.c
index 083a3aeb3..b7b7bdf18 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -4621,7 +4621,8 @@ bin_print(char *name, char **args, Options ops, int func)
OPT_ISSET(ops,'N') ? '\0' : ' ', fout);
}
}
- if (!(OPT_ISSET(ops,'n') || OPT_ISSET(ops, 'v') || nnl))
+ if (!(OPT_ISSET(ops,'n') || nnl ||
+ (OPT_ISSET(ops, 'v') && !OPT_ISSET(ops, 'l'))))
fputc(OPT_ISSET(ops,'N') ? '\0' : '\n', fout);
if (IS_MSTREAM(fout) && (rcount = READ_MSTREAM(buf,fout)) == -1)
ret = 1;