Patch 8.2.1705

7 views
Skip to first unread message

Bram Moolenaar

unread,
Sep 18, 2020, 1:41:29 PM9/18/20
to vim...@googlegroups.com

Patch 8.2.1705
Problem: "verbose hi Name" reports incorrect info after ":hi clear".
Solution: Store the script context. (Antony Scriven, closes #6975)
Files: src/highlight.c, src/testdir/test_highlight.vim


*** ../vim-8.2.1704/src/highlight.c 2020-09-17 19:59:20.520623502 +0200
--- src/highlight.c 2020-09-18 18:22:54.772033221 +0200
***************
*** 76,81 ****
--- 76,82 ----
int sg_deflink; // default link; restored in highlight_clear()
int sg_set; // combination of SG_* flags
#ifdef FEAT_EVAL
+ sctx_T sg_deflink_sctx; // script where the default link was set
sctx_T sg_script_ctx; // script in which the group was last set
#endif
} hl_group_T;
***************
*** 746,752 ****
--- 747,759 ----
{
hlgroup = &HL_TABLE()[from_id - 1];
if (dodefault && (forceit || hlgroup->sg_deflink == 0))
+ {
hlgroup->sg_deflink = to_id;
+ #ifdef FEAT_EVAL
+ hlgroup->sg_deflink_sctx = current_sctx;
+ hlgroup->sg_deflink_sctx.sc_lnum += SOURCING_LNUM;
+ #endif
+ }
}

if (from_id > 0 && (!init || hlgroup->sg_set == 0))
***************
*** 1691,1706 ****
VIM_CLEAR(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_gui_attr = 0;
#endif
! #ifdef FEAT_EVAL
! // Restore any default link.
HL_TABLE()[idx].sg_link = HL_TABLE()[idx].sg_deflink;
! // Clear the script ID only when there is no link, since that is not
! // cleared.
! if (HL_TABLE()[idx].sg_link == 0)
! {
! HL_TABLE()[idx].sg_script_ctx.sc_sid = 0;
! HL_TABLE()[idx].sg_script_ctx.sc_lnum = 0;
! }
#endif
}

--- 1698,1709 ----
VIM_CLEAR(HL_TABLE()[idx].sg_font_name);
HL_TABLE()[idx].sg_gui_attr = 0;
#endif
! // Restore default link and context if they exist. Otherwise clears.
HL_TABLE()[idx].sg_link = HL_TABLE()[idx].sg_deflink;
! #ifdef FEAT_EVAL
! // Since we set the default link, set the location to where the default
! // link was set.
! HL_TABLE()[idx].sg_script_ctx = HL_TABLE()[idx].sg_deflink_sctx;
#endif
}

*** ../vim-8.2.1704/src/testdir/test_highlight.vim 2020-09-17 19:59:20.520623502 +0200
--- src/testdir/test_highlight.vim 2020-09-18 18:18:05.862083905 +0200
***************
*** 3,8 ****
--- 3,9 ----
source view_util.vim
source screendump.vim
source check.vim
+ source script_util.vim

func Test_highlight()
" basic test if ":highlight" doesn't crash
***************
*** 870,875 ****
--- 871,909 ----
call assert_equal(HighlightArgs('aaa'), hl_aaa_ddd)
endfunc

+ func Test_highlight_clear_restores_context()
+ func FuncContextDefault()
+ hi def link Context ContextDefault
+ endfun
+
+ func FuncContextRelink()
+ " Dummy line
+ hi link Context ContextRelink
+ endfunc
+
+ let scriptContextDefault = MakeScript("FuncContextDefault")
+ let scriptContextRelink = MakeScript("FuncContextRelink")
+ let patContextDefault = fnamemodify(scriptContextDefault, ':t') .. ' line 1'
+ let patContextRelink = fnamemodify(scriptContextRelink, ':t') .. ' line 2'
+
+ exec "source" scriptContextDefault
+ let hlContextDefault = execute("verbose hi Context")
+ call assert_match(patContextDefault, hlContextDefault)
+
+ exec "source" scriptContextRelink
+ let hlContextRelink = execute("verbose hi Context")
+ call assert_match(patContextRelink, hlContextRelink)
+
+ hi clear
+ let hlContextAfterClear = execute("verbose hi Context")
+ call assert_match(patContextDefault, hlContextAfterClear)
+
+ delfunc FuncContextDefault
+ delfunc FuncContextRelink
+ call delete(scriptContextDefault)
+ call delete(scriptContextRelink)
+ endfunc
+
func Test_highlight_default_colorscheme_restores_links()
hi link TestLink Identifier
hi TestHi ctermbg=red
*** ../vim-8.2.1704/src/version.c 2020-09-17 21:28:59.943951831 +0200
--- src/version.c 2020-09-18 18:21:07.612762350 +0200
***************
*** 752,753 ****
--- 752,755 ----
{ /* Add new patch number below this line */
+ /**/
+ 1705,
/**/

--
SOLDIER: What? Ridden on a horse?
ARTHUR: Yes!
SOLDIER: You're using coconuts!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages