# HG changeset patch # User Bram Moolenaar # Date 1652789702 -7200 # Node ID 37e05627acb1596e3c9075a34e51e119515f5c06 # Parent 915bc19857dde6755608fa1b9fd43d20da7266a7 patch 8.2.4971: Vim9: interpolated string seen as range Commit: https://github.com/vim/vim/commit/40c141d333292d625907f4de13766cbbc2223911 Author: Bram Moolenaar Date: Tue May 17 13:14:23 2022 +0100 patch 8.2.4971: Vim9: interpolated string seen as range Problem: Vim9: interpolated string seen as range. Solution: Recognize an interpolated string at the start of a command line. (closes #10434) diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -3551,7 +3551,8 @@ find_ex_command( char_u *swp; if (*eap->cmd == '&' - || *eap->cmd == '$' + || (eap->cmd[0] == '$' + && eap->cmd[1] != '\'' && eap->cmd[1] != '"') || (eap->cmd[0] == '@' && (valid_yank_reg(eap->cmd[1], FALSE) || eap->cmd[1] == '@'))) @@ -3590,9 +3591,13 @@ find_ex_command( // "'string'->func()" is an expression. || *eap->cmd == '\'' // '"string"->func()' is an expression. + || *eap->cmd == '"' + // '$"string"->func()' is an expression. + // "$'string'->func()" is an expression. + || (eap->cmd[0] == '$' + && (eap->cmd[1] == '\'' || eap->cmd[1] == '"')) + // '0z1234->func()' is an expression. || (eap->cmd[0] == '0' && eap->cmd[1] == 'z') - // '"string"->func()' is an expression. - || *eap->cmd == '"' // "g:varname" is an expression. || eap->cmd[1] == ':' ) diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim --- a/src/testdir/test_vim9_expr.vim +++ b/src/testdir/test_vim9_expr.vim @@ -3572,7 +3572,9 @@ def Test_expr8_method_call() setline(1, ['first', 'last']) 'second'->append(1) "third"->append(2) - assert_equal(['first', 'second', 'third', 'last'], getline(1, '$')) + $"fourth"->append(3) + $'fifth'->append(4) + assert_equal(['first', 'second', 'third', 'fourth', 'fifth', 'last'], getline(1, '$')) bwipe! var bufnr = bufnr() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4971, +/**/ 4970, /**/ 4969,