st-osc10-20210106-4ef0cbd.diff (2182B)
1 From 9c4b3f40e07dd1d6dd94fa733b7853aff7f4b8fc Mon Sep 17 00:00:00 2001 2 From: Raheman Vaiya <r.vaiya@gmail.com> 3 Date: Sat, 16 Jan 2021 18:18:07 -0500 4 Subject: [PATCH] Add proper OSC 10/11 support. 5 6 --- 7 config.def.h | 9 ++++++--- 8 st.c | 30 ++++++++++++++++++++++++++++++ 9 st.h | 1 + 10 3 files changed, 37 insertions(+), 3 deletions(-) 11 12 diff --git a/config.def.h b/config.def.h 13 index 6f05dce..9bb22a5 100644 14 --- a/config.def.h 15 +++ b/config.def.h 16 @@ -120,6 +120,8 @@ static const char *colorname[] = { 17 /* more colors can be added after 255 to use with DefaultXX */ 18 "#cccccc", 19 "#555555", 20 + "black", 21 + "gray90", 22 }; 23 24 25 @@ -127,9 +129,10 @@ static const char *colorname[] = { 26 * Default colors (colorname index) 27 * foreground, background, cursor, reverse cursor 28 */ 29 -unsigned int defaultfg = 7; 30 -unsigned int defaultbg = 0; 31 -static unsigned int defaultcs = 256; 32 + 33 +unsigned int defaultbg = 258; 34 +unsigned int defaultfg = 259; 35 +unsigned int defaultcs = 256; 36 static unsigned int defaultrcs = 257; 37 38 /* 39 diff --git a/st.c b/st.c 40 index abbbe4b..6a57d89 100644 41 --- a/st.c 42 +++ b/st.c 43 @@ -1877,6 +1877,36 @@ strhandle(void) 44 } 45 } 46 return; 47 + case 10: /* set foreground color */ 48 + if (narg < 2) 49 + break; 50 + 51 + p = strescseq.args[1]; 52 + if (xsetcolorname(defaultfg, p)) 53 + fprintf(stderr, "erresc: invalid foreground color %d\n", p); 54 + else 55 + redraw(); 56 + break; 57 + case 11: /* set background color */ 58 + if (narg < 2) 59 + break; 60 + 61 + p = strescseq.args[1]; 62 + if (xsetcolorname(defaultbg, p)) 63 + fprintf(stderr, "erresc: invalid background color %d\n", p); 64 + else 65 + redraw(); 66 + break; 67 + case 12: /* set cursor color */ 68 + if (narg < 2) 69 + break; 70 + 71 + p = strescseq.args[1]; 72 + if (xsetcolorname(defaultcs, p)) 73 + fprintf(stderr, "erresc: invalid cursor color %d\n", p); 74 + else 75 + redraw(); 76 + break; 77 case 4: /* color set */ 78 if (narg < 3) 79 break; 80 diff --git a/st.h b/st.h 81 index 3d351b6..054366d 100644 82 --- a/st.h 83 +++ b/st.h 84 @@ -123,3 +123,4 @@ extern char *termname; 85 extern unsigned int tabspaces; 86 extern unsigned int defaultfg; 87 extern unsigned int defaultbg; 88 +extern unsigned int defaultcs; 89 -- 90 2.20.1 91