mirror of
https://github.com/vim/vim.git
synced 2025-09-27 04:14:06 -04:00
patch 9.1.0084: Visual hl wrong when it ends before multibyte 'showbreak'
Problem: Visual hl wrong when it ends before multibyte 'showbreak'. (lacygoil) Solution: Use vcol_sbr instead of adding n_extra. (zeertzjq) fixes: #11272 closes: #13996 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
ae07ebc04b
commit
df23d7f4bd
@@ -589,7 +589,7 @@ handle_showbreak_and_filler(win_T *wp, winlinevars_T *wlv)
|
|||||||
// Correct end of highlighted area for 'showbreak',
|
// Correct end of highlighted area for 'showbreak',
|
||||||
// required when 'linebreak' is also set.
|
// required when 'linebreak' is also set.
|
||||||
if (wlv->tocol == wlv->vcol)
|
if (wlv->tocol == wlv->vcol)
|
||||||
wlv->tocol += wlv->n_extra;
|
wlv->tocol = wlv->vcol_sbr;
|
||||||
// combine 'showbreak' with 'wincolor'
|
// combine 'showbreak' with 'wincolor'
|
||||||
wlv->char_attr = hl_combine_attr(wlv->win_attr, HL_ATTR(HLF_AT));
|
wlv->char_attr = hl_combine_attr(wlv->win_attr, HL_ATTR(HLF_AT));
|
||||||
# ifdef FEAT_SYN_HL
|
# ifdef FEAT_SYN_HL
|
||||||
|
6
src/testdir/dumps/Test_visual_ends_before_showbreak.dump
Normal file
6
src/testdir/dumps/Test_visual_ends_before_showbreak.dump
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|x+0&#ffffff0@4| @69
|
||||||
|
|↪+0#4040ff13&| |y+0#0000001#a8a8a8255@68> +0#0000000#ffffff0| +0#0000001#a8a8a8255@2
|
||||||
|
|↪+0#4040ff13#ffffff0| |z+0#0000000&@3| @68
|
||||||
|
|~+0#4040ff13&| @73
|
||||||
|
|~| @73
|
||||||
|
|-+2#0000000&@1| |V|I|S|U|A|L| |-@1| +0&&@34|7|0| @7|1|,|7|6|-|1|4|7| @5|A|l@1|
|
@@ -9,6 +9,7 @@ CheckFeature conceal
|
|||||||
CheckFeature signs
|
CheckFeature signs
|
||||||
|
|
||||||
source view_util.vim
|
source view_util.vim
|
||||||
|
source screendump.vim
|
||||||
|
|
||||||
func s:screen_lines(lnum, width) abort
|
func s:screen_lines(lnum, width) abort
|
||||||
return ScreenLines(a:lnum, a:width)
|
return ScreenLines(a:lnum, a:width)
|
||||||
@@ -358,4 +359,24 @@ func Test_unprintable_char_on_wrap_column()
|
|||||||
call s:close_windows()
|
call s:close_windows()
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
" Test that Visual selection is drawn correctly when 'linebreak' is set and
|
||||||
|
" selection ends before multibyte 'showbreak'.
|
||||||
|
func Test_visual_ends_before_showbreak()
|
||||||
|
CheckScreendump
|
||||||
|
|
||||||
|
let lines =<< trim END
|
||||||
|
vim9script
|
||||||
|
&wrap = true
|
||||||
|
&linebreak = true
|
||||||
|
&showbreak = '↪ '
|
||||||
|
['xxxxx ' .. 'y'->repeat(&columns - 6) .. ' zzzz']->setline(1)
|
||||||
|
normal! wvel
|
||||||
|
END
|
||||||
|
call writefile(lines, 'XvisualEndsBeforeShowbreak', 'D')
|
||||||
|
let buf = RunVimInTerminal('-S XvisualEndsBeforeShowbreak', #{rows: 6})
|
||||||
|
call VerifyScreenDump(buf, 'Test_visual_ends_before_showbreak', {})
|
||||||
|
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -704,6 +704,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 */
|
||||||
|
/**/
|
||||||
|
84,
|
||||||
/**/
|
/**/
|
||||||
83,
|
83,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user