MingaEditor.ChangeRecorder (Minga v0.1.0)

Copy Markdown View Source

Records editing changes as raw key sequences for dot repeat.

The phase carries exactly one active lifecycle, while replay can preserve a post-replay recording phase that is restored after the outermost replay returns normally.

Summary

Types

key()

@type key() :: {non_neg_integer(), non_neg_integer()}

phase()

@type phase() ::
  :idle | {:recording, [key()]} | {:replaying, pos_integer(), post_phase()}

post_phase()

@type post_phase() :: :idle | {:recording, [key()]}

t()

@type t() :: %MingaEditor.ChangeRecorder{
  last_change: [key()] | nil,
  pending_keys: [key()],
  phase: phase()
}

Functions

buffer_pending_key(rec, key)

@spec buffer_pending_key(t(), key()) :: t()

cancel_recording(rec)

@spec cancel_recording(t()) :: t()

clear_pending(rec)

@spec clear_pending(t()) :: t()

get_last_change(change_recorder)

@spec get_last_change(t()) :: [key()] | nil

new()

@spec new() :: t()

record_key(rec, key)

@spec record_key(t(), key()) :: t()

recording?(change_recorder)

@spec recording?(t()) :: boolean()

replace_count(keys, new_count)

@spec replace_count([key()], non_neg_integer() | nil) :: [key()]

replaying?(change_recorder)

@spec replaying?(t()) :: boolean()

start_recording(rec)

@spec start_recording(t()) :: t()

start_recording_if_not(rec)

@spec start_recording_if_not(t()) :: t()

start_replay(rec)

@spec start_replay(t()) :: t()

stop_recording(rec)

@spec stop_recording(t()) :: t()

stop_replay(rec)

@spec stop_replay(t()) :: t()