summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@zimbu.org>2010-05-14 23:14:42 +0200
committerBram Moolenaar <bram@zimbu.org>2010-05-14 23:14:42 +0200
commit7a1e9b58e2bf639813ef3f2d08f42cfa305951b5 (patch)
tree2c50bfc96044ba0b278930d440a228e28e453662
parent2b4875582c8343c1aeafd1dad24d99cd1693762c (diff)
downloadvim-7a1e9b58e2bf639813ef3f2d08f42cfa305951b5.tar.gz
updated for version 7.2.433v7.2.433v7-2-433
Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost. Solution: Add cscope support for these autocmd events. (Bryan Venteicher)
-rw-r--r--runtime/doc/autocmd.txt8
-rw-r--r--src/if_cscope.c121
-rw-r--r--src/version.c2
3 files changed, 75 insertions, 56 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 20b5e6a4..d1e53c4a 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -678,10 +678,10 @@ MenuPopup Just before showing the popup menu (under the
QuickFixCmdPre Before a quickfix command is run (|:make|,
|:lmake|, |:grep|, |:lgrep|, |:grepadd|,
|:lgrepadd|, |:vimgrep|, |:lvimgrep|,
- |:vimgrepadd|, |:lvimgrepadd|). The pattern is
- matched against the command being run. When
- |:grep| is used but 'grepprg' is set to
- "internal" it still matches "grep".
+ |:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+ The pattern is matched against the command
+ being run. When |:grep| is used but 'grepprg'
+ is set to "internal" it still matches "grep".
This command cannot be used to set the
'makeprg' and 'grepprg' variables.
If this command causes an error, the quickfix
diff --git a/src/if_cscope.c b/src/if_cscope.c
index b8fef288..6ab9c240 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 39ef89ca..fc635024 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,