From fd28a0f88f16fc7a42d0ade1c17996415dfacb12 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 14 Apr 2026 17:27:21 +0800 Subject: [PATCH 1/2] refactor!: graceful handle ReedlineEvent::CtrlC Signed-off-by: tison --- src/engine.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/engine.rs b/src/engine.rs index 5a61e0a3..c3196d8c 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1241,10 +1241,14 @@ impl Reedline { } } ReedlineEvent::CtrlC => { - self.deactivate_menus(); - self.run_edit_commands(&[EditCommand::Clear]); - self.editor.reset_undo_stack(); - Ok(EventStatus::Exits(Signal::CtrlC)) + if self.editor.is_empty() { + self.deactivate_menus(); + self.editor.reset_undo_stack(); + Ok(EventStatus::Exits(Signal::CtrlC)) + } else { + self.run_edit_commands(&[EditCommand::Clear]); + Ok(EventStatus::Handled) + } } ReedlineEvent::ClearScreen => { self.deactivate_menus(); From f19c519f698819d079def96e4b36aed23a96a5f4 Mon Sep 17 00:00:00 2001 From: tison Date: Wed, 15 Apr 2026 22:01:39 +0800 Subject: [PATCH 2/2] Always all deactivate_menus on CtrlC --- src/engine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine.rs b/src/engine.rs index c3196d8c..0de8a090 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -1241,8 +1241,8 @@ impl Reedline { } } ReedlineEvent::CtrlC => { + self.deactivate_menus(); if self.editor.is_empty() { - self.deactivate_menus(); self.editor.reset_undo_stack(); Ok(EventStatus::Exits(Signal::CtrlC)) } else {