patch 8.2.3750: error messages are everywhere

Problem:    Error messages are everywhere.
Solution:   Move more error messages to errors.h and adjust the names.
diff --git a/src/blob.c b/src/blob.c
index 2833c1a..0458571 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -209,7 +209,7 @@
     if (fwrite(blob->bv_ga.ga_data, 1, blob->bv_ga.ga_len, fd)
 						  < (size_t)blob->bv_ga.ga_len)
     {
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 	return FAIL;
     }
     return OK;
diff --git a/src/buffer.c b/src/buffer.c
index f86ecdd..65d1ea0 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -193,7 +193,7 @@
 	// This is OK, since there are no changes to lose.
 	if (curbuf == NULL)
 	{
-	    emsg(_("E82: Cannot allocate any buffer, exiting..."));
+	    emsg(_(e_cannot_allocate_any_buffer_exiting));
 
 	    // Don't try to do any saving, with "curbuf" NULL almost nothing
 	    // will work.
@@ -201,7 +201,7 @@
 	    getout(2);
 	}
 
-	emsg(_("E83: Cannot allocate buffer, using other one..."));
+	emsg(_(e_cannot_allocate_buffer_using_other_one));
 	enter_buffer(curbuf);
 #ifdef FEAT_SYN_HL
 	if (old_tw != curbuf->b_p_tw)
@@ -1182,7 +1182,7 @@
 
     if (action == DOBUF_UNLOAD)
     {
-	emsg(_("E90: Cannot unload last buffer"));
+	emsg(_(e_cannot_unload_last_buffer));
 	return FAIL;
     }
 
@@ -1255,7 +1255,7 @@
 	}
 	if (!bufIsChanged(buf))
 	{
-	    emsg(_("E84: No modified buffer found"));
+	    emsg(_(e_no_modified_buffer_found));
 	    return FAIL;
 	}
     }
@@ -1294,7 +1294,7 @@
 	    if (bp == buf)
 	    {
 		// back where we started, didn't find anything.
-		emsg(_("E85: There is no listed buffer"));
+		emsg(_(e_there_is_no_listed_buffer));
 		return FAIL;
 	    }
 	}
@@ -1306,12 +1306,12 @@
 	{
 	    // don't warn when deleting
 	    if (!unload)
-		semsg(_(e_nobufnr), count);
+		semsg(_(e_buffer_nr_does_not_exist), count);
 	}
 	else if (dir == FORWARD)
-	    emsg(_("E87: Cannot go beyond last buffer"));
+	    emsg(_(e_cannot_go_beyond_last_buffer));
 	else
-	    emsg(_("E88: Cannot go before first buffer"));
+	    emsg(_(e_cannot_go_before_first_buffer));
 	return FAIL;
     }
 #ifdef FEAT_PROP_POPUP
