summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-02-24 14:03:56 +0100
committerBram Moolenaar <Bram@vim.org>2018-02-24 14:03:56 +0100
commit674e482d1346aa1afddab62675f3a7d7a00a4894 (patch)
treefda26fab9debb0b107edeba82440d2e7702f9a64
parentcc0f2be88046bd1c07efa444bba6c05efe15ddd5 (diff)
patch 8.0.1533: libterm doesn't support requesting fg and bg colorv8.0.1533
Problem: Libterm doesn't support requesting fg and bg color. Solution: Implement t_RF and t_RB.
-rw-r--r--src/libvterm/src/state.c16
-rw-r--r--src/libvterm/src/vterm.c2
-rw-r--r--src/libvterm/src/vterm_internal.h3
-rw-r--r--src/version.c2
4 files changed, 21 insertions, 2 deletions
diff --git a/src/libvterm/src/state.c b/src/libvterm/src/state.c
index 32dabeb348..05dbe5a964 100644
--- a/src/libvterm/src/state.c
+++ b/src/libvterm/src/state.c
@@ -1506,6 +1506,22 @@ static int on_osc(const char *command, size_t cmdlen, void *user)
settermprop_string(state, VTERM_PROP_TITLE, command + 2, cmdlen - 2);
return 1;
}
+ else if(strneq(command, "10;", 3)) {
+ /* request foreground color: <Esc>]10;?<0x07> */
+ int red = state->default_fg.red;
+ int blue = state->default_fg.blue;
+ int green = state->default_fg.green;
+ vterm_push_output_sprintf_ctrl(state->vt, C1_OSC, "10;rgb:%02x%02x/%02x%02x/%02x%02x\x07", red, red, green, green, blue, blue);
+ return 1;
+ }
+ else if(strneq(command, "11;", 3)) {
+ /* request background color: <Esc>]11;?<0x07> */
+ int red = state->default_bg.red;
+ int blue = state->default_bg.blue;
+ int green = state->default_bg.green;
+ vterm_push_output_sprintf_ctrl(state->vt, C1_OSC, "11;rgb:%02x%02x/%02x%02x/%02x%02x\x07", red, red, green, green, blue, blue);
+ return 1;
+ }
else if(strneq(command, "12;", 3)) {
settermprop_string(state, VTERM_PROP_CURSORCOLOR, command + 3, cmdlen - 3);
return 1;
diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c
index 1789fb3563..853fe50484 100644
--- a/src/libvterm/src/vterm.c
+++ b/src/libvterm/src/vterm.c
@@ -56,7 +56,7 @@ VTerm *vterm_new_with_allocator(int rows, int cols, VTermAllocatorFunctions *fun
vt->strbuffer_cur = 0;
vt->strbuffer = vterm_allocator_malloc(vt, vt->strbuffer_len);
- vt->outbuffer_len = 64;
+ vt->outbuffer_len = 200;
vt->outbuffer_cur = 0;
vt->outbuffer = vterm_allocator_malloc(vt, vt->outbuffer_len);
diff --git a/src/libvterm/src/vterm_internal.h b/src/libvterm/src/vterm_internal.h
index 759382cb1e..3b337c0c19 100644
--- a/src/libvterm/src/vterm_internal.h
+++ b/src/libvterm/src/vterm_internal.h
@@ -222,7 +222,8 @@ enum {
C1_SS3 = 0x8f,
C1_DCS = 0x90,
C1_CSI = 0x9b,
- C1_ST = 0x9c
+ C1_ST = 0x9c,
+ C1_OSC = 0x9d
};
void vterm_state_push_output_sprintf_CSI(VTermState *vts, const char *format, ...);
diff --git a/src/version.c b/src/version.c
index c2096c7c6e..95e5a72ba1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -779,6 +779,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1533,
+/**/
1532,
/**/
1531,