Patch 7.4.2081
Problem:    Line numbers in the error list are not always adjusted.
Solution:   Set b_has_qf_entry properly. (Yegappan Lakshmanan)
Files:      src/quickfix.c, src/structs.h, src/testdir/test_quickfix.vim


*** ../vim-7.4.2080/src/quickfix.c      2016-07-18 22:22:34.980686625 +0200
--- src/quickfix.c      2016-07-20 21:43:29.794791155 +0200
***************
*** 1408,1414 ****
  
        qfp->qf_fnum = bufnum;
        if (buf != NULL)
!           buf->b_has_qf_entry = TRUE;
      }
      else
        qfp->qf_fnum = qf_get_fnum(qi, dir, fname);
--- 1408,1415 ----
  
        qfp->qf_fnum = bufnum;
        if (buf != NULL)
!           buf->b_has_qf_entry |=
!               (qi == &ql_info) ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
      }
      else
        qfp->qf_fnum = qf_get_fnum(qi, dir, fname);
***************
*** 1680,1686 ****
      if (buf == NULL)
        return 0;
  
!     buf->b_has_qf_entry = TRUE;
      return buf->b_fnum;
  }
  
--- 1681,1688 ----
      if (buf == NULL)
        return 0;
  
!     buf->b_has_qf_entry =
!                       (qi == &ql_info) ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
      return buf->b_fnum;
  }
  
***************
*** 2728,2735 ****
      int               idx;
      qf_info_T *qi = &ql_info;
      int               found_one = FALSE;
  
!     if (!curbuf->b_has_qf_entry)
        return;
      if (wp != NULL)
      {
--- 2730,2738 ----
      int               idx;
      qf_info_T *qi = &ql_info;
      int               found_one = FALSE;
+     int               buf_has_flag = wp == NULL ? BUF_HAS_QF_ENTRY : 
BUF_HAS_LL_ENTRY;
  
!     if (!(curbuf->b_has_qf_entry & buf_has_flag))
        return;
      if (wp != NULL)
      {
***************
*** 2758,2764 ****
                }
  
      if (!found_one)
!       curbuf->b_has_qf_entry = FALSE;
  }
  
  /*
--- 2761,2767 ----
                }
  
      if (!found_one)
!       curbuf->b_has_qf_entry &= ~buf_has_flag;
  }
  
  /*
*** ../vim-7.4.2080/src/structs.h       2016-07-17 18:28:59.023697505 +0200
--- src/structs.h       2016-07-20 21:22:09.980103410 +0200
***************
*** 1906,1911 ****
--- 1906,1913 ----
  #ifdef FEAT_QUICKFIX
      char_u    *b_p_bh;        /* 'bufhidden' */
      char_u    *b_p_bt;        /* 'buftype' */
+ #define BUF_HAS_QF_ENTRY 1
+ #define BUF_HAS_LL_ENTRY 2
      int               b_has_qf_entry;
  #endif
      int               b_p_bl;         /* 'buflisted' */
*** ../vim-7.4.2080/src/testdir/test_quickfix.vim       2016-07-17 
19:25:00.964690765 +0200
--- src/testdir/test_quickfix.vim       2016-07-20 21:20:05.421397180 +0200
***************
*** 1341,1353 ****
  
    enew | only
  
!   call s:create_test_file('Xqftestfile')
!   edit Xqftestfile
! 
!   Xgetexpr ['Xqftestfile:5:Line5',
!               \ 'Xqftestfile:10:Line10',
!               \ 'Xqftestfile:15:Line15',
!               \ 'Xqftestfile:20:Line20']
  
    6,14delete
    call append(6, ['Buffer', 'Window'])
--- 1341,1354 ----
  
    enew | only
  
!   let fname = 'Xqftestfile' . a:cchar
!   call s:create_test_file(fname)
!   exe 'edit ' . fname
! 
!   Xgetexpr [fname . ':5:Line5',
!             \ fname . ':10:Line10',
!             \ fname . ':15:Line15',
!             \ fname . ':20:Line20']
  
    6,14delete
    call append(6, ['Buffer', 'Window'])
***************
*** 1359,1369 ****
    call assert_equal(13, l[3].lnum)
  
    enew!
!   call delete('Xqftestfile')
  endfunction
  
  function! Test_adjust_lnum()
    call Xadjust_qflnum('c')
    call Xadjust_qflnum('l')
  endfunction
  
--- 1360,1372 ----
    call assert_equal(13, l[3].lnum)
  
    enew!
!   call delete(fname)
  endfunction
  
  function! Test_adjust_lnum()
+   call setloclist(0, [])
    call Xadjust_qflnum('c')
+   call setqflist([])
    call Xadjust_qflnum('l')
  endfunction
  
*** ../vim-7.4.2080/src/version.c       2016-07-20 00:10:44.488249992 +0200
--- src/version.c       2016-07-20 21:21:50.128309557 +0200
***************
*** 760,761 ****
--- 760,763 ----
  {   /* Add new patch number below this line */
+ /**/
+     2081,
  /**/

-- 
Q:   How many hardware engineers does it take to change a lightbulb?
A:   None.  We'll fix it in software.

 /// 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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui