mirror of
https://github.com/vim/vim.git
synced 2025-10-06 05:44:14 -04:00
patch 8.0.0263: Farsi support is not tested enough
Problem: Farsi support is not tested enough. Solution: Add more tests for Farsi. Clean up the code.
This commit is contained in:
100
src/farsi.c
100
src/farsi.c
@@ -1920,56 +1920,56 @@ cmdl_fkmap(int c)
|
|||||||
case NL:
|
case NL:
|
||||||
case TAB:
|
case TAB:
|
||||||
|
|
||||||
switch ((tempc = cmd_gchar(AT_CURSOR)))
|
switch ((tempc = cmd_gchar(AT_CURSOR)))
|
||||||
{
|
{
|
||||||
case _BE:
|
case _BE:
|
||||||
case _PE:
|
case _PE:
|
||||||
case _TE:
|
case _TE:
|
||||||
case _SE:
|
case _SE:
|
||||||
case _JIM:
|
case _JIM:
|
||||||
case _CHE:
|
case _CHE:
|
||||||
case _HE_J:
|
case _HE_J:
|
||||||
case _XE:
|
case _XE:
|
||||||
case _SIN:
|
case _SIN:
|
||||||
case _SHIN:
|
case _SHIN:
|
||||||
case _SAD:
|
case _SAD:
|
||||||
case _ZAD:
|
case _ZAD:
|
||||||
case _AYN:
|
case _AYN:
|
||||||
case _GHAYN:
|
case _GHAYN:
|
||||||
case _FE:
|
case _FE:
|
||||||
case _GHAF:
|
case _GHAF:
|
||||||
case _KAF:
|
case _KAF:
|
||||||
case _GAF:
|
case _GAF:
|
||||||
case _LAM:
|
case _LAM:
|
||||||
case _MIM:
|
case _MIM:
|
||||||
case _NOON:
|
case _NOON:
|
||||||
case _HE:
|
case _HE:
|
||||||
case _HE_:
|
case _HE_:
|
||||||
cmd_pchar(toF_TyA(tempc), AT_CURSOR);
|
cmd_pchar(toF_TyA(tempc), AT_CURSOR);
|
||||||
break;
|
break;
|
||||||
case _AYN_:
|
case _AYN_:
|
||||||
cmd_pchar(AYN_, AT_CURSOR);
|
cmd_pchar(AYN_, AT_CURSOR);
|
||||||
break;
|
break;
|
||||||
case _GHAYN_:
|
case _GHAYN_:
|
||||||
cmd_pchar(GHAYN_, AT_CURSOR);
|
cmd_pchar(GHAYN_, AT_CURSOR);
|
||||||
break;
|
break;
|
||||||
case _IE:
|
case _IE:
|
||||||
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
||||||
cmd_pchar(IE_, AT_CURSOR);
|
cmd_pchar(IE_, AT_CURSOR);
|
||||||
else
|
else
|
||||||
cmd_pchar(IE, AT_CURSOR);
|
cmd_pchar(IE, AT_CURSOR);
|
||||||
break;
|
break;
|
||||||
case _YEE:
|
case _YEE:
|
||||||
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
||||||
cmd_pchar(YEE_, AT_CURSOR);
|
cmd_pchar(YEE_, AT_CURSOR);
|
||||||
else
|
else
|
||||||
cmd_pchar(YEE, AT_CURSOR);
|
cmd_pchar(YEE, AT_CURSOR);
|
||||||
break;
|
break;
|
||||||
case _YE:
|
case _YE:
|
||||||
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
|
||||||
cmd_pchar(YE_, AT_CURSOR);
|
cmd_pchar(YE_, AT_CURSOR);
|
||||||
else
|
else
|
||||||
cmd_pchar(YE, AT_CURSOR);
|
cmd_pchar(YE, AT_CURSOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (c)
|
switch (c)
|
||||||
|
@@ -91,13 +91,43 @@ func Test_input_farsi()
|
|||||||
call feedkeys("aabc0123456789.+-^%#=xyz\<Esc>", 'tx')
|
call feedkeys("aabc0123456789.+-^%#=xyz\<Esc>", 'tx')
|
||||||
call assert_equal("\x8c<38>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\x93<39>", getline('.'))
|
call assert_equal("\x8c<38>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\x93<39>", getline('.'))
|
||||||
|
|
||||||
" all non-number special chars
|
" all non-number special chars with spaces
|
||||||
call feedkeys("aB E F H I K L M O P Q R T U W Y ` ! @ # $ % ^ & * () - _ = + \\ | : \" . / < > ? \<Esc>", 'tx')
|
call feedkeys("oB E F H I K L M O P Q R T U W Y ` ! @ # $ % ^ & * () - _ = + \\ | : \" . / < > ? \<Esc>", 'tx')
|
||||||
call assert_equal("\x8c<38>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\x93ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<5B>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A0A2A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蠨<EFBFBD><E8A0A8><EFBFBD><EFBFBD>頽<EFBFBD><E9A0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", getline('.'))
|
call assert_equal("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<5B>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A0A2A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蠨<EFBFBD><E8A0A8><EFBFBD><EFBFBD>頽<EFBFBD><E9A0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", getline('.'))
|
||||||
|
|
||||||
" all letter chars
|
" all non-number special chars without spaces
|
||||||
call feedkeys("aa A b c C d D e f g G h i j J k l m n N o p q r s S t u v V w x X y z Z ; \ , [ ] \<Esc>", 'tx')
|
call feedkeys("oBEFHIKLMOPQRTUWY`!@#$%^&*()-_=+\\|:\"./<>?\<Esc>",'tx')
|
||||||
call assert_equal("\x8c<38>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\x93ա<33><D5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [<5B>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蠨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>頽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѡ<EFBFBD><EFBFBD>̠ΠϠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ơàܠ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Š<EFBFBD><EFBFBD>ޠݠĠˠˠʠɠӠ٠Р<EFBFBD><EFBFBD>ؠ֠͠͠ҠԠԠנՠ<EFBFBD><EFBFBD>ڠ<EFBFBD>ߠǠȠ", getline('.'))
|
call assert_equal("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>訩<EFBFBD>齫<EFBFBD>꺻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", getline('.'))
|
||||||
|
|
||||||
|
" all letter chars with spaces
|
||||||
|
call feedkeys("oa A b c C d D e f g G h i j J k l m n N o p q r s S t u v V w x X y z Z ; \ , [ ] \<Esc>", 'tx')
|
||||||
|
call assert_equal("Ѡ<><D1A0>̠ΠϠ<CEA0><CFA0><EFBFBD><EFBFBD>Ơàܠ<C3A0><DCA0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Š<EFBFBD><C5A0>ޠݠĠˠˠʠɠӠ٠Р<D9A0><D0A0>ؠ֠͠͠ҠԠԠנՠ<D7A0><D5A0>ڠ<EFBFBD>ߠǠȠ", getline('.'))
|
||||||
|
|
||||||
|
" all letter chars without spaces
|
||||||
|
call feedkeys("oaAbcCdDefgGhijJklmnNopqrsStuvVwxXyzZ;\,[]\<Esc>", 'tx')
|
||||||
|
call assert_equal("\x8c<38><63><EFBFBD><EFBFBD>\x9f<39>\x86\x83<38><33><EFBFBD>\x9d\x85\x80\x9c\x9b\x84<38><34>\x8a\x89\x8e\x96\x8b<38>\x95\x90<39><30>\x8d<38><64>\x93<39><33>\x97<39>\x87\x88", getline('.'))
|
||||||
|
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_command_line_farsi()
|
||||||
|
set allowrevins altkeymap
|
||||||
|
|
||||||
|
" letter characters with spaces
|
||||||
|
call feedkeys(":\"\<C-_>a A b c C d D e f g G h i j J k l m n N o p q r s S t u v V w x X y z Z ; \\ , [ ]\<CR>", 'tx')
|
||||||
|
call assert_equal("\"\x88<38>Ǡߠ<C7A0><DFA0>ڠՠՠנԠԠҠ֠͠͠ؠ<D6A0><D8A0>Р٠ӠɠʠˠˠĠݠޠ<DDA0><DEA0>Š<EFBFBD><C5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܠàƠ<C3A0><C6A0><EFBFBD><EFBFBD>ϠΠ̠<CEA0><CCA0><EFBFBD>", getreg(':'))
|
||||||
|
|
||||||
|
" letter characters without spaces
|
||||||
|
call feedkeys(":\"\<C-_>aAbcCdDefgGhijJklmnNopqrsStuvVwxXyzZ;\\,[]\<CR>", 'tx')
|
||||||
|
call assert_equal("\"\x88\x87<38><37><EFBFBD><EFBFBD><EFBFBD>\x93<39><33>\x8d<38><64>\x90\x95<39>\x8b\x96\x8e\x89\x8a<38><61>\x84\x9b\x9c\x80\x85\x9d<39><64><EFBFBD>\x83\x86<38>\x9f<39><66><EFBFBD><EFBFBD>\x8c", getreg(':'))
|
||||||
|
|
||||||
|
" other characters with spaces
|
||||||
|
call feedkeys(":\"\<C-_>0 1 2 3 4 5 6 7 8 9 ` . ! \" $ % ^ & / () = \\ ? + - _ * : # ~ @ < > { } | B E F H I K L M O P Q R T U W Y\<CR>", 'tx')
|
||||||
|
call assert_equal("\"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>[<5B> <EFBFBD><C2A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頭<EFBFBD><E9A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>렽<EFBFBD><EBA0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", getreg(':'))
|
||||||
|
|
||||||
|
" other characters without spaces
|
||||||
|
call feedkeys(":\"\<C-_>0123456789`.!\"$%^&/()=\\?+-_*:#~@<>{}|BEFHIKLMOPQRTUWY\<CR>", 'tx')
|
||||||
|
call assert_equal("\"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}{<7B><><EFBFBD>~<7E><><EFBFBD>魫<EFBFBD>뽩<EFBFBD><EBBDA9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", getreg(':'))
|
||||||
|
|
||||||
|
set noallowrevins noaltkeymap
|
||||||
|
endfunc
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
263,
|
||||||
/**/
|
/**/
|
||||||
262,
|
262,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user