pub enum HookArgs {
Show 51 variants
BeforeFileOpen {
path: PathBuf,
},
AfterFileOpen {
buffer_id: BufferId,
path: PathBuf,
},
BeforeFileSave {
buffer_id: BufferId,
path: PathBuf,
},
AfterFileSave {
buffer_id: BufferId,
path: PathBuf,
},
AfterFileExplorerChange {
path: PathBuf,
},
BufferClosed {
buffer_id: BufferId,
},
BeforeInsert {
buffer_id: BufferId,
position: usize,
text: String,
},
AfterInsert {
buffer_id: BufferId,
position: usize,
text: String,
affected_start: usize,
affected_end: usize,
start_line: usize,
end_line: usize,
lines_added: usize,
},
BeforeDelete {
buffer_id: BufferId,
start: usize,
end: usize,
},
AfterDelete {
buffer_id: BufferId,
start: usize,
end: usize,
deleted_text: String,
affected_start: usize,
deleted_len: usize,
start_line: usize,
end_line: usize,
lines_removed: usize,
},
CursorMoved {
buffer_id: BufferId,
cursor_id: CursorId,
old_position: usize,
new_position: usize,
line: usize,
text_properties: Vec<HashMap<String, Value>>,
},
BufferActivated {
buffer_id: BufferId,
},
BufferDeactivated {
buffer_id: BufferId,
},
DiagnosticsUpdated {
uri: String,
count: usize,
},
PreCommand {
action: Action,
},
PostCommand {
action: Action,
},
Idle {
milliseconds: u64,
},
EditorInitialized {},
PluginsLoaded {},
Ready {},
AuthorityChanged {
label: String,
},
RenderStart {
buffer_id: BufferId,
},
RenderLine {
buffer_id: BufferId,
line_number: usize,
byte_start: usize,
byte_end: usize,
content: String,
},
LinesChanged {
buffer_id: BufferId,
lines: Vec<LineInfo>,
},
PromptChanged {
prompt_type: String,
input: String,
},
PromptConfirmed {
prompt_type: String,
input: String,
selected_index: Option<usize>,
},
PromptCancelled {
prompt_type: String,
input: String,
},
PromptSelectionChanged {
prompt_type: String,
selected_index: usize,
},
KeyboardShortcuts {
bindings: Vec<(String, String)>,
},
LspReferences {
symbol: String,
locations: Vec<LspLocation>,
},
ViewTransformRequest {
buffer_id: BufferId,
split_id: SplitId,
viewport_start: usize,
viewport_end: usize,
tokens: Vec<ViewTokenWire>,
cursor_positions: Vec<usize>,
},
MouseClick {
column: u16,
row: u16,
button: String,
modifiers: String,
content_x: u16,
content_y: u16,
buffer_id: Option<u64>,
buffer_row: Option<u32>,
buffer_col: Option<u32>,
},
MouseMove {
column: u16,
row: u16,
content_x: u16,
content_y: u16,
},
LspServerRequest {
language: String,
method: String,
server_command: String,
params: Option<String>,
},
ViewportChanged {
split_id: SplitId,
buffer_id: BufferId,
top_byte: usize,
top_line: Option<usize>,
width: u16,
height: u16,
},
LspServerError {
language: String,
server_command: String,
error_type: String,
message: String,
},
LspStatusClicked {
language: String,
has_error: bool,
missing_servers: Vec<String>,
user_dismissed: bool,
},
ActionPopupResult {
popup_id: String,
action_id: String,
},
ProcessOutput {
process_id: u64,
data: String,
},
WindowCreated {
id: u64,
label: String,
root: String,
},
WindowClosed {
id: u64,
},
ActiveWindowChanged {
previous_id: Option<u64>,
active_id: u64,
},
TerminalOutput {
terminal_id: u64,
last_line: String,
},
TerminalExited {
terminal_id: u64,
exit_code: Option<i32>,
},
PathChanged {
handle: u64,
path: String,
kind: String,
},
LanguageChanged {
buffer_id: BufferId,
language: String,
},
ThemeInspectKey {
theme_name: String,
key: String,
},
MouseScroll {
buffer_id: BufferId,
delta: i32,
col: u16,
row: u16,
},
Resize {
width: u16,
height: u16,
},
FocusGained {},
WidgetEvent {
panel_id: u64,
widget_key: String,
event_type: String,
payload: Value,
},
}Expand description
Arguments passed to hook callbacks
Variants§
BeforeFileOpen
Before a file is opened
AfterFileOpen
After a file is successfully opened
BeforeFileSave
Before a buffer is saved to disk
AfterFileSave
After a buffer is successfully saved
AfterFileExplorerChange
The file explorer mutated the filesystem (paste, duplicate, …)
without going through a buffer save. Plugins that surface
filesystem-derived state (git status decorations, etc.) use this
to re-scan after explorer-driven changes that wouldn’t otherwise
fire BeforeFileSave/AfterFileSave. path is one of the
affected paths; for batch operations (multi-paste) the hook
fires once per refresh, not once per file.
BufferClosed
A buffer was closed
BeforeInsert
Before text is inserted
AfterInsert
After text was inserted
Fields
BeforeDelete
Before text is deleted
AfterDelete
After text was deleted
Fields
CursorMoved
Cursor moved to a new position
Fields
BufferActivated
Buffer became active
BufferDeactivated
Buffer was deactivated
DiagnosticsUpdated
LSP diagnostics were updated for a file
Fields
PreCommand
Before a command/action is executed
PostCommand
After a command/action was executed
Idle
Editor has been idle for N milliseconds (no input)
EditorInitialized
Editor is initializing
PluginsLoaded
All plugin packages + init.ts have been loaded. Fires after the plugin discovery loop and before session restore — the lifecycle hook for code that wants to configure a plugin via its getPluginApi(…) surface. See design §3.3 (phase 2).
Ready
Editor has completed startup: plugins are loaded, session is restored, and the active buffer exists. Design §3.3 (phase 3).
AuthorityChanged
The editor’s active authority changed (e.g. local → container,
container → local). Fires after the new authority is in place
and the plugin state snapshot has been refreshed, so handlers
can read the new label via editor.getAuthorityLabel().
Plugins use this to re-register state-dependent commands
that should only appear in one authority mode (e.g. dev
container Detach only when attached). In production a
transition triggers a full editor restart that re-runs plugin
init from scratch; this hook lets plugins react inline
without that, which keeps the harness in sync too.
RenderStart
Rendering is starting for a buffer (called once per buffer before render_line hooks)
RenderLine
A line is being rendered (called during the rendering pass)
LinesChanged
Lines have changed and need processing (batched for efficiency)
PromptChanged
Prompt input changed (user typed/edited)
PromptConfirmed
Prompt was confirmed (user pressed Enter)
PromptCancelled
Prompt was cancelled (user pressed Escape/Ctrl+G)
PromptSelectionChanged
Prompt suggestion selection changed (user navigated with Up/Down)
KeyboardShortcuts
Request keyboard shortcuts data (key, action) for the help buffer
LspReferences
LSP find references response received
Fields
locations: Vec<LspLocation>The locations where the symbol is referenced
ViewTransformRequest
View transform request
Fields
tokens: Vec<ViewTokenWire>Base tokens (Text, Newline, Space) from the source
MouseClick
Mouse click event
Fields
Mouse button: “left”, “right”, “middle”
MouseMove
Mouse move/hover event
Fields
LspServerRequest
LSP server request (server -> client)
Fields
ViewportChanged
Viewport changed (scrolled or resized)
Fields
LspServerError
LSP server failed to start or crashed
Fields
LspStatusClicked
User clicked the LSP status indicator
Fields
ActionPopupResult
User selected an action from an action popup
ProcessOutput
Background process output (streaming)
WindowCreated
A new editor session was created. Fires after the session is
added to Editor.sessions, before any UI retarget. Plugins
(like Orchestrator) use this to reconcile their per-session
bookkeeping with the editor.
Fields
WindowClosed
An editor session was closed and its state dropped. The id
is still valid in the payload but is no longer present in
editor.listWindows().
ActiveWindowChanged
The active session changed. Fires after the editor’s UI has retargeted (file tree, working_dir, snapshot). Plugins observing for “the editor’s project root just changed” use this rather than polling.
Fields
TerminalOutput
PTY terminal received output bytes from the spawned process.
Fires for every async batch the editor reads off the PTY, so it
is hot — consumers should be cheap. The payload includes only a
snapshot of the last visible (cursor) row so plugins can detect
prompt patterns ((Y/n), Press enter, > ) without an extra
readback API. Plugins that need full output should tail the
terminal’s backing file via the existing buffer.
Fields
TerminalExited
PTY terminal’s spawned process has ended. Fires once per terminal lifetime, after the editor has flushed any final scrollback to the backing file.
Fields
PathChanged
A path under a watchPath-registered watcher changed.
Plugins (Orchestrator’s collision radar, etc.) use this to
build path → modifying-session-set matrices. Fires once per
raw notify event — no debouncing in core; plugins coalesce
per their policy.
Fields
LanguageChanged
Buffer language was changed (e.g. via “Set Language” command or Save-As)
Fields
ThemeInspectKey
Request to inspect a theme key in the theme editor
Fields
MouseScroll
Mouse scroll event (wheel up/down)
Fields
Resize
Terminal was resized
FocusGained
Terminal focus was gained (e.g. user switched back to the editor)
WidgetEvent
A widget mounted via MountWidgetPanel emitted a semantic event.
Plugins subscribe via editor.on("widget_event", "<handler>")
and dispatch on (panel_id, widget_key, event_type).
event_type is one of: "activate", "toggle", "change",
"submit", "hover", "dismiss", "focus". payload is
event-specific JSON (e.g. { "value": "search text" } for
change, { "previous": "<old key>" } for focus).
At v1 only widgets that have user-driven behaviour fire this hook. The HintBar widget is read-only and does not emit events.
Trait Implementations§
Source§impl Serialize for HookArgs
impl Serialize for HookArgs
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for HookArgs
impl RefUnwindSafe for HookArgs
impl Send for HookArgs
impl Sync for HookArgs
impl Unpin for HookArgs
impl UnsafeUnpin for HookArgs
impl UnwindSafe for HookArgs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more