Skip to main content

SyntaxEdit

Struct SyntaxEdit 

Source
pub struct SyntaxEdit {
    pub start_byte: usize,
    pub old_end_byte: usize,
    pub new_end_byte: usize,
    pub start_row: u32,
    pub start_col: u32,
    pub old_end_row: u32,
    pub old_end_col: u32,
    pub new_end_row: u32,
    pub new_end_col: u32,
}
Expand description

Edit information for incremental parsing.

Describes a text modification in terms that parsers can use for efficient incremental re-parsing. Mirrors tree-sitter’s InputEdit structure but without the tree-sitter dependency.

§Fields

The edit is described in terms of both byte offsets and row/column positions:

  • start_*: Where the edit begins
  • old_end_*: Where the old (replaced) content ended
  • new_end_*: Where the new (inserted) content ends

§Example

use reovim_driver_syntax::SyntaxEdit;

// Inserting "Hello" at position 0
let edit = SyntaxEdit::insert(0, 0, 0, 5, 0, 5);
assert_eq!(edit.new_end_byte, 5);
assert_eq!(edit.old_end_byte, 0); // Nothing was replaced

// Deleting 10 bytes starting at position 5
let edit = SyntaxEdit::delete(5, 0, 5, 15, 0, 15);
assert_eq!(edit.start_byte, 5);
assert_eq!(edit.old_end_byte, 15);
assert_eq!(edit.new_end_byte, 5); // Nothing was inserted

Fields§

§start_byte: usize

Byte offset where the edit starts.

§old_end_byte: usize

Byte offset where the old content ended.

§new_end_byte: usize

Byte offset where the new content ends.

§start_row: u32

Row (line) where the edit starts (0-indexed).

§start_col: u32

Column where the edit starts (0-indexed).

§old_end_row: u32

Row where old content ended.

§old_end_col: u32

Column where old content ended.

§new_end_row: u32

Row where new content ends.

§new_end_col: u32

Column where new content ends.

Implementations§

Source§

impl SyntaxEdit

Source

pub const fn new( start_byte: usize, old_end_byte: usize, new_end_byte: usize, start_row: u32, start_col: u32, old_end_row: u32, old_end_col: u32, new_end_row: u32, new_end_col: u32, ) -> Self

Create a new syntax edit with all fields specified.

Source

pub const fn insert( start_byte: usize, start_row: u32, start_col: u32, new_end_byte: usize, new_end_row: u32, new_end_col: u32, ) -> Self

Create an edit for an insertion (no content replaced).

When inserting, old_end equals start since nothing was removed.

Source

pub const fn delete( start_byte: usize, start_row: u32, start_col: u32, old_end_byte: usize, old_end_row: u32, old_end_col: u32, ) -> Self

Create an edit for a deletion (no content inserted).

When deleting, new_end equals start since nothing was inserted.

Source

pub const fn affected_range(&self) -> Range<usize>

Get the byte range that was affected by this edit.

Returns the range from start to the maximum of old and new end.

Source

pub const fn bytes_removed(&self) -> usize

Get the number of bytes that were removed.

Source

pub const fn bytes_inserted(&self) -> usize

Get the number of bytes that were inserted.

Source

pub const fn byte_delta(&self) -> isize

Get the net change in bytes (positive = growth, negative = shrink).

Source

pub const fn is_insert(&self) -> bool

Check if this edit is an insertion (no removal).

Source

pub const fn is_delete(&self) -> bool

Check if this edit is a deletion (no insertion).

Source

pub const fn is_replace(&self) -> bool

Check if this edit is a replacement (both removal and insertion).

Trait Implementations§

Source§

impl Clone for SyntaxEdit

Source§

fn clone(&self) -> SyntaxEdit

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SyntaxEdit

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for SyntaxEdit

Source§

fn eq(&self, other: &SyntaxEdit) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for SyntaxEdit

Source§

impl StructuralPartialEq for SyntaxEdit

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more