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
impl Subscriptions
pub fn new() -> Self
Sourcepub fn subscribe<F>(
&mut self,
key: SubscriptionKey,
args: &[&str],
cb: F,
) -> SubscriptionHandle
pub fn subscribe<F>( &mut self, key: SubscriptionKey, args: &[&str], cb: F, ) -> SubscriptionHandle
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 asNeovim::eval
is synchronous and might block if called from the callback function; so always use theargs
mechanism instead. -
cb
: The callback function. This will be called each time the event triggers or whenrun_now
is called. It is passed a vector with the results of the evaluated expressions given withargs
.
§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
});
Sourcepub fn set_autocmds(&self, nvim: &mut NeovimRef<'_>)
pub fn set_autocmds(&self, nvim: &mut NeovimRef<'_>)
Register all subscriptions with Neovim.
This function is wrapped by shell::State
.
Sourcefn on_notify(&self, key: &SubscriptionKey, index: usize, args: Vec<String>)
fn on_notify(&self, key: &SubscriptionKey, index: usize, args: Vec<String>)
Trigger given event.
Sourcepub fn notify(&self, params: Vec<Value>) -> Result<(), String>
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
.
Sourcepub fn run_now(&self, handle: &SubscriptionHandle, nvim: &mut NeovimRef<'_>)
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
.