diff options
| author | Hiltjo Posthuma <hiltjo@codemadness.org> | 2024-05-01 20:45:39 +0200 | 
|---|---|---|
| committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2024-05-01 20:45:39 +0200 | 
| commit | 5dbcca49263be094fc38159c297458ae323ef647 (patch) | |
| tree | a96e2e2c91be152faaba7cf54698c8104d799b67 | |
| parent | d63b9eb90245926b531bd54b1d591adb96613e70 (diff) | |
| download | st-transparency-5dbcca49263be094fc38159c297458ae323ef647.tar.gz st-transparency-5dbcca49263be094fc38159c297458ae323ef647.tar.xz st-transparency-5dbcca49263be094fc38159c297458ae323ef647.zip  | |
support colons in SGR character attributes
Patch by Mikhail Kot <to@myrrc.dev>
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).
| -rw-r--r-- | st.c | 5 | 
1 files changed, 4 insertions, 1 deletions
@@ -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++;  	}  | 
