keybinding

package
v0.44.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 26, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ContextCondition

type ContextCondition struct {
	Name  string
	Check func(app KeyHandlerContext) bool
}

ContextCondition represents a condition that must be met for key binding to be active

type HelpShortcut

type HelpShortcut struct {
	Key         string
	Description string
	Category    string
}

HelpShortcut represents a key shortcut for help display

type KeyAction

type KeyAction struct {
	ID          string
	Keys        []string
	Description string
	Category    string
	Handler     KeyHandler
	Context     KeyContext
	Priority    int
	Enabled     bool
}

KeyAction represents a key binding action with metadata

type KeyBindingManager

type KeyBindingManager struct {
	// contains filtered or unexported fields
}

KeyBindingManager manages the key binding system for ChatApplication

func NewKeyBindingManager

func NewKeyBindingManager(app KeyHandlerContext) *KeyBindingManager

NewKeyBindingManager creates a new key binding manager

func (*KeyBindingManager) GetHelpShortcuts

func (m *KeyBindingManager) GetHelpShortcuts() []HelpShortcut

GetHelpShortcuts returns help shortcuts for the current context

func (*KeyBindingManager) GetRegistry

func (m *KeyBindingManager) GetRegistry() KeyRegistry

GetRegistry returns the underlying registry (for advanced usage)

func (*KeyBindingManager) ProcessKey

func (m *KeyBindingManager) ProcessKey(keyMsg tea.KeyMsg) tea.Cmd

ProcessKey handles key input and executes the appropriate action

func (*KeyBindingManager) RegisterCustomAction

func (m *KeyBindingManager) RegisterCustomAction(action *KeyAction) error

RegisterCustomAction registers a new custom key action

type KeyContext

type KeyContext struct {
	Views        []domain.ViewState
	Conditions   []ContextCondition
	ExcludeViews []domain.ViewState
}

KeyContext defines when and where a key binding is active

type KeyHandler

type KeyHandler func(app KeyHandlerContext, keyMsg tea.KeyMsg) tea.Cmd

KeyHandler represents a function that handles a key binding

type KeyHandlerContext

type KeyHandlerContext interface {
	// State management
	GetStateManager() *services.StateManager
	GetConversationRepository() domain.ConversationRepository
	GetConfig() *config.Config

	// UI components
	GetConversationView() ui.ConversationRenderer
	GetInputView() ui.InputComponent
	GetStatusView() ui.StatusComponent

	// Actions
	ToggleToolResultExpansion()
	SendMessage() tea.Cmd
	HasPendingApproval() bool
	GetPageSize() int
	ApproveToolCall() tea.Cmd
	DenyToolCall() tea.Cmd
}

KeyHandlerContext provides access to application context for key handlers

type KeyLayer

type KeyLayer struct {
	Name     string
	Priority int
	Bindings map[string]*KeyAction
	Matcher  LayerMatcher
}

KeyLayer represents a layer of key bindings with specific priority

type KeyRegistry

type KeyRegistry interface {
	Register(action *KeyAction) error
	Unregister(id string) error
	Resolve(key string, app KeyHandlerContext) *KeyAction
	GetAction(id string) *KeyAction
	GetActiveActions(app KeyHandlerContext) []*KeyAction
	GetHelpShortcuts(app KeyHandlerContext) []HelpShortcut
	AddLayer(layer *KeyLayer)
	GetLayers() []*KeyLayer
}

KeyRegistry manages all key bindings and their resolution

type LayerMatcher

type LayerMatcher func(app KeyHandlerContext) bool

LayerMatcher determines if a layer is currently active

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry implements the KeyRegistry interface

func NewRegistry

func NewRegistry() *Registry

NewRegistry creates a new key binding registry

func (*Registry) AddLayer

func (r *Registry) AddLayer(layer *KeyLayer)

AddLayer adds a new key layer to the registry

func (*Registry) GetAction

func (r *Registry) GetAction(id string) *KeyAction

GetAction retrieves an action by ID

func (*Registry) GetActiveActions

func (r *Registry) GetActiveActions(app KeyHandlerContext) []*KeyAction

GetActiveActions returns all currently active actions

func (*Registry) GetHelpShortcuts

func (r *Registry) GetHelpShortcuts(app KeyHandlerContext) []HelpShortcut

GetHelpShortcuts generates help shortcuts for current context

func (*Registry) GetLayers

func (r *Registry) GetLayers() []*KeyLayer

GetLayers returns all registered layers

func (*Registry) Register

func (r *Registry) Register(action *KeyAction) error

Register adds a new key binding action to the registry

func (*Registry) Resolve

func (r *Registry) Resolve(key string, app KeyHandlerContext) *KeyAction

Resolve finds the appropriate key action for a key press

func (*Registry) Unregister

func (r *Registry) Unregister(id string) error

Unregister removes a key binding action from the registry

type Theme

type Theme = shared.Theme

Theme is an alias to the shared Theme interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL