aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndy K. Massimino <f8a663@normed.space>2021-03-04 00:39:40 -0500
committerAndy K. Massimino <f8a663@normed.space>2021-03-05 01:45:50 -0500
commit4e6b31d978e95be631705dbfe994749c44520d47 (patch)
treedd1ddd020b21fb442ef045d9c844c8f786d97782 /src
parent8f4b9b8b7de3a24279fad914e9d7ad5ac1213034 (diff)
downloadrneovim-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.c15
-rw-r--r--src/nvim/testdir/test_highlight.vim32
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