patch 8.2.3977: error messages are spread out

Problem:    Error messages are spread out.
Solution:   Move more error messages to errors.h.
diff --git a/src/change.c b/src/change.c
index bc77fa2..9f1705f 100644
--- a/src/change.c
+++ b/src/change.c
@@ -1247,7 +1247,7 @@
     // If "count" is negative the caller must be doing something wrong.
     if (count < 1)
     {
-	siemsg("E292: Invalid count for del_bytes(): %ld", count);
+	siemsg(e_invalid_count_for_del_bytes_nr, count);
 	return FAIL;
     }
 
diff --git a/src/clientserver.c b/src/clientserver.c
index 2fefcc4..ca6a4eb 100644
--- a/src/clientserver.c
+++ b/src/clientserver.c
@@ -929,7 +929,7 @@
 		|| serverReadReply(X_DISPLAY, serverStrToWin(serverid),
 						       &r, FALSE, timeout) < 0)
 # endif
-	    emsg(_("E277: Unable to read a server reply"));
+	    emsg(_(e_unable_to_read_server_reply));
     }
 #endif
     rettv->v_type = VAR_STRING;
diff --git a/src/errors.h b/src/errors.h
index a8ad95e..2a5b85c 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -592,11 +592,117 @@
 EXTERN char e_no_matches_found_for_cscope_query_str_of_str[]
 	INIT(= N_("E259: no matches found for cscope query %s of %s"));
 #endif
