Skip to main content

HeaderGroupFoldProvider

Struct HeaderGroupFoldProvider 

Source
pub struct HeaderGroupFoldProvider { /* private fields */ }
Expand description

AF.1: one open [lattice_core::Fold] per header run — the rows a user sees under one header.

The grouping rule handles both header conventions in the tree with one pass, which is what lets this be a shared mechanism rather than an agenda-shaped special case:

  • a non-empty title that differs from the current group’s starts a new group (search’s per-excerpt file headers; the agenda’s run labels);
  • a non-empty title equal to the current group’s continues it (search’s second and later excerpts from one file);
  • an empty title continues the current group (the agenda’s rows after the first of a run — an empty title renders no header row, which is exactly what “I belong to the group above” means).

identity is the group’s TITLE, so the closed/open state survives a gr refresh — recompute_folds carries state by matching identity, and the title is what the user was collapsing. That is the same reasoning PD.5a applied to paths for FileBoundaryFoldProvider, and it holds here for the same reason: the hit-count badge lives in its own field rather than in title, so a refresh that changes the count does not change the identity.

Implementations§

Source§

impl HeaderGroupFoldProvider

Source

pub fn new(handle: MultibufferDocumentHandle, buffer_id: BufferId) -> Self

Trait Implementations§

Source§

impl FoldSource for HeaderGroupFoldProvider

Source§

fn id(&self) -> ProviderId

This source’s stable id: the same on every call, and distinct from every other registered source’s (see [ProviderId]).
Source§

fn compute_folds(&self) -> Vec<Fold>

Produce the current fold ranges. Called by the host on recompute, so it should be cheap (read already-computed state; no I/O).

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
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> 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
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<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