@@ -1364,7 +1364,7 @@
 	    else
 #endif
 	    {
-		semsg(_("E89: No write since last change for buffer %d (add ! to override)"),
+		semsg(_(e_no_write_since_last_change_for_buffer_nr_add_bang_to_override),
 								 buf->b_fnum);
 		return FAIL;
 	    }
diff --git a/src/channel.c b/src/channel.c
index 7514d63..6343124 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1210,7 +1210,8 @@
 	{
 	    buf = buflist_findnr(opt->jo_io_buf[PART_OUT]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt->jo_io_buf[PART_OUT]);
+		semsg(_(e_buffer_nr_does_not_exist),
+					       (long)opt->jo_io_buf[PART_OUT]);
 	}
 	else
 	{
@@ -1257,7 +1258,8 @@
 	{
 	    buf = buflist_findnr(opt->jo_io_buf[PART_ERR]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt->jo_io_buf[PART_ERR]);
+		semsg(_(e_buffer_nr_does_not_exist),
+					       (long)opt->jo_io_buf[PART_ERR]);
 	}
 	else
 	{
diff --git a/src/errors.h b/src/errors.h
index 49df357..a494de3 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -168,6 +168,34 @@
 	INIT(= N_("E76: Too many ["));
 EXTERN char e_too_many_file_names[]
 	INIT(= N_("E77: Too many file names"));
+EXTERN char e_unknown_mark[]
+	INIT(= N_("E78: Unknown mark"));
+EXTERN char e_cannot_expand_wildcards[]
+	INIT(= N_("E79: Cannot expand wildcards"));
+EXTERN char e_error_while_writing[]
+	INIT(= N_("E80: Error while writing"));
+#ifdef FEAT_EVAL
+EXTERN char e_using_sid_not_in_script_context[]
+	INIT(= N_("E81: Using <SID> not in a script context"));
+#endif
+EXTERN char e_cannot_allocate_any_buffer_exiting[]
+	INIT(= N_("E82: Cannot allocate any buffer, exiting..."));
+EXTERN char e_cannot_allocate_buffer_using_other_one[]
+	INIT(= N_("E83: Cannot allocate buffer, using other one..."));
+EXTERN char e_no_modified_buffer_found[]
+	INIT(= N_("E84: No modified buffer found"));
+EXTERN char e_there_is_no_listed_buffer[]
+	INIT(= N_("E85: There is no listed buffer"));
+EXTERN char e_buffer_nr_does_not_exist[]
+	INIT(= N_("E86: Buffer %ld does not exist"));
+EXTERN char e_cannot_go_beyond_last_buffer[]
+	INIT(= N_("E87: Cannot go beyond last buffer"));
+EXTERN char e_cannot_go_before_first_buffer[]
+	INIT(= N_("E88: Cannot go before first buffer"));
+EXTERN char e_no_write_since_last_change_for_buffer_nr_add_bang_to_override[]
+	INIT(= N_("E89: No write since last change for buffer %d (add ! to override)"));
+EXTERN char e_cannot_unload_last_buffer[]
+	INIT(= N_("E90: Cannot unload last buffer"));
 
 #ifdef FEAT_EVAL
 EXTERN char e_undefined_variable_str[]
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 1fc538b..4d739f9 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -9167,7 +9167,7 @@
 	case SPEC_SID:
 		if (current_sctx.sc_sid <= 0)
 		{
-		    *errormsg = _(e_usingsid);
+		    *errormsg = _(e_using_sid_not_in_script_context);
 		    return NULL;
 		}
 		sprintf((char *)strbuf, "<SNR>%d_", current_sctx.sc_sid);
diff --git a/src/globals.h b/src/globals.h
index 143aaa0..5f8167a 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1717,14 +1717,10 @@
 #endif
 EXTERN char e_trailing[]	INIT(= N_("E488: Trailing characters"));
 EXTERN char e_trailing_arg[]	INIT(= N_("E488: Trailing characters: %s"));
-EXTERN char e_umark[]		INIT(= N_("E78: Unknown mark"));
-EXTERN char e_wildexpand[]	INIT(= N_("E79: Cannot expand wildcards"));
 EXTERN char e_winheight[]	INIT(= N_("E591: 'winheight' cannot be smaller than 'winminheight'"));
 EXTERN char e_winwidth[]	INIT(= N_("E592: 'winwidth' cannot be smaller than 'winminwidth'"));
-EXTERN char e_write[]		INIT(= N_("E80: Error while writing"));
 EXTERN char e_zerocount[]	INIT(= N_("E939: Positive count required"));
 #ifdef FEAT_EVAL
-EXTERN char e_usingsid[]	INIT(= N_("E81: Using <SID> not in a script context"));
 EXTERN char e_missing_paren[]	INIT(= N_("E107: Missing parentheses: %s"));
 EXTERN char e_missing_close[]	INIT(= N_("E110: Missing ')'"));
 EXTERN char e_missing_dict_colon[] INIT(= N_("E720: Missing colon in Dictionary: %s"));
@@ -1741,7 +1737,6 @@
 #endif
 EXTERN char e_maxmempat[]	INIT(= N_("E363: pattern uses more memory than 'maxmempattern'"));
 EXTERN char e_emptybuf[]	INIT(= N_("E749: empty buffer"));
-EXTERN char e_nobufnr[]	INIT(= N_("E86: Buffer %ld does not exist"));
 
 EXTERN char e_invalpat[]	INIT(= N_("E682: Invalid search pattern or delimiter"));
 EXTERN char e_bufloaded[]	INIT(= N_("E139: File is loaded in another buffer"));
diff --git a/src/job.c b/src/job.c
index a2e184b..ebe902f 100644
--- a/src/job.c
+++ b/src/job.c
@@ -225,7 +225,8 @@
 		}
 		if (buflist_findnr(opt->jo_io_buf[part]) == NULL)
 		{
-		    semsg(_(e_nobufnr), (long)opt->jo_io_buf[part]);
+		    semsg(_(e_buffer_nr_does_not_exist),
+						   (long)opt->jo_io_buf[part]);
 		    return FAIL;
 		}
 	    }
@@ -475,7 +476,7 @@
 		opt->jo_bufnr_buf = buflist_findnr(nr);
 		if (opt->jo_bufnr_buf == NULL)
 		{
-		    semsg(_(e_nobufnr), (long)nr);
+		    semsg(_(e_buffer_nr_does_not_exist), (long)nr);
 		    return FAIL;
 		}
 		if (opt->jo_bufnr_buf->b_nwindows == 0
@@ -1332,7 +1333,8 @@
 	{
 	    buf = buflist_findnr(opt.jo_io_buf[PART_IN]);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)opt.jo_io_buf[PART_IN]);
+		semsg(_(e_buffer_nr_does_not_exist),
+						 (long)opt.jo_io_buf[PART_IN]);
 	}
 	else if (!(opt.jo_set & JO_IN_NAME))
 	{
diff --git a/src/list.c b/src/list.c
index 16e5983..d673447 100644
--- a/src/list.c
+++ b/src/list.c
@@ -1603,7 +1603,7 @@
 	    }
 	if (ret == FAIL)
 	{
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 	    break;
 	}
     }