-
+#ifdef FEAT_EVAL
+EXTERN char e_missing_name_after_method[]
+	INIT(= N_("E260: Missing name after ->"));
+#endif
+#ifdef FEAT_CSCOPE
+EXTERN char e_cscope_connection_str_not_founc[]
+	INIT(= N_("E261: cscope connection %s not found"));
+EXTERN char e_error_reading_cscope_connection_nr[]
+	INIT(= N_("E262: error reading cscope connection %d"));
+#endif
+#ifdef DYNAMIC_PYTHON
+EXTERN char e_sorry_this_command_is_disabled_python_library_could_not_be_found[]
+	INIT(= N_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
+#endif
+#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
+EXTERN char e_python_error_initialising_io_object[]
+	INIT(= N_("E264: Python: Error initialising I/O objects"));
+#endif
+#ifdef FEAT_RUBY
+EXTERN char e_dollar_must_be_an_instance_of_string[]
+	INIT(= N_("E265: $_ must be an instance of String"));
+#endif
+#ifdef DYNAMIC_RUBY
+EXTERN char e_sorry_this_command_is_disabled_the_ruby_library_could_not_be_loaded[]
+	INIT(= N_("E266: Sorry, this command is disabled, the Ruby library could not be loaded."));
+#endif
+#ifdef FEAT_RUBY
+EXTERN char e_unexpected_return[]
+	INIT(= N_("E267: unexpected return"));
+EXTERN char e_unexpected_next[]
+	INIT(= N_("E268: unexpected next"));
+EXTERN char e_unexpected_break[]
+	INIT(= N_("E269: unexpected break"));
+EXTERN char e_unexpected_redo[]
+	INIT(= N_("E270: unexpected redo"));
+EXTERN char e_retry_outside_of_rescue_clause[]
+	INIT(= N_("E271: retry outside of rescue clause"));
+EXTERN char e_unhandled_exception[]
+	INIT(= N_("E272: unhandled exception"));
+EXTERN char e_unknown_longjmp_status_nr[]
+	INIT(= N_("E273: unknown longjmp status %d"));
+#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_PROP_POPUP
+EXTERN char e_cannot_add_text_property_to_unloaded_buffer[]
+	INIT(= N_("E275: Cannot add text property to unloaded buffer"));
+#endif
+#ifdef FEAT_EVAL
+EXTERN char e_cannot_use_function_as_method_str[]
+	INIT(= N_("E276: Cannot use function as a method: %s"));
+#endif
+#ifdef FEAT_CLIENTSERVER
+EXTERN char e_unable_to_read_server_reply[]
+	INIT(= N_("E277: Unable to read a server reply"));
+#endif
+#ifdef FEAT_TERMINAL
+EXTERN char e_sorry_plusplusshell_not_supported_on_this_system[]
+	INIT(= N_("E279: Sorry, ++shell is not supported on this system"));
+#endif
+#ifdef FEAT_TCL
+EXTERN char e_tcl_fatal_error_reflist_corrupt_please_report_this[]
+	INIT(= N_("E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.org"));
+#endif
+// E281 unused
+EXTERN char e_cannot_read_from_str_2[]
+	INIT(= N_("E282: Cannot read from \"%s\""));
+EXTERN char e_no_marks_matching_str[]
+	INIT(= N_("E283: No marks matching \"%s\""));
+#ifdef FEAT_XIM
+EXTERN char e_cannot_set_ic_values[]
+	INIT(= N_("E284: Cannot set IC values"));
+# if defined(FEAT_GUI_X11)
+EXTERN char e_failed_to_create_input_context[]
+	INIT(= N_("E285: Failed to create input context"));
+# endif
+EXTERN char e_failed_to_open_input_method[]
+	INIT(= N_("E286: Failed to open input method"));
+EXTERN char e_warning_could_not_set_destroy_callback_to_im[]
+	INIT(= N_("E287: Warning: Could not set destroy callback to IM"));
+EXTERN char e_input_method_doesnt_support_any_style[]
+	INIT(= N_("E288: input method doesn't support any style"));
+EXTERN char e_input_method_doesnt_support_my_preedit_type[]
+	INIT(= N_("E289: input method doesn't support my preedit type"));
+#endif
+#ifdef FEAT_SEARCH_EXTRA
+EXTERN char e_list_or_number_required[]
+	INIT(= N_("E290: List or number required"));
+#endif
+// E291 unused
+EXTERN char e_invalid_count_for_del_bytes_nr[]
+	INIT(= N_("E292: Invalid count for del_bytes(): %ld"));
+EXTERN char e_block_was_not_locked[]
+	INIT(= N_("E293: block was not locked"));
+EXTERN char e_seek_error_in_swap_file_read[]
+	INIT(= N_("E294: Seek error in swap file read"));
+EXTERN char e_read_error_in_swap_file[]
+	INIT(= N_("E295: Read error in swap file"));
+EXTERN char e_seek_error_in_swap_file_write[]
+	INIT(= N_("E296: Seek error in swap file write"));
+EXTERN char e_write_error_in_swap_file[]
+	INIT(= N_("E297: Write error in swap file"));
+EXTERN char e_didnt_get_block_nr_zero[]
+	INIT(= N_("E298: Didn't get block nr 0?"));
+EXTERN char e_didnt_get_block_nr_one[]
+	INIT(= N_("E298: Didn't get block nr 1?"));
+EXTERN char e_didnt_get_block_nr_two[]
+	INIT(= N_("E298: Didn't get block nr 2?"));
+// E299 unused
 
 #ifdef FEAT_MENU
 EXTERN char e_menu_only_exists_in_another_mode[]
diff --git a/src/eval.c b/src/eval.c
index f228067..99bc5a5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3936,7 +3936,7 @@
     if (len <= 0)
     {
 	if (verbose)
-	    emsg(_("E260: Missing name after ->"));
+	    emsg(_(e_missing_name_after_method));
 	ret = FAIL;
     }
     else
diff --git a/src/gui_xim.c b/src/gui_xim.c
index 4bd1a2e..28d354c 100644
--- a/src/gui_xim.c
+++ b/src/gui_xim.c
@@ -1324,15 +1324,11 @@
 					XNLineSpace, line_space,
 					NULL);
 	if (XSetICValues(xic, XNPreeditAttributes, attr_list, NULL))
-	    emsg(_("E284: Cannot set IC values"));
+	    emsg(_(e_cannot_set_ic_values));
 	XFree(attr_list);
     }
 }
 
