MingaEditor.RenderModel.Window.GuideIndex (Minga v0.1.0)

Copy Markdown View Source

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

t()

@type t() :: %MingaEditor.RenderModel.Window.GuideIndex{
  root: tree_node(),
  row_count: non_neg_integer()
}

tree_node()

@type tree_node() ::
  MingaEditor.RenderModel.Window.LazyRowTree.t(
    non_neg_integer(),
    non_neg_integer()
  )

Functions

affected_bounds(index, start_row, insert_count)

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

all_runs(index)

build(entries, tab_width)

max_level(guide_index)

@spec max_level(t()) :: non_neg_integer()

runs(guide_index, start_row, end_row)

Returns compressed resolved guide levels for a half-open row range.

splice(index, start_row, delete_count, inserted, tab_width)

Applies one immutable-base row splice and returns the updated index.

work(guide_index, start_row, end_row)