0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.2242: Vim9: bar line continuation does not work at script level

Problem:    Vim9: line continuation with bar does not work at script level.
Solution:   Check for Vim9 script.
This commit is contained in:
Bram Moolenaar
2020-12-29 11:15:01 +01:00
parent 864a28b6a6
commit 8242ebbdba
6 changed files with 43 additions and 27 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -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;

View File

@@ -536,17 +536,8 @@ def Test_command_modifiers_keep()
quit!
enddef
def Test_command_modifier_other()
new Xsomefile
setline(1, 'changed')
var buf = bufnr()
hide edit Xotherfile
var info = getbufinfo(buf)
assert_equal(1, info[0].hidden)
assert_equal(1, info[0].changed)
edit Xsomefile
bwipe!
def Test_bar_line_continuation()
var lines =<< trim END
au BufNewFile Xfile g:readFile = 1
| g:readExtra = 2
g:readFile = 0
@@ -555,9 +546,6 @@ def Test_command_modifier_other()
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
@@ -575,6 +563,31 @@ def Test_command_modifier_other()
unlet g:readFile
unlet g:readExtra
unlet g:readMore
END
CheckDefAndScriptSuccess(lines)
enddef
def Test_command_modifier_other()
new Xsomefile
setline(1, 'changed')
var buf = bufnr()
hide edit Xotherfile
var info = getbufinfo(buf)
assert_equal(1, info[0].hidden)
assert_equal(1, info[0].changed)
edit Xsomefile
bwipe!
au BufNewFile Xfile g:readFile = 1
g:readFile = 0
edit Xfile
assert_equal(1, g:readFile)
bwipe!
g:readFile = 0
noautocmd edit Xfile
assert_equal(0, g:readFile)
au! BufNewFile
unlet g:readFile
noswapfile edit XnoSwap
assert_equal(0, &l:swapfile)

View File

@@ -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;
}
}

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2242,
/**/
2241,
/**/