mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 9.0.0208: the override flag has no effect for virtual text
Problem: The override flag has no effect for virtual text. (Ben Jackson) Solution: Make the override flag work. (closes #10915)
This commit is contained in:
@@ -554,6 +554,7 @@ win_line(
|
||||
int *text_prop_idxs = NULL;
|
||||
int text_props_active = 0;
|
||||
proptype_T *text_prop_type = NULL;
|
||||
int extra_for_textprop = FALSE; // wlv.n_extra set for textprop
|
||||
int text_prop_attr = 0;
|
||||
int text_prop_id = 0; // active property ID
|
||||
int text_prop_flags = 0;
|
||||
@@ -1645,10 +1646,13 @@ win_line(
|
||||
++text_prop_next;
|
||||
}
|
||||
|
||||
if (wlv.n_extra == 0 || !extra_for_textprop)
|
||||
{
|
||||
text_prop_attr = 0;
|
||||
text_prop_flags = 0;
|
||||
text_prop_type = NULL;
|
||||
text_prop_id = 0;
|
||||
}
|
||||
if (text_props_active > 0 && wlv.n_extra == 0)
|
||||
{
|
||||
int used_tpi = -1;
|
||||
@@ -1709,6 +1713,7 @@ win_line(
|
||||
wlv.c_extra = NUL;
|
||||
wlv.c_final = NUL;
|
||||
wlv.n_extra = (int)STRLEN(p);
|
||||
extra_for_textprop = TRUE;
|
||||
extra_attr = used_attr;
|
||||
n_attr = mb_charlen(p);
|
||||
saved_search_attr = search_attr;
|
||||
@@ -2094,6 +2099,7 @@ win_line(
|
||||
#if defined(FEAT_PROP_POPUP)
|
||||
if (wlv.n_extra <= 0)
|
||||
{
|
||||
extra_for_textprop = FALSE;
|
||||
in_linebreak = FALSE;
|
||||
if (search_attr == 0)
|
||||
search_attr = saved_search_attr;
|
||||
@@ -2982,11 +2988,12 @@ win_line(
|
||||
}
|
||||
#endif
|
||||
|
||||
// Use "extra_attr", but don't override visual selection highlighting.
|
||||
// Use "extra_attr", but don't override visual selection highlighting,
|
||||
// unless text property overrides.
|
||||
// Don't use "extra_attr" until n_attr_skip is zero.
|
||||
if (n_attr_skip == 0 && n_attr > 0
|
||||
&& wlv.draw_state == WL_LINE
|
||||
&& !attr_pri)
|
||||
&& (!attr_pri || (text_prop_flags & PT_FLAG_OVERRIDE)))
|
||||
{
|
||||
#ifdef LINE_ATTR
|
||||
if (line_attr)
|
||||
|
6
src/testdir/dumps/Test_prop_with_text_override_1.dump
Normal file
6
src/testdir/dumps/Test_prop_with_text_override_1.dump
Normal file
@@ -0,0 +1,6 @@
|
||||
>s+8&#e0e0e08|o|m|e| | +8#4040ff13#40ffff15|i|n|s|e|r|t|e|d| |t+8#0000000#e0e0e08|e|x|t| |h|e|r|e| @35
|
||||
|~+0#4040ff13#ffffff0| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
| +0#0000000&@41|1|,|1| @10|A|l@1|
|
6
src/testdir/dumps/Test_prop_with_text_override_2.dump
Normal file
6
src/testdir/dumps/Test_prop_with_text_override_2.dump
Normal file
@@ -0,0 +1,6 @@
|
||||
|s+0&#ffffff0|o|m+0&#e0e0e08|e| | +0#4040ff13#40ffff15|i|n|s|e|r|t|e|d| |t+0#0000000#e0e0e08|e|x|t| |h|e>r+0&#ffffff0|e| @35
|
||||
|~+0#4040ff13&| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
|~| @58
|
||||
|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@19|1@1| @7|1|,|1|3|-|2|3| @6|A|l@1|
|
@@ -2805,6 +2805,30 @@ func Test_props_with_text_below_nowrap()
|
||||
call delete('XscriptPropsBelowNowrap')
|
||||
endfunc
|
||||
|
||||
func Test_props_with_text_override()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
let lines =<< trim END
|
||||
vim9script
|
||||
setline(1, 'some text here')
|
||||
hi Likethis ctermfg=blue ctermbg=cyan
|
||||
prop_type_add('prop', {highlight: 'Likethis', override: true})
|
||||
prop_add(1, 6, {type: 'prop', text: ' inserted '})
|
||||
hi CursorLine cterm=underline ctermbg=lightgrey
|
||||
set cursorline
|
||||
END
|
||||
call writefile(lines, 'XscriptPropsOverride')
|
||||
let buf = RunVimInTerminal('-S XscriptPropsOverride', #{rows: 6, cols: 60})
|
||||
call VerifyScreenDump(buf, 'Test_prop_with_text_override_1', {})
|
||||
|
||||
call term_sendkeys(buf, ":set nocursorline\<CR>")
|
||||
call term_sendkeys(buf, "0llvfr")
|
||||
call VerifyScreenDump(buf, 'Test_prop_with_text_override_2', {})
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
call delete('XscriptPropsOverride')
|
||||
endfunc
|
||||
|
||||
func Test_props_with_text_CursorMoved()
|
||||
CheckRunVimInTerminal
|
||||
|
||||
|
@@ -735,6 +735,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
208,
|
||||
/**/
|
||||
207,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user