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>>, ) -> PluginApi

Create a new plugin API context

Source

pub fn register_hook( &self, hook_name: &str, callback: Box<dyn Fn(&HookArgs) -> bool + Sync + Send>, )

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) -> PluginApi

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> TryClone for T
where T: Clone,

Source§

fn try_clone(&self) -> Result<T, Error>

Clones self, possibly returning an error.
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ParallelSend for T