diff options
-rw-r--r-- | src/ex_eval.c | 24 | ||||
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 29 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 47 insertions, 8 deletions
diff --git a/src/ex_eval.c b/src/ex_eval.c index 1f66e336f6..d80500eb0b 100644 --- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -887,22 +887,32 @@ report_discard_pending(int pending, void *value) } } +/* + * Return TRUE if "arg" is only a variable, register or option name. + */ int cmd_is_name_only(char_u *arg) { char_u *p = arg; - char_u *alias; + char_u *alias = NULL; int name_only = FALSE; - if (*p == '&') + if (*p == '@') { ++p; - if (STRNCMP("l:", p, 2) == 0 || STRNCMP("g:", p, 2) == 0) - p += 2; + if (*p != NUL) + ++p; + } + else + { + if (*p == '&') + { + ++p; + if (STRNCMP("l:", p, 2) == 0 || STRNCMP("g:", p, 2) == 0) + p += 2; + } + get_name_len(&p, &alias, FALSE, FALSE); } - else if (*p == '@') - ++p; - get_name_len(&p, &alias, FALSE, FALSE); name_only = ends_excmd2(arg, skipwhite(p)); vim_free(alias); return name_only; diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 0fa65d1b28..31f20cb266 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -556,7 +556,34 @@ def Test_use_register() @a = 'echo "text"' @a END - CheckDefAndScriptFailure(lines, 'E1207:') + CheckDefAndScriptFailure(lines, 'E1207:', 2) + + lines =<< trim END + @/ = 'pattern' + @/ + END + CheckDefAndScriptFailure(lines, 'E1207:', 2) + + lines =<< trim END + &opfunc = 'nothing' + &opfunc + END + CheckDefAndScriptFailure(lines, 'E1207:', 2) + &opfunc = '' + + lines =<< trim END + &l:showbreak = 'nothing' + &l:showbreak + END + CheckDefAndScriptFailure(lines, 'E1207:', 2) + &l:showbreak = '' + + lines =<< trim END + &g:showbreak = 'nothing' + &g:showbreak + END + CheckDefAndScriptFailure(lines, 'E1207:', 2) + &g:showbreak = '' enddef def Test_environment_use_linebreak() diff --git a/src/version.c b/src/version.c index 67b2634522..d91f522a2f 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3645, +/**/ 3644, /**/ 3643, |