You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
neovide/src/bridge/handler.rs

33 lines
935 B
Rust

use rmpv::Value;
use nvim_rs::{Neovim, Handler, compat::tokio::Compat};
use async_trait::async_trait;
use tokio::process::ChildStdin;
5 years ago
use tokio::task;
use log::trace;
5 years ago
use crate::settings::SETTINGS;
use super::events::handle_redraw_event_group;
#[derive(Clone)]
pub struct NeovimHandler();
#[async_trait]
impl Handler for NeovimHandler {
type Writer = Compat<ChildStdin>;
async fn handle_notify(&self, event_name: String, arguments: Vec<Value>, _neovim: Neovim<Compat<ChildStdin>>) {
trace!("Neovim notification: {:?}", &event_name);
5 years ago
task::spawn_blocking(move || {
match event_name.as_ref() {
"redraw" => {
handle_redraw_event_group(arguments);
},
"setting_changed" => {
SETTINGS.handle_changed_notification(arguments);
},
_ => {}
}
}).await.ok();
}
}