Mercurial > vim
diff src/quickfix.c @ 277:fe16c18c24a7
updated for version 7.0074
author | vimboss |
---|---|
date | Fri, 20 May 2005 21:25:31 +0000 |
parents | 2463194c8cdd |
children | 33d9c918b8ab |
line wrap: on
line diff
--- a/src/quickfix.c +++ b/src/quickfix.c @@ -492,11 +492,15 @@ restofline: */ if ((i = (int)fmt_ptr->addr[0]) > 0) /* %f */ { - len = (int)(regmatch.endp[i] - regmatch.startp[i]); - STRNCPY(namebuf, regmatch.startp[i], len); - namebuf[len] = NUL; + int c = *regmatch.endp[i]; + + /* Expand ~/file and $HOME/file to full path. */ + *regmatch.endp[i] = NUL; + expand_env(regmatch.startp[i], namebuf, CMDBUFFSIZE); + *regmatch.endp[i] = c; + if (vim_strchr((char_u *)"OPQ", idx) != NULL - && mch_getperm(namebuf) == -1) + && mch_getperm(namebuf) == -1) continue; } if ((i = (int)fmt_ptr->addr[1]) > 0) /* %n */ @@ -2788,8 +2792,9 @@ get_errorlist(list) * of dictionaries. */ int -set_errorlist(list) +set_errorlist(list, action) list_T *list; + int action; { listitem_T *li; dict_T *d; @@ -2801,8 +2806,16 @@ set_errorlist(list) int valid, status; int retval = OK; - /* make place for a new list */ - qf_new_list(); + if (action == ' ' || qf_curlist == qf_listcount) + /* make place for a new list */ + qf_new_list(); + else if (action == 'a' && qf_lists[qf_curlist].qf_count > 0) + /* Adding to existing list, find last entry. */ + for (prevp = qf_lists[qf_curlist].qf_start; + prevp->qf_next != prevp; prevp = prevp->qf_next) + ; + else if (action == 'r') + qf_free(qf_curlist); for (li = list->lv_first; li != NULL; li = li->li_next) {