vim-patch:9.1.0084: Visual hl wrong when it ends before multibyte 'showbreak' (#27404)

Problem:  Visual hl wrong when it ends before multibyte 'showbreak'.
          (lacygoil)
Solution: Use vcol_sbr instead of adding n_extra.
          (zeertzjq)

fixes: vim/vim#11272
closes: vim/vim#13996

df23d7f4bd

Bug doesn't apply to Nvim.
This commit is contained in:
zeertzjq
2024-02-10 06:53:10 +08:00
committed by GitHub
parent 44ec4b5b18
commit 0d4d3e4325
2 changed files with 49 additions and 1 deletions

View File

@@ -1,12 +1,14 @@
-- Test for linebreak and list option in utf-8 mode
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local source = helpers.source
local feed = helpers.feed
local exec = helpers.exec
local clear, expect = helpers.clear, helpers.expect
describe('linebreak', function()
setup(clear)
before_each(clear)
-- luacheck: ignore 621 (Indentation)
-- luacheck: ignore 613 (Trailing whitespaces in a string)
@@ -208,4 +210,29 @@ describe('linebreak', function()
a b c¶
Screen attributes are the same!]])
end)
-- oldtest: Test_visual_ends_before_showbreak()
it("Visual area is correct when it ends before multibyte 'showbreak'", function()
local screen = Screen.new(60, 8)
screen:set_default_attr_ids({
[0] = { bold = true, foreground = Screen.colors.Blue }, -- NonText
[1] = { background = Screen.colors.LightGrey }, -- Visual
[2] = { bold = true }, -- ModeMsg
})
screen:attach()
exec([[
let &wrap = v:true
let &linebreak = v:true
let &showbreak = '↪ '
eval ['xxxxx ' .. 'y'->repeat(&columns - 6) .. ' zzzz']->setline(1)
normal! wvel
]])
screen:expect([[
xxxxx |
{0:↪ }{1:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy}^ {1: }|
{0:↪ }zzzz |
{0:~ }|*4
{2:-- VISUAL --} |
]])
end)
end)