diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-05-14 23:14:42 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-05-14 23:14:42 +0200 |
commit | f1eeae94fd78f81d85d2abe3d955dc21d5ef979c (patch) | |
tree | d647940aa277e80aec1cf26d5be37643ca9a0145 /src | |
parent | 70b11cdd56a062d19eefb483f549da1578aaea40 (diff) | |
download | vim-f1eeae94fd78f81d85d2abe3d955dc21d5ef979c.zip |
updated for version 7.2.433
Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost.
Solution: Add cscope support for these autocmd events. (Bryan Venteicher)
Diffstat (limited to 'src')
-rw-r--r-- | src/if_cscope.c | 121 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 71 insertions, 52 deletions
diff --git a/src/if_cscope.c b/src/if_cscope.c index b8fef2887..6ab9c2403 100644 --- a/src/if_cscope.c +++ b/src/if_cscope.c @@ -1113,6 +1113,70 @@ cs_find_common(opt, pat, forceit, verbose, use_ll) #ifdef FEAT_QUICKFIX char cmdletter; char *qfpos; + + /* get cmd letter */ + switch (opt[0]) + { + case '0' : + cmdletter = 's'; + break; + case '1' : + cmdletter = 'g'; + break; + case '2' : + cmdletter = 'd'; + break; + case '3' : + cmdletter = 'c'; + break; + case '4' : + cmdletter = 't'; + break; + case '6' : + cmdletter = 'e'; + break; + case '7' : + cmdletter = 'f'; + break; + case '8' : + cmdletter = 'i'; + break; + default : + cmdletter = opt[0]; + } + + qfpos = (char *)vim_strchr(p_csqf, cmdletter); + if (qfpos != NULL) + { + qfpos++; + /* next symbol must be + or - */ + if (strchr(CSQF_FLAGS, *qfpos) == NULL) + { + char *nf = _("E469: invalid cscopequickfix flag %c for %c"); + char *buf = (char *)alloc((unsigned)strlen(nf)); + + /* strlen will be enough because we use chars */ + if (buf != NULL) + { + sprintf(buf, nf, *qfpos, *(qfpos-1)); + (void)EMSG(buf); + vim_free(buf); + } + return FALSE; + } + +# ifdef FEAT_AUTOCMD + if (*qfpos != '0') + { + apply_autocmds(EVENT_QUICKFIXCMDPRE, (char_u *)"cscope", + curbuf->b_fname, TRUE, curbuf); +# ifdef FEAT_EVAL + if (did_throw || force_abort) + return FALSE; +# endif + } +# endif + } #endif /* create the actual command to send to cscope */ @@ -1174,58 +1238,6 @@ cs_find_common(opt, pat, forceit, verbose, use_ll) } #ifdef FEAT_QUICKFIX - /* get cmd letter */ - switch (opt[0]) - { - case '0' : - cmdletter = 's'; - break; - case '1' : - cmdletter = 'g'; - break; - case '2' : - cmdletter = 'd'; - break; - case '3' : - cmdletter = 'c'; - break; - case '4' : - cmdletter = 't'; - break; - case '6' : - cmdletter = 'e'; - break; - case '7' : - cmdletter = 'f'; - break; - case '8' : - cmdletter = 'i'; - break; - default : - cmdletter = opt[0]; - } - - qfpos = (char *)vim_strchr(p_csqf, cmdletter); - if (qfpos != NULL) - { - qfpos++; - /* next symbol must be + or - */ - if (strchr(CSQF_FLAGS, *qfpos) == NULL) - { - char *nf = _("E469: invalid cscopequickfix flag %c for %c"); - char *buf = (char *)alloc((unsigned)strlen(nf)); - - /* strlen will be enough because we use chars */ - if (buf != NULL) - { - sprintf(buf, nf, *qfpos, *(qfpos-1)); - (void)EMSG(buf); - vim_free(buf); - } - vim_free(nummatches); - return FALSE; - } - } if (qfpos != NULL && *qfpos != '0' && totmatches > 0) { /* fill error list */ @@ -1258,6 +1270,11 @@ cs_find_common(opt, pat, forceit, verbose, use_ll) postponed_split = 0; } # endif + +# ifdef FEAT_AUTOCMD + apply_autocmds(EVENT_QUICKFIXCMDPOST, (char_u *)"cscope", + curbuf->b_fname, TRUE, curbuf); +# endif if (use_ll) /* * In the location list window, use the displayed location diff --git a/src/version.c b/src/version.c index 39ef89caa..fc6350249 100644 --- a/src/version.c +++ b/src/version.c @@ -682,6 +682,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 433, +/**/ 432, /**/ 431, |