Skip to main content

LastChange

Enum LastChange 

Source
pub enum LastChange {
Show 17 variants OpMotion { op: Operator, motion: Motion, count: usize, inserted: Option<String>, }, OpTextObj { op: Operator, obj: TextObject, inner: bool, inserted: Option<String>, }, LineOp { op: Operator, count: usize, inserted: Option<String>, register: Option<char>, }, CharDel { forward: bool, count: usize, }, ReplaceChar { ch: char, count: usize, }, ToggleCase { count: usize, }, JoinLine { count: usize, }, Paste { before: bool, count: usize, cursor_after: bool, reindent: bool, }, DeleteToEol { inserted: Option<String>, }, OpenLine { above: bool, inserted: String, }, InsertAt { entry: InsertEntry, inserted: String, count: usize, }, GnOp { op: Operator, forward: bool, inserted: Option<String>, }, ReplaceMode { text: String, }, VisualOp { op: Operator, extent: VisualExtent, inserted: Option<String>, }, VisualReplace { ch: char, extent: VisualExtent, }, VisualBlockReplace { ch: char, rows: usize, cols: usize, to_eol: bool, }, VisualBlockInsert { text: String, rows: usize, cols: usize, to_eol: bool, append: bool, },
}
Expand description

Information needed to replay a mutating change via ..

Variants§

§

OpMotion

Operator over a motion.

Fields

§motion: Motion
§count: usize
§inserted: Option<String>
§

OpTextObj

Operator over a text-object.

Fields

§inner: bool
§inserted: Option<String>
§

LineOp

dd, cc, yy with a count.

Fields

§count: usize
§inserted: Option<String>
§register: Option<char>

The explicit register ("add, "ayy, …) the original change used, if any. . must reuse it (:h redo-register) rather than falling back to the unnamed register.

§

CharDel

x, X with a count.

Fields

§forward: bool
§count: usize
§

ReplaceChar

r<ch> with a count.

Fields

§ch: char
§count: usize
§

ToggleCase

~ with a count.

Fields

§count: usize
§

JoinLine

J with a count.

Fields

§count: usize
§

Paste

p / P (and gp/gP, ]p/[p) with a count.

Fields

§before: bool
§count: usize
§cursor_after: bool

gp / gP — leave the cursor just after the pasted text.

§reindent: bool

]p / [p — reindent the pasted block to the current line.

§

DeleteToEol

D (delete to EOL).

Fields

§inserted: Option<String>
§

OpenLine

o / O + the inserted text.

Fields

§above: bool
§inserted: String
§

InsertAt

i/I/a/A + inserted text.

Fields

§inserted: String
§count: usize
§

GnOp

dgn / cgn (and gN forms) — operate on the next search match. inserted is filled on Esc for the cgn change form so . retypes it.

Fields

§forward: bool
§inserted: Option<String>
§

ReplaceMode

R{text}<Esc> — replace (overstrike) mode. . re-overtypes text.

Fields

§text: String
§

VisualOp

A visual-mode operator (v/V + d/c/</>/~/u/U/?). vim (:h v_.) replays over a same-SIZE region anchored at the current cursor rather than the original absolute range — extent captures that size. inserted is filled on Esc for the c form so . retypes it (same AfterChange patch site as OpMotion / OpTextObj / LineOp).

d / c / ~/u/U/g? from Visual — charwise, linewise, AND blockwise (VisualExtent::Block). Block c fills inserted at its own BlockChange finish site (comment.rs), mirroring the charwise AfterChange patch.

Fields

§inserted: Option<String>
§

VisualReplace

Charwise (v) / linewise (V) r{ch} — dot-repeat re-replaces a same-SIZE region anchored at the cursor (:h v_.), mirroring VisualBlockReplace for the block case. r has no Operator, so it rides its own variant instead of VisualOp. extent is a VisualExtent::Char or VisualExtent::Line captured from the live selection.

Fields

§ch: char
§

VisualBlockReplace

Visual-BLOCK r{ch} — dot-repeat re-replaces a same-size rectangle anchored TOP-LEFT at the cursor. r has no Operator, so it rides its own variant instead of VisualOp. to_eol preserves a $-ragged right edge (:h v_b_$).

Fields

§ch: char
§rows: usize
§cols: usize
§to_eol: bool
§

VisualBlockInsert

Visual-BLOCK I / A — dot-repeat re-inserts text at the block’s left (append == false) or right (append == true) edge over a same-size rectangle anchored TOP-LEFT at the cursor. cols is the block width (A appends cols columns past the cursor); to_eol preserves a $-ragged right edge (A only, :h v_b_$).

Fields

§text: String
§rows: usize
§cols: usize
§to_eol: bool
§append: bool

Trait Implementations§

Source§

impl Clone for LastChange

Source§

fn clone(&self) -> LastChange

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LastChange

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.