Skip to main content

DisplayMatrix

Struct DisplayMatrix 

Source
pub struct DisplayMatrix {
    pub chunks: Arc<[Arc<DisplayChunk>]>,
    pub chunk_size: u32,
    pub source_line_count: u32,
    pub visible_line_count: u32,
    pub version: MatrixVersion,
    pub wrap_width: u32,
    pub reveal_line: Option<u32>,
}
Expand description

Chunked, viewport-windowed cache of DisplayLines. Mirrors CellMatrix exactly; only the row payload differs.

Fields§

§chunks: Arc<[Arc<DisplayChunk>]>

Chunks ordered by start_source_line. Whole-doc mode has one.

§chunk_size: u32

Logical lines per chunk, or CHUNK_SIZE_WHOLE_DOC for whole-doc mode.

§source_line_count: u32

Total logical lines in the source buffer (pre-fold).

§visible_line_count: u32

Total display rows across all chunks (post-fold).

§version: MatrixVersion

Component-wise version captured at build time.

§wrap_width: u32

Soft-wrap column width, or 0 when wrapping is off (one display row per source line). Stamped by the worker from the pane width.

§reveal_line: Option<u32>

CL.1: the line this matrix was built with its conceals suppressed on.

Carried on the matrix rather than folded into MatrixVersion on purpose. The version is the cache-hit key, and the reveal line moves with the CURSOR — folding it in would invalidate the whole matrix on every j, turning a 47 ns cache hit into a ~1.5 ms window rebuild. Kept beside the version instead, so the worker can see the reveal moved and rebuild exactly the two rows that changed.

Implementations§

Source§

impl DisplayMatrix

Source

pub fn empty() -> Self

Source

pub fn chunked( chunks: impl Into<Arc<[Arc<DisplayChunk>]>>, chunk_size: u32, source_line_count: u32, version: MatrixVersion, ) -> Self

Source

pub fn whole_doc(chunk: Arc<DisplayChunk>, source_line_count: u32) -> Self

Source

pub fn is_whole_doc(&self) -> bool

Source

pub fn is_empty(&self) -> bool

Source

pub fn segment_count(&self, target: u32) -> u32

How many display rows source line target occupies under soft-wrap (1 when wrapping off / line missing / folded).

Source

pub fn covered_start_line(&self) -> u32

First source line the chunks were built to cover (0 for whole-doc / full-coverage chunked; the window lower bound when windowed). H.3 coverage semantics, ported.

Source

pub fn covered_end_line(&self) -> u32

Exclusive upper bound of the covered source-line range.

Source

pub fn covers(&self, lo: u32, hi: u32) -> bool

Does the matrix cover all of [lo, hi)? Empty matrix covers nothing. Drives the worker cache-hit / window-extend gate.

Source

pub fn row_at_source_line(&self, target: u32) -> Option<&DisplayLine>

Row whose source_line == target, walking chunks in order. None when folded or outside coverage (the renderer falls back to its rope/plain path only transiently, off-window).

Trait Implementations§

Source§

impl Clone for DisplayMatrix

Source§

fn clone(&self) -> DisplayMatrix

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 DisplayMatrix

Source§

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

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

impl Default for DisplayMatrix

Source§

fn default() -> Self

Returns the “default value” for a type. 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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> IntoMaybeUndefined<T> for T

§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
§

impl<T> IntoOption<T> for T

§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Pointer = u32

§

fn debug( pointer: <T as Pointee>::Pointer, f: &mut Formatter<'_>, ) -> Result<(), Error>

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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