Skip to content

Commit 05eb5b9

Browse files
committed
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)
1 parent fb489af commit 05eb5b9

3 files changed

Lines changed: 38 additions & 2 deletions

File tree

src/highlight.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,8 @@ do_highlight(
729729

730730
if (!ends_excmd2(line, skipwhite(to_end)))
731731
{
732-
semsg(_("E413: Too many arguments: \":highlight link %s\""), from_start);
732+
semsg(_("E413: Too many arguments: \":highlight link %s\""),
733+
from_start);
733734
return;
734735
}
735736

@@ -1629,7 +1630,8 @@ restore_cterm_colors(void)
16291630
static int
16301631
hl_has_settings(int idx, int check_link)
16311632
{
1632-
return ( HL_TABLE()[idx].sg_term_attr != 0
1633+
return HL_TABLE()[idx].sg_cleared == 0
1634+
&& ( HL_TABLE()[idx].sg_term_attr != 0
16331635
|| HL_TABLE()[idx].sg_cterm_attr != 0
16341636
|| HL_TABLE()[idx].sg_cterm_fg != 0
16351637
|| HL_TABLE()[idx].sg_cterm_bg != 0

src/testdir/test_highlight.vim

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,4 +832,36 @@ func Test_highlight_term_attr()
832832
hi clear
833833
endfunc
834834

835+
" Test default highlighting is restored
836+
func Test_highlight_restore_defaults()
837+
hi! link TestLink Identifier
838+
hi! TestHi ctermbg=red
839+
840+
let hlTestLinkPre = HighlightArgs('TestLink')
841+
let hlTestHiPre = HighlightArgs('TestHi')
842+
843+
" Test colorscheme
844+
hi clear
845+
if exists('syntax_on')
846+
syntax reset
847+
endif
848+
let g:colors_name = 'test'
849+
hi! link TestLink ErrorMsg
850+
hi! TestHi ctermbg=green
851+
852+
" Restore default highlighting
853+
colorscheme default
854+
syntax on
855+
" 'default' should work no matter if highlight group was cleared
856+
hi def link TestLink Identifier
857+
hi def TestHi ctermbg=red
858+
859+
let hlTestLinkPost = HighlightArgs('TestLink')
860+
let hlTestHiPost = HighlightArgs('TestHi')
861+
862+
call assert_equal(hlTestLinkPre, hlTestLinkPost)
863+
call assert_equal(hlTestHiPre, hlTestHiPost)
864+
hi clear
865+
endfunc
866+
835867
" vim: shiftwidth=2 sts=2 expandtab

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
1693,
753755
/**/
754756
1692,
755757
/**/

0 commit comments

Comments
 (0)