Skip to main content

PluginApi

Struct PluginApi 

Source
pub struct PluginApi { /* private fields */ }
Expand description

Plugin API context - provides safe access to editor functionality

Implementations§

Source§

impl PluginApi

Source

pub fn new( hooks: Arc<RwLock<HookRegistry>>, commands: Arc<RwLock<CommandRegistry>>, command_sender: Sender<PluginCommand>, state_snapshot: Arc<RwLock<EditorStateSnapshot>>, ) -> Self

Create a new plugin API context

Source

pub fn register_hook(&self, hook_name: &str, callback: HookCallback)

Register a hook callback

Source

pub fn unregister_hooks(&self, hook_name: &str)

Remove all hooks for a specific name

Source

pub fn register_command(&self, command: Command)

Register a command

Source

pub fn unregister_command(&self, name: &str)

Unregister a command by name

Source

pub fn send_command(&self, command: PluginCommand) -> Result<(), String>

Send a command to the editor (async/non-blocking)

Source

pub fn insert_text( &self, buffer_id: BufferId, position: usize, text: String, ) -> Result<(), String>

Insert text at a position in a buffer

Source

pub fn delete_range( &self, buffer_id: BufferId, range: Range<usize>, ) -> Result<(), String>

Delete a range of text from a buffer

Source

pub fn add_overlay( &self, buffer_id: BufferId, namespace: Option<String>, range: Range<usize>, options: OverlayOptions, ) -> Result<(), String>

Add an overlay (decoration) to a buffer Add an overlay to a buffer with styling options

Returns an opaque handle that can be used to remove the overlay later.

Colors can be specified as RGB arrays or theme key strings. Theme keys are resolved at render time, so overlays update with theme changes.

Source

pub fn remove_overlay( &self, buffer_id: BufferId, handle: String, ) -> Result<(), String>

Remove an overlay from a buffer by its handle

Source

pub fn clear_namespace( &self, buffer_id: BufferId, namespace: String, ) -> Result<(), String>

Clear all overlays in a namespace from a buffer

Source

pub fn clear_overlays_in_range( &self, buffer_id: BufferId, start: usize, end: usize, ) -> Result<(), String>

Clear all overlays that overlap with a byte range Used for targeted invalidation when content changes

Source

pub fn set_status(&self, message: String) -> Result<(), String>

Set the status message

Source

pub fn open_file_at_location( &self, path: PathBuf, line: Option<usize>, column: Option<usize>, ) -> Result<(), String>

Open a file at a specific line and column (1-indexed) This is useful for jumping to locations from git grep, LSP definitions, etc.

Source

pub fn open_file_in_split( &self, split_id: usize, path: PathBuf, line: Option<usize>, column: Option<usize>, ) -> Result<(), String>

Open a file in a specific split at a line and column

Similar to open_file_at_location but targets a specific split pane. The split_id is the ID of the split pane to open the file in.

Source

pub fn start_prompt( &self, label: String, prompt_type: String, ) -> Result<(), String>

Start a prompt (minibuffer) with a custom type identifier The prompt_type is used to filter hooks in plugin code

Source

pub fn set_prompt_suggestions( &self, suggestions: Vec<Suggestion>, ) -> Result<(), String>

Set the suggestions for the current prompt This updates the prompt’s autocomplete/selection list

Source

pub fn set_prompt_input_sync(&self, sync: bool) -> Result<(), String>

Enable/disable syncing prompt input text when navigating suggestions

Source

pub fn add_menu_item( &self, menu_label: String, item: MenuItem, position: MenuPosition, ) -> Result<(), String>

Add a menu item to an existing menu

Source

pub fn add_menu(&self, menu: Menu, position: MenuPosition) -> Result<(), String>

Add a new top-level menu

Source

pub fn remove_menu_item( &self, menu_label: String, item_label: String, ) -> Result<(), String>

Remove a menu item from a menu

Source

pub fn remove_menu(&self, menu_label: String) -> Result<(), String>

Remove a top-level menu

Source

pub fn create_virtual_buffer( &self, name: String, mode: String, read_only: bool, ) -> Result<(), String>

Create a new virtual buffer (not backed by a file)

Virtual buffers are used for special displays like diagnostic lists, search results, etc. They have their own mode for keybindings.

Source

pub fn create_virtual_buffer_with_content( &self, name: String, mode: String, read_only: bool, entries: Vec<TextPropertyEntry>, ) -> Result<(), String>

Create a virtual buffer and set its content in one operation

This is the preferred way to create virtual buffers since it doesn’t require tracking the buffer ID. The buffer is created and populated atomically.

Source

pub fn set_virtual_buffer_content( &self, buffer_id: BufferId, entries: Vec<TextPropertyEntry>, ) -> Result<(), String>

Set the content of a virtual buffer with text properties

Each entry contains text and metadata properties (e.g., source location).

Source

pub fn get_text_properties_at_cursor( &self, buffer_id: BufferId, ) -> Result<(), String>

Get text properties at cursor position in a buffer

This triggers a command that will make properties available to plugins.

Source

pub fn define_mode( &self, name: String, bindings: Vec<(String, String)>, read_only: bool, allow_text_input: bool, ) -> Result<(), String>

Define a buffer mode with keybindings

Bindings are specified as (key_string, command_name) pairs.

Source

pub fn show_buffer(&self, buffer_id: BufferId) -> Result<(), String>

Switch the current split to display a buffer

Source

pub fn set_split_scroll( &self, split_id: usize, top_byte: usize, ) -> Result<(), String>

Set the scroll position of a specific split

Source

pub fn get_highlights( &self, buffer_id: BufferId, range: Range<usize>, request_id: u64, ) -> Result<(), String>

Request syntax highlights for a buffer range

Source

pub fn get_active_buffer_id(&self) -> BufferId

Get the currently active buffer ID

Source

pub fn get_active_split_id(&self) -> usize

Get the currently active split ID

Source

pub fn get_buffer_info(&self, buffer_id: BufferId) -> Option<BufferInfo>

Get information about a specific buffer

Source

pub fn list_buffers(&self) -> Vec<BufferInfo>

Get all buffer IDs

Source

pub fn get_primary_cursor(&self) -> Option<CursorInfo>

Get primary cursor information for the active buffer

Source

pub fn get_all_cursors(&self) -> Vec<CursorInfo>

Get all cursor information for the active buffer

Source

pub fn get_viewport(&self) -> Option<ViewportInfo>

Get viewport information for the active buffer

Source

pub fn state_snapshot_handle(&self) -> Arc<RwLock<EditorStateSnapshot>>

Get access to the state snapshot Arc (for internal use)

Trait Implementations§

Source§

impl Clone for PluginApi

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.