diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-07-20 21:44:37 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-07-20 21:44:37 +0200 |
commit | c1542744e788d96fed24dd421f43009288092504 (patch) | |
tree | 502ef35e555f7ef44ae84e6984dc407703af1af0 | |
parent | b869c0da31716ff14bbfd63346d140d0a1d68af7 (diff) | |
download | vim-git-c1542744e788d96fed24dd421f43009288092504.tar.gz |
patch 7.4.2081v7.4.2081
Problem: Line numbers in the error list are not always adjusted.
Solution: Set b_has_qf_entry properly. (Yegappan Lakshmanan)
-rw-r--r-- | src/quickfix.c | 11 | ||||
-rw-r--r-- | src/structs.h | 2 | ||||
-rw-r--r-- | src/testdir/test_quickfix.vim | 17 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 21 insertions, 11 deletions
diff --git a/src/quickfix.c b/src/quickfix.c index fecc2c9eb..51f96dcaa 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -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; } /* diff --git a/src/structs.h b/src/structs.h index 00a8e035b..191fa1f92 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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' */ diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 83f4d0cbe..e79315b96 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -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 diff --git a/src/version.c b/src/version.c index 742f78b29..4a8235599 100644 --- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2081, +/**/ 2080, /**/ 2079, |