]> granicus.if.org Git - vim/commitdiff
patch 7.4.2081 v7.4.2081
authorBram Moolenaar <Bram@vim.org>
Wed, 20 Jul 2016 19:44:37 +0000 (21:44 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 20 Jul 2016 19:44:37 +0000 (21:44 +0200)
Problem:    Line numbers in the error list are not always adjusted.
Solution:   Set b_has_qf_entry properly. (Yegappan Lakshmanan)

src/quickfix.c
src/structs.h
src/testdir/test_quickfix.vim
src/version.c

index fecc2c9eb05f1809b6151e6f6955ebc412469f04..51f96dcaa443bc4814e52be310bb2c5cbc02574c 100644 (file)
@@ -1408,7 +1408,8 @@ qf_add_entry(
 
        qfp->qf_fnum = bufnum;
        if (buf != NULL)
-           buf->b_has_qf_entry = TRUE;
+           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,7 +1681,8 @@ qf_get_fnum(qf_info_T *qi, char_u *directory, char_u *fname)
     if (buf == NULL)
        return 0;
 
-    buf->b_has_qf_entry = TRUE;
+    buf->b_has_qf_entry =
+                       (qi == &ql_info) ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
     return buf->b_fnum;
 }
 
@@ -2728,8 +2730,9 @@ qf_mark_adjust(
     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)
+    if (!(curbuf->b_has_qf_entry & buf_has_flag))
        return;
     if (wp != NULL)
     {
@@ -2758,7 +2761,7 @@ qf_mark_adjust(
                }
 
     if (!found_one)
-       curbuf->b_has_qf_entry = FALSE;
+       curbuf->b_has_qf_entry &= ~buf_has_flag;
 }
 
 /*
index 00a8e035b41009dea44ad34a225bf5dd82141e11..191fa1f923ebdaab34b059ce896f95218d802964 100644 (file)
@@ -1906,6 +1906,8 @@ struct file_buffer
 #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' */
index 83f4d0cbef3947fe6cde5eb72bb39813c04249bf..e79315b969b15c4b7874f205128174d2ae90ff90 100644 (file)
@@ -1341,13 +1341,14 @@ function! Xadjust_qflnum(cchar)
 
   enew | only
 
-  call s:create_test_file('Xqftestfile')
-  edit Xqftestfile
+  let fname = 'Xqftestfile' . a:cchar
+  call s:create_test_file(fname)
+  exe 'edit ' . fname
 
-  Xgetexpr ['Xqftestfile:5:Line5',
-               \ 'Xqftestfile:10:Line10',
-               \ 'Xqftestfile:15:Line15',
-               \ 'Xqftestfile:20:Line20']
+  Xgetexpr [fname . ':5:Line5',
+             \ fname . ':10:Line10',
+             \ fname . ':15:Line15',
+             \ fname . ':20:Line20']
 
   6,14delete
   call append(6, ['Buffer', 'Window'])
@@ -1359,11 +1360,13 @@ function! Xadjust_qflnum(cchar)
   call assert_equal(13, l[3].lnum)
 
   enew!
-  call delete('Xqftestfile')
+  call delete(fname)
 endfunction
 
 function! Test_adjust_lnum()
+  call setloclist(0, [])
   call Xadjust_qflnum('c')
+  call setqflist([])
   call Xadjust_qflnum('l')
 endfunction
 
index 742f78b2952e89c9d1e31f1d4a41d37fe4ce82e7..4a8235599cb60d32b312082bd0a6aecbe5528a81 100644 (file)
@@ -758,6 +758,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2081,
 /**/
     2080,
 /**/