mirror of
https://github.com/helix-editor/helix.git
synced 2024-09-11 18:58:00 +03:00
feat(commands): add clear-register typable command (#5695)
Co-authored-by: Jorge <chorcheus@tutanota.com>
This commit is contained in:
parent
9cdc6b2e8a
commit
204d1eba4b
@ -78,3 +78,4 @@
|
||||
| `:pipe-to` | Pipe each selection to the shell command, ignoring output. |
|
||||
| `:run-shell-command`, `:sh` | Run a shell command |
|
||||
| `:reset-diff-change`, `:diffget`, `:diffg` | Reset the diff change at the cursor position. |
|
||||
| `:clear-register` | Clear given register. If no argument is provided, clear all registers. |
|
||||
|
@ -78,4 +78,12 @@ pub fn last(&self, name: char) -> Option<&String> {
|
||||
pub fn inner(&self) -> &HashMap<char, Register> {
|
||||
&self.inner
|
||||
}
|
||||
|
||||
pub fn clear(&mut self) {
|
||||
self.inner.clear();
|
||||
}
|
||||
|
||||
pub fn remove(&mut self, name: char) -> Option<Register> {
|
||||
self.inner.remove(&name)
|
||||
}
|
||||
}
|
||||
|
@ -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 @@ fn reset_diff_change(
|
||||
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>> =
|
||||
|
Loading…
Reference in New Issue
Block a user