Mercurial > vim
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 { |