mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
vim-patch:9.0.0758: "precedes" from 'listchars' overwritten by <<<
Problem: "precedes" from 'listchars' overwritten by <<< for 'smoothscroll'.
Solution: Keep the "precedes" character.
13cdde3952
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
6146400605
commit
72c525d567
@ -530,9 +530,12 @@ void grid_put_linebuf(ScreenGrid *grid, int row, int coloff, int endcol, int cle
|
||||
max_off_from = linebuf_size;
|
||||
max_off_to = grid->line_offset[row] + (size_t)grid->cols;
|
||||
|
||||
if (topline && wp->w_skipcol > 0 && *get_showbreak_value(wp) == NUL) {
|
||||
// Take care of putting "<<<" on the first line for 'smoothscroll'
|
||||
// when 'showbreak' is not set.
|
||||
// Take care of putting "<<<" on the first line for 'smoothscroll'.
|
||||
if (topline && wp->w_skipcol > 0
|
||||
// do not overwrite the 'showbreak' text with "<<<"
|
||||
&& *get_showbreak_value(wp) == NUL
|
||||
// do not overwrite the 'listchars' "precedes" text with "<<<"
|
||||
&& !(wp->w_p_list && wp->w_p_lcs_chars.prec != 0)) {
|
||||
int off = 0;
|
||||
int skip = 0;
|
||||
if (wp->w_p_nu && wp->w_p_rnu) {
|
||||
|
@ -294,6 +294,38 @@ describe('smoothscroll', function()
|
||||
]])
|
||||
end)
|
||||
|
||||
-- oldtest: Test_smoothscroll_list()
|
||||
it("works with list mode", function()
|
||||
screen:try_resize(40, 8)
|
||||
exec([[
|
||||
set smoothscroll scrolloff=0
|
||||
set list
|
||||
call setline(1, [ 'one', 'very long text '->repeat(12), 'three', ])
|
||||
exe "normal 2Gzt\<C-E>"
|
||||
]])
|
||||
screen:expect([[
|
||||
<<<t very long text very long text very |
|
||||
^long text very long text very long text |
|
||||
very long text very long text very long |
|
||||
text very long text- |
|
||||
three |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]])
|
||||
exec('set listchars+=precedes:#')
|
||||
screen:expect([[
|
||||
#ext very long text very long text very |
|
||||
^long text very long text very long text |
|
||||
very long text very long text very long |
|
||||
text very long text- |
|
||||
three |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
||||
-- oldtest: Test_smoothscroll_diff_mode()
|
||||
it("works with diff mode", function()
|
||||
screen:try_resize(40, 8)
|
||||
|
@ -172,6 +172,31 @@ func Test_smoothscroll_number()
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_smoothscroll_list()
|
||||
CheckScreendump
|
||||
|
||||
let lines =<< trim END
|
||||
vim9script
|
||||
set smoothscroll scrolloff=0
|
||||
set list
|
||||
setline(1, [
|
||||
'one',
|
||||
'very long text '->repeat(12),
|
||||
'three',
|
||||
])
|
||||
exe "normal 2Gzt\<C-E>"
|
||||
END
|
||||
call writefile(lines, 'XSmoothList', 'D')
|
||||
let buf = RunVimInTerminal('-S XSmoothList', #{rows: 8, cols: 40})
|
||||
|
||||
call VerifyScreenDump(buf, 'Test_smooth_list_1', {})
|
||||
|
||||
call term_sendkeys(buf, ":set listchars+=precedes:#\<CR>")
|
||||
call VerifyScreenDump(buf, 'Test_smooth_list_2', {})
|
||||
|
||||
call StopVimInTerminal(buf)
|
||||
endfunc
|
||||
|
||||
func Test_smoothscroll_diff_mode()
|
||||
CheckScreendump
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user