-#  if defined(FEAT_GUI_X11)
-static char e_xim[] = N_("E285: Failed to create input context");
-#  endif
-
 #  if defined(FEAT_GUI_X11) || defined(PROTO)
 #   if defined(XtSpecificationRelease) && XtSpecificationRelease >= 6 && !defined(SUN_SYSTEM)
 #    define USE_X11R6_XIM
@@ -1483,7 +1479,7 @@
 	if (p_verbose > 0)
 	{
 	    verbose_enter();
-	    emsg(_("E286: Failed to open input method"));
+	    emsg(_(e_failed_to_open_input_method));
 	    verbose_leave();
 	}
 	return FALSE;
@@ -1496,13 +1492,13 @@
 	destroy_cb.callback = xim_destroy_cb;
 	destroy_cb.client_data = NULL;
 	if (XSetIMValues(xim, XNDestroyCallback, &destroy_cb, NULL))
-	    emsg(_("E287: Warning: Could not set destroy callback to IM"));
+	    emsg(_(e_warning_could_not_set_destroy_callback_to_im));
     }
 #  endif
 
     if (XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL) || !xim_styles)
     {
-	emsg(_("E288: input method doesn't support any style"));
+	emsg(_(e_input_method_doesnt_support_any_style));
 	XCloseIM(xim);
 	return FALSE;
     }
@@ -1561,7 +1557,7 @@
 	if (p_verbose > 0)
 	{
 	    verbose_enter();
-	    emsg(_("E289: input method doesn't support my preedit type"));
+	    emsg(_(e_input_method_doesnt_support_my_preedit_type));
 	    verbose_leave();
 	}
 	XCloseIM(xim);
@@ -1625,7 +1621,7 @@
     else
     {
 	if (!is_not_a_term())
-	    emsg(_(e_xim));
+	    emsg(_(e_failed_to_create_input_context));
 	XCloseIM(xim);
 	return FALSE;
     }
diff --git a/src/if_cscope.c b/src/if_cscope.c
index 9153831..dbaa960 100644
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -636,7 +636,7 @@
 cs_reading_emsg(
     int idx)	// connection index
 {
-    semsg(_("E262: error reading cscope connection %d"), idx);
+    semsg(_(e_error_reading_cscope_connection_nr), idx);
 }
 
 #define	CSREAD_BUFSIZE	2048
