Patch 7.3.756
Problem:    A location list can get a wrong count in :lvimgrep.
Solution:   Check if the list was changed by autocommands. (mostly by
            Christian Brabandt)
Files:      src/quickfic.c


*** ../vim-7.3.755/src/quickfix.c       2012-12-05 15:16:42.000000000 +0100
--- src/quickfix.c      2012-12-12 15:50:08.000000000 +0100
***************
*** 3109,3114 ****
--- 3109,3117 ----
      char_u    *p;
      int               fi;
      qf_info_T *qi = &ql_info;
+ #ifdef FEAT_AUTOCMD
+     qfline_T  *cur_qf_start;
+ #endif
      qfline_T  *prevp = NULL;
      long      lnum;
      buf_T     *buf;
***************
*** 3218,3223 ****
--- 3221,3232 ----
       * ":lcd %:p:h" changes the meaning of short path names. */
      mch_dirname(dirname_start, MAXPATHL);
  
+ #ifdef FEAT_AUTOCMD
+      /* Remeber the value of qf_start, so that we can check for autocommands
+       * changing the current quickfix list. */
+     cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
+ #endif
+ 
      seconds = (time_t)0;
      for (fi = 0; fi < fcount && !got_int && tomatch > 0; ++fi)
      {
***************
*** 3273,3278 ****
--- 3282,3309 ----
            /* Use existing, loaded buffer. */
            using_dummy = FALSE;
  
+ #ifdef FEAT_AUTOCMD
+       if (cur_qf_start != qi->qf_lists[qi->qf_curlist].qf_start)
+       {
+           int idx;
+ 
+           /* Autocommands changed the quickfix list.  Find the one we were
+            * using and restore it. */
+           for (idx = 0; idx < LISTCOUNT; ++idx)
+               if (cur_qf_start == qi->qf_lists[idx].qf_start)
+               {
+                   qi->qf_curlist = idx;
+                   break;
+               }
+           if (idx == LISTCOUNT)
+           {
+               /* List cannot be found, create a new one. */
+               qf_new_list(qi, *eap->cmdlinep);
+               cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
+           }
+       }
+ #endif
+ 
        if (buf == NULL)
        {
            if (!got_int)
***************
*** 3324,3329 ****
--- 3355,3363 ----
                if (got_int)
                    break;
            }
+ #ifdef FEAT_AUTOCMD
+           cur_qf_start = qi->qf_lists[qi->qf_curlist].qf_start;
+ #endif
  
            if (using_dummy)
            {
*** ../vim-7.3.755/src/version.c        2012-12-12 14:25:01.000000000 +0100
--- src/version.c       2012-12-12 15:35:58.000000000 +0100
***************
*** 727,728 ****
--- 727,730 ----
  {   /* Add new patch number below this line */
+ /**/
+     756,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
146. You experience ACTUAL physical withdrawal symptoms when away
     from your 'puter and the net.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.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

Raspunde prin e-mail lui