diff --git a/src/list.c b/src/list.c
index cf0c99f..611171d 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1156,19 +1156,19 @@
 
 /*
  * Allocate a variable for a List and fill it from "*arg".
+ * "*arg" points to the "[".
  * Return OK or FAIL.
  */
     int
-get_list_tv(char_u **arg, typval_T *rettv, int flags, int do_error)
+get_list_tv(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int do_error)
 {
-    int		evaluate = flags & EVAL_EVALUATE;
+    int		evaluate = evalarg == NULL ? FALSE
+					 : evalarg->eval_flags & EVAL_EVALUATE;
+    int		getnext;
     list_T	*l = NULL;
     typval_T	tv;
     listitem_T	*item;
-    evalarg_T	evalarg;
-
-    CLEAR_FIELD(evalarg);
-    evalarg.eval_flags = flags;
+    int		had_comma;
 
     if (evaluate)
     {
@@ -1178,9 +1178,12 @@
     }
 
     *arg = skipwhite(*arg + 1);
+    eval_next_non_blank(*arg, evalarg, &getnext);
+    if (getnext)
+	*arg = eval_next_line(evalarg);
     while (**arg != ']' && **arg != NUL)
     {
-	if (eval1(arg, &tv, &evalarg) == FAIL)	// recursive!
+	if (eval1(arg, &tv, evalarg) == FAIL)	// recursive!
 	    goto failret;
 	if (evaluate)
 	{
@@ -1195,15 +1198,24 @@
 		clear_tv(&tv);
 	}
 
+	// the comma must comma after the value
+	had_comma = **arg == ',';
+	if (had_comma)
+	    *arg = skipwhite(*arg + 1);
+
+	// the "]" can be on the next line
+	eval_next_non_blank(*arg, evalarg, &getnext);
+	if (getnext)
+	    *arg = eval_next_line(evalarg);
 	if (**arg == ']')
 	    break;
-	if (**arg != ',')
+
+	if (!had_comma)
 	{
 	    if (do_error)
 		semsg(_("E696: Missing comma in List: %s"), *arg);
 	    goto failret;
 	}
-	*arg = skipwhite(*arg + 1);
     }
 
     if (**arg != ']')
