Raxol.Terminal.Modes (Raxol v0.4.0)
View SourceHandles terminal modes and state transitions for the terminal emulator.
This module provides functions for managing terminal modes, processing escape sequences, and handling terminal state transitions.
Summary
Functions
Checks if a terminal mode is active.
Returns a list of all active terminal modes.
Creates a new terminal mode state.
Processes an escape sequence for terminal mode changes.
Resets a specific terminal mode to its default value.
Restores a previously saved terminal mode state.
Saves the current terminal mode state.
Sets a terminal mode.
Returns a string representation of the terminal mode state.
Types
Functions
Checks if a terminal mode is active.
Examples
iex> modes = Modes.new()
iex> Modes.active?(modes, :normal)
true
iex> Modes.active?(modes, :insert)
false
Returns a list of all active terminal modes.
Examples
iex> modes = Modes.new()
iex> Modes.active_modes(modes)
[:normal, :replace]
Creates a new terminal mode state.
Examples
iex> modes = Modes.new()
iex> modes.insert
false
Processes an escape sequence for terminal mode changes.
Examples
iex> modes = Modes.new()
iex> {modes, _} = Modes.process_escape(modes, "?1049h")
iex> Modes.active?(modes, :alternate_screen)
true
@spec reset_mode(mode_state(), atom()) :: mode_state()
Resets a specific terminal mode to its default value.
Examples
iex> modes = Modes.new() |> Modes.set_mode(:insert)
iex> modes.insert
true
iex> modes = Modes.reset_mode(modes, :insert)
iex> modes.insert
false
iex> modes = Modes.reset_mode(modes, :replace) # replace defaults to true
iex> modes.replace
true
Restores a previously saved terminal mode state.
Examples
iex> modes = Modes.new()
iex> {modes, saved_modes} = Modes.save_state(modes)
iex> modes = Modes.set_mode(modes, :insert)
iex> modes = Modes.restore_state(modes, saved_modes)
iex> Modes.active?(modes, :normal)
true
Saves the current terminal mode state.
Examples
iex> modes = Modes.new()
iex> {modes, saved_modes} = Modes.save_state(modes)
iex> modes = Modes.set_mode(modes, :insert)
iex> modes = Modes.restore_state(modes, saved_modes)
iex> Modes.active?(modes, :normal)
true
Sets a terminal mode.
Examples
iex> modes = Modes.new()
iex> modes = Modes.set_mode(modes, :insert)
iex> modes.insert
true
iex> modes.replace
false
Returns a string representation of the terminal mode state.
Examples
iex> modes = Modes.new()
iex> Modes.to_string(modes)
"Terminal Modes: normal, replace"