diff --git a/src/dict.c b/src/dict.c
index 260f229..b40aaef 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -970,7 +970,7 @@
 	}
 	if (vim9script && (*arg)[1] != NUL && !VIM_ISWHITE((*arg)[1]))
 	{
-	    semsg(_(e_white_space_required_after_str), ":");
+	    semsg(_(e_white_space_required_after_str_str), ":", *arg);
 	    clear_tv(&tvkey);
 	    goto failret;
 	}
@@ -1012,7 +1012,7 @@
 	{
 	    if (vim9script && (*arg)[1] != NUL && !VIM_ISWHITE((*arg)[1]))
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", *arg);
 		goto failret;
 	    }
 	    *arg = skipwhite(*arg + 1);
diff --git a/src/errors.h b/src/errors.h
index ec038ec..ed267fd 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -175,8 +175,8 @@
 	INIT(= N_("E1067: Separator mismatch: %s"));
 EXTERN char e_no_white_space_allowed_before_str[]
 	INIT(= N_("E1068: No white space allowed before '%s'"));
-EXTERN char e_white_space_required_after_str[]
-	INIT(= N_("E1069: White space required after '%s'"));
+EXTERN char e_white_space_required_after_str_str[]
+	INIT(= N_("E1069: White space required after '%s': %s"));
 EXTERN char e_missing_from[]
 	INIT(= N_("E1070: Missing \"from\""));
 EXTERN char e_invalid_string_after_from[]
diff --git a/src/list.c b/src/list.c
index c51c99b..c93a66d 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1311,7 +1311,7 @@
 	{
 	    if (vim9script && !IS_WHITE_OR_NUL((*arg)[1]) && (*arg)[1] != ']')
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", *arg);
 		goto failret;
 	    }
 	    *arg = skipwhite(*arg + 1);
diff --git a/src/userfunc.c b/src/userfunc.c
index bdf4064..e220781 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -126,7 +126,7 @@
 	    ++p;
 	    if (!skip && !VIM_ISWHITE(*p))
 	    {
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", p - 1);
 		return arg;
 	    }
 	    type = skipwhite(p);
@@ -297,7 +297,7 @@
 		if (!skip && in_vim9script()
 				      && !IS_WHITE_OR_NUL(*p) && *p != endchar)
 		{
-		    semsg(_(e_white_space_required_after_str), ",");
+		    semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 		    goto err_ret;
 		}
 	    }
@@ -487,7 +487,7 @@
 	    if (white_error != NULL && !VIM_ISWHITE(s[1]))
 	    {
 		*white_error = TRUE;
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", s);
 		return NULL;
 	    }
 	    s = skipwhite(s + 1);
@@ -884,7 +884,7 @@
 	    break;
 	if (vim9script && !IS_WHITE_OR_NUL(argp[1]))
 	{
-	    semsg(_(e_white_space_required_after_str), ",");
+	    semsg(_(e_white_space_required_after_str_str), ",", argp);
 	    ret = FAIL;
 	    break;
 	}
diff --git a/src/version.c b/src/version.c
index 383e15a..871e048 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2480,
+/**/
     2479,
 /**/
     2478,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 6a1d8d9..3c24fdb 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2807,7 +2807,7 @@
 	{
 	    ++p;
 	    if (*p != NUL && !VIM_ISWHITE(*p))
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 	}
 	else
 	    must_end = TRUE;
@@ -3073,7 +3073,7 @@
 	    ++p;
 	    if (*p != ']' && !IS_WHITE_OR_NUL(*p))
 	    {
-		semsg(_(e_white_space_required_after_str), ",");
+		semsg(_(e_white_space_required_after_str_str), ",", p - 1);
 		return FAIL;
 	    }
 	}
@@ -3242,7 +3242,7 @@
 	whitep = *arg + 1;
 	if (!IS_WHITE_OR_NUL(*whitep))
 	{
-	    semsg(_(e_white_space_required_after_str), ":");
+	    semsg(_(e_white_space_required_after_str_str), ":", *arg);
 	    return FAIL;
 	}
 
@@ -3279,10 +3279,10 @@
 	whitep = *arg + 1;
 	if (!IS_WHITE_OR_NUL(*whitep))
 	{
-	    semsg(_(e_white_space_required_after_str), ",");
+	    semsg(_(e_white_space_required_after_str_str), ",", *arg);
 	    return FAIL;
 	}
-	*arg = skipwhite(*arg + 1);
+	*arg = skipwhite(whitep);
     }
 
     *arg = *arg + 1;
@@ -5711,7 +5711,7 @@
 	    // parse optional type: "let var: type = expr"
 	    if (!VIM_ISWHITE(var_end[1]))
 	    {
-		semsg(_(e_white_space_required_after_str), ":");
+		semsg(_(e_white_space_required_after_str_str), ":", var_end);
 		return FAIL;
 	    }
 	    p = skipwhite(var_end + 1);
diff --git a/src/vim9script.c b/src/vim9script.c
index 010b4bf..387c9be 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -629,7 +629,7 @@
     }
     if (!VIM_ISWHITE(p[1]))
     {
-	semsg(_(e_white_space_required_after_str), ":");
+	semsg(_(e_white_space_required_after_str_str), ":", p);
 	return arg + STRLEN(arg);
     }
     name = vim_strnsave(arg, p - arg);
diff --git a/src/vim9type.c b/src/vim9type.c
index 1374cee..dbe7db9 100644
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -788,7 +788,8 @@
 			    if (!VIM_ISWHITE(*p))
 			    {
 				if (give_error)
-				    semsg(_(e_white_space_required_after_str), ",");
+				    semsg(_(e_white_space_required_after_str_str),
+								   ",", p - 1);
 				return NULL;
 			    }
 			}
@@ -815,7 +816,8 @@
 		    // parse return type
 		    ++*arg;
 		    if (!VIM_ISWHITE(**arg) && give_error)
-			semsg(_(e_white_space_required_after_str), ":");
+			semsg(_(e_white_space_required_after_str_str),
+								":", *arg - 1);
 		    *arg = skipwhite(*arg);
 		    ret_type = parse_type(arg, type_gap, give_error);
 		    if (ret_type == NULL)
