To: vim_dev@googlegroups.com Subject: Patch 8.2.2531 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.2531 Problem: Vim9: the :k command is obscure. Solution: Disallow using :k, can use :mark instead. (closes #7874) Files: runtime/doc/vim9.txt, src/ex_docmd.c, src/vim9script.c, src/vim9compile.c, src/ex_cmds.h, src/testdir/test_vim9_script.vim *** ../vim-8.2.2530/runtime/doc/vim9.txt 2021-02-17 21:56:59.905196323 +0100 --- runtime/doc/vim9.txt 2021-02-19 21:12:10.916748454 +0100 *************** *** 96,103 **** def CallMe(count: number, message: string): bool - Call functions without `:call`: > writefile(['done'], 'file.txt') ! - You cannot use `:xit`, `:t`, `:append`, `:change`, `:insert` or curly-braces ! names. - A range before a command must be prefixed with a colon: > :%s/this/that - Unless mentioned specifically, the highest |scriptversion| is used. --- 96,103 ---- def CallMe(count: number, message: string): bool - Call functions without `:call`: > writefile(['done'], 'file.txt') ! - You cannot use `:xit`, `:t`, `:k`, `:append`, `:change`, `:insert` or ! curly-braces names. - A range before a command must be prefixed with a colon: > :%s/this/that - Unless mentioned specifically, the highest |scriptversion| is used. *************** *** 562,572 **** {'456': 'with', '123': 'without'} ! No :xit, :t, :append, :change or :insert ~ These commands are too easily confused with local variable names. Instead of `:x` or `:xit` you can use `:exit`. Instead of `:t` you can use `:copy`. Comparators ~ --- 562,573 ---- {'456': 'with', '123': 'without'} ! No :xit, :t, :k, :append, :change or :insert ~ These commands are too easily confused with local variable names. Instead of `:x` or `:xit` you can use `:exit`. Instead of `:t` you can use `:copy`. + Instead of `:k` you can use `:mark`. Comparators ~ *** ../vim-8.2.2530/src/ex_docmd.c 2021-02-17 21:56:59.909196307 +0100 --- src/ex_docmd.c 2021-02-19 21:26:12.910931055 +0100 *************** *** 3461,3467 **** /* * Isolate the command and search for it in the command table. * Exceptions: ! * - the 'k' command can directly be followed by any character. * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' * but :sre[wind] is another command, as are :scr[iptnames], * :scs[cope], :sim[alt], :sig[ns] and :sil[ent]. --- 3461,3468 ---- /* * Isolate the command and search for it in the command table. * Exceptions: ! * - The 'k' command can directly be followed by any character. ! * But it is not used in Vim9 script. * - the 's' command can be followed directly by 'c', 'g', 'i', 'I' or 'r' * but :sre[wind] is another command, as are :scr[iptnames], * :scs[cope], :sim[alt], :sig[ns] and :sil[ent]. *************** *** 8056,8061 **** --- 8057,8066 ---- { pos_T pos; + #ifdef FEAT_EVAL + if (not_in_vim9(eap) == FAIL) + return; + #endif if (*eap->arg == NUL) // No argument? emsg(_(e_argreq)); else if (eap->arg[1] != NUL) // more than one character? *** ../vim-8.2.2530/src/vim9script.c 2021-02-14 13:29:57.617276973 +0100 --- src/vim9script.c 2021-02-19 21:20:44.563633250 +0100 *************** *** 95,100 **** --- 95,101 ---- case CMD_append: case CMD_change: case CMD_insert: + case CMD_k: case CMD_t: case CMD_xit: semsg(_(e_command_not_supported_in_vim9_script_missing_var_str), eap->cmd); *** ../vim-8.2.2530/src/vim9compile.c 2021-02-17 14:52:10.539374448 +0100 --- src/vim9compile.c 2021-02-19 21:25:08.911065835 +0100 *************** *** 8520,8525 **** --- 8520,8526 ---- case CMD_append: case CMD_change: case CMD_insert: + case CMD_k: case CMD_t: case CMD_xit: not_in_vim9(&ea); *** ../vim-8.2.2530/src/ex_cmds.h 2021-02-14 12:57:32.552655477 +0100 --- src/ex_cmds.h 2021-02-19 21:22:31.423400902 +0100 *************** *** 741,747 **** EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), EXCMD(CMD_k, "k", ex_mark, ! EX_RANGE|EX_WORD1|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, ADDR_LINES), EXCMD(CMD_keepmarks, "keepmarks", ex_wrongmodifier, EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM, --- 741,747 ---- EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), EXCMD(CMD_k, "k", ex_mark, ! EX_RANGE|EX_WORD1|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK|EX_NONWHITE_OK, ADDR_LINES), EXCMD(CMD_keepmarks, "keepmarks", ex_wrongmodifier, EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM, *** ../vim-8.2.2530/src/testdir/test_vim9_script.vim 2021-02-17 21:56:59.909196307 +0100 --- src/testdir/test_vim9_script.vim 2021-02-19 21:24:02.503205010 +0100 *************** *** 3491,3496 **** --- 3491,3521 ---- unlet g:guard enddef + def Test_unsupported_commands() + var lines =<< trim END + ka + END + CheckDefAndScriptFailure(lines, 'E1100:') + + lines =<< trim END + t + END + CheckDefFailure(lines, 'E1100:') + CheckScriptFailure(['vim9script'] + lines, 'E1100:') + + lines =<< trim END + x + END + CheckDefFailure(lines, 'E1100:') + CheckScriptFailure(['vim9script'] + lines, 'E1100:') + + lines =<< trim END + xit + END + CheckDefFailure(lines, 'E1100:') + CheckScriptFailure(['vim9script'] + lines, 'E1100:') + enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new *** ../vim-8.2.2530/src/version.c 2021-02-19 19:13:13.087904339 +0100 --- src/version.c 2021-02-19 21:42:30.080836148 +0100 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 2531, /**/ -- TALL KNIGHT: Firstly. You must get us another shrubbery! OTHER KNIGHTS: More shrubberies! More shrubberies for the ex-Knights of Ni! ARTHUR: Not another shrubbery - "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///