@@ -1497,7 +1497,7 @@
     if ((i != -1) && (i >= csinfo_size || i < -1 || csinfo[i].fname == NULL))
     {
 	if (p_csverbose)
-	    (void)semsg(_("E261: cscope connection %s not found"), stok);
+	    (void)semsg(_(e_cscope_connection_str_not_founc), stok);
     }
     else
     {
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 6d71ac1..b8716fa 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -538,7 +538,7 @@
 
     if (PyErr_Occurred())
     {
-	emsg(_("E264: Python: Error initialising I/O objects"));
+	emsg(_(e_python_error_initialising_io_object));
 	return -1;
     }
 
diff --git a/src/if_python.c b/src/if_python.c
index 22c2f0c..7cc9aa7 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -919,7 +919,7 @@
 #ifdef DYNAMIC_PYTHON
 	if (!python_enabled(TRUE))
 	{
-	    emsg(_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
+	    emsg(_(e_sorry_this_command_is_disabled_python_library_could_not_be_found));
 	    goto fail;
 	}
 #endif
diff --git a/src/if_python3.c b/src/if_python3.c
index 938ab8d..3bf387a 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -1071,7 +1071,7 @@
 #ifdef DYNAMIC_PYTHON3
 	if (!python3_enabled(TRUE))
 	{
-	    emsg(_("E263: Sorry, this command is disabled, the Python library could not be loaded."));
+	    emsg(_(e_sorry_this_command_is_disabled_python_library_could_not_be_found));
 	    goto fail;
 	}
 #endif
diff --git a/src/if_ruby.c b/src/if_ruby.c
index ef332ee..fcbbf33 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -978,7 +978,7 @@
 	    {
 		if (TYPE(line) != T_STRING)
 		{
-		    emsg(_("E265: $_ must be an instance of String"));
+		    emsg(_(e_dollar_must_be_an_instance_of_string));
 		    return;
 		}
 		ml_replace(i, (char_u *) StringValuePtr(line), 1);
@@ -1077,7 +1077,7 @@
 	}
 	else
 	{
-	    emsg(_("E266: Sorry, this command is disabled, the Ruby library could not be loaded."));
+	    emsg(_(e_sorry_this_command_is_disabled_the_ruby_library_could_not_be_loaded));
 	    return 0;
 	}
 #endif
@@ -1112,19 +1112,19 @@
     switch (state)
     {
 	case TAG_RETURN:
-	    emsg(_("E267: unexpected return"));
+	    emsg(_(e_unexpected_return));
 	    break;
 	case TAG_NEXT:
-	    emsg(_("E268: unexpected next"));
+	    emsg(_(e_unexpected_next));
 	    break;
 	case TAG_BREAK:
-	    emsg(_("E269: unexpected break"));
+	    emsg(_(e_unexpected_break));
 	    break;
 	case TAG_REDO:
-	    emsg(_("E270: unexpected redo"));
+	    emsg(_(e_unexpected_redo));
 	    break;
 	case TAG_RETRY:
-	    emsg(_("E271: retry outside of rescue clause"));
+	    emsg(_(e_retry_outside_of_rescue_clause));
 	    break;
 	case TAG_RAISE:
 	case TAG_FATAL:
@@ -1137,7 +1137,7 @@
 	    einfo = rb_obj_as_string(error);
 	    if (eclass == rb_eRuntimeError && RSTRING_LEN(einfo) == 0)
 	    {
-		emsg(_("E272: unhandled exception"));
+		emsg(_(e_unhandled_exception));
 	    }
 	    else
 	    {
@@ -1164,7 +1164,7 @@
 #endif
 	    break;
 	default:
-	    vim_snprintf(buff, BUFSIZ, _("E273: unknown longjmp status %d"), state);
+	    vim_snprintf(buff, BUFSIZ, _(e_unknown_longjmp_status_nr), state);
 	    emsg(buff);
 	    break;
     }
diff --git a/src/if_tcl.c b/src/if_tcl.c
index cc48c8e..65f25c1 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -1541,7 +1541,7 @@
 	reflist = reflist->next;
     }
     // This should never happen.  Famous last word?
-    iemsg(_("E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim.org"));
+    iemsg(_(e_tcl_fatal_error_reflist_corrupt_please_report_this));
     Tcl_SetResult(interp, _("cannot register callback command: buffer/window reference not found"), TCL_STATIC);
     return TCL_ERROR;
 }
diff --git a/src/main.c b/src/main.c
index 01dd504..dc82a8a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3141,7 +3141,7 @@
 	else
 	{
 	    if (do_source(parmp->use_vimrc, FALSE, DOSO_NONE, NULL) != OK)
-		semsg(_("E282: Cannot read from \"%s\""), parmp->use_vimrc);
+		semsg(_(e_cannot_read_from_str_2), parmp->use_vimrc);
 	}
     }
     else if (!silent_mode)
diff --git a/src/mark.c b/src/mark.c
index dc9bece..771eb1b 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -732,7 +732,7 @@
 	    if (arg == NULL)
 		msg(_("No marks set"));
 	    else
-		semsg(_("E283: No marks matching \"%s\""), arg);
+		semsg(_(e_no_marks_matching_str), arg);
 	}
     }
     // don't output anything if 'q' typed at --more-- prompt
diff --git a/src/match.c b/src/match.c
index 082c079..8b175f3 100644
--- a/src/match.c
+++ b/src/match.c
@@ -165,7 +165,7 @@
 	    }
 	    else
 	    {
-		emsg(_("E290: List or number required"));
+		emsg(_(e_list_or_number_required));
 		goto fail;
 	    }
 	    if (toplnum == 0 || lnum < toplnum)
diff --git a/src/memfile.c b/src/memfile.c
index fbffdbe..4e8decb 100644
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -477,7 +477,7 @@
     flags = hp->bh_flags;
 
     if ((flags & BH_LOCKED) == 0)
