diff --git a/src/errors.h b/src/errors.h
index a333385..27dde8f 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -528,7 +528,15 @@
 EXTERN char e_couldnt_read_in_sign_data[]
 	INIT(= N_("E255: Couldn't read in sign data"));
 #endif
+#ifdef FEAT_EVAL
+EXTERN char e_no_white_space_allowed_before_parenthesis[]
+	INIT(= N_("E274: No white space allowed before parenthesis"));
+#endif
 
+#ifdef FEAT_MENU
+EXTERN char e_menu_only_exists_in_another_mode[]
+	INIT(= N_("E328: Menu only exists in another mode"));
+#endif
 EXTERN char e_internal_error_lalloc_zero[]
 	INIT(= N_("E341: Internal error: lalloc(0, )"));
 EXTERN char e_out_of_memory_allocating_nr_bytes[]
@@ -668,6 +676,16 @@
 EXTERN char e_not_allowed_to_change_text_here[]
 	INIT(= N_("E578: Not allowed to change text here"));
 #ifdef FEAT_EVAL
+EXTERN char e_endif_without_if[]
+	INIT(= N_("E580: :endif without :if"));
+EXTERN char e_else_without_if[]
+	INIT(= N_("E581: :else without :if"));
+EXTERN char e_elseif_without_if[]
+	INIT(= N_("E582: :elseif without :if"));
+EXTERN char e_continue_without_while_or_for[]
+	INIT(= N_("E586: :continue without :while or :for"));
+EXTERN char e_break_without_while_or_for[]
+	INIT(= N_("E587: :break without :while or :for"));
 EXTERN char e_endwhile_without_while[]
 	INIT(= N_("E588: :endwhile without :while"));
 EXTERN char e_endfor_without_for[]
@@ -716,11 +734,17 @@
 EXTERN char e_internal_error_str[]
 	INIT(= N_("E685: Internal error: %s"));
 #ifdef FEAT_EVAL
+EXTERN char e_argument_of_str_must_be_list[]
+	INIT(= N_("E686: Argument of %s must be a List"));
+EXTERN char e_missing_in_after_for[]
+	INIT(= N_("E690: Missing \"in\" after :for"));
+// E693 unused
 EXTERN char e_cannot_index_a_funcref[]
 	INIT(= N_("E695: Cannot index a Funcref"));
 EXTERN char e_missing_end_of_list_rsb_str[]
 	INIT(= N_("E697: Missing end of List ']': %s"));
 
+// E706 unused
 EXTERN char e_list_value_has_more_items_than_targets[]
 	INIT(= N_("E710: List value has more items than targets"));
 EXTERN char e_list_value_does_not_have_enough_items[]
@@ -864,6 +888,10 @@
 	INIT(= N_("E937: Attempt to delete a buffer that is in use: %s"));
 EXTERN char e_positive_count_required[]
 	INIT(= N_("E939: Positive count required"));
+#ifdef FEAT_EVAL
+EXTERN char e_cannot_lock_or_unlock_variable_str[]
+	INIT(= N_("E940: Cannot lock or unlock variable %s"));
+#endif
 #ifdef FEAT_TERMINAL
 EXTERN char e_job_still_running[]
 	INIT(= N_("E948: Job still running"));
@@ -874,6 +902,8 @@
 	INIT(= N_("E949: File changed while writing"));
 EXTERN char e_autocommand_caused_recursive_behavior[]
 	INIT(= N_("E952: Autocommand caused recursive behavior"));
+EXTERN char e_invalid_window_number[]
+	INIT(= N_("E957: Invalid window number"));
 EXTERN char_u e_invalid_column_number_nr[]
 	INIT(= N_("E964: Invalid column number: %ld"));
 EXTERN char_u e_invalid_line_number_nr[]
diff --git a/src/eval.c b/src/eval.c
index fa3941c..f228067 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1632,7 +1632,7 @@
 	if (in_vim9script() && *expr == ':' && expr != var_list_end)
 	    semsg(_(e_no_white_space_allowed_before_colon_str), expr);
 	else
-	    emsg(_(e_missing_in));
+	    emsg(_(e_missing_in_after_for));
 	return fi;
     }
 
@@ -3888,7 +3888,7 @@
 	if (verbose)
 	{
 	    if (*skipwhite(*arg) == '(')
-		emsg(_(e_nowhitespace));
+		emsg(_(e_no_white_space_allowed_before_parenthesis));
 	    else
 		semsg(_(e_missing_parenthesis_str), "lambda");
 	}
@@ -3951,7 +3951,7 @@
 	else if (VIM_ISWHITE((*arg)[-1]))
 	{
 	    if (verbose)
-		emsg(_(e_nowhitespace));
+		emsg(_(e_no_white_space_allowed_before_parenthesis));
 	    ret = FAIL;
 	}
 	else
