Mercurial > vim
changeset 23978:54b2aa1f0d42 v8.2.2531
patch 8.2.2531: Vim9: the :k command is obscure
Commit: https://github.com/vim/vim/commit/10b9421f3bb7ac971fa63bd025c4c603c98f4a49
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Feb 19 21:42:57 2021 +0100
patch 8.2.2531: Vim9: the :k command is obscure
Problem: Vim9: the :k command is obscure.
Solution: Disallow using :k, can use :mark instead. (closes https://github.com/vim/vim/issues/7874)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 19 Feb 2021 21:45:03 +0100 |
parents | 182c7ecd2cf3 |
children | 9e16ae5f8ff8 |
files | runtime/doc/vim9.txt src/ex_cmds.h src/ex_docmd.c src/testdir/test_vim9_script.vim src/version.c src/vim9compile.c src/vim9script.c |
diffstat | 7 files changed, 40 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -96,8 +96,8 @@ script and `:def` functions; details are 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. +- 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,11 +562,12 @@ error. A number can be given with and w {'456': 'with', '123': 'without'} -No :xit, :t, :append, :change or :insert ~ +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 ~
--- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -741,7 +741,7 @@ EXCMD(CMD_jumps, "jumps", ex_jumps, 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_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,
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3461,7 +3461,8 @@ find_ex_command( /* * Isolate the command and search for it in the command table. * Exceptions: - * - the 'k' command can directly be followed by any character. + * - 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,6 +8057,10 @@ ex_mark(exarg_T *eap) { 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?
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -3491,6 +3491,31 @@ def Test_import_gone_when_sourced_twice( 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
--- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2531, +/**/ 2530, /**/ 2529,