diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-12-29 11:15:01 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-12-29 11:15:01 +0100 |
commit | 8242ebbdba64cfa5c504c9d8dfb802076d99c602 (patch) | |
tree | b5a016fbb3e636ca8ce0488d227d21f94be36ded | |
parent | 864a28b6a6ae4f1a56e230be26bc6d13e3f8b3d9 (diff) | |
download | vim-git-8242ebbdba64cfa5c504c9d8dfb802076d99c602.tar.gz |
patch 8.2.2242: Vim9: bar line continuation does not work at script levelv8.2.2242
Problem: Vim9: line continuation with bar does not work at script level.
Solution: Check for Vim9 script.
-rw-r--r-- | src/ex_docmd.c | 3 | ||||
-rw-r--r-- | src/scriptfile.c | 8 | ||||
-rw-r--r-- | src/structs.h | 4 | ||||
-rw-r--r-- | src/testdir/test_vim9_cmd.vim | 49 | ||||
-rw-r--r-- | src/userfunc.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 43 insertions, 27 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 91d56d71f..dc9ea165f 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -889,7 +889,8 @@ do_cmdline( #else 0 #endif - , TRUE)) == NULL) + , in_vim9script() ? GETLINE_CONCAT_CONTBAR + : GETLINE_CONCAT_CONT)) == NULL) { // Don't call wait_return for aborted command line. The NULL // returned for the end of a sourced file or executed function diff --git a/src/scriptfile.c b/src/scriptfile.c index eceefd729..adc5caffc 100644 --- a/src/scriptfile.c +++ b/src/scriptfile.c @@ -1741,8 +1741,8 @@ getsourceline( char_u *p; int do_vim9_all = in_vim9script() && options == GETLINE_CONCAT_ALL; - int do_vim9_cont = do_vim9_all - || options == GETLINE_CONCAT_CONTDEF; + int do_bar_cont = do_vim9_all + || options == GETLINE_CONCAT_CONTBAR; #ifdef FEAT_EVAL // If breakpoints have been added/deleted need to check for it. @@ -1797,7 +1797,7 @@ getsourceline( || (p[0] == '"' && p[1] == '\\' && p[2] == ' ') || (do_vim9_all && (*p == NUL || vim9_comment_start(p))) - || (do_vim9_cont && p[0] == '|' && p[1] != '|'))) + || (do_bar_cont && p[0] == '|' && p[1] != '|'))) { garray_T ga; @@ -1817,7 +1817,7 @@ getsourceline( if (sp->nextline == NULL) break; p = skipwhite(sp->nextline); - if (*p == '\\' || (do_vim9_cont && p[0] == '|' && p[1] != '|')) + if (*p == '\\' || (do_bar_cont && p[0] == '|' && p[1] != '|')) { // Adjust the growsize to the current length to speed up // concatenating many lines. diff --git a/src/structs.h b/src/structs.h index ba42e331b..102be0eaa 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1565,8 +1565,8 @@ typedef void (*cfunc_free_T)(void *state); // type of getline() last argument typedef enum { GETLINE_NONE, // do not concatenate any lines - GETLINE_CONCAT_CONT, // concatenate continuation lines in Vim9 script - GETLINE_CONCAT_CONTDEF, // concatenate continuation lines always + GETLINE_CONCAT_CONT, // concatenate continuation lines with backslash + GETLINE_CONCAT_CONTBAR, // concatenate continuation lines with \ and | GETLINE_CONCAT_ALL // concatenate continuation and Vim9 # comment lines } getline_opt_T; diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim index 710af413c..ed0c7dda3 100644 --- a/src/testdir/test_vim9_cmd.vim +++ b/src/testdir/test_vim9_cmd.vim @@ -536,6 +536,37 @@ def Test_command_modifiers_keep() quit! enddef +def Test_bar_line_continuation() + var lines =<< trim END + au BufNewFile Xfile g:readFile = 1 + | g:readExtra = 2 + g:readFile = 0 + g:readExtra = 0 + edit Xfile + assert_equal(1, g:readFile) + assert_equal(2, g:readExtra) + bwipe! + au! BufNewFile + + au BufNewFile Xfile g:readFile = 1 + | g:readExtra = 2 + | g:readMore = 3 + g:readFile = 0 + g:readExtra = 0 + g:readMore = 0 + edit Xfile + assert_equal(1, g:readFile) + assert_equal(2, g:readExtra) + assert_equal(3, g:readMore) + bwipe! + au! BufNewFile + unlet g:readFile + unlet g:readExtra + unlet g:readMore + END + CheckDefAndScriptSuccess(lines) +enddef + def Test_command_modifier_other() new Xsomefile setline(1, 'changed') @@ -548,33 +579,15 @@ def Test_command_modifier_other() bwipe! au BufNewFile Xfile g:readFile = 1 - | g:readExtra = 2 g:readFile = 0 - g:readExtra = 0 edit Xfile assert_equal(1, g:readFile) - assert_equal(2, g:readExtra) bwipe! g:readFile = 0 noautocmd edit Xfile assert_equal(0, g:readFile) au! BufNewFile - - au BufNewFile Xfile g:readFile = 1 - | g:readExtra = 2 - | g:readMore = 3 - g:readFile = 0 - g:readExtra = 0 - g:readMore = 0 - edit Xfile - assert_equal(1, g:readFile) - assert_equal(2, g:readExtra) - assert_equal(3, g:readMore) - bwipe! - au! BufNewFile unlet g:readFile - unlet g:readExtra - unlet g:readMore noswapfile edit XnoSwap assert_equal(0, &l:swapfile) diff --git a/src/userfunc.c b/src/userfunc.c index 85941d1ea..9393b62cc 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -3292,7 +3292,7 @@ define_function(exarg_T *eap, char_u *name_arg) nesting = 0; nesting_def[nesting] = (eap->cmdidx == CMD_def); getline_options = eap->cmdidx == CMD_def - ? GETLINE_CONCAT_CONTDEF : GETLINE_CONCAT_CONT; + ? GETLINE_CONCAT_CONTBAR : GETLINE_CONCAT_CONT; for (;;) { if (KeyTyped) @@ -3368,7 +3368,7 @@ define_function(exarg_T *eap, char_u *name_arg) VIM_CLEAR(skip_until); VIM_CLEAR(heredoc_trimmed); getline_options = eap->cmdidx == CMD_def - ? GETLINE_CONCAT_CONTDEF : GETLINE_CONCAT_CONT; + ? GETLINE_CONCAT_CONTBAR : GETLINE_CONCAT_CONT; is_heredoc = FALSE; } } diff --git a/src/version.c b/src/version.c index e9327f19b..ee0d9878c 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2242, +/**/ 2241, /**/ 2240, |