diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-09-16 15:43:21 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-09-16 15:43:21 +0200 |
commit | 05eb5b9cae123b138bbd23cc77e50657ece6b4ad (patch) | |
tree | c5edd589c1d36fbeeb23a24f077851d0ff8c7108 | |
parent | fb489af2ec1b181d212a8aa8151d7784b260d01b (diff) | |
download | vim-git-05eb5b9cae123b138bbd23cc77e50657ece6b4ad.tar.gz |
patch 8.2.1693: "hi def" does not work for cleared highlightv8.2.1693
Problem: "hi def" does not work for cleared highlight.
Solution: Check the "sg_cleared" flag. (Maxim Kim, closes #6956,
closes #4405)
-rw-r--r-- | src/highlight.c | 6 | ||||
-rw-r--r-- | src/testdir/test_highlight.vim | 32 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 38 insertions, 2 deletions
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 @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1693, +/**/ 1692, /**/ 1691, |