@@ -5948,7 +5948,7 @@
 	    {
 		if (VIM_ISWHITE(**arg))
 		{
-		    emsg(_(e_nowhitespace));
+		    emsg(_(e_no_white_space_allowed_before_parenthesis));
 		    ret = FAIL;
 		}
 		else if ((**arg == '{' && !in_vim9script()) || **arg == '(')
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 92764c6..f491a7c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3071,7 +3071,7 @@
 	win = find_win_by_nr_or_id(&argvars[idx]);
 	if (win == NULL)
 	{
-	    emsg(_(e_invalwindow));
+	    emsg(_(e_invalid_window_number));
 	    return NULL;
 	}
     }
@@ -6570,7 +6570,7 @@
 
     if (argvars[0].v_type != VAR_LIST || argvars[0].vval.v_list == NULL)
     {
-	semsg(_(e_listarg), "inputlist()");
+	semsg(_(e_argument_of_str_must_be_list), "inputlist()");
 	return;
     }
 
diff --git a/src/evalvars.c b/src/evalvars.c
index a54158f..fba668d 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1889,7 +1889,7 @@
 	*name_end = NUL;
 	if (*lp->ll_name == '$')
 	{
-	    semsg(_(e_lock_unlock), lp->ll_name);
+	    semsg(_(e_cannot_lock_or_unlock_variable_str), lp->ll_name);
 	    ret = FAIL;
 	}
 	else
@@ -1909,7 +1909,7 @@
 	    {
 		// For historic reasons this error is not given for a list or
 		// dict.  E.g., the b: dict could be locked/unlocked.
-		semsg(_(e_lock_unlock), lp->ll_name);
+		semsg(_(e_cannot_lock_or_unlock_variable_str), lp->ll_name);
 		ret = FAIL;
 	    }
 	    else
diff --git a/src/evalwindow.c b/src/evalwindow.c
index f863026..0fc62d1 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -916,7 +916,7 @@
 	    || !win_valid(wp) || !win_valid(targetwin)
 	    || win_valid_popup(wp) || win_valid_popup(targetwin))
     {
-        emsg(_(e_invalwindow));
+        emsg(_(e_invalid_window_number));
 	rettv->vval.v_number = -1;
 	return;
     }
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 4f4a0a6..9a47802 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -1316,7 +1316,7 @@
     cstack_T	*cstack = eap->cstack;
 
     if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0)
-	eap->errmsg = _(e_continue);
+	eap->errmsg = _(e_continue_without_while_or_for);
     else
     {
 	// Try to find the matching ":while".  This might stop at a try
@@ -1354,7 +1354,7 @@
     cstack_T	*cstack = eap->cstack;
 
     if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0)
