mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	Merge #7345 'location-list update on buffer-modified'
This commit is contained in:
		| @@ -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); | ||||
|   | ||||
| @@ -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; | ||||
| } | ||||
|  | ||||
| /* | ||||
|   | ||||
| @@ -7,6 +7,7 @@ local command = helpers.command | ||||
| local exc_exec = helpers.exc_exec | ||||
| local write_file = helpers.write_file | ||||
| local curbufmeths = helpers.curbufmeths | ||||
| local source = helpers.source | ||||
|  | ||||
| local file_base = 'Xtest-functional-ex_cmds-quickfix_commands' | ||||
|  | ||||
| @@ -81,3 +82,30 @@ for _, c in ipairs({'l', 'c'}) do | ||||
|     end) | ||||
|   end) | ||||
| end | ||||
|  | ||||
| describe('quickfix', function() | ||||
|   it('location-list update on buffer modification', function() | ||||
|     source([[ | ||||
|         new | ||||
|         setl bt=nofile | ||||
|         let lines = ['Line 1', 'Line 2', 'Line 3', 'Line 4', 'Line 5'] | ||||
|         call append(0, lines) | ||||
|         new | ||||
|         setl bt=nofile | ||||
|         call append(0, lines) | ||||
|         let qf_item = { | ||||
|           \ 'lnum': 4, | ||||
|           \ 'text': "This is the error line.", | ||||
|           \ } | ||||
|         let qf_item['bufnr'] = bufnr('%') | ||||
|         call setloclist(0, [qf_item]) | ||||
|         wincmd p | ||||
|         let qf_item['bufnr'] = bufnr('%') | ||||
|         call setloclist(0, [qf_item]) | ||||
|         1del _ | ||||
|         call append(0, ['New line 1', 'New line 2', 'New line 3']) | ||||
|         silent ll | ||||
|     ]]) | ||||
|     eq({0, 6, 1, 0, 1}, funcs.getcurpos()) | ||||
|   end) | ||||
| end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes