#[non_exhaustive]pub struct RenderOutput {
pub buffer_id: BufferId,
pub spans: Vec<Vec<(usize, usize, StyleSpec)>>,
pub signs: Vec<DiagSign>,
pub key: (u64, usize, usize),
pub perf: PerfBreakdown,
pub kind: ParseKind,
}Expand description
Per-frame output of the syntax worker.
Contains the styled span table (one inner Vec per document row), the
diagnostic signs for the gutter, the cache key the request was tagged
with, and a PerfBreakdown describing where the worker spent its time.
Spans use StyleSpec (renderer-agnostic). The TUI adapter
([hjkl-syntax-tui]) converts these to ratatui::style::Style.
§Examples
use hjkl_syntax::{RenderOutput, ParseKind, PerfBreakdown};
let out = RenderOutput::new(0, Vec::new(), Vec::new(), (0, 0, 0), PerfBreakdown::default(), ParseKind::Viewport);
assert_eq!(out.kind, ParseKind::Viewport);Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.buffer_id: BufferIdRoutes spans/signs back to the matching buffer slot in App::slots. Install path discards the result when this doesn’t match the now-active buffer (race fix: a parse queued before a tab/buffer switch must not paint onto the new active buffer).
spans: Vec<Vec<(usize, usize, StyleSpec)>>Per-row span table. Each inner Vec contains (byte_start, byte_end, StyleSpec) triples for the characters on that row. The outer index is
the document row (0-indexed). The table is sized to row_count even
when only a viewport slice was requested — rows outside the viewport
have empty inner Vecs.
signs: Vec<DiagSign>Diagnostic signs for the gutter (one per row with a tree-sitter ERROR / MISSING node intersecting the viewport).
key: (u64, usize, usize)(dirty_gen, viewport_top, viewport_height) — same shape the App
uses for its own cache key. Pair the result with this on receive.
perf: PerfBreakdownSub-step timing breakdown from the worker.
kind: ParseKindWhich region this result covers — used by the install path to route into the correct per-slot cache field.
Implementations§
Source§impl RenderOutput
impl RenderOutput
Sourcepub fn new(
buffer_id: BufferId,
spans: Vec<Vec<(usize, usize, StyleSpec)>>,
signs: Vec<DiagSign>,
key: (u64, usize, usize),
perf: PerfBreakdown,
kind: ParseKind,
) -> Self
pub fn new( buffer_id: BufferId, spans: Vec<Vec<(usize, usize, StyleSpec)>>, signs: Vec<DiagSign>, key: (u64, usize, usize), perf: PerfBreakdown, kind: ParseKind, ) -> Self
Construct a new RenderOutput.
§Examples
use hjkl_syntax::{RenderOutput, ParseKind, PerfBreakdown};
let out = RenderOutput::new(1, Vec::new(), Vec::new(), (7, 0, 30), PerfBreakdown::new(), ParseKind::Top);
assert_eq!(out.buffer_id, 1);
assert_eq!(out.kind, ParseKind::Top);Trait Implementations§
Source§impl Clone for RenderOutput
impl Clone for RenderOutput
Source§fn clone(&self) -> RenderOutput
fn clone(&self) -> RenderOutput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more