]> granicus.if.org Git - vim/commitdiff
patch 7.4.766 v7.4.766
authorBram Moolenaar <Bram@vim.org>
Fri, 3 Jul 2015 11:05:50 +0000 (13:05 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 3 Jul 2015 11:05:50 +0000 (13:05 +0200)
Problem:    Background color check does not work on Tera Term.
Solution:   Also recognize ST as a termination character. (Hirohito Higashi)

src/term.c
src/version.c

index 8221e3f066c665482cbe44f9ebeada1414806147..8d8ac407f76e9b9464becd498550a3be7ce248a1 100644 (file)
@@ -4264,7 +4264,9 @@ check_termcode(max_offset, buf, bufsize, buflen)
             *
             * - Background color response:
             *       <Esc>]11;rgb:{rrrr}/{gggg}/{bbbb}\007
-            *   The final byte must be '\007'.
+            *   Or
+            *       <Esc>]11;rgb:{rrrr}/{gggg}/{bbbb}ST
+            *   The final byte must be '\007' or ST(0x9c or ESC\).
             */
            char_u *argp = tp[0] == CSI ? tp + 1 : tp + 2;
 
@@ -4408,12 +4410,15 @@ check_termcode(max_offset, buf, bufsize, buflen)
                    key_name[1] = (int)KE_IGNORE;
                    slen = i + 1;
                }
-               else if (*T_RBG != NUL && len >= 24 - (tp[0] == CSI)
+               else if (*T_RBG != NUL
+                       && len >= 24 - (tp[0] == CSI)
+                       && len >= 24 - (tp[0] == CSI) + (argp[21] == ESC)
                        && argp[0] == '1' && argp[1] == '1'
                        && argp[2] == ';' && argp[3] == 'r' && argp[4] == 'g'
                        && argp[5] == 'b' && argp[6] == ':'
                        && argp[11] == '/' && argp[16] == '/'
-                       && argp[21] == '\007')
+                       && (argp[21] == '\007' || argp[21] == STERM
+                           || (argp[21] == ESC && argp[22] == '\\')))
                {
                    LOG_TR("Received RBG");
                    rbg_status = RBG_GOT;
@@ -4427,7 +4432,7 @@ check_termcode(max_offset, buf, bufsize, buflen)
                    }
                    key_name[0] = (int)KS_EXTRA;
                    key_name[1] = (int)KE_IGNORE;
-                   slen = 24;
+                   slen = 24 - (tp[0] == CSI) + (argp[21] == ESC);
                }
            }
 
index 8336b6d626210e6df0b01a3e8c813dd093d73c6f..ff024760bc64c46b220510660ca1efea4efa921c 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    766,
 /**/
     765,
 /**/