diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-07-28 15:54:54 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-07-28 15:54:54 +0200 |
commit | 6868634abd6a49b2dfd3a994a6da7d5911457a37 (patch) | |
tree | 52f0c0f90a6cc39aa916cf2817201b739b47fb28 | |
parent | 78e006b9b02fac94c910445d842f6dc5331fa57a (diff) | |
download | vim-git-6868634abd6a49b2dfd3a994a6da7d5911457a37.tar.gz |
patch 8.2.3235: cannot use lambda in {} block in user commandv8.2.3235
Problem: Cannot use lambda in {} block in user command. (Martin Tournoij)
Solution: Do not go over the end of the lambda.
-rw-r--r-- | src/testdir/test_usercommands.vim | 7 | ||||
-rw-r--r-- | src/userfunc.c | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim index df8893709..173b23ed2 100644 --- a/src/testdir/test_usercommands.vim +++ b/src/testdir/test_usercommands.vim @@ -632,6 +632,13 @@ func Test_usercmd_with_block() call assert_equal('more', g:didmore) unlet g:didit unlet g:didmore + delcommand DoSomething + + command DoMap { + echo [1, 2, 3]->map((_, v) => v + 1) + } + DoMap + delcommand DoMap let lines =<< trim END command DoesNotEnd { diff --git a/src/userfunc.c b/src/userfunc.c index 7c9634742..e00871883 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -1398,7 +1398,7 @@ get_lambda_tv( // If there are line breaks, we need to split up the string. line_end = vim_strchr(start, '\n'); - if (line_end == NULL) + if (line_end == NULL || line_end > end) line_end = end; // Add "return " before the expression (or the first line). diff --git a/src/version.c b/src/version.c index fa54081ca..ea232c37b 100644 --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3235, +/**/ 3234, /**/ 3233, |