Interprets side-effect instructions returned by event handlers.
Agent event handlers return {new_state, [effect()]} from their callbacks.
This module walks the effect list and applies each one, keeping handlers
testable as pure state -> {state, effects} functions.
Summary
Functions
Applies a list of effects to the editor state.
Types
@type effect() :: :render | :render_now | {:render, delay_ms :: pos_integer()} | {:open_file, String.t()} | {:switch_buffer, pid()} | {:set_status, String.t()} | :clear_status | {:push_overlay, module()} | {:pop_overlay, module()} | {:log_message, String.t()} | {:log_warning, String.t()} | {:log, atom(), atom(), String.t()} | :sync_agent_buffer | {:update_tab_label, String.t()} | {:monitor, pid()} | :stop_spinner | :start_spinner | {:rebuild_agent_session, MingaEditor.State.Tab.t()} | {:request_semantic_tokens} | {:send_after, term(), non_neg_integer()} | {:conceal_spans, pid(), [map()]} | {:prettify_symbols, pid()} | {:update_agent_styled_cache} | {:evict_parser_trees_timer} | {:refresh_tool_picker} | {:save_session_async, term(), keyword()} | {:compact_session, pid()} | {:restart_session_timer} | {:cancel_session_timer} | {:recover_swap_entries, [Minga.Session.swap_entry()]} | {:restore_session, keyword()} | {:request_code_lens} | {:request_inlay_hints} | {:save_session_deferred} | {:schedule_file_tree_refresh, non_neg_integer()} | {:handle_git_remote_result, reference(), term()}
Side effects returned by event handlers and pure state functions.
:render— schedule a debounced render{:render, delay_ms}— schedule render with custom delay{:open_file, path}— open a file in a new or existing buffer{:switch_buffer, pid}— make this buffer active{:set_status, msg}— show a status message in the minibuffer:clear_status— clear the status message{:push_overlay, module}— push an overlay handler onto the focus stack{:pop_overlay, module}— pop an overlay handler from the focus stack{:log_message, msg}— log to Messages buffer{:log_warning, msg}— log to both Messages and Warnings (warning level){:log, subsystem, level, msg}— log via Minga.Log:sync_agent_buffer— sync agent buffer with session output{:update_tab_label, label}— update active tab label{:monitor, pid}— monitor a buffer process{:stop_spinner}— cancel outgoing agent spinner timer{:start_spinner}— start incoming agent spinner timer{:rebuild_agent_session, tab}— rebuild agent state from session process{:request_semantic_tokens}— request semantic tokens from LSP{:send_after, msg, delay}— schedule a self-send after delay{:conceal_spans, pid, spans}— apply conceal spans to a buffer{:prettify_symbols, pid}— run prettify symbols on a buffer{:update_agent_styled_cache}— re-cache GUI styled messages{:evict_parser_trees_timer}— schedule next eviction check{:refresh_tool_picker}— refresh tool picker if open{:save_session_async, snapshot, opts}— persist session in background{:restart_session_timer}— restart the periodic session timer{:cancel_session_timer}— cancel the periodic session timer{:recover_swap_entries, entries}— recover swap file entries{:restore_session, opts}— restore session from disk{:request_code_lens}— request fresh code lenses from LSP{:request_inlay_hints}— request fresh inlay hints from LSP:render_now— render immediately after a handler updates state{:save_session_deferred}— send :save_session to self{:schedule_file_tree_refresh, delay}— debounce one filesystem tree refresh{:handle_git_remote_result, ref, result}— process git remote result
Functions
@spec apply_effects(MingaEditor.State.t(), [effect()]) :: MingaEditor.State.t()
Applies a list of effects to the editor state.
Agent event handlers return {new_state, [effect()]} from their callbacks.
The Editor interprets each effect. This keeps handlers testable as
pure state -> {state, effects} functions.