Struct Subscriptions

Source
pub struct Subscriptions(HashMap<SubscriptionKey, Vec<Subscription>>);
Expand description

A map of all registered subscriptions.

Tuple Fields§

§0: HashMap<SubscriptionKey, Vec<Subscription>>

Implementations§

Source§

impl Subscriptions

Source

pub fn new() -> Self

Source

pub fn subscribe<F>( &mut self, key: SubscriptionKey, args: &[&str], cb: F, ) -> SubscriptionHandle
where F: Fn(Vec<String>) + 'static,

Subscribe to a Neovim autocmd event.

Subscriptions are not active immediately but only after set_autocmds is called. At the moment, all calls to subscribe must be made before calling set_autocmds.

This function is wrapped by shell::State.

§Arguments:
  • key: The subscription key to register. See :help autocmd-events for a list of supported event names. Event names can be comma-separated.

  • args: A list of expressions to be evaluated when the event triggers. Expressions are evaluated using Vimscript. The results are passed to the callback as a list of Strings. This is especially useful as Neovim::eval is synchronous and might block if called from the callback function; so always use the args mechanism instead.

  • cb: The callback function. This will be called each time the event triggers or when run_now is called. It is passed a vector with the results of the evaluated expressions given with args.

§Example

Call a function each time a buffer is entered or the current working directory is changed. Pass the current buffer name and directory to the callback.

let my_subscription = shell.state.borrow()
    .subscribe("BufEnter,DirChanged", &["expand(@%)", "getcwd()"], move |args| {
        let filename = &args[0];
        let dir = &args[1];
        // do stuff
    });
Source

pub fn set_autocmds(&self, nvim: &mut NeovimRef<'_>)

Register all subscriptions with Neovim.

This function is wrapped by shell::State.

Source

fn on_notify(&self, key: &SubscriptionKey, index: usize, args: Vec<String>)

Trigger given event.

Source

pub fn notify(&self, params: Vec<Value>) -> Result<(), String>

Wrapper around on_notify for easy calling with a neovim_lib::Handler implementation.

This function is wrapped by shell::State.

Source

pub fn run_now(&self, handle: &SubscriptionHandle, nvim: &mut NeovimRef<'_>)

Manually trigger the given subscription.

The nvim instance is needed to evaluate the args expressions.

This function is wrapped by shell::State.

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> 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, 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.