diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-11-22 15:05:46 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-11-22 15:05:46 +0000 |
commit | 7d5b8becc342e49e491053ea842e59f82d072001 (patch) | |
tree | 0109a6c312198036b7a042a89656426027efddf3 /src/ex_eval.c | |
parent | 2228cd72cf7c6f326e4e41179e88d37595ca4abc (diff) |
patch 8.2.3645: Vim9: The "no effect" error is not given for all registersv8.2.3645
Problem: Vim9: The "no effect" error is not given for all registers.
Solution: Include any character following '@'. (closes #8779)
Diffstat (limited to 'src/ex_eval.c')
-rw-r--r-- | src/ex_eval.c | 24 |
1 files changed, 17 insertions, 7 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; |