Patch 7.2.433

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Patch 7.2.433

Bram Moolenaar

Patch 7.2.433
Problem:    Can't use cscope with QuickFixCmdPre and QuickFixCmdPost.
Solution:   Add cscope support for these autocmd events. (Bryan Venteicher)
Files:    runtime/doc/autocmd.txt, src/if_cscope.c


*** ../vim-7.2.432/runtime/doc/autocmd.txt 2009-06-24 17:51:01.000000000 +0200
--- runtime/doc/autocmd.txt 2010-05-14 22:48:43.000000000 +0200
***************
*** 678,687 ****
  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".
  This command cannot be used to set the
  'makeprg' and 'grepprg' variables.
  If this command causes an error, the quickfix
--- 678,687 ----
  QuickFixCmdPre Before a quickfix command is run (|:make|,
  |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
  |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
! |: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
*** ../vim-7.2.432/src/if_cscope.c 2010-02-24 14:46:58.000000000 +0100
--- src/if_cscope.c 2010-05-14 23:10:39.000000000 +0200
***************
*** 1113,1118 ****
--- 1113,1182 ----
  #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,1231 ****
      }
 
  #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 */
--- 1238,1243 ----
***************
*** 1258,1263 ****
--- 1270,1280 ----
     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
*** ../vim-7.2.432/src/version.c 2010-05-14 22:24:31.000000000 +0200
--- src/version.c 2010-05-14 23:13:27.000000000 +0200
***************
*** 683,684 ****
--- 683,686 ----
  {   /* Add new patch number below this line */
+ /**/
+     433,
  /**/

--
The 50-50-90 rule: Anytime you have a 50-50 chance of getting
something right, there's a 90% probability you'll get it wrong.

 /// Bram Moolenaar -- [hidden email] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php