diff options
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r-- | helix-term/src/commands.rs | 19 |
1 files changed, 11 insertions, 8 deletions
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| { |