diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-24 02:11:53 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-01-24 02:17:21 -0500 |
commit | 9d826700f7f6556774b76592788e0cf5a1b44cd5 (patch) | |
tree | 041cb7e0dd91d778f4c9fdad75a429ebe19ed230 /src | |
parent | e22d0cf12c985e670fcc562a6ce75e82a0b3a741 (diff) | |
download | rneovim-9d826700f7f6556774b76592788e0cf5a1b44cd5.tar.gz rneovim-9d826700f7f6556774b76592788e0cf5a1b44cd5.tar.bz2 rneovim-9d826700f7f6556774b76592788e0cf5a1b44cd5.zip |
vim-patch:8.1.2245: third character of 'listchars' tab shows in wrong place
Problem: Third character of 'listchars' tab shows in wrong place when
'breakindent' is set.
Solution: Set c_final to NUL. (Naruhiko Nishino, closes vim/vim#5165)
https://github.com/vim/vim/commit/2f7b7b1e123d505637d21e0df28eb9e92667479c
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 5 | ||||
-rw-r--r-- | src/nvim/testdir/test_breakindent.vim | 40 |
2 files changed, 42 insertions, 3 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 3e59169918..ae38f657cd 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2976,6 +2976,7 @@ win_line ( } p_extra = NULL; c_extra = ' '; + c_final = NUL; n_extra = get_breakindent_win(wp, ml_get_buf(wp->w_buffer, lnum, false)); if (wp->w_skipcol > 0 && wp->w_p_wrap) { @@ -3293,9 +3294,7 @@ win_line ( } else { int c0; - if (p_extra_free != NULL) { - XFREE_CLEAR(p_extra_free); - } + XFREE_CLEAR(p_extra_free); // Get a character from the line itself. c0 = c = *ptr; diff --git a/src/nvim/testdir/test_breakindent.vim b/src/nvim/testdir/test_breakindent.vim index 9717043976..6d88f1dc5a 100644 --- a/src/nvim/testdir/test_breakindent.vim +++ b/src/nvim/testdir/test_breakindent.vim @@ -297,6 +297,46 @@ function Test_breakindent16() call s:close_windows() endfunction +func Test_breakindent17_vartabs() + if !has("vartabs") + return + endif + let s:input = "" + call s:test_windows('setl breakindent list listchars=tab:<-> showbreak=+++') + call setline(1, "\t" . repeat('a', 63)) + vert resize 30 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1, 30) + let expect = [ + \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " +++aaaaaaaaaaaaaaaaaaaaaaa", + \ " +++aaaaaaaaaaaaaa ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set breakindent& list& listchars& showbreak&') +endfunc + +func Test_breakindent18_vartabs() + if !has("vartabs") + return + endif + let s:input = "" + call s:test_windows('setl breakindent list listchars=tab:<->') + call setline(1, "\t" . repeat('a', 63)) + vert resize 30 + norm! 1gg$ + redraw! + let lines = s:screen_lines(1, 30) + let expect = [ + \ "<-->aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaaaaaaaaaaaaaaaaa", + \ " aaaaaaaaaaa ", + \ ] + call s:compare_lines(expect, lines) + call s:close_windows('set breakindent& list& listchars&') +endfunc + func Test_breakindent19_sbr_nextpage() let s:input = "" call s:test_windows('setl breakindent briopt=shift:2,sbr,min:18 sbr=>') |