pub struct BufferView<'a, R: StyleResolver> {Show 14 fields
pub buffer: &'a Buffer,
pub viewport: &'a Viewport,
pub selection: Option<Selection>,
pub resolver: &'a R,
pub cursor_line_bg: Style,
pub cursor_column_bg: Style,
pub selection_bg: Style,
pub cursor_style: Style,
pub gutter: Option<Gutter>,
pub search_bg: Style,
pub signs: &'a [Sign],
pub conceals: &'a [Conceal],
pub spans: &'a [Vec<Span>],
pub search_pattern: Option<&'a Regex>,
}Expand description
Render-time wrapper around &Buffer that carries the optional
Selection + a StyleResolver. Created per draw, dropped
when the frame is done — cheap, holds only refs.
0.0.34 (Patch C-δ.1): added the [viewport] field. The viewport
previously lived on the buffer itself; with the relocation to the
engine Host, the renderer takes a borrow per draw.
0.0.37: added the [spans] and [search_pattern] fields. Per-row
syntax spans + the active / regex used to live on the buffer
(Buffer::spans / Buffer::search_pattern); both moved out per
step 3 of DESIGN_33_METHOD_CLASSIFICATION.md. The host now feeds
each into the view per draw — populated from
Editor::buffer_spans() and Editor::search_state().pattern.
Fields§
§buffer: &'a Buffer§viewport: &'a ViewportViewport snapshot the host published this frame. Owned by the
engine Host; the renderer borrows for the duration of the
draw.
selection: Option<Selection>§resolver: &'a R§cursor_line_bg: StyleBg painted across the cursor row (vim’s cursorline). Pass
Style::default() to disable.
cursor_column_bg: StyleBg painted down the cursor column (vim’s cursorcolumn). Pass
Style::default() to disable.
selection_bg: StyleBg painted under selected cells. Composed over syntax fg.
cursor_style: StyleStyle for the cursor cell. REVERSED is the conventional
choice; works against any theme.
gutter: Option<Gutter>Optional left-side line-number gutter. width includes the
trailing space separating the number from text. Pass None
to disable. Numbers are 1-based, right-aligned.
search_bg: StyleBg painted under cells covered by an active / search match.
Style::default() to disable.
signs: &'a [Sign]Per-row gutter signs (LSP diagnostic dots, git diff markers, …). Painted into the leftmost gutter column after the line number, so they overwrite the leading space tui-style gutters reserve. Highest-priority sign per row wins.
conceals: &'a [Conceal]Per-row substitutions applied at render time. Each conceal
hides the byte range [start_byte, end_byte) and paints
replacement in its place. Empty slice = no conceals.
spans: &'a [Vec<Span>]Per-row syntax spans the host has computed for this frame.
spans[row] carries the styled byte ranges for that row;
rows beyond spans.len() get no syntax styling. Pass &[]
for hosts without syntax integration.
0.0.37: lifted out of Buffer per step 3 of
DESIGN_33_METHOD_CLASSIFICATION.md. The engine populates
this via Editor::buffer_spans().
search_pattern: Option<&'a Regex>Active / search regex, if any. The renderer paints
Self::search_bg under cells that match. Pass None to
disable hlsearch.
0.0.37: lifted out of Buffer (was Buffer::search_pattern)
per step 3 of DESIGN_33_METHOD_CLASSIFICATION.md. The engine
publishes the pattern via Editor::search_state().pattern.
Trait Implementations§
Source§impl<R: StyleResolver> Widget for BufferView<'_, R>
impl<R: StyleResolver> Widget for BufferView<'_, R>
Source§fn render(self, area: Rect, term_buf: &mut TermBuffer)
fn render(self, area: Rect, term_buf: &mut TermBuffer)
Auto Trait Implementations§
impl<'a, R> Freeze for BufferView<'a, R>
impl<'a, R> RefUnwindSafe for BufferView<'a, R>where
R: RefUnwindSafe,
impl<'a, R> Send for BufferView<'a, R>where
R: Sync,
impl<'a, R> Sync for BufferView<'a, R>where
R: Sync,
impl<'a, R> Unpin for BufferView<'a, R>
impl<'a, R> UnsafeUnpin for BufferView<'a, R>
impl<'a, R> UnwindSafe for BufferView<'a, R>where
R: RefUnwindSafe,
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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