vim: Add support for temporary normal mode (ctrl-o) within insert mode (#19454)

Support has been added for the ctrl-o command within insert mode. Ctrl-o
is used to partially enter normal mode for 1 motion to then return back
into insert mode.

Release Notes:

- vim: Added support for `ctrl-o` in insert mode to enter temporary
normal mode

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
Axel Carlsson 2024-11-13 20:44:41 +01:00 committed by GitHub
parent 254ce74036
commit b1cd9e4d24
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 145 additions and 11 deletions

View file

@ -185,6 +185,8 @@ impl Vim {
error!("Unexpected normal mode motion operator: {:?}", operator)
}
}
// Exit temporary normal mode (if active).
self.exit_temporary_normal(cx);
}
pub fn normal_object(&mut self, object: Object, cx: &mut ViewContext<Self>) {
@ -483,6 +485,12 @@ impl Vim {
});
});
}
fn exit_temporary_normal(&mut self, cx: &mut ViewContext<Self>) {
if self.temp_mode {
self.switch_mode(Mode::Insert, true, cx);
}
}
}
#[cfg(test)]
mod test {