changeset 30602:001c228efdab v9.0.0636

patch 9.0.0636: underline color may not work in some terminals Commit: https://github.com/vim/vim/commit/b393275ae91eb9a8df7a9a611bd75590db9b22db Author: Bram Moolenaar <Bram@vim.org> Date: Sat Oct 1 21:22:17 2022 +0100 patch 9.0.0636: underline color may not work in some terminals Problem: Underline color does not work in terminals that don't send a termresponse. Solution: Do output t_8u if it was set explicitly. (closes #11253)
author Bram Moolenaar <Bram@vim.org>
date Sat, 01 Oct 2022 22:30:03 +0200
parents 6194c0ba3526
children 827c77642cb1
files src/term.c src/version.c
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -153,7 +153,7 @@ static termrequest_T *all_termrequests[]
 
 // The t_8u code may default to a value but get reset when the term response is
 // received.  To avoid redrawing too often, only redraw when t_8u is not reset
-// and it was supposed to be written.
+// and it was supposed to be written.  Unless t_8u was set explicitly.
 // FALSE -> don't output t_8u yet
 // MAYBE -> tried outputing t_8u while FALSE
 // OK    -> can write t_8u
@@ -3011,7 +3011,10 @@ term_bg_rgb_color(guicolor_T rgb)
 term_ul_rgb_color(guicolor_T rgb)
 {
 # ifdef FEAT_TERMRESPONSE
-    if (write_t_8u_state != OK)
+    // If the user explicitly sets t_8u then use it.  Otherwise wait for
+    // termresponse to be received, which is when t_8u would be set and a
+    // redraw is needed if it was used.
+    if (!option_was_set((char_u *)"t_8u") && write_t_8u_state != OK)
 	write_t_8u_state = MAYBE;
     else
 # endif
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    636,
+/**/
     635,
 /**/
     634,