Move left when exiting insert mode (#699)

Signed-off-by: Andrei Stan <andreistan2003@gmail.com>
This commit is contained in:
andreistan26 2024-02-09 23:53:44 +02:00 committed by GitHub
parent ab1b47ef40
commit 02f551d42e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -136,8 +136,17 @@ impl EditMode for Vi {
}
(_, KeyModifiers::NONE, KeyCode::Esc) => {
self.cache.clear();
ReedlineEvent::Multiple(vec![
if self.mode == ViMode::Insert {
self.mode = ViMode::Normal;
ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint])
ReedlineEvent::Left
} else {
ReedlineEvent::None
},
ReedlineEvent::Esc,
ReedlineEvent::Repaint,
])
}
(_, KeyModifiers::NONE, KeyCode::Enter) => {
self.mode = ViMode::Insert;
@ -188,7 +197,11 @@ mod test {
assert_eq!(
result,
ReedlineEvent::Multiple(vec![ReedlineEvent::Esc, ReedlineEvent::Repaint])
ReedlineEvent::Multiple(vec![
ReedlineEvent::Left,
ReedlineEvent::Esc,
ReedlineEvent::Repaint
])
);
assert!(matches!(vi.mode, ViMode::Normal));
}