summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-05-29 17:56:37 +0200
committerBram Moolenaar <Bram@vim.org>2021-05-29 17:56:37 +0200
commita06e345af5b8261c072c95b0446e67cfda439848 (patch)
tree35ce3ff09b50d7a058eb40d55b6d99de6d54e755
parent5a6cfb3ff2f2f422a3732f3855616c89dd19c19d (diff)
patch 8.2.2903: cursor position wrong on wrapped line with 'signcolumn'v8.2.2903
Problem: Cursor position wrong on wrapped line with 'signcolumn'. Solution: Don't add space for showbreak twice. (Christian Brabandt, closes #8262)
-rw-r--r--src/drawline.c6
-rw-r--r--src/testdir/test_display.vim17
-rw-r--r--src/version.c2
3 files changed, 25 insertions, 0 deletions
diff --git a/src/drawline.c b/src/drawline.c
index 13be022a93..7b6777e64c 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1981,6 +1981,12 @@ win_line(
// TODO: is passing p for start of the line OK?
n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
NULL) - 1;
+
+ // We have just drawn the showbreak value, no need to add
+ // space for it again
+ if (vcol == vcol_sbr)
+ n_extra -= MB_CHARLEN(get_showbreak_value(wp));
+
if (c == TAB && n_extra + col > wp->w_width)
# ifdef FEAT_VARTABS
n_extra = tabstop_padding(vcol, wp->w_buffer->b_p_ts,
diff --git a/src/testdir/test_display.vim b/src/testdir/test_display.vim
index 754046f2ae..964220cacd 100644
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -334,4 +334,21 @@ func Test_fold_fillchars()
set fillchars& fdc& foldmethod& foldenable&
endfunc
+func Test_display_linebreak_breakat()
+ new
+ vert resize 25
+ let _breakat = &breakat
+ setl signcolumn=yes linebreak breakat=) showbreak=+\
+ call setline(1, repeat('x', winwidth(0) - 2) .. ')abc')
+ let lines = ScreenLines([1, 2], 25)
+ let expected = [
+ \ ' xxxxxxxxxxxxxxxxxxxxxxx',
+ \ ' + )abc '
+ \ ]
+ call assert_equal(expected, lines)
+ %bw!
+ let &breakat=_breakat
+endfunc
+
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a1cda6333a..c94183bfdb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2903,
+/**/
2902,
/**/
2901,