diff options
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r-- | helix-term/src/commands.rs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 6e3fb939..0fd011cc 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -4886,17 +4886,19 @@ fn transpose_view(cx: &mut Context) { cx.editor.transpose_view() } -// split helper, clear it later -fn split(cx: &mut Context, action: Action) { - let (view, doc) = current!(cx.editor); +/// Open a new split in the given direction specified by the action. +/// +/// Maintain the current view (both the cursor's position and view in document). +fn split(editor: &mut Editor, action: Action) { + let (view, doc) = current!(editor); let id = doc.id(); let selection = doc.selection(view.id).clone(); let offset = view.offset; - cx.editor.switch(id, action); + editor.switch(id, action); // match the selection in the previous view - let (view, doc) = current!(cx.editor); + let (view, doc) = current!(editor); doc.set_selection(view.id, selection); // match the view scroll offset (switch doesn't handle this fully // since the selection is only matched after the split) @@ -4904,7 +4906,7 @@ fn split(cx: &mut Context, action: Action) { } fn hsplit(cx: &mut Context) { - split(cx, Action::HorizontalSplit); + split(cx.editor, Action::HorizontalSplit); } fn hsplit_new(cx: &mut Context) { @@ -4912,7 +4914,7 @@ fn hsplit_new(cx: &mut Context) { } fn vsplit(cx: &mut Context) { - split(cx, Action::VerticalSplit); + split(cx.editor, Action::VerticalSplit); } fn vsplit_new(cx: &mut Context) { |