diff options
| author | zeertzjq <zeertzjq@outlook.com> | 2021-09-19 13:13:44 +0800 |
|---|---|---|
| committer | zeertzjq <zeertzjq@outlook.com> | 2021-09-19 13:13:44 +0800 |
| commit | 59e80c4dfcddeb9f20e175afbdb8f085ec5da985 (patch) | |
| tree | 5d4e1c488d3366f52f11f2cb73e537931cff9dac /src/nvim/testdir | |
| parent | c14dc616bf4a6121e49594c8f51c1fb197b2ac7f (diff) | |
| download | rneovim-59e80c4dfcddeb9f20e175afbdb8f085ec5da985.tar.gz rneovim-59e80c4dfcddeb9f20e175afbdb8f085ec5da985.tar.bz2 rneovim-59e80c4dfcddeb9f20e175afbdb8f085ec5da985.zip | |
vim-patch:8.1.1110: composing chars on space wrong when 'listchars' is set
Problem: Composing chars on space wrong when 'listchars' is set.
Solution: Do not use "space" and "nbsp" entries of 'listchars' when there is
a composing character. (Yee Cheng Chin, closes vim/vim#4197)
https://github.com/vim/vim/commit/e5e4e22c1c15c8c22b14935affe969569acc8df9
Diffstat (limited to 'src/nvim/testdir')
| -rw-r--r-- | src/nvim/testdir/test_listchars.vim | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/nvim/testdir/test_listchars.vim b/src/nvim/testdir/test_listchars.vim index 191e2afdf1..b75eec3d2e 100644 --- a/src/nvim/testdir/test_listchars.vim +++ b/src/nvim/testdir/test_listchars.vim @@ -182,6 +182,33 @@ func Test_listchars() set listchars& ff& endfunc +" Test that unicode listchars characters get properly inserted +func Test_listchars_unicode() + enew! + let oldencoding=&encoding + set encoding=utf-8 + set ff=unix + + set listchars=eol:⇔,space:␣,nbsp:≠,tab:←↔→ + set list + + let nbsp = nr2char(0xa0) + call append(0, [ + \ "a\tb c".nbsp."d" + \ ]) + let expected = [ + \ 'a←↔↔↔↔↔→b␣c≠d⇔' + \ ] + redraw! + call cursor(1, 1) + call assert_equal(expected, ScreenLines(1, virtcol('$'))) + let &encoding=oldencoding + enew! + set listchars& ff& +endfunction + +" Tests that space characters following composing character won't get replaced +" by listchars. func Test_listchars_composing() enew! let oldencoding=&encoding @@ -189,18 +216,20 @@ func Test_listchars_composing() set ff=unix set list - set listchars=eol:$,space:_ + set listchars=eol:$,space:_,nbsp:= + + let nbsp1 = nr2char(0xa0) + let nbsp2 = nr2char(0x202f) call append(0, [ - \ " \u3099 \u309A" + \ " \u3099\t \u309A".nbsp1.nbsp1."\u0302".nbsp2.nbsp2."\u0302", \ ]) let expected = [ - \ "_ \u3099^I \u309A$" + \ "_ \u3099^I \u309A=".nbsp1."\u0302=".nbsp2."\u0302$" \ ] redraw! call cursor(1, 1) - let got = ScreenLinesUtf8(1, virtcol('$')) - bw! - call assert_equal(expected, got) + call assert_equal(expected, ScreenLines(1, virtcol('$'))) let &encoding=oldencoding + enew! set listchars& ff& endfunction |