]> granicus.if.org Git - vim/commitdiff
updated for version 7.2.433 v7.2.433
authorBram Moolenaar <Bram@vim.org>
Fri, 14 May 2010 21:14:42 +0000 (23:14 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 14 May 2010 21:14:42 +0000 (23:14 +0200)
Problem:    Can't use cscope with QuickFixCmdPre and QuickFixCmdPost.
Solution:   Add cscope support for these autocmd events. (Bryan Venteicher)

runtime/doc/autocmd.txt
src/if_cscope.c
src/version.c

index 20b5e6a4859d43bc04a51da26d6c5e718d224f08..d1e53c4a9b0a127e45d947e38e2f128b3fbab62d 100644 (file)
@@ -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
index b8fef2887ed9ca40288ceb210c857dadbdbc8de4..6ab9c2403ce04be41e8d8316484062ddd2308a17 100644 (file)
@@ -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
index 39ef89caa95e8c3d74dc1a94e811407ef990f2b3..fc63502498dcfd14fdc86e95675193b380b6c703 100644 (file)
@@ -681,6 +681,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    433,
 /**/
     432,
 /**/