Vibe.UI.Editor (vibe v0.2.2)

Copy Markdown View Source

Pure multiline editor model shared by terminal and future LiveView adapters.

Summary

Types

command()

@type command() ::
  {:submit, String.t()}
  | {:slash_command, String.t(), String.t()}
  | :cancel
  | :toggle_truncation
  | :paste_image
  | {:external_editor, String.t()}

key()

@type key() ::
  :left
  | :right
  | :word_left
  | :word_right
  | :up
  | :down
  | :home
  | :end
  | :backspace
  | :delete_word_left
  | :delete
  | :enter
  | :submit
  | :cancel
  | :toggle_truncation
  | :cycle_model_forward
  | :cycle_model_backward
  | :open_model_selector
  | :paste_image
  | :cycle_effort
  | :tab
  | {:insert, String.t()}
  | {:paste, String.t()}
  | {:complete, [String.t()]}
  | :external_editor
  | {:external_result, String.t()}

t()

@type t() :: %Vibe.UI.Editor{
  clipboard: term(),
  completion_index: term(),
  completions: term(),
  cursor: term(),
  history: term(),
  history_index: term(),
  text: term()
}

Functions

handle_key(editor, arg2)

@spec handle_key(t(), key()) :: {t(), [command()]}

line_column(editor)

@spec line_column(t()) :: {non_neg_integer(), non_neg_integer()}

lines(editor)

@spec lines(t()) :: [String.t()]

new(opts \\ [])

@spec new(keyword()) :: t()