pub enum InsertReason {
Enter(InsertEntry),
Open {
above: bool,
},
AfterChange,
DeleteToEol,
ReplayOnly,
BlockEdge {
top: usize,
bot: usize,
col: usize,
pad: bool,
},
BlockChange {
top: usize,
bot: usize,
col: usize,
},
Replace,
}Variants§
Enter(InsertEntry)
Plain entry via i/I/a/A — recorded as InsertAt.
Open
Entry via o/O — records OpenLine on Esc.
AfterChange
Entry via an operator’s change side-effect. Retro-fills the
stored last-change’s inserted field on Esc.
DeleteToEol
Entry via C (delete to EOL + insert).
ReplayOnly
Entry via an insert triggered during dot-replay — don’t touch last_change because the outer replay will restore it.
BlockEdge
I or A from VisualBlock: insert the typed text at col on
rows in top..=bot. col is the start column for I, the
one-past-block-end column for A.
pad distinguishes the two vim behaviours at rows shorter than
col (:h v_b_I vs :h v_b_A): A pads short rows with spaces
so the appended text still lines up (pad: true); I skips rows
that don’t reach col entirely — no padding, no insert on that
row (pad: false).
BlockChange
c from VisualBlock: block content deleted, then user types
replacement text replicated across all block rows on Esc. Cursor
advances to the last typed char after replication (unlike BlockEdge
which leaves cursor at the insertion column).
Replace
R — Replace mode. Each typed char overwrites the cell under
the cursor instead of inserting; at end-of-line the session
falls through to insert (same as vim).
Trait Implementations§
Source§impl Clone for InsertReason
impl Clone for InsertReason
Source§fn clone(&self) -> InsertReason
fn clone(&self) -> InsertReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more