mirror of
https://github.com/neovim/neovim.git
synced 2026-01-19 03:29:29 +10:00
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)
05eb5b9cae
This commit is contained in:
@@ -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)));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user