Mercurial > vim
diff src/testdir/test_functions.vim @ 32533:aa64fdad1f60 v9.0.1598
patch 9.0.1598: screenchar() and others are wrong with DBCS 'encoding'
Commit: https://github.com/vim/vim/commit/47eec6716b8621fd43bac8ecc9c19089df26705e
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu Jun 1 20:26:55 2023 +0100
patch 9.0.1598: screenchar() and others are wrong with DBCS 'encoding'
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 #12469)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 01 Jun 2023 21:30:03 +0200 |
parents | d6055989fa27 |
children | 5d8cff99a027 |
line wrap: on
line diff
--- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -3217,6 +3217,31 @@ 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 + 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()