summaryrefslogtreecommitdiff
path: root/src/quickfix.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-01-13 23:38:42 +0100
committerBram Moolenaar <Bram@vim.org>2019-01-13 23:38:42 +0100
commitf9e3e09fdc93be9f0d47afbc6c7df1188c2a5a0d (patch)
treea6b07005c19279a4f5d01be14f14861c2657fa95 /src/quickfix.c
parent05500ece6282407f9f7227aaf564e24147326863 (diff)
downloadvim-git-f9e3e09fdc93be9f0d47afbc6c7df1188c2a5a0d.tar.gz
patch 8.1.0743: giving error messages is not flexiblev8.1.0743
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.
Diffstat (limited to 'src/quickfix.c')
-rw-r--r--src/quickfix.c124
1 files changed, 51 insertions, 73 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index 899b63689..c533a28d3 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -239,17 +239,14 @@ efmpat_to_regpat(
char_u *regpat,
efm_T *efminfo,
int idx,
- int round,
- char_u *errmsg)
+ int round)
{
char_u *srcptr;
if (efminfo->addr[idx])
{
// Each errorformat pattern can occur only once
- sprintf((char *)errmsg,
- _("E372: Too many %%%c in format string"), *efmpat);
- EMSG(errmsg);
+ semsg(_("E372: Too many %%%c in format string"), *efmpat);
return NULL;
}
if ((idx && idx < 6
@@ -257,9 +254,7 @@ efmpat_to_regpat(
|| (idx == 6
&& vim_strchr((char_u *)"OPQ", efminfo->prefix) == NULL))
{
- sprintf((char *)errmsg,
- _("E373: Unexpected %%%c in format string"), *efmpat);
- EMSG(errmsg);
+ semsg(_("E373: Unexpected %%%c in format string"), *efmpat);
return NULL;
}
efminfo->addr[idx] = (char_u)++round;
@@ -316,8 +311,7 @@ scanf_fmt_to_regpat(
char_u **pefmp,
char_u *efm,
int len,
- char_u *regpat,
- char_u *errmsg)
+ char_u *regpat)
{
char_u *efmp = *pefmp;
@@ -335,7 +329,7 @@ scanf_fmt_to_regpat(
// skip ;
if (efmp == efm + len)
{
- EMSG(_("E374: Missing ] in format string"));
+ emsg(_("E374: Missing ] in format string"));
return NULL;
}
}
@@ -348,9 +342,7 @@ scanf_fmt_to_regpat(
else
{
// TODO: scanf()-like: %*ud, %*3c, %*f, ... ?
- sprintf((char *)errmsg,
- _("E375: Unsupported %%%c in format string"), *efmp);
- EMSG(errmsg);
+ semsg(_("E375: Unsupported %%%c in format string"), *efmp);
return NULL;
}
@@ -363,7 +355,7 @@ scanf_fmt_to_regpat(
* Analyze/parse an errorformat prefix.
*/
static char_u *
-efm_analyze_prefix(char_u *efmp, efm_T *efminfo, char_u *errmsg)
+efm_analyze_prefix(char_u *efmp, efm_T *efminfo)
{
if (vim_strchr((char_u *)"+-", *efmp) != NULL)
efminfo->flags = *efmp++;
@@ -371,9 +363,7 @@ efm_analyze_prefix(char_u *efmp, efm_T *efminfo, char_u *errmsg)
efminfo->prefix = *efmp;
else
{
- sprintf((char *)errmsg,
- _("E376: Invalid %%%c in format string prefix"), *efmp);
- EMSG(errmsg);
+ semsg(_("E376: Invalid %%%c in format string prefix"), *efmp);
return NULL;
}
@@ -391,8 +381,7 @@ efm_to_regpat(
char_u *efm,
int len,
efm_T *fmt_ptr,
- char_u *regpat,
- char_u *errmsg)
+ char_u *regpat)
{
char_u *ptr;
char_u *efmp;
@@ -413,8 +402,7 @@ efm_to_regpat(
break;
if (idx < FMT_PATTERNS)
{
- ptr = efmpat_to_regpat(efmp, ptr, fmt_ptr, idx, round,
- errmsg);
+ ptr = efmpat_to_regpat(efmp, ptr, fmt_ptr, idx, round);
if (ptr == NULL)
return FAIL;
round++;
@@ -422,7 +410,7 @@ efm_to_regpat(
else if (*efmp == '*')
{
++efmp;
- ptr = scanf_fmt_to_regpat(&efmp, efm, len, ptr, errmsg);
+ ptr = scanf_fmt_to_regpat(&efmp, efm, len, ptr);
if (ptr == NULL)
return FAIL;
}
@@ -436,15 +424,13 @@ efm_to_regpat(
{
// prefix is allowed only at the beginning of the errorformat
// option part
- efmp = efm_analyze_prefix(efmp, fmt_ptr, errmsg);
+ efmp = efm_analyze_prefix(efmp, fmt_ptr);
if (efmp == NULL)
return FAIL;
}
else
{
- sprintf((char *)errmsg,
- _("E377: Invalid %%%c in format string"), *efmp);
- EMSG(errmsg);
+ semsg(_("E377: Invalid %%%c in format string"), *efmp);
return FAIL;
}
}
@@ -526,8 +512,6 @@ efm_option_part_len(char_u *efm)
static efm_T *
parse_efm_option(char_u *efm)
{
- char_u *errmsg = NULL;
- int errmsglen;
efm_T *fmt_ptr = NULL;
efm_T *fmt_first = NULL;
efm_T *fmt_last = NULL;
@@ -535,11 +519,6 @@ parse_efm_option(char_u *efm)
int len;
int sz;
- errmsglen = CMDBUFFSIZE + 1;
- errmsg = alloc_id(errmsglen, aid_qf_errmsg);
- if (errmsg == NULL)
- goto parse_efm_end;
-
// Each part of the format string is copied and modified from errorformat
// to regex prog. Only a few % characters are allowed.
@@ -563,7 +542,7 @@ parse_efm_option(char_u *efm)
// Isolate one part in the 'errorformat' option
len = efm_option_part_len(efm);
- if (efm_to_regpat(efm, len, fmt_ptr, fmtstr, errmsg) == FAIL)
+ if (efm_to_regpat(efm, len, fmt_ptr, fmtstr) == FAIL)
goto parse_efm_error;
if ((fmt_ptr->prog = vim_regcomp(fmtstr, RE_MAGIC + RE_STRING)) == NULL)
goto parse_efm_error;
@@ -572,7 +551,7 @@ parse_efm_option(char_u *efm)
}
if (fmt_first == NULL) // nothing found
- EMSG(_("E378: 'errorformat' contains no pattern"));
+ emsg(_("E378: 'errorformat' contains no pattern"));
goto parse_efm_end;
@@ -581,7 +560,6 @@ parse_efm_error:
parse_efm_end:
vim_free(fmtstr);
- vim_free(errmsg);
return fmt_first;
}
@@ -1271,7 +1249,7 @@ qf_parse_dir_pfx(int idx, qffields_T *fields, qf_list_T *qfl)
{
if (*fields->namebuf == NUL)
{
- EMSG(_("E379: Missing or empty directory name"));
+ emsg(_("E379: Missing or empty directory name"));
return QF_FAIL;
}
qfl->qf_directory =
@@ -1568,7 +1546,7 @@ qf_setup_state(
if (efile != NULL && (pstate->fd = mch_fopen((char *)efile, "r")) == NULL)
{
- EMSG2(_(e_openerrf), efile);
+ semsg(_(e_openerrf), efile);
return FAIL;
}
@@ -1751,7 +1729,7 @@ qf_init_ext(
retval = qfl->qf_count;
goto qf_init_end;
}
- EMSG(_(e_readerrf));
+ emsg(_(e_readerrf));
error2:
if (!adding)
{
@@ -1968,7 +1946,7 @@ decr_quickfix_busy(void)
#ifdef ABORT_ON_INTERNAL_ERROR
if (quickfix_busy < 0)
{
- EMSG("quickfix_busy has become negative");
+ emsg("quickfix_busy has become negative");
abort();
}
#endif
@@ -1980,7 +1958,7 @@ check_quickfix_busy(void)
{
if (quickfix_busy != 0)
{
- EMSGN("quickfix_busy not zero on exit: %ld", (long)quickfix_busy);
+ semsg("quickfix_busy not zero on exit: %ld", (long)quickfix_busy);
# ifdef ABORT_ON_INTERNAL_ERROR
abort();
# endif
@@ -2635,7 +2613,7 @@ get_nth_valid_entry(
qf_idx = prev_index;
if (err != NULL)
{
- EMSG(_(err));
+ emsg(_(err));
return NULL;
}
break;
@@ -3041,14 +3019,14 @@ qf_jump_edit_buffer(
// present.
if (qfl_type == QFLT_LOCATION && !win_valid_any_tab(oldwin))
{
- EMSG(_("E924: Current window was closed"));
+ emsg(_("E924: Current window was closed"));
*opened_window = FALSE;
return NOTDONE;
}
if (qfl_type == QFLT_QUICKFIX && !qflist_valid(NULL, save_qfid))
{
- EMSG(_("E925: Current quickfix was changed"));
+ emsg(_("E925: Current quickfix was changed"));
return NOTDONE;
}
@@ -3056,9 +3034,9 @@ qf_jump_edit_buffer(
|| !is_qf_entry_present(qfl, qf_ptr))
{
if (qfl_type == QFLT_QUICKFIX)
- EMSG(_("E925: Current quickfix was changed"));
+ emsg(_("E925: Current quickfix was changed"));
else
- EMSG(_(e_loc_list_changed));
+ emsg(_(e_loc_list_changed));
return NOTDONE;
}
@@ -3315,7 +3293,7 @@ qf_jump_newwin(qf_info_T *qi,
if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist))
{
- EMSG(_(e_quickfix));
+ emsg(_(e_quickfix));
return;
}
@@ -3497,14 +3475,14 @@ qf_list(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
if (qf_stack_empty(qi) || qf_list_empty(qi, qi->qf_curlist))
{
- EMSG(_(e_quickfix));
+ emsg(_(e_quickfix));
return;
}
if (*arg == '+')
@@ -3514,7 +3492,7 @@ qf_list(exarg_T *eap)
}
if (!get_list_range(&arg, &idx1, &idx2) || *arg != NUL)
{
- EMSG(_(e_trailing));
+ emsg(_(e_trailing));
return;
}
qfl = &qi->qf_lists[qi->qf_curlist];
@@ -3643,7 +3621,7 @@ qf_age(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
@@ -3658,7 +3636,7 @@ qf_age(exarg_T *eap)
{
if (qi->qf_curlist == 0)
{
- EMSG(_("E380: At bottom of quickfix stack"));
+ emsg(_("E380: At bottom of quickfix stack"));
break;
}
--qi->qf_curlist;
@@ -3667,7 +3645,7 @@ qf_age(exarg_T *eap)
{
if (qi->qf_curlist >= qi->qf_listcount - 1)
{
- EMSG(_("E381: At top of quickfix stack"));
+ emsg(_("E381: At top of quickfix stack"));
break;
}
++qi->qf_curlist;
@@ -3870,7 +3848,7 @@ qf_view_result(int split)
if (qf_list_empty(qi, qi->qf_curlist))
{
- EMSG(_(e_quickfix));
+ emsg(_(e_quickfix));
return;
}
@@ -4081,7 +4059,7 @@ ex_copen(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
@@ -4163,7 +4141,7 @@ ex_cbottom(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
@@ -4609,7 +4587,7 @@ get_mef_name(void)
{
name = vim_tempname('e', FALSE);
if (name == NULL)
- EMSG(_(e_notmp));
+ emsg(_(e_notmp));
return name;
}
@@ -4941,7 +4919,7 @@ ex_cc(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
@@ -4992,7 +4970,7 @@ ex_cnext(exarg_T *eap)
qi = GET_LOC_LIST(curwin);
if (qi == NULL)
{
- EMSG(_(e_loclist));
+ emsg(_(e_loclist));
return;
}
}
@@ -5148,7 +5126,7 @@ vgr_init_regmatch(regmmatch_T *regmatch, char_u *s)
// Pattern is empty, use last search pattern.
if (last_search_pat() == NULL)
{
- EMSG(_(e_noprevre));
+ emsg(_(e_noprevre));
return;
}
regmatch->regprog = vim_regcomp(last_search_pat(), RE_MAGIC);
@@ -5238,7 +5216,7 @@ vgr_qflist_valid(
if (wp != NULL)
{
// An autocmd has freed the location list.
- EMSG(_(e_loc_list_changed));
+ emsg(_(e_loc_list_changed));
return FALSE;
}
else
@@ -5417,7 +5395,7 @@ ex_vimgrep(exarg_T *eap)
p = skip_vimgrep_pat(eap->arg, &s, &flags);
if (p == NULL)
{
- EMSG(_(e_invalpat));
+ emsg(_(e_invalpat));
goto theend;
}
@@ -5428,7 +5406,7 @@ ex_vimgrep(exarg_T *eap)
p = skipwhite(p);
if (*p == NUL)
{
- EMSG(_("E683: File name missing or invalid pattern"));
+ emsg(_("E683: File name missing or invalid pattern"));
goto theend;
}
@@ -5444,7 +5422,7 @@ ex_vimgrep(exarg_T *eap)
goto theend;
if (fcount == 0)
{
- EMSG(_(e_nomatch));
+ emsg(_(e_nomatch));
goto theend;
}
@@ -5505,7 +5483,7 @@ ex_vimgrep(exarg_T *eap)
if (buf == NULL)
{
if (!got_int)
- smsg((char_u *)_("Cannot open file \"%s\""), fname);
+ smsg(_("Cannot open file \"%s\""), fname);
}
else
{
@@ -5608,7 +5586,7 @@ ex_vimgrep(exarg_T *eap)
first_match_buf, target_dir);
}
else
- EMSG2(_(e_nomatch2), s);
+ semsg(_(e_nomatch2), s);
decr_quickfix_busy();
@@ -6285,7 +6263,7 @@ qf_add_entry_from_dict(
if (!did_bufnr_emsg)
{
did_bufnr_emsg = TRUE;
- EMSGN(_("E92: Buffer %ld not found"), bufnum);
+ semsg(_("E92: Buffer %ld not found"), bufnum);
}
valid = FALSE;
bufnum = 0;
@@ -6864,9 +6842,9 @@ ex_cbuffer(exarg_T *eap)
else if (*skipwhite(skipdigits(eap->arg)) == NUL)
buf = buflist_findnr(atoi((char *)eap->arg));
if (buf == NULL)
- EMSG(_(e_invarg));
+ emsg(_(e_invarg));
else if (buf->b_ml.ml_mfp == NULL)
- EMSG(_("E681: Buffer is not loaded"));
+ emsg(_("E681: Buffer is not loaded"));
else
{
if (eap->addr_count == 0)
@@ -6876,7 +6854,7 @@ ex_cbuffer(exarg_T *eap)
}
if (eap->line1 < 1 || eap->line1 > buf->b_ml.ml_line_count
|| eap->line2 < 1 || eap->line2 > buf->b_ml.ml_line_count)
- EMSG(_(e_invrange));
+ emsg(_(e_invrange));
else
{
char_u *qf_title = qf_cmdtitle(*eap->cmdlinep);
@@ -7011,7 +6989,7 @@ ex_cexpr(exarg_T *eap)
decr_quickfix_busy();
}
else
- EMSG(_("E777: String or List expected"));
+ emsg(_("E777: String or List expected"));
cleanup:
free_tv(tv);
}
@@ -7310,7 +7288,7 @@ ex_helpgrep(exarg_T *eap)
if (!qf_list_empty(qi, qi->qf_curlist))
qf_jump(qi, 0, 0, FALSE);
else
- EMSG2(_(e_nomatch2), eap->arg);
+ semsg(_(e_nomatch2), eap->arg);
decr_quickfix_busy();