diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-05-09 11:15:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-09 11:15:19 +0200 |
commit | b6ad20602498e260b3c7ede79699d986e96903da (patch) | |
tree | 13f0554103243f36eaeaae311c25f06ce965f7aa | |
parent | 8330cc22afec67d9dbc2ad8b4a39eaf62fdf16d1 (diff) | |
parent | 98398ff93f239b27b5ab5eff27f49d1d5d6599ad (diff) | |
download | rneovim-b6ad20602498e260b3c7ede79699d986e96903da.tar.gz rneovim-b6ad20602498e260b3c7ede79699d986e96903da.tar.bz2 rneovim-b6ad20602498e260b3c7ede79699d986e96903da.zip |
Merge pull request #9987 from janlazo/vim-8.1.0865
vim-patch:8.1.{865,1299}
-rw-r--r-- | src/nvim/screen.c | 14 | ||||
-rw-r--r-- | src/nvim/testdir/test_listchars.vim | 39 |
2 files changed, 48 insertions, 5 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index d61be4af1c..2709ba83f3 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -678,8 +678,6 @@ static void win_update(win_T *wp) mod_bot = wp->w_redraw_bot + 1; else mod_bot = 0; - wp->w_redraw_top = 0; /* reset for next time */ - wp->w_redraw_bot = 0; if (buf->b_mod_set) { if (mod_top == 0 || mod_top > buf->b_mod_top) { mod_top = buf->b_mod_top; @@ -776,6 +774,8 @@ static void win_update(win_T *wp) if (mod_top != 0 && buf->b_mod_xlines != 0 && wp->w_p_nu) mod_bot = MAXLNUM; } + wp->w_redraw_top = 0; // reset for next time + wp->w_redraw_bot = 0; /* * When only displaying the lines at the top, set top_end. Used when @@ -2446,7 +2446,9 @@ win_line ( } if (wp->w_p_list) { - if (curwin->w_p_lcs_chars.space || wp->w_p_lcs_chars.trail) { + if (curwin->w_p_lcs_chars.space + || wp->w_p_lcs_chars.trail + || wp->w_p_lcs_chars.nbsp) { extra_check = true; } // find start of trailing whitespace @@ -3993,8 +3995,10 @@ win_line ( break; } - // line continues beyond line end - if (wp->w_p_lcs_chars.ext + // Show "extends" character from 'listchars' if beyond the line end and + // 'list' is set. + if (wp->w_p_lcs_chars.ext != NUL + && wp->w_p_list && !wp->w_p_wrap && filler_todo <= 0 && (wp->w_p_rl ? col == 0 : col == grid->Columns - 1) diff --git a/src/nvim/testdir/test_listchars.vim b/src/nvim/testdir/test_listchars.vim index 4899f59910..57cfaa298e 100644 --- a/src/nvim/testdir/test_listchars.vim +++ b/src/nvim/testdir/test_listchars.vim @@ -90,6 +90,45 @@ func Test_listchars() \ '.....h>-$', \ 'iii<<<<><<$', '$'], l) + + " test nbsp + normal ggdG + set listchars=nbsp:X,trail:Y + set list + " Non-breaking space + let nbsp = nr2char(0xa0) + call append(0, [ ">".nbsp."<" ]) + + let expected = '>X< ' + + redraw! + call cursor(1, 1) + call assert_equal([expected], ScreenLines(1, virtcol('$'))) + + set listchars=nbsp:X + redraw! + call cursor(1, 1) + call assert_equal([expected], ScreenLines(1, virtcol('$'))) + + " test extends + normal ggdG + set listchars=extends:Z + set nowrap + set nolist + call append(0, [ repeat('A', &columns + 1) ]) + + let expected = repeat('A', &columns) + + redraw! + call cursor(1, 1) + call assert_equal([expected], ScreenLines(1, &columns)) + + set list + let expected = expected[:-2] . 'Z' + redraw! + call cursor(1, 1) + call assert_equal([expected], ScreenLines(1, &columns)) + enew! set listchars& ff& endfunc |