commit 5dbcca49263be094fc38159c297458ae323ef647
Author: Hiltjo Posthuma <[email protected]>
AuthorDate: Wed May 1 20:45:39 2024 +0200
Commit: Hiltjo Posthuma <[email protected]>
CommitDate: Wed May 1 20:45:39 2024 +0200
support colons in SGR character attributes
Patch by Mikhail Kot <[email protected]>
With some modifications to behave more like xterm (see note below).
Example:
printf '\033[48;2;255:0:0mtest\n'
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
Some notes:
"CSI Pm m Character Attributes (SGR).
[...]
o xterm allows either colons (standard) or semicolons
(legacy) to separate the subparameters (but after the
first colon, colons must be used).
diff --git a/st.c b/st.c
index b9f66e7..57c6e96 100644
--- a/st.c
+++ b/st.c
@@ -1132,6 +1132,7 @@ csiparse(void)
{
char *p = csiescseq.buf, *np;
long int v;
+ int sep = ';'; /* colon or semi-colon, but not both */
csiescseq.narg = 0;
if (*p == '?') {
@@ -1149,7 +1150,9 @@ csiparse(void)
v = -1;
csiescseq.arg[csiescseq.narg++] = v;
p = np;
- if (*p != ';' || csiescseq.narg == ESC_ARG_SIZ)
+ if (sep == ';' && *p == ':')
+ sep = ':'; /* allow override to colon once */
+ if (*p != sep || csiescseq.narg == ESC_ARG_SIZ)
break;
p++;
}