comparison src/list.c @ 21046:0ca7e04d39e3 v8.2.1074

patch 8.2.1074: Vim9: no line break allowed after some operators Commit: https://github.com/vim/vim/commit/9215f01218b2ed2cfe49c1f43fcf342bd9ffdded Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 27 21:18:00 2020 +0200 patch 8.2.1074: Vim9: no line break allowed after some operators Problem: Vim9: no line break allowed after some operators. Solution: Skip a line break after the operator. Add eval_may_get_next_line() to simplify checking for a line break.
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Jun 2020 21:30:04 +0200
parents f58ee30d863f
children 6dc8625889fe
comparison
equal deleted inserted replaced
21045:e834e0a2a43c 21046:0ca7e04d39e3
1162 int 1162 int
1163 get_list_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error) 1163 get_list_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error)
1164 { 1164 {
1165 int evaluate = evalarg == NULL ? FALSE 1165 int evaluate = evalarg == NULL ? FALSE
1166 : evalarg->eval_flags & EVAL_EVALUATE; 1166 : evalarg->eval_flags & EVAL_EVALUATE;
1167 int getnext;
1168 list_T *l = NULL; 1167 list_T *l = NULL;
1169 typval_T tv; 1168 typval_T tv;
1170 listitem_T *item; 1169 listitem_T *item;
1171 int vim9script = current_sctx.sc_version == SCRIPT_VERSION_VIM9; 1170 int vim9script = current_sctx.sc_version == SCRIPT_VERSION_VIM9;
1172 int had_comma; 1171 int had_comma;
1176 l = list_alloc(); 1175 l = list_alloc();
1177 if (l == NULL) 1176 if (l == NULL)
1178 return FAIL; 1177 return FAIL;
1179 } 1178 }
1180 1179
1181 *arg = skipwhite(*arg + 1); 1180 *arg = skipwhite_and_linebreak(*arg + 1, evalarg);
1182 eval_next_non_blank(*arg, evalarg, &getnext);
1183 if (getnext)
1184 *arg = eval_next_line(evalarg);
1185 while (**arg != ']' && **arg != NUL) 1181 while (**arg != ']' && **arg != NUL)
1186 { 1182 {
1187 if (eval1(arg, &tv, evalarg) == FAIL) // recursive! 1183 if (eval1(arg, &tv, evalarg) == FAIL) // recursive!
1188 goto failret; 1184 goto failret;
1189 if (evaluate) 1185 if (evaluate)
1210 } 1206 }
1211 *arg = skipwhite(*arg + 1); 1207 *arg = skipwhite(*arg + 1);
1212 } 1208 }
1213 1209
1214 // the "]" can be on the next line 1210 // the "]" can be on the next line
1215 eval_next_non_blank(*arg, evalarg, &getnext); 1211 *arg = skipwhite_and_linebreak(*arg, evalarg);
1216 if (getnext)
1217 *arg = eval_next_line(evalarg);
1218 if (**arg == ']') 1212 if (**arg == ']')
1219 break; 1213 break;
1220 1214
1221 if (!had_comma) 1215 if (!had_comma)
1222 { 1216 {