Skip to main content

Plugin

Trait Plugin 

Source
pub trait Plugin: Send {
Show 23 methods // Required methods fn id(&self) -> &str; fn name(&self) -> &str; fn init(&mut self, ctx: &mut PluginContext) -> Result<(), Box<dyn Error>>; // Provided methods fn handle_key(&mut self, _key: KeyEvent) -> bool { ... } fn handle_mouse(&mut self, _event: &MouseEvent) -> bool { ... } fn render(&self, _f: &mut Frame<'_>, _area: Rect) { ... } fn tick(&mut self) { ... } fn on_focus(&mut self) { ... } fn on_blur(&mut self) { ... } fn on_theme_change(&mut self, _theme: &Theme) { ... } fn on_user_update(&mut self, _user: Option<&User>) { ... } fn status_hints(&self) -> Vec<(String, String)> { ... } fn commands(&self) -> Vec<PluginCmdItem> { ... } fn handle_palette_command(&mut self, _index: usize) { ... } fn on_plugin_message(&mut self, _from: &str, _action: &str, _data: &str) { ... } fn shutdown(&mut self) { ... } fn binary_path(&self) -> Option<&Path> { ... } fn is_alive(&self) -> bool { ... } fn can_background(&self) -> bool { ... } fn set_capabilities(&mut self, _caps: Vec<String>) { ... } fn persistent(&self) -> bool { ... } fn set_persistent(&mut self, _persistent: bool) { ... } fn take_pending_esc_result(&mut self) -> Option<bool> { ... }
}

Required Methods§

Source

fn id(&self) -> &str

Source

fn name(&self) -> &str

Source

fn init(&mut self, ctx: &mut PluginContext) -> Result<(), Box<dyn Error>>

Provided Methods§

Source

fn handle_key(&mut self, _key: KeyEvent) -> bool

Source

fn handle_mouse(&mut self, _event: &MouseEvent) -> bool

Source

fn render(&self, _f: &mut Frame<'_>, _area: Rect)

Source

fn tick(&mut self)

Source

fn on_focus(&mut self)

Source

fn on_blur(&mut self)

Source

fn on_theme_change(&mut self, _theme: &Theme)

Source

fn on_user_update(&mut self, _user: Option<&User>)

Source

fn status_hints(&self) -> Vec<(String, String)>

Source

fn commands(&self) -> Vec<PluginCmdItem>

Palette commands that this plugin registers (category, label).

Source

fn handle_palette_command(&mut self, _index: usize)

Called when a palette command from this plugin is selected. index is the position in commands().

Source

fn on_plugin_message(&mut self, _from: &str, _action: &str, _data: &str)

Called when a plugin-to-plugin message arrives.

Source

fn shutdown(&mut self)

Called before the plugin is unloaded (hot-reload or app exit). The plugin should flush state, close handles, and prepare to be dropped. For IPC plugins this sends Shutdown and waits briefly for a response before the child process is killed.

Source

fn binary_path(&self) -> Option<&Path>

Return the filesystem path to this plugin’s binary, if it runs as an external process. None for in-process plugins. Used by the hot-reload mechanism to detect when the binary has been updated on disk.

Source

fn is_alive(&self) -> bool

Whether the plugin process is still running. Returns true for in-process plugins. IPC plugins override this to check the child process.

Source

fn can_background(&self) -> bool

Whether the plugin supports running in the background when the user presses Esc (e.g., audio players that should keep playing). Default is false. Override to return true for background-capable plugins.

Source

fn set_capabilities(&mut self, _caps: Vec<String>)

Set runtime capabilities (e.g. "background") declared in the plugin manifest. Default is no-op; IPC plugins override this to store the value.

Source

fn persistent(&self) -> bool

Whether this plugin should stay loaded when the user presses Esc. Persistent plugins are blurred but not shut down, keeping their palette entries and background processes alive. Default is false. Override to return true for plugins that must not be unloaded (e.g., the registry plugin).

Source

fn set_persistent(&mut self, _persistent: bool)

Mark this plugin as persistent. Default is no-op; IPC plugins override this to store the value.

Source

fn take_pending_esc_result(&mut self) -> Option<bool>

Check if a pending Esc key response has been resolved. Returns Some(consumed) if resolved, None if still pending or no Esc was sent. IPC plugins override this; in-process plugins don’t need it.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§