diff --git a/src/dict.c b/src/dict.c
index b40aaef..b36b2bf 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -945,7 +945,7 @@
 	if (**arg != ':')
 	{
 	    if (*skipwhite(*arg) == ':')
-		semsg(_(e_no_white_space_allowed_before_str), ":");
+		semsg(_(e_no_white_space_allowed_before_str_str), ":", *arg);
 	    else
 		semsg(_(e_missing_dict_colon), *arg);
 	    clear_tv(&tvkey);
@@ -1025,7 +1025,7 @@
 	if (!had_comma)
 	{
 	    if (**arg == ',')
-		semsg(_(e_no_white_space_allowed_before_str), ",");
+		semsg(_(e_no_white_space_allowed_before_str_str), ",", *arg);
 	    else
 		semsg(_(e_missing_dict_comma), *arg);
 	    goto failret;
diff --git a/src/errors.h b/src/errors.h
index 921b9df..9b9a782 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -173,8 +173,8 @@
 	INIT(= N_("E1066: Cannot declare a register: %s"));
 EXTERN char e_separator_mismatch_str[]
 	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_no_white_space_allowed_before_str_str[]
+	INIT(= N_("E1068: No white space allowed before '%s': %s"));
 EXTERN char e_white_space_required_after_str_str[]
 	INIT(= N_("E1069: White space required after '%s': %s"));
 EXTERN char e_missing_from[]
diff --git a/src/list.c b/src/list.c
index c93a66d..4d33aa6 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1328,7 +1328,8 @@
 	    if (do_error)
 	    {
 		if (**arg == ',')
-		    semsg(_(e_no_white_space_allowed_before_str), ",");
+		    semsg(_(e_no_white_space_allowed_before_str_str),
+								    ",", *arg);
 		else
 		    semsg(_("E696: Missing comma in List: %s"), *arg);
 	    }
diff --git a/src/userfunc.c b/src/userfunc.c
index 82df0bb..c9b15fd 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -878,7 +878,7 @@
 	{
 	    if (*argp != ',' && *skipwhite(argp) == ',')
 	    {
-		semsg(_(e_no_white_space_allowed_before_str), ",");
+		semsg(_(e_no_white_space_allowed_before_str_str), ",", argp);
 		ret = FAIL;
 		break;
 	    }
@@ -3214,7 +3214,7 @@
 
     if ((vim9script || eap->cmdidx == CMD_def) && VIM_ISWHITE(p[-1]))
     {
-	semsg(_(e_no_white_space_allowed_before_str), "(");
+	semsg(_(e_no_white_space_allowed_before_str_str), "(", p - 1);
 	goto ret_free;
     }
 
diff --git a/src/version.c b/src/version.c
index ca79c64..e203038 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2486,
+/**/
     2485,
 /**/
     2484,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 7a220a8..512f724 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2800,7 +2800,7 @@
 
 	if (*p != ',' && *skipwhite(p) == ',')
 	{
-	    semsg(_(e_no_white_space_allowed_before_str), ",");
+	    semsg(_(e_no_white_space_allowed_before_str_str), ",", p);
 	    p = skipwhite(p);
 	}
 	if (*p == ',')
@@ -3055,7 +3055,7 @@
 	}
 	if (*p == ',')
 	{
-	    semsg(_(e_no_white_space_allowed_before_str), ",");
+	    semsg(_(e_no_white_space_allowed_before_str_str), ",", p);
 	    return FAIL;
 	}
 	if (*p == ']')
@@ -3234,7 +3234,7 @@
 	if (**arg != ':')
 	{
 	    if (*skipwhite(*arg) == ':')
-		semsg(_(e_no_white_space_allowed_before_str), ":");
+		semsg(_(e_no_white_space_allowed_before_str_str), ":", *arg);
 	    else
 		semsg(_(e_missing_dict_colon), *arg);
 	    return FAIL;
@@ -3273,7 +3273,7 @@
 	}
 	if (IS_WHITE_OR_NUL(*whitep))
 	{
-	    semsg(_(e_no_white_space_allowed_before_str), ",");
+	    semsg(_(e_no_white_space_allowed_before_str_str), ",", whitep);
 	    return FAIL;
 	}
 	whitep = *arg + 1;
@@ -4270,7 +4270,7 @@
 	if (**arg != '>')
 	{
 	    if (*skipwhite(*arg) == '>')
-		semsg(_(e_no_white_space_allowed_before_str), ">");
+		semsg(_(e_no_white_space_allowed_before_str_str), ">", *arg);
 	    else
 		emsg(_(e_missing_gt));
 	    return FAIL;
diff --git a/src/vim9type.c b/src/vim9type.c
index dbe7db9..1a20ef5 100644
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -638,7 +638,7 @@
 	if (give_error)
 	{
 	    if (*skipwhite(*arg) == '<')
-		semsg(_(e_no_white_space_allowed_before_str), "<");
+		semsg(_(e_no_white_space_allowed_before_str_str), "<", *arg);
 	    else
 		emsg(_(e_missing_type));
 	}
@@ -779,7 +779,8 @@
 			if (*p != ',' && *skipwhite(p) == ',')
 			{
 			    if (give_error)
-				semsg(_(e_no_white_space_allowed_before_str), ",");
+				semsg(_(e_no_white_space_allowed_before_str_str),
+								       ",", p);
 			    return NULL;
 			}
 			if (*p == ',')
