summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-03 15:46:48 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-03 15:46:48 +0100
commit2f7b7b1e123d505637d21e0df28eb9e92667479c (patch)
treebdfe8422655ff8f6e695b15794ff12d02f2bda2d
parent82cf7f6df751505da285815a791463a049587849 (diff)
downloadvim-git-2f7b7b1e123d505637d21e0df28eb9e92667479c.tar.gz
patch 8.1.2245: third character of 'listchars' tab shows in wrong placev8.1.2245
Problem: Third character of 'listchars' tab shows in wrong place when 'breakindent' is set. Solution: Set c_final to NUL. (Naruhiko Nishino, closes #5165)
-rw-r--r--src/drawline.c4
-rw-r--r--src/testdir/test_breakindent.vim41
-rw-r--r--src/version.c2
3 files changed, 45 insertions, 2 deletions
diff --git a/src/drawline.c b/src/drawline.c
index dcfe92cc6..ea9e4a997 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1173,6 +1173,7 @@ win_line(
# endif
p_extra = NULL;
c_extra = ' ';
+ c_final = NUL;
n_extra = get_breakindent_win(wp,
ml_get_buf(wp->w_buffer, lnum, FALSE));
// Correct end of highlighted area for 'breakindent',
@@ -1647,9 +1648,8 @@ win_line(
#ifdef FEAT_LINEBREAK
int c0;
#endif
+ VIM_CLEAR(p_extra_free);
- if (p_extra_free != NULL)
- VIM_CLEAR(p_extra_free);
// Get a character from the line itself.
c = *ptr;
#ifdef FEAT_LINEBREAK
diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim
index 785709fc0..90c0ca5af 100644
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -614,3 +614,44 @@ func Test_breakindent16_vartabs()
call s:compare_lines(expect, lines)
call s:close_windows('set vts&')
endfunc
+
+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
+
diff --git a/src/version.c b/src/version.c
index 5f009e316..d7c8c8b43 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2245,
+/**/
2244,
/**/
2243,