]> granicus.if.org Git - vim/commitdiff
patch 8.1.0481: when "Terminal" highlight is reverted cursor doesn't show v8.1.0481
authorBram Moolenaar <Bram@vim.org>
Tue, 16 Oct 2018 20:13:00 +0000 (22:13 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 16 Oct 2018 20:13:00 +0000 (22:13 +0200)
Problem:    When "Terminal" highlight is reverted cursor doesn't show.
Solution:   Get the colors of the "Terminal" group. (closes #3546)

src/terminal.c
src/version.c

index 0c7630c62087f6a454d6987526088f1706176211..4e62253d5476ea00db3d88ef313d2677b2bd295c 100644 (file)
@@ -1953,6 +1953,8 @@ term_get_cursor_shape(guicolor_T *fg, guicolor_T *bg)
 {
     term_T              *term = in_terminal_loop;
     static cursorentry_T entry;
+    int                         id;
+    guicolor_T         term_fg, term_bg;
 
     vim_memset(&entry, 0, sizeof(entry));
     entry.shape = entry.mshape =
@@ -1966,9 +1968,24 @@ term_get_cursor_shape(guicolor_T *fg, guicolor_T *bg)
        entry.blinkon = 400;
        entry.blinkoff = 250;
     }
-    *fg = gui.back_pixel;
+
+    /* The "Terminal" highlight group overrules the defaults. */
+    id = syn_name2id((char_u *)"Terminal");
+    if (id != 0)
+    {
+       syn_id2colors(id, &term_fg, &term_bg);
+       *fg = term_bg;
+    }
+    else
+       *fg = gui.back_pixel;
+
     if (term->tl_cursor_color == NULL)
-       *bg = gui.norm_pixel;
+    {
+       if (id != 0)
+           *bg = term_fg;
+       else
+           *bg = gui.norm_pixel;
+    }
     else
        *bg = color_name2handle(term->tl_cursor_color);
     entry.name = "n";
index 1eab778c9321631b03dda8b1a71c9d9468d1b586..dada7a7fe148b0025a1fc2ad1a76b5b62261bf2f 100644 (file)
@@ -792,6 +792,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    481,
 /**/
     480,
 /**/