pub struct HunkFoldSource { /* private fields */ }Expand description
DX.3-C7: per-buffer hunk-fold source.
Holds the buffer’s Arc<DiffSession>; compute_folds reads the
session’s currently-published HunkIndex (lock-free
current_hunks()), so folds track every republish without a context.
diff-mode::on_activate registers one via FoldOverlayService;
DiffModeGuard::drop removes it.
Implementations§
Source§impl HunkFoldSource
impl HunkFoldSource
Sourcepub fn new(session: Arc<DiffSession>, buffer_id: BufferId, slot: usize) -> Self
pub fn new(session: Arc<DiffSession>, buffer_id: BufferId, slot: usize) -> Self
Build a source for session, namespaced by buffer_id so it is
distinct from other buffers’ hunk-fold sources in the registry.
slot is the buffer’s position in Hunk::ranges (resolved by
the mode via DiffSubsystem::participant_slot).
Trait Implementations§
Source§impl FoldSource for HunkFoldSource
impl FoldSource for HunkFoldSource
Source§fn id(&self) -> ProviderId
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>
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§
impl Freeze for HunkFoldSource
impl RefUnwindSafe for HunkFoldSource
impl Send for HunkFoldSource
impl Sync for HunkFoldSource
impl Unpin for HunkFoldSource
impl UnsafeUnpin for HunkFoldSource
impl UnwindSafe for HunkFoldSource
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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> ⓘ
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 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> ⓘ
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