From 7d5b8becc342e49e491053ea842e59f82d072001 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 22 Nov 2021 15:05:46 +0000 Subject: patch 8.2.3645: Vim9: The "no effect" error is not given for all registers Problem: Vim9: The "no effect" error is not given for all registers. Solution: Include any character following '@'. (closes #8779) --- src/ex_eval.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src/ex_eval.c') 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; -- cgit v1.2.3