pub struct ActiveBufferSnapshot<'a> {
pub buffer_id: u32,
pub path: Option<&'a Path>,
pub language: Option<&'a str>,
pub cursor: Position,
pub selection: Option<(Position, Position)>,
pub buffer: &'a Buffer,
pub syntax_symbols: Vec<(String, u32, u32)>,
pub syntax_highlights: Vec<Vec<DisplaySpan>>,
}Expand description
Snapshot of the active document buffer at the moment the picker opened. Carries enough state for line / mark / outline / grep / LSP-position sources to do their work without a second App round-trip.
Fields§
§buffer_id: u32§path: Option<&'a Path>§language: Option<&'a str>Language id ("rust", "markdown", …). Snippet and
outline sources filter on this; absent for unknown /
untyped buffers.
cursor: Position§selection: Option<(Position, Position)>Visual-mode selection extent at picker-open, if any.
:picker grep defaults its pattern to the selected
text when present.
buffer: &'a BufferRead-only borrow of the rope. Line / outline / grep
sources walk this directly; long-running async work
must extract what it needs before init returns.
syntax_symbols: Vec<(String, u32, u32)>Tree-sitter symbol locations (name, line, byte-col)
for the active buffer when syntax is available.
Pre-collected by the host via
Syntax::collect_symbol_locations; empty when there’s
no parser registered for the buffer’s language. Drives
:picker outline.
syntax_highlights: Vec<Vec<DisplaySpan>>PH.2: per-line syntax-highlight spans for the active
buffer, one inner Vec per buffer line, each span’s
range a line-relative byte range. Pre-collected by
the host via SyntaxSnapshot::highlight_lines (a
read-only tree query run off the render thread, mirroring
the syntax_symbols precedent) and already mapped to
DisplaySpan host-side so this crate needs no
lattice-cells dependency. Empty when no grammar is
registered / the snapshot is stale → plain previews.
LinesSource clones the matching line’s spans into a
candidate’s display_spans; OutlineSource clips them
to the symbol-name column. See
docs/dev/architecture/picker-preview-highlight.md §6.