aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/commands/typed.rs
diff options
context:
space:
mode:
authorspectre2562023-06-16 19:13:23 +0000
committerGitHub2023-06-16 19:13:23 +0000
commitd8b7232a475a7e79d86458096954b354fc4faeca (patch)
tree20f366b9f341ffb401f1d64ca9bb2c21455db655 /helix-term/src/commands/typed.rs
parent3fb9fafb2a366d004a04aa3d45d52e3ecfb57241 (diff)
Add yank_joined command (#7195)
Resolves issue #6888 by adding a command to join all selections and yank them to the specified register. The typed command takes an argument as the separator to use when joining the selections.
Diffstat (limited to 'helix-term/src/commands/typed.rs')
-rw-r--r--helix-term/src/commands/typed.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs
index 80beab31..5198e5bd 100644
--- a/helix-term/src/commands/typed.rs
+++ b/helix-term/src/commands/typed.rs
@@ -895,6 +895,25 @@ fn yank_main_selection_to_clipboard(
yank_main_selection_to_clipboard_impl(cx.editor, ClipboardType::Clipboard)
}
+fn yank_joined(
+ cx: &mut compositor::Context,
+ args: &[Cow<str>],
+ event: PromptEvent,
+) -> anyhow::Result<()> {
+ if event != PromptEvent::Validate {
+ return Ok(());
+ }
+
+ ensure!(args.len() <= 1, ":yank-join takes at most 1 argument");
+
+ let doc = doc!(cx.editor);
+ let default_sep = Cow::Borrowed(doc.line_ending.as_str());
+ let separator = args.first().unwrap_or(&default_sep);
+ let register = cx.editor.selected_register.unwrap_or('"');
+ yank_joined_impl(cx.editor, separator, register);
+ Ok(())
+}
+
fn yank_joined_to_clipboard(
cx: &mut compositor::Context,
args: &[Cow<str>],
@@ -2475,6 +2494,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
signature: CommandSignature::positional(&[completers::theme]),
},
TypableCommand {
+ name: "yank-join",
+ aliases: &[],
+ doc: "Yank joined selections. A separator can be provided as first argument. Default value is newline.",
+ fun: yank_joined,
+ signature: CommandSignature::none(),
+ },
+ TypableCommand {
name: "clipboard-yank",
aliases: &[],
doc: "Yank main selection into system clipboard.",