0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2020-09-16 15:43:21 +02:00
parent fb489af2ec
commit 05eb5b9cae
3 changed files with 38 additions and 2 deletions

View File

@ -729,7 +729,8 @@ do_highlight(
if (!ends_excmd2(line, skipwhite(to_end))) 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; return;
} }
@ -1629,7 +1630,8 @@ restore_cterm_colors(void)
static int static int
hl_has_settings(int idx, int check_link) 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_attr != 0
|| HL_TABLE()[idx].sg_cterm_fg != 0 || HL_TABLE()[idx].sg_cterm_fg != 0
|| HL_TABLE()[idx].sg_cterm_bg != 0 || HL_TABLE()[idx].sg_cterm_bg != 0

View File

@ -832,4 +832,36 @@ func Test_highlight_term_attr()
hi clear hi clear
endfunc 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 " vim: shiftwidth=2 sts=2 expandtab

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1693,
/**/ /**/
1692, 1692,
/**/ /**/