]> Sergey Matveev's repositories - st.git/commitdiff
Fixed OSC color reset without parameter->resets all colors
authorHiltjo Posthuma <hiltjo@codemadness.org>
Sun, 5 Feb 2023 12:29:35 +0000 (13:29 +0100)
committerHiltjo Posthuma <hiltjo@codemadness.org>
Sun, 5 Feb 2023 12:29:35 +0000 (13:29 +0100)
Adapted from (garbled) patch by wim <wim@thinkerwim.org>

Additional notes: it should reset all the colors using xloadcols().
To reproduce: set a different (theme) color using some escape code, then reset
it:

printf '\x1b]104\x07'

st.c

diff --git a/st.c b/st.c
index 62def59f17cbf1bfd841210453ba29e5578d5610..34c27adf3f755bd60cc6b45f1c34af8bb48c98bb 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1932,8 +1932,10 @@ strhandle(void)
                        if (p && !strcmp(p, "?")) {
                                osc_color_response(j, 0, 1);
                        } else if (xsetcolorname(j, p)) {
-                               if (par == 104 && narg <= 1)
+                               if (par == 104 && narg <= 1) {
+                                       xloadcols();
                                        return; /* color reset without parameter */
+                               }
                                fprintf(stderr, "erresc: invalid color j=%d, p=%s\n",
                                        j, p ? p : "(null)");
                        } else {