Problem: Vim9: line continuation with bar does not work at script level.
Solution: Check for Vim9 script.
#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
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.
|| (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;
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.
// 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;
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')
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)
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)
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;
}
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2242,
/**/
2241,
/**/