Mercurial > vim
diff src/quickfix.c @ 13921:3b6c29f8c1a2 v8.0.1831
patch 8.0.1831: sometimes the quickfix title is incorrectly prefixed with ':'
commit https://github.com/vim/vim/commit/8b62e31003693fee4b288e7aea49170f032aeef3
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun May 13 15:29:04 2018 +0200
patch 8.0.1831: sometimes the quickfix title is incorrectly prefixed with ':'
Problem: Sometimes the quickfix title is incorrectly prefixed with ':'.
Solution: Prepend the colon in another way. (Yegappan Lakshmanan, closes
#2905)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 13 May 2018 15:30:07 +0200 |
parents | f48fcaa196a9 |
children | 2ed1585c6467 |
line wrap: on
line diff
--- a/src/quickfix.c +++ b/src/quickfix.c @@ -1025,6 +1025,8 @@ qf_parse_get_fields( fields->type = 0; *tail = NULL; + /* Always ignore case when looking for a matching error. */ + regmatch.rm_ic = TRUE; regmatch.regprog = fmt_ptr->prog; r = vim_regexec(®match, linebuf, (colnr_T)0); fmt_ptr->prog = regmatch.regprog; @@ -1498,8 +1500,23 @@ qf_store_title(qf_info_T *qi, int qf_idx qi->qf_lists[qf_idx].qf_title = p; if (p != NULL) - sprintf((char *)p, ":%s", (char *)title); - } + STRCPY(p, title); + } +} + +/* + * The title of a quickfix/location list is set, by default, to the command + * that created the quickfix list with the ":" prefix. + * Create a quickfix list title string by prepending ":" to a user command. + * Returns a pointer to a static buffer with the title. + */ + static char_u * +qf_cmdtitle(char_u *cmd) +{ + static char_u qftitle_str[IOSIZE]; + + vim_snprintf((char *)qftitle_str, IOSIZE, ":%s", (char *)cmd); + return qftitle_str; } /* @@ -4020,7 +4037,7 @@ ex_make(exarg_T *eap) && eap->cmdidx != CMD_lmake) ? p_gefm : p_efm, (eap->cmdidx != CMD_grepadd && eap->cmdidx != CMD_lgrepadd), - *eap->cmdlinep, enc); + qf_cmdtitle(*eap->cmdlinep), enc); if (wp != NULL) qi = GET_LOC_LIST(wp); if (res >= 0 && qi != NULL) @@ -4413,7 +4430,8 @@ ex_cfile(exarg_T *eap) * quickfix list then a new list is created. */ res = qf_init(wp, p_ef, p_efm, (eap->cmdidx != CMD_caddfile - && eap->cmdidx != CMD_laddfile), *eap->cmdlinep, enc); + && eap->cmdidx != CMD_laddfile), + qf_cmdtitle(*eap->cmdlinep), enc); if (wp != NULL) qi = GET_LOC_LIST(wp); if (res >= 0 && qi != NULL) @@ -4749,7 +4767,7 @@ ex_vimgrep(exarg_T *eap) /* Get the search pattern: either white-separated or enclosed in // */ regmatch.regprog = NULL; - title = vim_strsave(*eap->cmdlinep); + title = vim_strsave(qf_cmdtitle(*eap->cmdlinep)); p = skip_vimgrep_pat(eap->arg, &s, &flags); if (p == NULL) { @@ -4773,7 +4791,7 @@ ex_vimgrep(exarg_T *eap) && eap->cmdidx != CMD_lvimgrepadd) || qi->qf_curlist == qi->qf_listcount) /* make place for a new list */ - qf_new_list(qi, title != NULL ? title : *eap->cmdlinep); + qf_new_list(qi, title != NULL ? title : qf_cmdtitle(*eap->cmdlinep)); /* parse the list of arguments */ if (get_arglist_exp(p, &fcount, &fnames, TRUE) == FAIL) @@ -4828,7 +4846,7 @@ ex_vimgrep(exarg_T *eap) /* Check whether the quickfix list is still valid. When loading a * buffer above, autocommands might have changed the quickfix list. */ - if (!vgr_qflist_valid(wp, qi, save_qfid, *eap->cmdlinep)) + if (!vgr_qflist_valid(wp, qi, save_qfid, qf_cmdtitle(*eap->cmdlinep))) { FreeWild(fcount, fnames); goto theend; @@ -6125,7 +6143,7 @@ ex_cbuffer(exarg_T *eap) EMSG(_(e_invrange)); else { - char_u *qf_title = *eap->cmdlinep; + char_u *qf_title = qf_cmdtitle(*eap->cmdlinep); if (buf->b_sfname) { @@ -6203,8 +6221,8 @@ ex_cexpr(exarg_T *eap) res = qf_init_ext(qi, qi->qf_curlist, NULL, NULL, tv, p_efm, (eap->cmdidx != CMD_caddexpr && eap->cmdidx != CMD_laddexpr), - (linenr_T)0, (linenr_T)0, *eap->cmdlinep, - NULL); + (linenr_T)0, (linenr_T)0, + qf_cmdtitle(*eap->cmdlinep), NULL); if (res >= 0) qf_list_changed(qi, qi->qf_curlist); if (au_name != NULL) @@ -6476,7 +6494,7 @@ ex_helpgrep(exarg_T *eap) if (regmatch.regprog != NULL) { /* create a new quickfix list */ - qf_new_list(qi, *eap->cmdlinep); + qf_new_list(qi, qf_cmdtitle(*eap->cmdlinep)); hgr_search_in_rtp(qi, ®match, eap->arg);