MingaEditor.MacroRecorder (Minga v0.1.0)

Copy Markdown View Source

Records and replays named keystroke macros.

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, String.t(), [key()]}
  | {:replaying, pos_integer(), post_phase()}

post_phase()

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

t()

@type t() :: %MingaEditor.MacroRecorder{
  last_register: String.t() | nil,
  phase: phase(),
  registers: %{required(String.t()) => [key()]}
}

Functions

get_macro(macro_recorder, register)

@spec get_macro(t(), String.t()) :: [key()] | nil

last_register(macro_recorder)

@spec last_register(t()) :: String.t() | nil

new()

@spec new() :: t()

put_macro(rec, register, keys)

@spec put_macro(t(), String.t(), [key()]) :: t()

record_key(rec, key)

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

recording?(macro_recorder)

@spec recording?(t()) :: {true, String.t()} | false

replaying?(macro_recorder)

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

select_replay_register(rec, register)

@spec select_replay_register(t(), String.t()) :: t()

start_recording(rec, register)

@spec start_recording(t(), String.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()