Struct nvim_gtk::subscriptions::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
sourceimpl Subscriptions
impl Subscriptions
pub fn new() -> Self
sourcepub fn subscribe<F>(
&mut self,
key: SubscriptionKey,
args: &[&str],
cb: F
) -> SubscriptionHandlewhere
F: Fn(Vec<String>) + 'static,
pub fn subscribe<F>(
&mut self,
key: SubscriptionKey,
args: &[&str],
cb: F
) -> SubscriptionHandlewhere
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-eventsfor 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::evalis synchronous and might block if called from the callback function; so always use theargsmechanism instead. -
cb: The callback function. This will be called each time the event triggers or whenrun_nowis 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.