-	iemsg(_("E293: block was not locked"));
+	iemsg(_(e_block_was_not_locked));
     flags &= ~BH_LOCKED;
     if (dirty)
     {
@@ -945,12 +945,12 @@
     size = page_size * hp->bh_page_count;
     if (vim_lseek(mfp->mf_fd, offset, SEEK_SET) != offset)
     {
-	PERROR(_("E294: Seek error in swap file read"));
+	PERROR(_(e_seek_error_in_swap_file_read));
 	return FAIL;
     }
     if ((unsigned)read_eintr(mfp->mf_fd, hp->bh_data, size) != size)
     {
-	PERROR(_("E295: Read error in swap file"));
+	PERROR(_(e_read_error_in_swap_file));
 	return FAIL;
     }
 
@@ -1021,7 +1021,7 @@
 	    {
 		if (vim_lseek(mfp->mf_fd, offset, SEEK_SET) != offset)
 		{
-		    PERROR(_("E296: Seek error in swap file write"));
+		    PERROR(_(e_seek_error_in_swap_file_write));
 		    return FAIL;
 		}
 		if (mf_write_block(mfp,
@@ -1046,7 +1046,7 @@
 		// successful write or when hitting a key. We keep on trying,
 		// in case some space becomes available.
 		if (!did_swapwrite_msg)
-		    emsg(_("E297: Write error in swap file"));
+		    emsg(_(e_write_error_in_swap_file));
 		did_swapwrite_msg = TRUE;
 		return FAIL;
 	    }
diff --git a/src/memline.c b/src/memline.c
index a072746..a4485c8 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -327,7 +327,7 @@
 	goto error;
     if (hp->bh_bnum != 0)
     {
-	iemsg(_("E298: Didn't get block nr 0?"));
+	iemsg(_(e_didnt_get_block_nr_zero));
 	goto error;
     }
     b0p = (ZERO_BL *)(hp->bh_data);
@@ -377,7 +377,7 @@
 	goto error;
     if (hp->bh_bnum != 1)
     {
-	iemsg(_("E298: Didn't get block nr 1?"));
+	iemsg(_(e_didnt_get_block_nr_one));
 	goto error;
     }
     pp = (PTR_BL *)(hp->bh_data);
@@ -395,7 +395,7 @@
 	goto error;
     if (hp->bh_bnum != 2)
     {
-	iemsg(_("E298: Didn't get block nr 2?"));
+	iemsg(_(e_didnt_get_block_nr_two));
 	goto error;
     }
 
diff --git a/src/terminal.c b/src/terminal.c
index ca5b835..d974c11 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -935,7 +935,7 @@
 	vim_snprintf((char *)newcmd, cmdlen, "%s %s %s", p_sh, p_shcf, cmd);
 	cmd = newcmd;
 # else
-	emsg(_("E279: Sorry, ++shell is not supported on this system"));
+	emsg(_(e_sorry_plusplusshell_not_supported_on_this_system));
 	goto theend;
 # endif
 #endif
diff --git a/src/textprop.c b/src/textprop.c
index 4c17a4a..c28d4e4 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -222,7 +222,7 @@
 
     if (buf->b_ml.ml_mfp == NULL)
     {
-	emsg(_("E275: Cannot add text property to unloaded buffer"));
+	emsg(_(e_cannot_add_text_property_to_unloaded_buffer));
 	return FAIL;
     }
 
diff --git a/src/userfunc.c b/src/userfunc.c
index eb2ee1c..dac7df8 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3268,7 +3268,7 @@
 		break;
 	case FCERR_NOTMETHOD:
 		emsg_funcname(
-			N_("E276: Cannot use function as a method: %s"), name);
+			N_(e_cannot_use_function_as_method_str), name);
 		break;
 	case FCERR_DELETED:
 		emsg_funcname(e_function_was_deleted_str, name);
diff --git a/src/version.c b/src/version.c
index 44af312..0e341f9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3977,
+/**/
     3976,
 /**/
     3975,