diff --git a/src/mark.c b/src/mark.c
index c708e07..099214e 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -578,7 +578,7 @@
 {
     if (pos == NULL)
     {
-	emsg(_(e_umark));
+	emsg(_(e_unknown_mark));
 	return FAIL;
     }
     if (pos->lnum <= 0)
diff --git a/src/misc1.c b/src/misc1.c
index e780867..ad26ab3 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2403,7 +2403,7 @@
 	    buf = buflist_findnr(argvars[1].vval.v_number);
 	    if (buf == NULL)
 	    {
-		semsg(_(e_nobufnr), argvars[1].vval.v_number);
+		semsg(_(e_buffer_nr_does_not_exist), argvars[1].vval.v_number);
 		fclose(fd);
 		goto errret;
 	    }
diff --git a/src/os_unix.c b/src/os_unix.c
index ef5533c..f93bc95 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -6797,7 +6797,7 @@
 	    if (!(flags & EW_SILENT))
 #endif
 	    {
-		msg(_(e_wildexpand));
+		msg(_(e_cannot_expand_wildcards));
 		msg_start();		// don't overwrite this message
 	    }
 	}
@@ -6817,7 +6817,7 @@
 	// Something went wrong, perhaps a file name with a special char.
 	if (!(flags & EW_SILENT))
 	{
-	    msg(_(e_wildexpand));
+	    msg(_(e_cannot_expand_wildcards));
 	    msg_start();		// don't overwrite this message
 	}
 	vim_free(tempname);
diff --git a/src/popupwin.c b/src/popupwin.c
index 4b8b741..7641827 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -1877,7 +1877,7 @@
 	    buf = buflist_findnr(argvars[0].vval.v_number);
 	    if (buf == NULL)
 	    {
-		semsg(_(e_nobufnr), argvars[0].vval.v_number);
+		semsg(_(e_buffer_nr_does_not_exist), argvars[0].vval.v_number);
 		return NULL;
 	    }
 #ifdef FEAT_TERMINAL
diff --git a/src/register.c b/src/register.c
index d225d77..6a4bc2c 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2836,7 +2836,7 @@
 
 	    buf = buflist_findnr(num);
 	    if (buf == NULL)
-		semsg(_(e_nobufnr), (long)num);
+		semsg(_(e_buffer_nr_does_not_exist), (long)num);
 	}
 	else
 	    buf = buflist_findnr(buflist_findpat(str, str + STRLEN(str),
diff --git a/src/session.c b/src/session.c
index d2b360d..e64697f 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1331,7 +1331,7 @@
 	failed |= fclose(fd);
 
 	if (failed)
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 #if defined(FEAT_SESSION)
 	else if (eap->cmdidx == CMD_mksession)
 	{
diff --git a/src/spellfile.c b/src/spellfile.c
index 0d7b194..6d6c248 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -5259,7 +5259,7 @@
     if (fwv != (size_t)1)
 	retval = FAIL;
     if (retval == FAIL)
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 
     return retval;
 }
@@ -5404,7 +5404,7 @@
 	    if (fd != NULL)
 		if (putc(np->wn_byte, fd) == EOF) // <byte> or <xbyte>
 		{
-		    emsg(_(e_write));
+		    emsg(_(e_error_while_writing));
 		    return 0;
 		}
 	}
@@ -5815,7 +5815,7 @@
      */
     if (fwrite(VIMSUGMAGIC, VIMSUGMAGICL, (size_t)1, fd) != 1) // <fileID>
     {
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 	goto theend;
     }
     putc(VIMSUGVERSION, fd);				// <versionnr>
@@ -5857,7 +5857,7 @@
 	len = (int)STRLEN(line) + 1;
 	if (fwrite(line, (size_t)len, (size_t)1, fd) == 0)
 	{
-	    emsg(_(e_write));
+	    emsg(_(e_error_while_writing));
 	    goto theend;
 	}
 	spin->si_memtot += len;
@@ -5865,7 +5865,7 @@
 
     // Write another byte to check for errors.
     if (putc(0, fd) == EOF)
-	emsg(_(e_write));
+	emsg(_(e_error_while_writing));
 
     vim_snprintf((char *)IObuff, IOSIZE,
 		 _("Estimated runtime memory use: %d bytes"), spin->si_memtot);
diff --git a/src/term.c b/src/term.c
index a8819a3..f74b18a 100644
--- a/src/term.c
+++ b/src/term.c
@@ -6021,7 +6021,7 @@
 	    if (STRNICMP(src, "<SID>", 5) == 0)
 	    {
 		if (current_sctx.sc_sid <= 0)
-		    emsg(_(e_usingsid));
+		    emsg(_(e_using_sid_not_in_script_context));
 		else
 		{
 		    src += 5;
diff --git a/src/userfunc.c b/src/userfunc.c
index 18af66c..7fc764e 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3763,7 +3763,7 @@
 	    // It's script-local, "s:" or "<SID>"
 	    if (current_sctx.sc_sid <= 0)
 	    {
-		emsg(_(e_usingsid));
+		emsg(_(e_using_sid_not_in_script_context));
 		goto theend;
 	    }
 	    sprintf((char *)sid_buf, "%ld_", (long)current_sctx.sc_sid);
diff --git a/src/version.c b/src/version.c
index 69a230d..d7d1b21 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3750,
+/**/
     3749,
 /**/
     3748,