From aa4d84a0b30fbe93882508c6d9dc8ca4c95341d0 Mon Sep 17 00:00:00 2001 From: woojiq Date: Tue, 8 Aug 2023 16:17:29 +0300 Subject: Align view for background buffer opened with `alt-ret` (#7691) * fix(picker): `alt-ret' changes cursor pos of current file, not new one Closes #7673 * fix other pickers * symbol pickers * diagnostick pickers This is done using the already patched `jump_to_location` method. * fix global and jumplist pickers * use `view` as old_id; make `align_view` method of `Action` * test(picker): basic functionality * fix: picker integrational test * fix nit Co-authored-by: Michael Davis --------- Co-authored-by: Michael Davis --- helix-term/src/commands.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'helix-term/src/commands.rs') diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index e0622559..8be0f83a 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -2199,8 +2199,8 @@ fn global_search(cx: &mut Context) { all_matches, current_path, move |cx, FileResult { path, line_num }, action| { - match cx.editor.open(path, action) { - Ok(_) => {} + let doc = match cx.editor.open(path, action) { + Ok(id) => doc_mut!(cx.editor, &id), Err(e) => { cx.editor.set_error(format!( "Failed to open file '{}': {}", @@ -2209,10 +2209,9 @@ fn global_search(cx: &mut Context) { )); return; } - } - + }; let line_num = *line_num; - let (view, doc) = current!(cx.editor); + let view = view_mut!(cx.editor); let text = doc.text(); if line_num >= text.len_lines() { cx.editor.set_error("The line you jumped to does not exist anymore because the file has changed."); @@ -2222,7 +2221,9 @@ fn global_search(cx: &mut Context) { let end = text.line_to_char((line_num + 1).min(text.len_lines())); doc.set_selection(view.id, Selection::single(start, end)); - align_view(doc, view, Align::Center); + if action.align_view(view, doc.id()){ + align_view(doc, view, Align::Center); + } }).with_preview(|_editor, FileResult { path, line_num }| { Some((path.clone().into(), Some((*line_num, *line_num)))) }); @@ -2742,9 +2743,11 @@ fn jumplist_picker(cx: &mut Context) { |cx, meta, action| { cx.editor.switch(meta.id, action); let config = cx.editor.config(); - let (view, doc) = current!(cx.editor); + let (view, doc) = (view_mut!(cx.editor), doc_mut!(cx.editor, &meta.id)); doc.set_selection(view.id, meta.selection.clone()); - view.ensure_cursor_in_view_center(doc, config.scrolloff); + if action.align_view(view, doc.id()) { + view.ensure_cursor_in_view_center(doc, config.scrolloff); + } }, ) .with_preview(|editor, meta| { -- cgit v1.2.3-70-g09d2