patch 8.1.1078: when 'listchars' is set a composing char on a space is wrong
Problem: When 'listchars' is set a composing char on a space is wrong.
Solution: Separate handling a non-breaking space and a space. (Yasuhiro
Matsumoto, closes #4046)
diff --git a/src/testdir/test_listchars.vim b/src/testdir/test_listchars.vim
index 2870f2d..1e90856 100644
--- a/src/testdir/test_listchars.vim
+++ b/src/testdir/test_listchars.vim
@@ -113,3 +113,26 @@
enew!
set listchars& ff&
endfunc
+
+func Test_listchars_composing()
+ enew!
+ let oldencoding=&encoding
+ set encoding=utf-8
+ set ff=unix
+ set list
+
+ set listchars=eol:$,space:_
+ call append(0, [
+ \ " \u3099 \u309A"
+ \ ])
+ let expected = [
+ \ "_ \u3099^I \u309A$"
+ \ ]
+ redraw!
+ call cursor(1, 1)
+ let got = ScreenLinesUtf8(1, virtcol('$'))
+ bw!
+ call assert_equal(expected, got)
+ let &encoding=oldencoding
+ set listchars& ff&
+endfunction