@@ -4264,7 +4264,9 @@ check_termcode(max_offset, buf, bufsize, buflen)
4264
4264
*
4265
4265
* - Background color response:
4266
4266
* <Esc>]11;rgb:{rrrr}/{gggg}/{bbbb}\007
4267
- * The final byte must be '\007'.
4267
+ * Or
4268
+ * <Esc>]11;rgb:{rrrr}/{gggg}/{bbbb}ST
4269
+ * The final byte must be '\007' or ST(0x9c or ESC\).
4268
4270
*/
4269
4271
char_u * argp = tp [0 ] == CSI ? tp + 1 : tp + 2 ;
4270
4272
@@ -4408,12 +4410,15 @@ check_termcode(max_offset, buf, bufsize, buflen)
4408
4410
key_name [1 ] = (int )KE_IGNORE ;
4409
4411
slen = i + 1 ;
4410
4412
}
4411
- else if (* T_RBG != NUL && len >= 24 - (tp [0 ] == CSI )
4413
+ else if (* T_RBG != NUL
4414
+ && len >= 24 - (tp [0 ] == CSI )
4415
+ && len >= 24 - (tp [0 ] == CSI ) + (argp [21 ] == ESC )
4412
4416
&& argp [0 ] == '1' && argp [1 ] == '1'
4413
4417
&& argp [2 ] == ';' && argp [3 ] == 'r' && argp [4 ] == 'g'
4414
4418
&& argp [5 ] == 'b' && argp [6 ] == ':'
4415
4419
&& argp [11 ] == '/' && argp [16 ] == '/'
4416
- && argp [21 ] == '\007' )
4420
+ && (argp [21 ] == '\007' || argp [21 ] == STERM
4421
+ || (argp [21 ] == ESC && argp [22 ] == '\\' )))
4417
4422
{
4418
4423
LOG_TR ("Received RBG" );
4419
4424
rbg_status = RBG_GOT ;
@@ -4427,7 +4432,7 @@ check_termcode(max_offset, buf, bufsize, buflen)
4427
4432
}
4428
4433
key_name [0 ] = (int )KS_EXTRA ;
4429
4434
key_name [1 ] = (int )KE_IGNORE ;
4430
- slen = 24 ;
4435
+ slen = 24 - ( tp [ 0 ] == CSI ) + ( argp [ 21 ] == ESC ) ;
4431
4436
}
4432
4437
}
4433
4438
0 commit comments