From c0dbd6dc3f147b46d4352ac78903a7a70741cfd9 Mon Sep 17 00:00:00 2001 From: Joe Date: Sun, 13 Mar 2022 22:47:52 -0400 Subject: [PATCH] Add horizontal and vertical split scratch buffers (#1763) Make subcommand name more descriptive Fix vsplit completer Run cargo xtask docgen --- book/src/generated/typable-cmd.md | 2 ++ helix-term/src/commands.rs | 10 +++++++++ helix-term/src/commands/typed.rs | 34 +++++++++++++++++++++++++++++++ helix-term/src/keymap.rs | 8 ++++++++ 4 files changed, 54 insertions(+) diff --git a/book/src/generated/typable-cmd.md b/book/src/generated/typable-cmd.md index 370da21a9..2d89c97f9 100644 --- a/book/src/generated/typable-cmd.md +++ b/book/src/generated/typable-cmd.md @@ -46,7 +46,9 @@ | `:debug-remote`, `:dbg-tcp` | Connect to a debug adapter by TCP address and start a debugging session from a given template with given parameters. | | `:debug-eval` | Evaluate expression in current debug context. | | `:vsplit`, `:vs` | Open the file in a vertical split. | +| `:vsplit-new`, `:vnew` | Open a scratch buffer in a vertical split. | | `:hsplit`, `:hs`, `:sp` | Open the file in a horizontal split. | +| `:hsplit-new`, `:hnew` | Open a scratch buffer in a horizontal split. | | `:tutor` | Open the tutorial. | | `:goto`, `:g` | Go to line number. | | `:set-option`, `:set` | Set a config option at runtime | diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index ff3fb925a..f8a888e7a 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -380,7 +380,9 @@ impl MappableCommand { jump_view_down, "Jump to the split below", rotate_view, "Goto next window", hsplit, "Horizontal bottom split", + hsplit_new, "Horizontal bottom split scratch buffer", vsplit, "Vertical right split", + vsplit_new, "Vertical right split scratch buffer", wclose, "Close window", wonly, "Current window only", select_register, "Select register", @@ -3794,10 +3796,18 @@ fn hsplit(cx: &mut Context) { split(cx, Action::HorizontalSplit); } +fn hsplit_new(cx: &mut Context) { + cx.editor.new_file(Action::HorizontalSplit); +} + fn vsplit(cx: &mut Context) { split(cx, Action::VerticalSplit); } +fn vsplit_new(cx: &mut Context) { + cx.editor.new_file(Action::VerticalSplit); +} + fn wclose(cx: &mut Context) { if cx.editor.tree.views().count() == 1 { if let Err(err) = typed::buffers_remaining_impl(cx.editor) { diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs index 3301d1486..7866ff9d3 100644 --- a/helix-term/src/commands/typed.rs +++ b/helix-term/src/commands/typed.rs @@ -771,6 +771,26 @@ fn hsplit( Ok(()) } +fn vsplit_new( + cx: &mut compositor::Context, + _args: &[Cow], + _event: PromptEvent, +) -> anyhow::Result<()> { + cx.editor.new_file(Action::VerticalSplit); + + Ok(()) +} + +fn hsplit_new( + cx: &mut compositor::Context, + _args: &[Cow], + _event: PromptEvent, +) -> anyhow::Result<()> { + cx.editor.new_file(Action::HorizontalSplit); + + Ok(()) +} + fn debug_eval( cx: &mut compositor::Context, args: &[Cow], @@ -1293,6 +1313,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[ fun: vsplit, completer: Some(completers::filename), }, + TypableCommand { + name: "vsplit-new", + aliases: &["vnew"], + doc: "Open a scratch buffer in a vertical split.", + fun: vsplit_new, + completer: None, + }, TypableCommand { name: "hsplit", aliases: &["hs", "sp"], @@ -1300,6 +1327,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[ fun: hsplit, completer: Some(completers::filename), }, + TypableCommand { + name: "hsplit-new", + aliases: &["hnew"], + doc: "Open a scratch buffer in a horizontal split.", + fun: hsplit_new, + completer: None, + }, TypableCommand { name: "tutor", aliases: &[], diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index 1fe1f6333..1059feaea 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -682,6 +682,10 @@ impl Default for Keymaps { "C-j" | "j" | "down" => jump_view_down, "C-k" | "k" | "up" => jump_view_up, "C-l" | "l" | "right" => jump_view_right, + "n" => { "New split scratch buffer" + "C-s" | "s" => hsplit_new, + "C-v" | "v" => vsplit_new, + }, }, // move under c @@ -732,6 +736,10 @@ impl Default for Keymaps { "C-j" | "j" | "down" => jump_view_down, "C-k" | "k" | "up" => jump_view_up, "C-l" | "l" | "right" => jump_view_right, + "n" => { "New split scratch buffer" + "C-s" | "s" => hsplit_new, + "C-v" | "v" => vsplit_new, + }, }, "y" => yank_joined_to_clipboard, "Y" => yank_main_selection_to_clipboard,