vim-patch:7.4.1981 (#6192)

Problem:    No testing for Farsi code.
Solution:   Add a minimal test.  Clean up Farsi code.

ee2615af64
This commit is contained in:
lonerover
2017-03-02 19:47:35 +08:00
committed by Justin M. Keyes
parent 286aacb2aa
commit 8a10497ce6
6 changed files with 306 additions and 223 deletions

View File

@@ -152,196 +152,196 @@ static const struct nv_cmd {
short cmd_arg; /* value for ca.arg */
} nv_cmds[] =
{
{NUL, nv_error, 0, 0},
{Ctrl_A, nv_addsub, 0, 0},
{Ctrl_B, nv_page, NV_STS, BACKWARD},
{Ctrl_C, nv_esc, 0, true},
{Ctrl_D, nv_halfpage, 0, 0},
{Ctrl_E, nv_scroll_line, 0, true},
{Ctrl_F, nv_page, NV_STS, FORWARD},
{Ctrl_G, nv_ctrlg, 0, 0},
{Ctrl_H, nv_ctrlh, 0, 0},
{Ctrl_I, nv_pcmark, 0, 0},
{NL, nv_down, 0, false},
{Ctrl_K, nv_error, 0, 0},
{Ctrl_L, nv_clear, 0, 0},
{Ctrl_M, nv_down, 0, true},
{Ctrl_N, nv_down, NV_STS, false},
{Ctrl_O, nv_ctrlo, 0, 0},
{Ctrl_P, nv_up, NV_STS, false},
{Ctrl_Q, nv_visual, 0, false},
{Ctrl_R, nv_redo, 0, 0},
{Ctrl_S, nv_ignore, 0, 0},
{Ctrl_T, nv_tagpop, NV_NCW, 0},
{Ctrl_U, nv_halfpage, 0, 0},
{Ctrl_V, nv_visual, 0, false},
{'V', nv_visual, 0, false},
{'v', nv_visual, 0, false},
{Ctrl_W, nv_window, 0, 0},
{Ctrl_X, nv_addsub, 0, 0},
{Ctrl_Y, nv_scroll_line, 0, false},
{Ctrl_Z, nv_suspend, 0, 0},
{ESC, nv_esc, 0, false},
{Ctrl_BSL, nv_normal, NV_NCH_ALW, 0},
{Ctrl_RSB, nv_ident, NV_NCW, 0},
{Ctrl_HAT, nv_hat, NV_NCW, 0},
{Ctrl__, nv_error, 0, 0},
{' ', nv_right, 0, 0},
{'!', nv_operator, 0, 0},
{'"', nv_regname, NV_NCH_NOP|NV_KEEPREG, 0},
{'#', nv_ident, 0, 0},
{'$', nv_dollar, 0, 0},
{'%', nv_percent, 0, 0},
{'&', nv_optrans, 0, 0},
{'\'', nv_gomark, NV_NCH_ALW, true},
{'(', nv_brace, 0, BACKWARD},
{')', nv_brace, 0, FORWARD},
{'*', nv_ident, 0, 0},
{'+', nv_down, 0, true},
{',', nv_csearch, 0, true},
{'-', nv_up, 0, true},
{'.', nv_dot, NV_KEEPREG, 0},
{'/', nv_search, 0, false},
{'0', nv_beginline, 0, 0},
{'1', nv_ignore, 0, 0},
{'2', nv_ignore, 0, 0},
{'3', nv_ignore, 0, 0},
{'4', nv_ignore, 0, 0},
{'5', nv_ignore, 0, 0},
{'6', nv_ignore, 0, 0},
{'7', nv_ignore, 0, 0},
{'8', nv_ignore, 0, 0},
{'9', nv_ignore, 0, 0},
{':', nv_colon, 0, 0},
{';', nv_csearch, 0, false},
{'<', nv_operator, NV_RL, 0},
{'=', nv_operator, 0, 0},
{'>', nv_operator, NV_RL, 0},
{'?', nv_search, 0, false},
{'@', nv_at, NV_NCH_NOP, false},
{'A', nv_edit, 0, 0},
{'B', nv_bck_word, 0, 1},
{'C', nv_abbrev, NV_KEEPREG, 0},
{'D', nv_abbrev, NV_KEEPREG, 0},
{'E', nv_wordcmd, 0, true},
{'F', nv_csearch, NV_NCH_ALW|NV_LANG, BACKWARD},
{'G', nv_goto, 0, true},
{'H', nv_scroll, 0, 0},
{'I', nv_edit, 0, 0},
{'J', nv_join, 0, 0},
{'K', nv_ident, 0, 0},
{'L', nv_scroll, 0, 0},
{'M', nv_scroll, 0, 0},
{'N', nv_next, 0, SEARCH_REV},
{'O', nv_open, 0, 0},
{'P', nv_put, 0, 0},
{'Q', nv_exmode, NV_NCW, 0},
{'R', nv_Replace, 0, false},
{'S', nv_subst, NV_KEEPREG, 0},
{'T', nv_csearch, NV_NCH_ALW|NV_LANG, BACKWARD},
{'U', nv_Undo, 0, 0},
{'W', nv_wordcmd, 0, true},
{'X', nv_abbrev, NV_KEEPREG, 0},
{'Y', nv_abbrev, NV_KEEPREG, 0},
{'Z', nv_Zet, NV_NCH_NOP|NV_NCW, 0},
{'[', nv_brackets, NV_NCH_ALW, BACKWARD},
{'\\', nv_error, 0, 0},
{']', nv_brackets, NV_NCH_ALW, FORWARD},
{'^', nv_beginline, 0, BL_WHITE | BL_FIX},
{'_', nv_lineop, 0, 0},
{'`', nv_gomark, NV_NCH_ALW, false},
{'a', nv_edit, NV_NCH, 0},
{'b', nv_bck_word, 0, 0},
{'c', nv_operator, 0, 0},
{'d', nv_operator, 0, 0},
{'e', nv_wordcmd, 0, false},
{'f', nv_csearch, NV_NCH_ALW|NV_LANG, FORWARD},
{'g', nv_g_cmd, NV_NCH_ALW, false},
{'h', nv_left, NV_RL, 0},
{'i', nv_edit, NV_NCH, 0},
{'j', nv_down, 0, false},
{'k', nv_up, 0, false},
{'l', nv_right, NV_RL, 0},
{'m', nv_mark, NV_NCH_NOP, 0},
{'n', nv_next, 0, 0},
{'o', nv_open, 0, 0},
{'p', nv_put, 0, 0},
{'q', nv_record, NV_NCH, 0},
{'r', nv_replace, NV_NCH_NOP|NV_LANG, 0},
{'s', nv_subst, NV_KEEPREG, 0},
{'t', nv_csearch, NV_NCH_ALW|NV_LANG, FORWARD},
{'u', nv_undo, 0, 0},
{'w', nv_wordcmd, 0, false},
{'x', nv_abbrev, NV_KEEPREG, 0},
{'y', nv_operator, 0, 0},
{'z', nv_zet, NV_NCH_ALW, 0},
{'{', nv_findpar, 0, BACKWARD},
{'|', nv_pipe, 0, 0},
{'}', nv_findpar, 0, FORWARD},
{'~', nv_tilde, 0, 0},
{ NUL, nv_error, 0, 0 },
{ Ctrl_A, nv_addsub, 0, 0 },
{ Ctrl_B, nv_page, NV_STS, BACKWARD },
{ Ctrl_C, nv_esc, 0, true },
{ Ctrl_D, nv_halfpage, 0, 0 },
{ Ctrl_E, nv_scroll_line, 0, true },
{ Ctrl_F, nv_page, NV_STS, FORWARD },
{ Ctrl_G, nv_ctrlg, 0, 0 },
{ Ctrl_H, nv_ctrlh, 0, 0 },
{ Ctrl_I, nv_pcmark, 0, 0 },
{ NL, nv_down, 0, false },
{ Ctrl_K, nv_error, 0, 0 },
{ Ctrl_L, nv_clear, 0, 0 },
{ Ctrl_M, nv_down, 0, true },
{ Ctrl_N, nv_down, NV_STS, false },
{ Ctrl_O, nv_ctrlo, 0, 0 },
{ Ctrl_P, nv_up, NV_STS, false },
{ Ctrl_Q, nv_visual, 0, false },
{ Ctrl_R, nv_redo, 0, 0 },
{ Ctrl_S, nv_ignore, 0, 0 },
{ Ctrl_T, nv_tagpop, NV_NCW, 0 },
{ Ctrl_U, nv_halfpage, 0, 0 },
{ Ctrl_V, nv_visual, 0, false },
{ 'V', nv_visual, 0, false },
{ 'v', nv_visual, 0, false },
{ Ctrl_W, nv_window, 0, 0 },
{ Ctrl_X, nv_addsub, 0, 0 },
{ Ctrl_Y, nv_scroll_line, 0, false },
{ Ctrl_Z, nv_suspend, 0, 0 },
{ ESC, nv_esc, 0, false },
{ Ctrl_BSL, nv_normal, NV_NCH_ALW, 0 },
{ Ctrl_RSB, nv_ident, NV_NCW, 0 },
{ Ctrl_HAT, nv_hat, NV_NCW, 0 },
{ Ctrl__, nv_error, 0, 0 },
{ ' ', nv_right, 0, 0 },
{ '!', nv_operator, 0, 0 },
{ '"', nv_regname, NV_NCH_NOP|NV_KEEPREG, 0 },
{ '#', nv_ident, 0, 0 },
{ '$', nv_dollar, 0, 0 },
{ '%', nv_percent, 0, 0 },
{ '&', nv_optrans, 0, 0 },
{ '\'', nv_gomark, NV_NCH_ALW, true },
{ '(', nv_brace, 0, BACKWARD },
{ ')', nv_brace, 0, FORWARD },
{ '*', nv_ident, 0, 0 },
{ '+', nv_down, 0, true },
{ ',', nv_csearch, 0, true },
{ '-', nv_up, 0, true },
{ '.', nv_dot, NV_KEEPREG, 0 },
{ '/', nv_search, 0, false },
{ '0', nv_beginline, 0, 0 },
{ '1', nv_ignore, 0, 0 },
{ '2', nv_ignore, 0, 0 },
{ '3', nv_ignore, 0, 0 },
{ '4', nv_ignore, 0, 0 },
{ '5', nv_ignore, 0, 0 },
{ '6', nv_ignore, 0, 0 },
{ '7', nv_ignore, 0, 0 },
{ '8', nv_ignore, 0, 0 },
{ '9', nv_ignore, 0, 0 },
{ ':', nv_colon, 0, 0 },
{ ';', nv_csearch, 0, false },
{ '<', nv_operator, NV_RL, 0 },
{ '=', nv_operator, 0, 0 },
{ '>', nv_operator, NV_RL, 0 },
{ '?', nv_search, 0, false },
{ '@', nv_at, NV_NCH_NOP, false },
{ 'A', nv_edit, 0, 0 },
{ 'B', nv_bck_word, 0, 1 },
{ 'C', nv_abbrev, NV_KEEPREG, 0 },
{ 'D', nv_abbrev, NV_KEEPREG, 0 },
{ 'E', nv_wordcmd, 0, true },
{ 'F', nv_csearch, NV_NCH_ALW|NV_LANG, BACKWARD },
{ 'G', nv_goto, 0, true },
{ 'H', nv_scroll, 0, 0 },
{ 'I', nv_edit, 0, 0 },
{ 'J', nv_join, 0, 0 },
{ 'K', nv_ident, 0, 0 },
{ 'L', nv_scroll, 0, 0 },
{ 'M', nv_scroll, 0, 0 },
{ 'N', nv_next, 0, SEARCH_REV },
{ 'O', nv_open, 0, 0 },
{ 'P', nv_put, 0, 0 },
{ 'Q', nv_exmode, NV_NCW, 0 },
{ 'R', nv_Replace, 0, false },
{ 'S', nv_subst, NV_KEEPREG, 0 },
{ 'T', nv_csearch, NV_NCH_ALW|NV_LANG, BACKWARD },
{ 'U', nv_Undo, 0, 0 },
{ 'W', nv_wordcmd, 0, true },
{ 'X', nv_abbrev, NV_KEEPREG, 0 },
{ 'Y', nv_abbrev, NV_KEEPREG, 0 },
{ 'Z', nv_Zet, NV_NCH_NOP|NV_NCW, 0 },
{ '[', nv_brackets, NV_NCH_ALW, BACKWARD },
{ '\\', nv_error, 0, 0 },
{ ']', nv_brackets, NV_NCH_ALW, FORWARD },
{ '^', nv_beginline, 0, BL_WHITE | BL_FIX },
{ '_', nv_lineop, 0, 0 },
{ '`', nv_gomark, NV_NCH_ALW, false },
{ 'a', nv_edit, NV_NCH, 0 },
{ 'b', nv_bck_word, 0, 0 },
{ 'c', nv_operator, 0, 0 },
{ 'd', nv_operator, 0, 0 },
{ 'e', nv_wordcmd, 0, false },
{ 'f', nv_csearch, NV_NCH_ALW|NV_LANG, FORWARD },
{ 'g', nv_g_cmd, NV_NCH_ALW, false },
{ 'h', nv_left, NV_RL, 0 },
{ 'i', nv_edit, NV_NCH, 0 },
{ 'j', nv_down, 0, false },
{ 'k', nv_up, 0, false },
{ 'l', nv_right, NV_RL, 0 },
{ 'm', nv_mark, NV_NCH_NOP, 0 },
{ 'n', nv_next, 0, 0 },
{ 'o', nv_open, 0, 0 },
{ 'p', nv_put, 0, 0 },
{ 'q', nv_record, NV_NCH, 0 },
{ 'r', nv_replace, NV_NCH_NOP|NV_LANG, 0 },
{ 's', nv_subst, NV_KEEPREG, 0 },
{ 't', nv_csearch, NV_NCH_ALW|NV_LANG, FORWARD },
{ 'u', nv_undo, 0, 0 },
{ 'w', nv_wordcmd, 0, false },
{ 'x', nv_abbrev, NV_KEEPREG, 0 },
{ 'y', nv_operator, 0, 0 },
{ 'z', nv_zet, NV_NCH_ALW, 0 },
{ '{', nv_findpar, 0, BACKWARD },
{ '|', nv_pipe, 0, 0 },
{ '}', nv_findpar, 0, FORWARD },
{ '~', nv_tilde, 0, 0 },
/* pound sign */
{POUND, nv_ident, 0, 0},
{K_MOUSEUP, nv_mousescroll, 0, MSCR_UP},
{K_MOUSEDOWN, nv_mousescroll, 0, MSCR_DOWN},
{K_MOUSELEFT, nv_mousescroll, 0, MSCR_LEFT},
{K_MOUSERIGHT, nv_mousescroll, 0, MSCR_RIGHT},
{K_LEFTMOUSE, nv_mouse, 0, 0},
{K_LEFTMOUSE_NM, nv_mouse, 0, 0},
{K_LEFTDRAG, nv_mouse, 0, 0},
{K_LEFTRELEASE, nv_mouse, 0, 0},
{K_LEFTRELEASE_NM, nv_mouse, 0, 0},
{K_MIDDLEMOUSE, nv_mouse, 0, 0},
{K_MIDDLEDRAG, nv_mouse, 0, 0},
{K_MIDDLERELEASE, nv_mouse, 0, 0},
{K_RIGHTMOUSE, nv_mouse, 0, 0},
{K_RIGHTDRAG, nv_mouse, 0, 0},
{K_RIGHTRELEASE, nv_mouse, 0, 0},
{K_X1MOUSE, nv_mouse, 0, 0},
{K_X1DRAG, nv_mouse, 0, 0},
{K_X1RELEASE, nv_mouse, 0, 0},
{K_X2MOUSE, nv_mouse, 0, 0},
{K_X2DRAG, nv_mouse, 0, 0},
{K_X2RELEASE, nv_mouse, 0, 0},
{K_IGNORE, nv_ignore, NV_KEEPREG, 0},
{K_NOP, nv_nop, 0, 0},
{K_INS, nv_edit, 0, 0},
{K_KINS, nv_edit, 0, 0},
{K_BS, nv_ctrlh, 0, 0},
{K_UP, nv_up, NV_SSS|NV_STS, false},
{K_S_UP, nv_page, NV_SS, BACKWARD},
{K_DOWN, nv_down, NV_SSS|NV_STS, false},
{K_S_DOWN, nv_page, NV_SS, FORWARD},
{K_LEFT, nv_left, NV_SSS|NV_STS|NV_RL, 0},
{K_S_LEFT, nv_bck_word, NV_SS|NV_RL, 0},
{K_C_LEFT, nv_bck_word, NV_SSS|NV_RL|NV_STS, 1},
{K_RIGHT, nv_right, NV_SSS|NV_STS|NV_RL, 0},
{K_S_RIGHT, nv_wordcmd, NV_SS|NV_RL, false},
{K_C_RIGHT, nv_wordcmd, NV_SSS|NV_RL|NV_STS, true},
{K_PAGEUP, nv_page, NV_SSS|NV_STS, BACKWARD},
{K_KPAGEUP, nv_page, NV_SSS|NV_STS, BACKWARD},
{K_PAGEDOWN, nv_page, NV_SSS|NV_STS, FORWARD},
{K_KPAGEDOWN, nv_page, NV_SSS|NV_STS, FORWARD},
{K_END, nv_end, NV_SSS|NV_STS, false},
{K_KEND, nv_end, NV_SSS|NV_STS, false},
{K_S_END, nv_end, NV_SS, false},
{K_C_END, nv_end, NV_SSS|NV_STS, true},
{K_HOME, nv_home, NV_SSS|NV_STS, 0},
{K_KHOME, nv_home, NV_SSS|NV_STS, 0},
{K_S_HOME, nv_home, NV_SS, 0},
{K_C_HOME, nv_goto, NV_SSS|NV_STS, false},
{K_DEL, nv_abbrev, 0, 0},
{K_KDEL, nv_abbrev, 0, 0},
{K_UNDO, nv_kundo, 0, 0},
{K_HELP, nv_help, NV_NCW, 0},
{K_F1, nv_help, NV_NCW, 0},
{K_XF1, nv_help, NV_NCW, 0},
{K_SELECT, nv_select, 0, 0},
{K_F8, farsi_fkey, 0, 0},
{K_F9, farsi_fkey, 0, 0},
{K_EVENT, nv_event, NV_KEEPREG, 0},
{K_FOCUSGAINED, nv_focusgained, NV_KEEPREG, 0},
{K_FOCUSLOST, nv_focuslost, NV_KEEPREG, 0},
// pound sign
{ POUND, nv_ident, 0, 0 },
{ K_MOUSEUP, nv_mousescroll, 0, MSCR_UP },
{ K_MOUSEDOWN, nv_mousescroll, 0, MSCR_DOWN },
{ K_MOUSELEFT, nv_mousescroll, 0, MSCR_LEFT },
{ K_MOUSERIGHT, nv_mousescroll, 0, MSCR_RIGHT },
{ K_LEFTMOUSE, nv_mouse, 0, 0 },
{ K_LEFTMOUSE_NM, nv_mouse, 0, 0 },
{ K_LEFTDRAG, nv_mouse, 0, 0 },
{ K_LEFTRELEASE, nv_mouse, 0, 0 },
{ K_LEFTRELEASE_NM, nv_mouse, 0, 0 },
{ K_MIDDLEMOUSE, nv_mouse, 0, 0 },
{ K_MIDDLEDRAG, nv_mouse, 0, 0 },
{ K_MIDDLERELEASE, nv_mouse, 0, 0 },
{ K_RIGHTMOUSE, nv_mouse, 0, 0 },
{ K_RIGHTDRAG, nv_mouse, 0, 0 },
{ K_RIGHTRELEASE, nv_mouse, 0, 0 },
{ K_X1MOUSE, nv_mouse, 0, 0 },
{ K_X1DRAG, nv_mouse, 0, 0 },
{ K_X1RELEASE, nv_mouse, 0, 0 },
{ K_X2MOUSE, nv_mouse, 0, 0 },
{ K_X2DRAG, nv_mouse, 0, 0 },
{ K_X2RELEASE, nv_mouse, 0, 0 },
{ K_IGNORE, nv_ignore, NV_KEEPREG, 0 },
{ K_NOP, nv_nop, 0, 0 },
{ K_INS, nv_edit, 0, 0 },
{ K_KINS, nv_edit, 0, 0 },
{ K_BS, nv_ctrlh, 0, 0 },
{ K_UP, nv_up, NV_SSS|NV_STS, false },
{ K_S_UP, nv_page, NV_SS, BACKWARD },
{ K_DOWN, nv_down, NV_SSS|NV_STS, false },
{ K_S_DOWN, nv_page, NV_SS, FORWARD },
{ K_LEFT, nv_left, NV_SSS|NV_STS|NV_RL, 0 },
{ K_S_LEFT, nv_bck_word, NV_SS|NV_RL, 0 },
{ K_C_LEFT, nv_bck_word, NV_SSS|NV_RL|NV_STS, 1 },
{ K_RIGHT, nv_right, NV_SSS|NV_STS|NV_RL, 0 },
{ K_S_RIGHT, nv_wordcmd, NV_SS|NV_RL, false },
{ K_C_RIGHT, nv_wordcmd, NV_SSS|NV_RL|NV_STS, true },
{ K_PAGEUP, nv_page, NV_SSS|NV_STS, BACKWARD },
{ K_KPAGEUP, nv_page, NV_SSS|NV_STS, BACKWARD },
{ K_PAGEDOWN, nv_page, NV_SSS|NV_STS, FORWARD },
{ K_KPAGEDOWN, nv_page, NV_SSS|NV_STS, FORWARD },
{ K_END, nv_end, NV_SSS|NV_STS, false },
{ K_KEND, nv_end, NV_SSS|NV_STS, false },
{ K_S_END, nv_end, NV_SS, false },
{ K_C_END, nv_end, NV_SSS|NV_STS, true },
{ K_HOME, nv_home, NV_SSS|NV_STS, 0 },
{ K_KHOME, nv_home, NV_SSS|NV_STS, 0 },
{ K_S_HOME, nv_home, NV_SS, 0 },
{ K_C_HOME, nv_goto, NV_SSS|NV_STS, false },
{ K_DEL, nv_abbrev, 0, 0 },
{ K_KDEL, nv_abbrev, 0, 0 },
{ K_UNDO, nv_kundo, 0, 0 },
{ K_HELP, nv_help, NV_NCW, 0 },
{ K_F1, nv_help, NV_NCW, 0 },
{ K_XF1, nv_help, NV_NCW, 0 },
{ K_SELECT, nv_select, 0, 0 },
{ K_F8, farsi_f8, 0, 0 },
{ K_F9, farsi_f9, 0, 0 },
{ K_EVENT, nv_event, NV_KEEPREG, 0 },
{ K_FOCUSGAINED, nv_focusgained, NV_KEEPREG, 0 },
{ K_FOCUSLOST, nv_focuslost, NV_KEEPREG, 0 },
};
/* Number of commands in nv_cmds[]. */