Mercurial > vim
diff src/ex_docmd.c @ 24434:602e528a8e43 v8.2.2757
patch 8.2.2757: Vim9: blob tests for legacy and Vim9 script are separate
Commit: https://github.com/vim/vim/commit/68452177ca4cda4a9d5f93892e437447cf9404c8
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Apr 12 21:21:02 2021 +0200
patch 8.2.2757: Vim9: blob tests for legacy and Vim9 script are separate
Problem: Vim9: blob tests for legacy and Vim9 script are separate.
Solution: Add CheckLegacyAndVim9Success(). Make blob index assign work.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 12 Apr 2021 21:30:04 +0200 |
parents | 9299d21d1d5d |
children | 7c4f50c02e18 |
line wrap: on
line diff
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3429,22 +3429,25 @@ find_ex_command( // "varname.key" is an expression. || (*p == '.' && ASCII_ISALPHA(p[1])))) { - char_u *after = p; + char_u *after = eap->cmd; // When followed by "=" or "+=" then it is an assignment. + // Skip over the whole thing, it can be: + // name.member = val + // name[a : b] = val + // name[idx] = val + // name[idx].member = val + // etc. + eap->cmdidx = CMD_eval; ++emsg_silent; - if (*after == '.') - after = skipwhite(after + 1); if (skip_expr(&after, NULL) == OK) + { after = skipwhite(after); - else - after = (char_u *)""; - if (*after == '=' || (*after != NUL && after[1] == '=') + if (*after == '=' || (*after != NUL && after[1] == '=') || (after[0] == '.' && after[1] == '.' && after[2] == '=')) - eap->cmdidx = CMD_var; - else - eap->cmdidx = CMD_eval; + eap->cmdidx = CMD_var; + } --emsg_silent; return eap->cmd; }