aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-11-21 01:53:12 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-11-21 01:53:12 +0100
commit9b6bf8fa3728aaa39d0e8694a720da783d141ff7 (patch)
tree42a8d6407a60facf02b00128c3f929eddc75cc1c /src
parent84d9245c70c2c65668e0b56beee7f4dcd8ea3644 (diff)
parentff819d8ad72b6a7404d28707f1f9ef460c35c472 (diff)
downloadrneovim-9b6bf8fa3728aaa39d0e8694a720da783d141ff7.tar.gz
rneovim-9b6bf8fa3728aaa39d0e8694a720da783d141ff7.tar.bz2
rneovim-9b6bf8fa3728aaa39d0e8694a720da783d141ff7.zip
Merge #7345 'location-list update on buffer-modified'
Diffstat (limited to 'src')
-rw-r--r--src/nvim/mark.c14
-rw-r--r--src/nvim/quickfix.c14
2 files changed, 17 insertions, 11 deletions
diff --git a/src/nvim/mark.c b/src/nvim/mark.c
index 7889fabd45..1ba400972c 100644
--- a/src/nvim/mark.c
+++ b/src/nvim/mark.c
@@ -951,11 +951,17 @@ static void mark_adjust_internal(linenr_T line1, linenr_T line2,
one_adjust_nodel(&(curbuf->b_visual.vi_start.lnum));
one_adjust_nodel(&(curbuf->b_visual.vi_end.lnum));
- /* quickfix marks */
- qf_mark_adjust(NULL, line1, line2, amount, amount_after);
- /* location lists */
+ // quickfix marks
+ if (!qf_mark_adjust(NULL, line1, line2, amount, amount_after)) {
+ curbuf->b_has_qf_entry &= ~BUF_HAS_QF_ENTRY;
+ }
+ // location lists
+ bool found_one = false;
FOR_ALL_TAB_WINDOWS(tab, win) {
- qf_mark_adjust(win, line1, line2, amount, amount_after);
+ found_one |= qf_mark_adjust(win, line1, line2, amount, amount_after);
+ }
+ if (!found_one) {
+ curbuf->b_has_qf_entry &= ~BUF_HAS_LL_ENTRY;
}
sign_mark_adjust(line1, line2, amount, amount_after);
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index e6b1e7b95a..b9228e15b9 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -2379,7 +2379,8 @@ static void qf_free(qf_info_T *qi, int idx)
/*
* qf_mark_adjust: adjust marks
*/
-void qf_mark_adjust(win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after)
+bool qf_mark_adjust(win_T *wp, linenr_T line1, linenr_T line2, long amount,
+ long amount_after)
{
int i;
qfline_T *qfp;
@@ -2389,11 +2390,12 @@ void qf_mark_adjust(win_T *wp, linenr_T line1, linenr_T line2, long amount, long
int buf_has_flag = wp == NULL ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
if (!(curbuf->b_has_qf_entry & buf_has_flag)) {
- return;
+ return false;
}
if (wp != NULL) {
- if (wp->w_llist == NULL)
- return;
+ if (wp->w_llist == NULL) {
+ return false;
+ }
qi = wp->w_llist;
}
@@ -2414,9 +2416,7 @@ void qf_mark_adjust(win_T *wp, linenr_T line1, linenr_T line2, long amount, long
}
}
- if (!found_one) {
- curbuf->b_has_qf_entry &= ~buf_has_flag;
- }
+ return found_one;
}
/*