pub struct VimInsertResolver { /* private fields */ }Expand description
Vim insert mode key resolver.
Insert mode is primarily for text input:
- Most printable characters are inserted directly
- Escape exits to normal mode
- Some control sequences trigger commands (Ctrl+H for backspace, etc.)
- Arrow keys and special keys are handled via keymap lookup
§Example
ⓘ
let resolver = VimInsertResolver::new();
// Regular character - insert it
let result = resolver.resolve(&key('a'), &mut state);
assert!(matches!(result, ResolveResult::InsertChar('a')));
// Escape - exit to normal mode
let result = resolver.resolve(&KeyEvent::new(KeyCode::Escape), &mut state);
assert!(matches!(result, ResolveResult::ModeTransition(..)));Implementations§
Trait Implementations§
Source§impl Default for VimInsertResolver
impl Default for VimInsertResolver
Source§impl ModeKeyResolver for VimInsertResolver
impl ModeKeyResolver for VimInsertResolver
Source§fn resolve_with_keymap(
&self,
key: &KeyEvent,
_state: &mut ModeState,
input: &ResolveInput<'_>,
) -> ResolveResult
fn resolve_with_keymap( &self, key: &KeyEvent, _state: &mut ModeState, input: &ResolveInput<'_>, ) -> ResolveResult
Insert mode key resolution with keymap lookup.
This method handles keymap lookup for non-insertable keys like Escape, Backspace, and arrow keys. When a key is not insertable, we query the keymap to find a bound command.
§Architecture
Insert mode differs from normal mode:
- Insertable characters (letters, numbers, etc.) return
InsertChar - Non-insertable keys (Escape, Backspace, arrows) query the keymap
This enables Escape to trigger the vim:exit-insert command, which
properly ends undo batching before switching to normal mode.
Source§fn resolve_with_extensions(
&self,
key: &KeyEvent,
state: &mut ModeState,
input: &ResolveInput<'_>,
_shared_extensions: &mut ExtensionMap,
client_extensions: &mut ExtensionMap,
) -> ResolveResult
fn resolve_with_extensions( &self, key: &KeyEvent, state: &mut ModeState, input: &ResolveInput<'_>, _shared_extensions: &mut ExtensionMap, client_extensions: &mut ExtensionMap, ) -> ResolveResult
Insert mode key resolution with extension tracking for dot repeat.
This method tracks all inserted characters in VimSessionState.insert_buffer
for dot repeat support (Epic #465).
Source§fn inherits_from(&self) -> Option<&ModeId>
fn inherits_from(&self) -> Option<&ModeId>
Optional parent mode to try if we return
NotHandled. Read moreSource§fn resolve(&self, _key: &KeyEvent, _state: &mut ModeState) -> ResolveResult
fn resolve(&self, _key: &KeyEvent, _state: &mut ModeState) -> ResolveResult
👎Deprecated since 0.9.5:
Override resolve_with_keymap() instead
Process a key event in this mode’s context (legacy API). Read more
Source§fn resolve_with_session(
&self,
key: &KeyEvent,
state: &mut ModeState,
input: &ResolveInput<'_>,
_session: &mut dyn SessionApiDyn,
shared_extensions: &mut ExtensionMap,
client_extensions: &mut ExtensionMap,
) -> ResolveResult
fn resolve_with_session( &self, key: &KeyEvent, state: &mut ModeState, input: &ResolveInput<'_>, _session: &mut dyn SessionApiDyn, shared_extensions: &mut ExtensionMap, client_extensions: &mut ExtensionMap, ) -> ResolveResult
Process a key event with full session API access. Read more
Source§fn on_command_complete(
&self,
_session: &mut dyn SessionApiDyn,
_shared_extensions: &mut ExtensionMap,
_client_extensions: &mut ExtensionMap,
) -> Option<ModeTransition>
fn on_command_complete( &self, _session: &mut dyn SessionApiDyn, _shared_extensions: &mut ExtensionMap, _client_extensions: &mut ExtensionMap, ) -> Option<ModeTransition>
Hook called after a command executes successfully. Read more
Source§fn pending_keys(&self) -> KeySequence
fn pending_keys(&self) -> KeySequence
Get the accumulated pending keys for this resolver. Read more
Auto Trait Implementations§
impl Freeze for VimInsertResolver
impl RefUnwindSafe for VimInsertResolver
impl Send for VimInsertResolver
impl Sync for VimInsertResolver
impl Unpin for VimInsertResolver
impl UnsafeUnpin for VimInsertResolver
impl UnwindSafe for VimInsertResolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more