about summary refs log tree commit diff
diff options
context:
space:
mode:
authordana <dana@dana.is>2017-12-24 16:21:06 -0600
committerPeter Stephenson <pws@zsh.org>2018-01-04 17:16:18 +0000
commit1af28cbfd740c719a9338c8c9d6b7f55bb3ab13a (patch)
treeb9c2978339f97e7cf41c05f97bf95b553aaf5d4a
parentc2cc8b0fbefc9868fa83537f5b6d90fc1ec438dd (diff)
downloadzsh-1af28cbfd740c719a9338c8c9d6b7f55bb3ab13a.tar.gz
zsh-1af28cbfd740c719a9338c8c9d6b7f55bb3ab13a.tar.xz
zsh-1af28cbfd740c719a9338c8c9d6b7f55bb3ab13a.zip
42164: fix digits in format escapes in completion listings
-rw-r--r--ChangeLog3
-rw-r--r--Src/Zle/complist.c6
-rw-r--r--Test/Y01completion.ztst15
3 files changed, 21 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e3628cfa7..adea4a078 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2018-01-04  Peter Stephenson  <p.stephenson@samsung.com>
 
+	* dana: 42164: Src/Zle/complist.c, Test/Y01completion.ztst:
+	numeric values didn't work in format escapes in completion lists.
+
 	* Stephane: 42159: Src/params.c: avoid crash copying empty hash table.
 
 	* Sebastian: 42188: Src/Modules/system.c: It is necessary to
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index a83daeff9..e768aee5d 100644
--- a/Src/Zle/complist.c
+++ b/Src/Zle/complist.c
@@ -1097,6 +1097,9 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 	    if (*p) {
 		int arg = 0, is_fg;
 
+		if (idigit(*p))
+		    arg = zstrtol(p, &p, 10);
+
 		len = MB_METACHARLENCONV(p, &cchar);
 #ifdef MULTIBYTE_SUPPORT
 		if (cchar == WEOF)
@@ -1104,9 +1107,6 @@ compprintfmt(char *fmt, int n, int dopr, int doesc, int ml, int *stop)
 #endif
 		p += len;
 
-		if (idigit(*p))
-		    arg = zstrtol(p, &p, 10);
-
 		m = 0;
 		switch (cchar) {
 		case ZWC('%'):
diff --git a/Test/Y01completion.ztst b/Test/Y01completion.ztst
index 113a45076..b1c0e40e5 100644
--- a/Test/Y01completion.ztst
+++ b/Test/Y01completion.ztst
@@ -56,6 +56,21 @@
 >FI:{file1}
 >FI:{file2}
 
+  # Temporarily modify format set in comptest
+  comptesteval 'zstyle -s ":completion:*:descriptions" format oldfmt'
+  comptesteval 'zstyle ":completion:*:descriptions" format \
+    ${oldfmt/>*</>%5F123abc%f %B123abc%b<}'
+  comptest $': \t'
+  comptesteval 'zstyle ":completion:*:descriptions" format $oldfmt'
+0:custom description with formatting sequences
+>line: {: }{}
+*>DESCRIPTION:{*123abc*123abc*~*F123*}
+>DI:{dir1}
+>DI:{dir2}
+>FI:{file1}
+>FI:{file2}
+F:regression test workers/42164
+
 # Depends on path assignment in comptestinit
   comptesteval "path=( $ZTST_srcdir:A )"
   comptest $'zt\t'