aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/screen.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-09-10 13:14:50 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2021-09-10 15:52:07 +0100
commitb91609a70d6b7be2f067cefc178c9bb749c33b07 (patch)
tree74c345762cc6de9b8298d4aa024d5d0fe75f67ba /src/nvim/screen.c
parentfd1dbb103bb78f04dd15b50f529bb12d922e98eb (diff)
downloadrneovim-b91609a70d6b7be2f067cefc178c9bb749c33b07.tar.gz
rneovim-b91609a70d6b7be2f067cefc178c9bb749c33b07.tar.bz2
rneovim-b91609a70d6b7be2f067cefc178c9bb749c33b07.zip
vim-patch:8.2.2903: cursor position wrong on wrapped line with 'signcolumn'
Problem: Cursor position wrong on wrapped line with 'signcolumn'. Solution: Don't add space for showbreak twice. (Christian Brabandt, closes vim/vim#8262) https://github.com/vim/vim/commit/a06e345af5b8261c072c95b0446e67cfda439848 Add a modeline to test_display.vim. This introduced a regression fixed by v8.2.3391.
Diffstat (limited to 'src/nvim/screen.c')
-rw-r--r--src/nvim/screen.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 2fea20de55..a9d362538a 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -3554,6 +3554,13 @@ static int win_line(win_T *wp, linenr_T lnum, int startrow, int endrow, bool noc
char_u *p = ptr - (mb_off + 1);
// 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 > grid->Columns) {
n_extra = tabstop_padding(vcol, wp->w_buffer->b_p_ts,
wp->w_buffer->b_p_vts_array) - 1;