Persistent index of nonblank resident rows and their raw indent levels.
Lazy suffix shifts make structural edits logarithmic. Blank-row guide continuity is represented as compressed ranges resolved from the next nonblank row, so edits never walk a long blank suffix.
Summary
Functions
Returns the smallest final half-open range whose blank continuity can change at a splice.
Returns compressed resolved guide levels for a half-open row range.
Applies one immutable-base row splice and returns the updated index.
Types
@type t() :: %MingaEditor.RenderModel.Window.GuideIndex{ root: tree_node(), row_count: non_neg_integer() }
@type tree_node() :: MingaEditor.RenderModel.Window.LazyRowTree.t( non_neg_integer(), non_neg_integer() )
Functions
@spec affected_bounds(t(), non_neg_integer(), non_neg_integer()) :: {non_neg_integer(), non_neg_integer()}
Returns the smallest final half-open range whose blank continuity can change at a splice.
@spec all_runs(t()) :: [Minga.RenderModel.Window.ResidentSemantics.GuideRun.t()]
@spec build([MingaEditor.RenderModel.Window.VisualRow.t()], pos_integer()) :: t()
@spec max_level(t()) :: non_neg_integer()
@spec runs(t(), non_neg_integer(), non_neg_integer()) :: [ Minga.RenderModel.Window.ResidentSemantics.GuideRun.t() ]
Returns compressed resolved guide levels for a half-open row range.
@spec splice( t(), non_neg_integer(), non_neg_integer(), [MingaEditor.RenderModel.Window.VisualRow.t()], pos_integer() ) :: t()
Applies one immutable-base row splice and returns the updated index.
@spec work(t(), non_neg_integer(), non_neg_integer()) :: non_neg_integer()