# HG changeset patch # User Bram Moolenaar # Date 1559677505 -7200 # Node ID bcc25f1a264dc870648c6ad83821b6f9b3b193a7 # Parent fe06c620ee5c25da020d94ef4b5d7170b4a44b71 patch 8.1.1464: only 4-digit rgb termresponse is recognized commit https://github.com/vim/vim/commit/cea254f5a793bf447d6ea2eb926cba38e73adece Author: Bram Moolenaar Date: Tue Jun 4 21:41:28 2019 +0200 patch 8.1.1464: only 4-digit rgb termresponse is recognized Problem: Only 4-digit rgb termresponse is recognized. Solution: Also recognize 2-digit rgb response. (closes https://github.com/vim/vim/issues/4486) diff --git a/src/term.c b/src/term.c --- a/src/term.c +++ b/src/term.c @@ -4962,6 +4962,7 @@ check_termcode( /* Check for fore/background color response from the terminal: * * {lead}{code};rgb:{rrrr}/{gggg}/{bbbb}{tail} + * or {lead}{code};rgb:{rr}/{gg}/{bb}{tail} * * {code} is 10 for foreground, 11 for background * {lead} can be ] or OSC @@ -4985,14 +4986,19 @@ check_termcode( : (tp[i] == ESC && i + 1 < len && tp[i + 1] == '\\'))) { int is_bg = argp[1] == '1'; - - if (i - j >= 21 && STRNCMP(tp + j + 3, "rgb:", 4) == 0 - && tp[j + 11] == '/' && tp[j + 16] == '/') + int is_4digit = i - j >= 21 && tp[j + 11] == '/' + && tp[j + 16] == '/'; + + if (i - j >= 14 && STRNCMP(tp + j + 3, "rgb:", 4) == 0 + && (is_4digit + || (tp[j + 9] == '/' && tp[i + 12 == '/']))) { # ifdef FEAT_TERMINAL - int rval = hexhex2nr(tp + j + 7); - int gval = hexhex2nr(tp + j + 12); - int bval = hexhex2nr(tp + j + 17); + int rval, gval, bval; + + rval = hexhex2nr(tp + j + 7); + gval = hexhex2nr(tp + j + (is_4digit ? 12 : 10)); + bval = hexhex2nr(tp + j + (is_4digit ? 17 : 13)); # endif if (is_bg) { diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1464, +/**/ 1463, /**/ 1462,