Packages
Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.
Current section
Files
Jump to
Current section
Files
lib/raxol/terminal/screen_buffer/mode.ex
defmodule Raxol.Terminal.ScreenBuffer.Mode do
@moduledoc """
Handles terminal mode state management.
"""
defstruct [:insert_mode, :origin_mode, :auto_wrap, :cursor_visible]
@type t :: %__MODULE__{
insert_mode: boolean(),
origin_mode: boolean(),
auto_wrap: boolean(),
cursor_visible: boolean()
}
@doc """
Initializes a new mode state.
"""
def init do
%__MODULE__{
insert_mode: false,
origin_mode: false,
auto_wrap: true,
cursor_visible: true
}
end
@doc """
Handles mode changes.
"""
def handle(%__MODULE__{} = state, mode, value) do
case mode do
:insert_mode -> %{state | insert_mode: value}
:origin_mode -> %{state | origin_mode: value}
:auto_wrap -> %{state | auto_wrap: value}
:cursor_visible -> %{state | cursor_visible: value}
_ -> state
end
end
end