about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStephane Chazelas <stephane@chazelas.org>2020-09-09 11:27:47 +0100
committerStephane Chazelas <stephane@chazelas.org>2020-09-10 07:34:56 +0100
commit24a82b9dad1cbe109d9fb5753c429fd37b1618cd (patch)
tree2fba000b8fc5124a6b999324d2e8f89df52f8c37
parent0673212f4296275de1cf9935446580930109c9a5 (diff)
downloadzsh-24a82b9dad1cbe109d9fb5753c429fd37b1618cd.tar.gz
zsh-24a82b9dad1cbe109d9fb5753c429fd37b1618cd.tar.xz
zsh-24a82b9dad1cbe109d9fb5753c429fd37b1618cd.zip
47352 (+ extra test cases): fix %<n>K prompt expansion
Fixed a regression introduced by workers/30496 (5.0.3) whereby %2K would
no longer be the equivalent of %K{2} (%K{green}) in prompt expansion.

That was one missing case where the is_fg flag was not passed along to
match_colour() after code factorisation.

Add tests for the different syntax variants, using echoti
as a reference.
-rw-r--r--ChangeLog5
-rw-r--r--Src/prompt.c2
-rw-r--r--Test/D01prompt.ztst28
3 files changed, 34 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e97ac7eb3..399bc76c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-09-09  Stephane Chazelas  <stephane@chazelas.org>
+
+	* 47352 (+ extra test cases): Src/prompt.c, Test/D01prompt.ztst:
+	fix %<n>K prompt expansion (regression introduced in 5.0.3).
+
 2020-09-05  Doug Kearns  <dougkearns@gmail.com>
 
 	* unposted: Completion/Unix/Command/_lp,
diff --git a/Src/prompt.c b/Src/prompt.c
index bc9734720..997327e18 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -258,7 +258,7 @@ parsecolorchar(zattr arg, int is_fg)
 		bv->fm--;
 	}
     } else
-	arg = match_colour(NULL, 1, arg);
+	arg = match_colour(NULL, is_fg, arg);
     return arg;
 }
 
diff --git a/Test/D01prompt.ztst b/Test/D01prompt.ztst
index 7ff478e68..3fb27e620 100644
--- a/Test/D01prompt.ztst
+++ b/Test/D01prompt.ztst
@@ -229,3 +229,31 @@
   Ffoo=${(%):-'%F{foo}'} # Unrecognised
   [[ $f == $Fdefault && $Fdefault == $Freset && $Freset == $Ffoo ]]
 0:Regression test for workers/44029
+
+  if
+    zmodload zsh/terminfo >& /dev/null &&
+      (( terminfo[colors] >= 8 ))
+  then
+    F1=$(echoti setaf 2)
+    F2=${(%):-%2F}
+    F3=${(%):-%F{2}}
+    F4=${(%):-%F{green}}
+    [[ -n $F1 && $F1 = $F2 && $F2 = $F3 && $F3 = $F4 ]]
+  else
+    ZTST_skip='Missing terminfo module or non-colour terminal'
+  fi
+0:Equivalence of terminal colour settings (foreground colour)
+
+  if
+    zmodload zsh/terminfo >& /dev/null &&
+      (( terminfo[colors] >= 8 ))
+  then
+    K1=$(echoti setab 2)
+    K2=${(%):-%2K}
+    K3=${(%):-%K{2}}
+    K4=${(%):-%K{green}}
+    [[ -n $K1 && $K1 = $K2 && $K2 = $K3 && $K3 = $K4 ]]
+  else
+    ZTST_skip='Missing terminfo module or non-colour terminal'
+  fi
+0:Equivalence of terminal colour settings (background colour)