refactor: execute_command owns its own mode transitions
Removed the post-execution mode reset from the caller. execute_command now sets mode = Normal at the top as the default; commands that open a new mode (ImportWizard, Quit) simply override it. The caller no longer needs a special-case exclusion list. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@ -358,9 +358,6 @@ impl App {
|
|||||||
buffer.clone()
|
buffer.clone()
|
||||||
} else { return Ok(()); };
|
} else { return Ok(()); };
|
||||||
self.execute_command(&buf)?;
|
self.execute_command(&buf)?;
|
||||||
if !matches!(self.mode, AppMode::Quit | AppMode::ImportWizard) {
|
|
||||||
self.mode = AppMode::Normal;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
KeyCode::Char(c) => {
|
KeyCode::Char(c) => {
|
||||||
if let AppMode::CommandMode { buffer } = &mut self.mode {
|
if let AppMode::CommandMode { buffer } = &mut self.mode {
|
||||||
@ -387,6 +384,9 @@ impl App {
|
|||||||
.map(|(c, r)| (c, r.trim()))
|
.map(|(c, r)| (c, r.trim()))
|
||||||
.unwrap_or((raw, ""));
|
.unwrap_or((raw, ""));
|
||||||
|
|
||||||
|
// Default: return to Normal. Commands that open a new mode override this.
|
||||||
|
self.mode = AppMode::Normal;
|
||||||
|
|
||||||
match cmd_name {
|
match cmd_name {
|
||||||
"q" | "quit" => {
|
"q" | "quit" => {
|
||||||
if self.dirty {
|
if self.dirty {
|
||||||
|
|||||||
Reference in New Issue
Block a user