@@ -2167,6 +2167,38 @@ fn reset_diff_change(
2171+ cx: &mut compositor::Context,
2173+ event: PromptEvent,
2174+) -> anyhow::Result<()> {
2175+ if event != PromptEvent::Validate {
2179+ ensure!(args.len() <= 1, ":clear-register takes at most 1 argument");
2180+ if args.is_empty() {
2181+ cx.editor.registers.clear();
2182+ cx.editor.set_status("All registers cleared");
2187+ args[0].chars().count() == 1,
2188+ format!("Invalid register {}", args[0])
2190+ let register = args[0].chars().next().unwrap_or_default();
2191+ match cx.editor.registers.remove(register) {
2194+ .set_status(format!("Register {} cleared", register)),
2197+ .set_error(format!("Register {} not found", register)),
2170pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
2202pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
2171 TypableCommand {
2203 TypableCommand {
2172 name: "quit",
2204 name: "quit",
@@ -2720,6 +2752,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
2720 fun: reset_diff_change,
2752 fun: reset_diff_change,
2721 signature: CommandSignature::none(),
2753 signature: CommandSignature::none(),
2756+ name: "clear-register",
2758+ doc: "Clear given register. If no argument is provided, clear all registers.",
2759+ fun: clear_register,
2760+ signature: CommandSignature::none(),
2725pub static TYPABLE_COMMAND_MAP: Lazy<HashMap<&'static str, &'static TypableCommand>> =
2764pub static TYPABLE_COMMAND_MAP: Lazy<HashMap<&'static str, &'static TypableCommand>> =