pub struct BufferView<'a, R: StyleResolver> {Show 28 fields
pub buffer: &'a Buffer,
pub viewport: &'a Viewport,
pub selection: Option<Selection>,
pub resolver: &'a R,
pub cursor_line_bg: Style,
pub fold_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>,
pub non_text_style: Style,
pub diag_overlays: &'a [DiagOverlay],
pub colorcolumn_cols: &'a [u16],
pub colorcolumn_style: Style,
pub listchars: Option<&'a ListChars>,
pub indent_guides_enabled: bool,
pub indent_guide_char: char,
pub indent_guide_shiftwidth: usize,
pub indent_guide_fg: Color,
pub indent_guide_active_fg: Color,
pub indent_guide_active_col: Option<usize>,
pub eol_hints: &'a [EolHint],
pub blame_plan: Option<&'a [BlameRow]>,
}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.
fold_line_bg: StyleBg painted across a closed fold’s header row — brighter than
cursor_line_bg so a collapsed fold is visually distinct.
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.
non_text_style: StyleStyle for the ~ tilde marker painted on screen rows that are
past the last buffer line (vim’s NonText highlight group).
Pass Style::default() to use terminal defaults.
The gutter on those rows is painted blank; the ~ appears at the
leftmost text column. Rows within the buffer are unaffected.
diag_overlays: &'a [DiagOverlay]Diagnostic overlays (LSP inline highlights). Applied in a
post-paint pass after every row is drawn so they layer on top of
syntax and selection colours without a second layout traversal.
Pass &[] to disable. Added in 0.5.0.
colorcolumn_cols: &'a [u16]1-based column indices for vertical rulers (vim’s colorcolumn).
The renderer paints colorcolumn_style on those text-area cells
beneath syntax highlights. Pass &[] to disable.
colorcolumn_style: StyleBackground style applied to cells at a colorcolumn position.
Ignored when colorcolumn_cols is empty.
listchars: Option<&'a ListChars>When Some, invisibles rendering is active. The hjkl_buffer::ListChars
value controls which glyphs substitute whitespace characters.
Matches vim’s :set list + :set listchars. Pass None to disable.
indent_guides_enabled: boolWhen true, paint thin vertical indent guide characters at every
shiftwidth-aligned leading-whitespace column on each row. Only active
in Wrap::None mode. Pass false to disable.
indent_guide_char: charCharacter to paint as the indent guide. Typically '│'.
indent_guide_shiftwidth: usizeNumber of leading visual columns that qualify as “shiftwidth” per level.
Derived from Settings::shiftwidth / Settings::tabstop. The renderer
uses this to locate guide columns on each row.
indent_guide_fg: ColorFg color for inactive indent guide cells.
indent_guide_active_fg: ColorFg color for the active (cursor’s indent level) guide cell.
indent_guide_active_col: Option<usize>Visual column of the active indent guide, if any. Computed from the
cursor row’s leading whitespace and indent_guide_shiftwidth.
None when the cursor sits on a non-indented or empty row.
eol_hints: &'a [EolHint]End-of-line virtual-text hints (e.g. inline git blame). Painted after each row’s real text in a post-pass. Empty slice = none. Added for #202.
blame_plan: Option<&'a [BlameRow]>Boxed-blame layout. When Some, the renderer draws exactly this
sequence of screen rows (top-to-bottom) instead of deriving rows from
top_row: Content(doc_row) paints that buffer row, BorderTop/
BorderBottom paint a box rule. The host (render level) builds the plan
— the engine’s cursor/scroll stays the source of truth. Wrap::None
only. None = normal rendering.
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