diff options
author | Andy K. Massimino <f8a663@normed.space> | 2021-03-04 00:39:40 -0500 |
---|---|---|
committer | Andy K. Massimino <f8a663@normed.space> | 2021-03-05 01:45:50 -0500 |
commit | 4e6b31d978e95be631705dbfe994749c44520d47 (patch) | |
tree | dd1ddd020b21fb442ef045d9c844c8f786d97782 /src | |
parent | 8f4b9b8b7de3a24279fad914e9d7ad5ac1213034 (diff) | |
download | rneovim-4e6b31d978e95be631705dbfe994749c44520d47.tar.gz rneovim-4e6b31d978e95be631705dbfe994749c44520d47.tar.bz2 rneovim-4e6b31d978e95be631705dbfe994749c44520d47.zip |
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 vim/vim#6956,
closes vim/vim#4405)
https://github.com/vim/vim/commit/05eb5b9cae123b138bbd23cc77e50657ece6b4ad
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/syntax.c | 15 | ||||
-rw-r--r-- | src/nvim/testdir/test_highlight.vim | 32 |
2 files changed, 40 insertions, 7 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index 547d953be9..140d528e8d 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -7076,13 +7076,14 @@ void restore_cterm_colors(void) */ static int hl_has_settings(int idx, int check_link) { - return HL_TABLE()[idx].sg_attr != 0 - || HL_TABLE()[idx].sg_cterm_fg != 0 - || HL_TABLE()[idx].sg_cterm_bg != 0 - || HL_TABLE()[idx].sg_rgb_fg_name != NULL - || HL_TABLE()[idx].sg_rgb_bg_name != NULL - || HL_TABLE()[idx].sg_rgb_sp_name != NULL - || (check_link && (HL_TABLE()[idx].sg_set & SG_LINK)); + return HL_TABLE()[idx].sg_cleared == 0 + && (HL_TABLE()[idx].sg_attr != 0 + || HL_TABLE()[idx].sg_cterm_fg != 0 + || HL_TABLE()[idx].sg_cterm_bg != 0 + || HL_TABLE()[idx].sg_rgb_fg_name != NULL + || HL_TABLE()[idx].sg_rgb_bg_name != NULL + || HL_TABLE()[idx].sg_rgb_sp_name != NULL + || (check_link && (HL_TABLE()[idx].sg_set & SG_LINK))); } /* diff --git a/src/nvim/testdir/test_highlight.vim b/src/nvim/testdir/test_highlight.vim index 4cc4d775d1..631d19172f 100644 --- a/src/nvim/testdir/test_highlight.vim +++ b/src/nvim/testdir/test_highlight.vim @@ -623,4 +623,36 @@ func Test_xxlast_highlight_RGB_color() 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 |