To: vim_dev@googlegroups.com Subject: Patch 8.2.1693 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1693 Problem: "hi def" does not work for cleared highlight. Solution: Check the "sg_cleared" flag. (Maxim Kim, closes #6956, closes #4405) Files: src/highlight.c, src/testdir/test_highlight.vim *** ../vim-8.2.1692/src/highlight.c 2020-06-28 13:17:07.547811047 +0200 --- src/highlight.c 2020-09-16 15:43:10.005781530 +0200 *************** *** 729,735 **** if (!ends_excmd2(line, skipwhite(to_end))) { ! semsg(_("E413: Too many arguments: \":highlight link %s\""), from_start); return; } --- 729,736 ---- if (!ends_excmd2(line, skipwhite(to_end))) { ! semsg(_("E413: Too many arguments: \":highlight link %s\""), ! from_start); return; } *************** *** 1629,1635 **** static int hl_has_settings(int idx, int check_link) { ! return ( HL_TABLE()[idx].sg_term_attr != 0 || HL_TABLE()[idx].sg_cterm_attr != 0 || HL_TABLE()[idx].sg_cterm_fg != 0 || HL_TABLE()[idx].sg_cterm_bg != 0 --- 1630,1637 ---- static int hl_has_settings(int idx, int check_link) { ! return HL_TABLE()[idx].sg_cleared == 0 ! && ( HL_TABLE()[idx].sg_term_attr != 0 || HL_TABLE()[idx].sg_cterm_attr != 0 || HL_TABLE()[idx].sg_cterm_fg != 0 || HL_TABLE()[idx].sg_cterm_bg != 0 *** ../vim-8.2.1692/src/testdir/test_highlight.vim 2020-09-15 20:52:03.164972054 +0200 --- src/testdir/test_highlight.vim 2020-09-16 15:38:51.090839125 +0200 *************** *** 832,835 **** --- 832,867 ---- hi clear endfunc + " Test default highlighting is restored + func Test_highlight_restore_defaults() + hi! link TestLink Identifier + hi! TestHi ctermbg=red + + let hlTestLinkPre = HighlightArgs('TestLink') + let hlTestHiPre = HighlightArgs('TestHi') + + " Test colorscheme + hi clear + if exists('syntax_on') + syntax reset + endif + let g:colors_name = 'test' + hi! link TestLink ErrorMsg + hi! TestHi ctermbg=green + + " Restore default highlighting + colorscheme default + syntax on + " 'default' should work no matter if highlight group was cleared + hi def link TestLink Identifier + hi def TestHi ctermbg=red + + let hlTestLinkPost = HighlightArgs('TestLink') + let hlTestHiPost = HighlightArgs('TestHi') + + call assert_equal(hlTestLinkPre, hlTestLinkPost) + call assert_equal(hlTestHiPre, hlTestHiPost) + hi clear + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.1692/src/version.c 2020-09-16 15:41:06.470287510 +0200 --- src/version.c 2020-09-16 15:42:22.353976971 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 1693, /**/ -- A disclaimer for the disclaimer: "and before I get a huge amount of complaints , I have no control over the disclaimer at the end of this mail :-)" (Timothy Aldrich) /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///