Patch 8.0.1146
Problem:    Redraw when highlight is set with same names. (Ozaki Kiichi)
Solution:   Only free and save a name when it changed. (closes #2120)
Files:      src/syntax.c


*** ../vim-8.0.1145/src/syntax.c        2017-09-22 13:53:31.824213326 +0200
--- src/syntax.c        2017-09-25 22:39:46.127700128 +0200
***************
*** 7969,7974 ****
--- 7969,7976 ----
        }
        else if (STRCMP(key, "GUIFG") == 0)
        {
+           char_u **namep = &HL_TABLE()[idx].sg_gui_fg_name;
+ 
  #if defined(FEAT_GUI) || defined(FEAT_EVAL)
            if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
            {
***************
*** 7982,8003 ****
                {
                    HL_TABLE()[idx].sg_gui_fg = i;
  # endif
!                   vim_free(HL_TABLE()[idx].sg_gui_fg_name);
!                   if (STRCMP(arg, "NONE") != 0)
!                       HL_TABLE()[idx].sg_gui_fg_name = vim_strsave(arg);
!                   else
!                       HL_TABLE()[idx].sg_gui_fg_name = NULL;
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
  #  ifdef FEAT_GUI_X11
!                   if (is_menu_group)
                        gui.menu_fg_pixel = i;
!                   if (is_scrollbar_group)
                        gui.scroll_fg_pixel = i;
  #   ifdef FEAT_BEVAL
!                   if (is_tooltip_group)
                        gui.tooltip_fg_pixel = i;
  #   endif
-                   do_colors = TRUE;
  #  endif
                }
  # endif
--- 7984,8016 ----
                {
                    HL_TABLE()[idx].sg_gui_fg = i;
  # endif
!                   if (*namep == NULL || STRCMP(*namep, arg) != 0)
!                   {
!                       vim_free(*namep);
!                       if (STRCMP(arg, "NONE") != 0)
!                           *namep = vim_strsave(arg);
!                       else
!                           *namep = NULL;
!                   }
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
  #  ifdef FEAT_GUI_X11
!                   if (is_menu_group && gui.menu_fg_pixel != i)
!                   {
                        gui.menu_fg_pixel = i;
!                       do_colors = TRUE;
!                   }
!                   if (is_scrollbar_group && gui.scroll_fg_pixel != i)
!                   {
                        gui.scroll_fg_pixel = i;
+                       do_colors = TRUE;
+                   }
  #   ifdef FEAT_BEVAL
!                   if (is_tooltip_group && gui.tooltip_fg_pixel != i)
!                   {
                        gui.tooltip_fg_pixel = i;
+                       do_colors = TRUE;
+                   }
  #   endif
  #  endif
                }
  # endif
***************
*** 8006,8011 ****
--- 8019,8026 ----
        }
        else if (STRCMP(key, "GUIBG") == 0)
        {
+           char_u **namep = &HL_TABLE()[idx].sg_gui_bg_name;
+ 
  #if defined(FEAT_GUI) || defined(FEAT_EVAL)
            if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
            {
***************
*** 8019,8040 ****
                {
                    HL_TABLE()[idx].sg_gui_bg = i;
  # endif
!                   vim_free(HL_TABLE()[idx].sg_gui_bg_name);
!                   if (STRCMP(arg, "NONE") != 0)
!                       HL_TABLE()[idx].sg_gui_bg_name = vim_strsave(arg);
!                   else
!                       HL_TABLE()[idx].sg_gui_bg_name = NULL;
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
  #  ifdef FEAT_GUI_X11
!                   if (is_menu_group)
                        gui.menu_bg_pixel = i;
!                   if (is_scrollbar_group)
                        gui.scroll_bg_pixel = i;
  #   ifdef FEAT_BEVAL
!                   if (is_tooltip_group)
                        gui.tooltip_bg_pixel = i;
  #   endif
-                   do_colors = TRUE;
  #  endif
                }
  # endif
--- 8034,8066 ----
                {
                    HL_TABLE()[idx].sg_gui_bg = i;
  # endif
!                   if (*namep == NULL || STRCMP(*namep, arg) != 0)
!                   {
!                       vim_free(*namep);
!                       if (STRCMP(arg, "NONE") != 0)
!                           *namep = vim_strsave(arg);
!                       else
!                           *namep = NULL;
!                   }
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
  #  ifdef FEAT_GUI_X11
!                   if (is_menu_group && gui.menu_bg_pixel != i)
!                   {
                        gui.menu_bg_pixel = i;
!                       do_colors = TRUE;
!                   }
!                   if (is_scrollbar_group && gui.scroll_bg_pixel != i)
!                   {
                        gui.scroll_bg_pixel = i;
+                       do_colors = TRUE;
+                   }
  #   ifdef FEAT_BEVAL
!                   if (is_tooltip_group && gui.tooltip_bg_pixel != i)
!                   {
                        gui.tooltip_bg_pixel = i;
+                       do_colors = TRUE;
+                   }
  #   endif
  #  endif
                }
  # endif
***************
*** 8043,8048 ****
--- 8069,8076 ----
        }
        else if (STRCMP(key, "GUISP") == 0)
        {
+           char_u **namep = &HL_TABLE()[idx].sg_gui_sp_name;
+ 
  #if defined(FEAT_GUI) || defined(FEAT_EVAL)
            if (!init || !(HL_TABLE()[idx].sg_set & SG_GUI))
            {
***************
*** 8055,8065 ****
                {
                    HL_TABLE()[idx].sg_gui_sp = i;
  # endif
!                   vim_free(HL_TABLE()[idx].sg_gui_sp_name);
!                   if (STRCMP(arg, "NONE") != 0)
!                       HL_TABLE()[idx].sg_gui_sp_name = vim_strsave(arg);
!                   else
!                       HL_TABLE()[idx].sg_gui_sp_name = NULL;
  # ifdef FEAT_GUI
                }
  # endif
--- 8083,8096 ----
                {
                    HL_TABLE()[idx].sg_gui_sp = i;
  # endif
!                   if (*namep == NULL || STRCMP(*namep, arg) != 0)
!                   {
!                       vim_free(*namep);
!                       if (STRCMP(arg, "NONE") != 0)
!                           *namep = vim_strsave(arg);
!                       else
!                           *namep = NULL;
!                   }
  # ifdef FEAT_GUI
                }
  # endif
*** ../vim-8.0.1145/src/version.c       2017-09-25 22:02:23.877637108 +0200
--- src/version.c       2017-09-25 22:40:57.511256826 +0200
***************
*** 763,764 ****
--- 763,766 ----
  {   /* Add new patch number below this line */
+ /**/
+     1146,
  /**/

-- 
Some of the well known MS-Windows errors:
        EHUH            Unexpected error
        EUSER           User error, not our fault!
        EGOD            Horrible problem, god knows what has happened
        EERR            Errornous error: nothing wrong

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui