Raxol.Terminal.OperationsBehaviour behaviour (Raxol v2.0.1)

View Source

Defines the behaviour for core terminal operations.

This behaviour consolidates all the essential terminal operations that were previously missing proper behaviour definitions. It includes operations for:

  • Cursor management
  • Screen manipulation
  • Text input/output
  • Selection handling
  • Display control

Summary

Types

color()

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

dimensions()

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

position()

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

scroll_region()

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

style()

@type style() :: map() | nil

t()

@type t() :: term()

Callbacks

cleanup(t)

@callback cleanup(t()) :: t()

clear_line(t, non_neg_integer)

@callback clear_line(t(), non_neg_integer()) :: t()

clear_screen(t)

@callback clear_screen(t()) :: t()

clear_selection(t)

@callback clear_selection(t()) :: t()

cursor_blinking?(t)

@callback cursor_blinking?(t()) :: boolean()

cursor_visible?(t)

@callback cursor_visible?(t()) :: boolean()

delete_chars(t, non_neg_integer)

@callback delete_chars(t(), non_neg_integer()) :: t()

delete_lines(t, non_neg_integer)

@callback delete_lines(t(), non_neg_integer()) :: t()

erase_chars(t, non_neg_integer)

@callback erase_chars(t(), non_neg_integer()) :: t()

erase_display(t, atom)

@callback erase_display(t(), atom()) :: t()

erase_from_cursor_to_end(t)

@callback erase_from_cursor_to_end(t()) :: t()

erase_from_start_to_cursor(t)

@callback erase_from_start_to_cursor(t()) :: t()

erase_in_display(t, atom)

@callback erase_in_display(t(), atom()) :: t()

erase_in_line(t, atom)

@callback erase_in_line(t(), atom()) :: t()

erase_line(t, atom)

@callback erase_line(t(), atom()) :: t()

get_cell_at(t, non_neg_integer, non_neg_integer)

@callback get_cell_at(t(), non_neg_integer(), non_neg_integer()) ::
  Raxol.Terminal.Cell.t()

get_content(t)

@callback get_content(t()) :: [[Raxol.Terminal.Cell.t()]]

get_cursor_position(t)

@callback get_cursor_position(t()) :: position()

get_cursor_style(t)

@callback get_cursor_style(t()) :: atom()

get_line(t, non_neg_integer)

@callback get_line(t(), non_neg_integer()) :: [Raxol.Terminal.Cell.t()]

get_scroll_bottom(t)

@callback get_scroll_bottom(t()) :: non_neg_integer()

get_scroll_region(t)

@callback get_scroll_region(t()) :: scroll_region()

get_scroll_top(t)

@callback get_scroll_top(t()) :: non_neg_integer()

get_selection(t)

@callback get_selection(t()) :: {position(), position()}

get_selection_boundaries(t)

@callback get_selection_boundaries(t()) :: {position(), position()}

get_selection_end(t)

@callback get_selection_end(t()) :: position()

get_selection_start(t)

@callback get_selection_start(t()) :: position()

get_state(t)

@callback get_state(t()) :: map()

get_style(t)

@callback get_style(t()) :: style()

get_text_in_region(t, non_neg_integer, non_neg_integer, non_neg_integer, non_neg_integer)

@callback get_text_in_region(
  t(),
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer()
) :: String.t()

in_selection?(t, non_neg_integer, non_neg_integer)

@callback in_selection?(t(), non_neg_integer(), non_neg_integer()) :: boolean()

insert_chars(t, non_neg_integer)

@callback insert_chars(t(), non_neg_integer()) :: t()

insert_lines(t, non_neg_integer)

@callback insert_lines(t(), non_neg_integer()) :: t()

prepend_lines(t, non_neg_integer)

@callback prepend_lines(t(), non_neg_integer()) :: t()

reset_charset_state(t)

@callback reset_charset_state(t()) :: t()

resolve_load_order(t)

@callback resolve_load_order(t()) :: t()

selection_active?(t)

@callback selection_active?(t()) :: boolean()

set_cursor_blink(t, boolean)

@callback set_cursor_blink(t(), boolean()) :: t()

set_cursor_position(t, non_neg_integer, non_neg_integer)

@callback set_cursor_position(t(), non_neg_integer(), non_neg_integer()) :: t()

set_cursor_style(t, atom)

@callback set_cursor_style(t(), atom()) :: t()

set_cursor_visibility(t, boolean)

@callback set_cursor_visibility(t(), boolean()) :: t()

set_scroll_region(t, scroll_region)

@callback set_scroll_region(t(), scroll_region()) :: t()

start_selection(t, non_neg_integer, non_neg_integer)

@callback start_selection(t(), non_neg_integer(), non_neg_integer()) :: t()

stop(t)

@callback stop(t()) :: t()

toggle_blink(t)

@callback toggle_blink(t()) :: t()

toggle_visibility(t)

@callback toggle_visibility(t()) :: t()

update_blink(t)

@callback update_blink(t()) :: t()

update_selection(t, non_neg_integer, non_neg_integer)

@callback update_selection(t(), non_neg_integer(), non_neg_integer()) :: t()

write_string(t, non_neg_integer, non_neg_integer, t, style)

@callback write_string(
  t(),
  non_neg_integer(),
  non_neg_integer(),
  String.t(),
  style()
) :: t()