-	eap->errmsg = _(e_break);
+	eap->errmsg = _(e_break_without_while_or_for);
     else
     {
 	// Inactivate conditionals until the matching ":while" or a try
diff --git a/src/globals.h b/src/globals.h
index 1e8fd25..cdad353 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1600,36 +1600,15 @@
 #endif
 
 /*
- * Some error messages that can be shared are included here.
- * They should be moved to errors.h.
+ * Some messages that can be shared are included here.
  */
-#ifdef FEAT_MENU
-EXTERN char e_menuothermode[]	INIT(= N_("E328: Menu only exists in another mode"));
-#endif
-EXTERN char e_invalwindow[]	INIT(= N_("E957: Invalid window number"));
-EXTERN char e_listarg[]		INIT(= N_("E686: Argument of %s must be a List"));
-#ifdef FEAT_EVAL
-EXTERN char e_missing_in[]	INIT(= N_("E690: Missing \"in\" after :for"));
-EXTERN char e_else_without_if[] INIT(= N_("E581: :else without :if"));
-EXTERN char e_elseif_without_if[] INIT(= N_("E582: :elseif without :if"));
-EXTERN char e_endif_without_if[] INIT(= N_("E580: :endif without :if"));
-EXTERN char e_continue[]	INIT(= N_("E586: :continue without :while or :for"));
-EXTERN char e_break[]		INIT(= N_("E587: :break without :while or :for"));
-EXTERN char e_nowhitespace[]	INIT(= N_("E274: No white space allowed before parenthesis"));
+EXTERN char top_bot_msg[]   INIT(= N_("search hit TOP, continuing at BOTTOM"));
+EXTERN char bot_top_msg[]   INIT(= N_("search hit BOTTOM, continuing at TOP"));
 
-EXTERN char e_lock_unlock[]	INIT(= N_("E940: Cannot lock or unlock variable %s"));
-#endif
-
-EXTERN char e_chan_or_job_req[]	INIT(= N_("E706: Channel or Job required"));
-EXTERN char e_jobreq[]		INIT(= N_("E693: Job required"));
-
-EXTERN char top_bot_msg[] INIT(= N_("search hit TOP, continuing at BOTTOM"));
-EXTERN char bot_top_msg[] INIT(= N_("search hit BOTTOM, continuing at TOP"));
-
-EXTERN char line_msg[]		INIT(= N_(" line "));
+EXTERN char line_msg[]	    INIT(= N_(" line "));
 
 #ifdef FEAT_CRYPT
-EXTERN char need_key_msg[] INIT(= N_("Need encryption key for \"%s\""));
+EXTERN char need_key_msg[]  INIT(= N_("Need encryption key for \"%s\""));
 #endif
 
 /*
diff --git a/src/list.c b/src/list.c
index fe8c082..743ccf5 100644
--- a/src/list.c
+++ b/src/list.c
@@ -992,7 +992,7 @@
 
     if (argvars[0].v_type != VAR_LIST)
     {
-	semsg(_(e_listarg), "flatten()");
+	semsg(_(e_argument_of_str_must_be_list), "flatten()");
 	return;
     }
 
@@ -2202,7 +2202,7 @@
 
     if (argvars[0].v_type != VAR_LIST)
     {
-	semsg(_(e_listarg), sort ? "sort()" : "uniq()");
+	semsg(_(e_argument_of_str_must_be_list), sort ? "sort()" : "uniq()");
 	return;
     }
 
diff --git a/src/match.c b/src/match.c
index 9589d55..082c079 100644
--- a/src/match.c
+++ b/src/match.c
@@ -949,7 +949,7 @@
 	*win = find_win_by_nr_or_id(&di->di_tv);
 	if (*win == NULL)
 	{
-	    emsg(_(e_invalwindow));
+	    emsg(_(e_invalid_window_number));
 	    return FAIL;
 	}
     }
@@ -1259,7 +1259,7 @@
 
     if (argvars[1].v_type != VAR_LIST)
     {
-	semsg(_(e_listarg), "matchaddpos()");
+	semsg(_(e_argument_of_str_must_be_list), "matchaddpos()");
 	return;
     }
     l = argvars[1].vval.v_list;
diff --git a/src/menu.c b/src/menu.c
index 9ecba44..0583c10 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -959,7 +959,7 @@
 	    else if (*name != NUL)
 	    {
 		if (!silent)
-		    emsg(_(e_menuothermode));
+		    emsg(_(e_menu_only_exists_in_another_mode));
 		return FAIL;
 	    }
 
@@ -1133,7 +1133,7 @@
 		}
 		else if ((menu->modes & modes) == 0x0)
 		{
-		    emsg(_(e_menuothermode));
+		    emsg(_(e_menu_only_exists_in_another_mode));
 		    vim_free(path_name);
 		    return FAIL;
 		}
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 86a9cbb..cf5558b 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -1476,7 +1476,7 @@
     // pum_size being zero.
     if (pum_size <= 0)
     {
-	emsg(e_menuothermode);
+	emsg(e_menu_only_exists_in_another_mode);
 	return;
     }
 
diff --git a/src/search.c b/src/search.c
index 35a4a3a..c3597e6 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4807,7 +4807,8 @@
     // validate and get the arguments
     if (argvars[0].v_type != VAR_LIST || argvars[0].vval.v_list == NULL)
     {
-	semsg(_(e_listarg), retmatchpos ? "matchfuzzypos()" : "matchfuzzy()");
+	semsg(_(e_argument_of_str_must_be_list),
+			     retmatchpos ? "matchfuzzypos()" : "matchfuzzy()");
 	return;
     }
     if (argvars[1].v_type != VAR_STRING
diff --git a/src/version.c b/src/version.c
index 86c7a47..f98cf43 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3972,
+/**/
     3971,
 /**/
     3970,
diff --git a/src/vim9cmds.c b/src/vim9cmds.c
index 250c265..5a86a94 100644
--- a/src/vim9cmds.c
+++ b/src/vim9cmds.c
@@ -796,7 +796,7 @@
 	if (*p == ':' && wp != p)
 	    semsg(_(e_no_white_space_allowed_before_colon_str), p);
 	else
-	    emsg(_(e_missing_in));
+	    emsg(_(e_missing_in_after_for));
 	return NULL;
     }
     wp = p + 2;
@@ -1150,7 +1150,7 @@
     {
 	if (scope == NULL)
 	{
-	    emsg(_(e_continue));
+	    emsg(_(e_continue_without_while_or_for));
 	    return NULL;
 	}
 	if (scope->se_type == FOR_SCOPE)
@@ -1192,7 +1192,7 @@
     {
 	if (scope == NULL)
 	{
-	    emsg(_(e_break));
+	    emsg(_(e_break_without_while_or_for));
 	    return NULL;
 	}
 	if (scope->se_type == FOR_SCOPE || scope->se_type == WHILE_SCOPE)
diff --git a/src/vim9expr.c b/src/vim9expr.c
index ff106d1..0c3f3e5 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -1659,7 +1659,7 @@
 		if (**arg != '(')
 		{
 		    if (*skipwhite(*arg) == '(')
-			emsg(_(e_nowhitespace));
+			emsg(_(e_no_white_space_allowed_before_parenthesis));
 		    else
 			semsg(_(e_missing_parenthesis_str), *arg);
 		    return FAIL;
