From: Bram Moolenaar Date: Wed, 16 Sep 2020 13:43:21 +0000 (+0200) Subject: patch 8.2.1693: "hi def" does not work for cleared highlight X-Git-Tag: v8.2.1693 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=05eb5b9cae123b138bbd23cc77e50657ece6b4ad;p=vim patch 8.2.1693: "hi def" does not work for cleared highlight Problem: "hi def" does not work for cleared highlight. Solution: Check the "sg_cleared" flag. (Maxim Kim, closes #6956, closes #4405) --- diff --git a/src/highlight.c b/src/highlight.c index 6ddd44a82..017507924 100644 --- a/src/highlight.c +++ b/src/highlight.c @@ -729,7 +729,8 @@ do_highlight( if (!ends_excmd2(line, skipwhite(to_end))) { - semsg(_("E413: Too many arguments: \":highlight link %s\""), from_start); + semsg(_("E413: Too many arguments: \":highlight link %s\""), + from_start); return; } @@ -1629,7 +1630,8 @@ restore_cterm_colors(void) static int hl_has_settings(int idx, int check_link) { - return ( HL_TABLE()[idx].sg_term_attr != 0 + 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 diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim index 4f2e238e4..5db2c57cb 100644 --- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -832,4 +832,36 @@ func Test_highlight_term_attr() 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 diff --git a/src/version.c b/src/version.c index d1ce8f040..dab2bd8e2 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1693, /**/ 1692, /**/