patch 8.1.0743: giving error messages is not flexible
Problem: Giving error messages is not flexible.
Solution: Add semsg(). Change argument from "char_u *" to "char *", also
for msg() and get rid of most MSG macros. (Ozaki Kiichi, closes
#3302) Also make emsg() accept a "char *" argument. Get rid of
an enormous number of type casts.
diff --git a/src/terminal.c b/src/terminal.c
index 9fb7fb9..dbb8f2c 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -377,7 +377,7 @@
|| (!(opt->jo_set & JO_OUT_IO) && (opt->jo_set & JO_OUT_BUF))
|| (!(opt->jo_set & JO_ERR_IO) && (opt->jo_set & JO_ERR_BUF)))
{
- EMSG(_(e_invarg));
+ emsg(_(e_invarg));
return NULL;
}
@@ -719,7 +719,7 @@
{
if (*p)
*p = NUL;
- EMSG2(_("E181: Invalid attribute: %s"), cmd);
+ semsg(_("E181: Invalid attribute: %s"), cmd);
goto theend;
}
cmd = skipwhite(p);
@@ -3487,7 +3487,7 @@
&& (var->di_tv.v_type != VAR_LIST
|| var->di_tv.vval.v_list == NULL
|| set_ansi_colors_list(vterm, var->di_tv.vval.v_list) == FAIL))
- EMSG2(_(e_invarg2), "g:terminal_ansi_colors");
+ semsg(_(e_invarg2), "g:terminal_ansi_colors");
}
#endif
@@ -3914,7 +3914,7 @@
term = buf->b_term;
if (term->tl_vterm == NULL)
{
- EMSG(_("E958: Job already finished"));
+ emsg(_("E958: Job already finished"));
return;
}
@@ -3924,7 +3924,7 @@
if (argvars[2].v_type != VAR_DICT)
{
- EMSG(_(e_dictreq));
+ emsg(_(e_dictreq));
return;
}
d = argvars[2].vval.v_dict;
@@ -3940,13 +3940,13 @@
return;
if (mch_stat((char *)fname, &st) >= 0)
{
- EMSG2(_("E953: File exists: %s"), fname);
+ semsg(_("E953: File exists: %s"), fname);
return;
}
if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL)
{
- EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname);
+ semsg(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname);
return;
}
@@ -4389,13 +4389,13 @@
fname2 = tv_get_string_buf_chk(&argvars[1], buf2);
if (fname1 == NULL || (do_diff && fname2 == NULL))
{
- EMSG(_(e_invarg));
+ emsg(_(e_invarg));
return;
}
fd1 = mch_fopen((char *)fname1, READBIN);
if (fd1 == NULL)
{
- EMSG2(_(e_notread), fname1);
+ semsg(_(e_notread), fname1);
return;
}
if (do_diff)
@@ -4404,7 +4404,7 @@
if (fd2 == NULL)
{
fclose(fd1);
- EMSG2(_(e_notread), fname2);
+ semsg(_(e_notread), fname2);
return;
}
}
@@ -4922,7 +4922,7 @@
if (buf == NULL)
{
- EMSG(_("E955: Not a terminal buffer"));
+ emsg(_("E955: Not a terminal buffer"));
return;
}
if (buf->b_term->tl_vterm == NULL)
@@ -5007,7 +5007,7 @@
p = buf->b_term->tl_job->jv_tty_in;
break;
default:
- EMSG2(_(e_invarg2), tv_get_string(&argvars[1]));
+ semsg(_(e_invarg2), tv_get_string(&argvars[1]));
return;
}
if (p != NULL)
@@ -5236,12 +5236,12 @@
if (argvars[1].v_type != VAR_LIST || argvars[1].vval.v_list == NULL)
{
- EMSG(_(e_listreq));
+ emsg(_(e_listreq));
return;
}
if (set_ansi_colors_list(term->tl_vterm, argvars[1].vval.v_list) == FAIL)
- EMSG(_(e_invarg));
+ emsg(_(e_invarg));
}
#endif
@@ -5485,7 +5485,7 @@
if (!hWinPtyDLL)
{
if (verbose)
- EMSG2(_(e_loadlib), *p_winptydll != NUL ? p_winptydll
+ semsg(_(e_loadlib), *p_winptydll != NUL ? p_winptydll
: (char_u *)WINPTY_DLL);
return FAIL;
}
@@ -5496,7 +5496,7 @@
winpty_entry[i].name)) == NULL)
{
if (verbose)
- EMSG2(_(e_loadfunc), winpty_entry[i].name);
+ semsg(_(e_loadfunc), winpty_entry[i].name);
return FAIL;
}
}
@@ -5548,7 +5548,7 @@
}
if (cmd == NULL || *cmd == NUL)
{
- EMSG(_(e_invarg));
+ emsg(_(e_invarg));
goto failed;
}
@@ -5680,7 +5680,7 @@
ch_log(channel, "Opening output file %s", fname);
term->tl_out_fd = mch_fopen((char *)fname, WRITEBIN);
if (term->tl_out_fd == NULL)
- EMSG2(_(e_notopen), fname);
+ semsg(_(e_notopen), fname);
}
return OK;
@@ -5713,7 +5713,7 @@
char_u *msg = utf16_to_enc(
(short_u *)winpty_error_msg(winpty_err), NULL);
- EMSG(msg);
+ emsg(msg);
winpty_error_free(winpty_err);
}
return FAIL;