diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-06-02 04:31:17 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-02 04:31:17 +0800 |
commit | a0375b68c1803e7453071a20b28249020abe7260 (patch) | |
tree | 7fbf51a11edc2b70d770b6bcbcf338e3c1dfb068 /test/old/testdir/test_functions.vim | |
parent | 7ade44fefe864961cfa17d1af6c8b8b33eeb4933 (diff) | |
download | rneovim-a0375b68c1803e7453071a20b28249020abe7260.tar.gz rneovim-a0375b68c1803e7453071a20b28249020abe7260.tar.bz2 rneovim-a0375b68c1803e7453071a20b28249020abe7260.zip |
vim-patch:9.0.1598: screenchar() and others are wrong with DBCS 'encoding' (#23872)
Problem: screenchar(), screenchars() and screenstring() do not work
properly when 'encoding' is set to a double-byte encoding.
Solution: Fix the way the bytes of the characters are obtained.
(issue vim/vim#12469)
https://github.com/vim/vim/commit/47eec6716b8621fd43bac8ecc9c19089df26705e
Diffstat (limited to 'test/old/testdir/test_functions.vim')
-rw-r--r-- | test/old/testdir/test_functions.vim | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index 41a8610893..177fef9e99 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -2834,6 +2834,34 @@ func Test_screen_functions() call assert_equal(-1, screenattr(-1, -1)) call assert_equal(-1, screenchar(-1, -1)) call assert_equal([], screenchars(-1, -1)) + + " Run this in a separate Vim instance to avoid messing up. + let after =<< trim [CODE] + scriptencoding utf-8 + call setline(1, '口') + redraw + call assert_equal(0, screenattr(1, 1)) + call assert_equal(char2nr('口'), screenchar(1, 1)) + call assert_equal([char2nr('口')], screenchars(1, 1)) + call assert_equal('口', screenstring(1, 1)) + call writefile(v:errors, 'Xresult') + qall! + [CODE] + + let encodings = ['utf-8', 'cp932', 'cp936', 'cp949', 'cp950'] + if !has('win32') + let encodings += ['euc-jp'] + endif + if has('nvim') + let encodings = ['utf-8'] + endif + for enc in encodings + let msg = 'enc=' .. enc + if RunVim([], after, $'--clean --cmd "set encoding={enc}"') + call assert_equal([], readfile('Xresult'), msg) + endif + call delete('Xresult') + endfor endfunc " Test for getcurpos() and setpos() |