comparison 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
comparison
equal deleted inserted replaced
32532:26aa788bed3f 32533:aa64fdad1f60
3215 " Test for screenattr(), screenchar() and screenchars() functions 3215 " Test for screenattr(), screenchar() and screenchars() functions
3216 func Test_screen_functions() 3216 func Test_screen_functions()
3217 call assert_equal(-1, screenattr(-1, -1)) 3217 call assert_equal(-1, screenattr(-1, -1))
3218 call assert_equal(-1, screenchar(-1, -1)) 3218 call assert_equal(-1, screenchar(-1, -1))
3219 call assert_equal([], screenchars(-1, -1)) 3219 call assert_equal([], screenchars(-1, -1))
3220
3221 " Run this in a separate Vim instance to avoid messing up.
3222 let after =<< trim [CODE]
3223 scriptencoding utf-8
3224 call setline(1, '口')
3225 redraw
3226 call assert_equal(0, screenattr(1, 1))
3227 call assert_equal(char2nr('口'), screenchar(1, 1))
3228 call assert_equal([char2nr('口')], screenchars(1, 1))
3229 call assert_equal('口', screenstring(1, 1))
3230 call writefile(v:errors, 'Xresult')
3231 qall!
3232 [CODE]
3233
3234 let encodings = ['utf-8', 'cp932', 'cp936', 'cp949', 'cp950']
3235 if !has('win32')
3236 let encodings += ['euc-jp']
3237 endif
3238 for enc in encodings
3239 let msg = 'enc=' .. enc
3240 if RunVim([], after, $'--clean --cmd "set encoding={enc}"')
3241 call assert_equal([], readfile('Xresult'), msg)
3242 endif
3243 call delete('Xresult')
3244 endfor
3220 endfunc 3245 endfunc
3221 3246
3222 " Test for getcurpos() and setpos() 3247 " Test for getcurpos() and setpos()
3223 func Test_getcurpos_setpos() 3248 func Test_getcurpos_setpos()
3224 new 3249 new