aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorjorge2023-04-27 19:57:05 +0000
committerGitHub2023-04-27 19:57:05 +0000
commit204d1eba4b1bb09d2e861986d6b6e8b868d16afe (patch)
treeaefc7c1bcd504df89143afacfceb549f5a150fc9 /helix-term
parent9cdc6b2e8a0193881297e15641cd801384cd8865 (diff)
feat(commands): add clear-register typable command (#5695)
Co-authored-by: Jorge <chorcheus@tutanota.com>
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/commands/typed.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/helix-term/src/commands/typed.rs b/helix-term/src/commands/typed.rs
index ea82dc36..fe92798b 100644
--- a/helix-term/src/commands/typed.rs
+++ b/helix-term/src/commands/typed.rs
@@ -2167,6 +2167,38 @@ fn reset_diff_change(
Ok(())
}
+fn clear_register(
+ cx: &mut compositor::Context,
+ args: &[Cow<str>],
+ event: PromptEvent,
+) -> anyhow::Result<()> {
+ if event != PromptEvent::Validate {
+ return Ok(());
+ }
+
+ ensure!(args.len() <= 1, ":clear-register takes at most 1 argument");
+ if args.is_empty() {
+ cx.editor.registers.clear();
+ cx.editor.set_status("All registers cleared");
+ return Ok(());
+ }
+
+ ensure!(
+ args[0].chars().count() == 1,
+ format!("Invalid register {}", args[0])
+ );
+ let register = args[0].chars().next().unwrap_or_default();
+ match cx.editor.registers.remove(register) {
+ Some(_) => cx
+ .editor
+ .set_status(format!("Register {} cleared", register)),
+ None => cx
+ .editor
+ .set_error(format!("Register {} not found", register)),
+ }
+ Ok(())
+}
+
pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
TypableCommand {
name: "quit",
@@ -2720,6 +2752,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
fun: reset_diff_change,
signature: CommandSignature::none(),
},
+ TypableCommand {
+ name: "clear-register",
+ aliases: &[],
+ doc: "Clear given register. If no argument is provided, clear all registers.",
+ fun: clear_register,
+ signature: CommandSignature::none(),
+ },
];
pub static TYPABLE_COMMAND_MAP: Lazy<HashMap<&'static str, &'static TypableCommand>> =