From 616ffe15baa3efdb2bcb1dd222ae3c3564e0e922 Mon Sep 17 00:00:00 2001 From: Keith Simmons Date: Thu, 6 Jan 2022 22:09:05 -0800 Subject: [PATCH] don't setup separate thread --- src/bridge/handler.rs | 85 +++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 55 deletions(-) diff --git a/src/bridge/handler.rs b/src/bridge/handler.rs index f4cc55f..4a4d8c0 100644 --- a/src/bridge/handler.rs +++ b/src/bridge/handler.rs @@ -1,11 +1,7 @@ use async_trait::async_trait; -use futures::lock::Mutex; use log::trace; use nvim_rs::{Handler, Neovim}; use rmpv::Value; -use std::sync::mpsc::{channel, Receiver, Sender}; -use std::sync::Arc; -use std::thread; #[cfg(windows)] use crate::bridge::ui_commands::{ParallelCommand, UiCommand}; @@ -17,54 +13,12 @@ use crate::{ settings::SETTINGS, }; -struct NotificationEvent { - event_name: String, - arguments: Vec, -} - #[derive(Clone)] -pub struct NeovimHandler { - sender: Arc>>, -} +pub struct NeovimHandler {} impl NeovimHandler { pub fn new() -> Self { - let (sender, receiver): (Sender, Receiver) = - channel(); - thread::spawn(|| { - for event in receiver { - match event.event_name.as_ref() { - "redraw" => { - for events in event.arguments { - let parsed_events = parse_redraw_event(events) - .unwrap_or_explained_panic("Could not parse event from neovim"); - - for parsed_event in parsed_events { - EVENT_AGGREGATOR - .send(EditorCommand::NeovimRedrawEvent(parsed_event)); - } - } - } - "setting_changed" => { - SETTINGS.handle_changed_notification(event.arguments); - } - #[cfg(windows)] - "neovide.register_right_click" => { - EVENT_AGGREGATOR - .send(UiCommand::Parallel(ParallelCommand::RegisterRightClick)); - } - #[cfg(windows)] - "neovide.unregister_right_click" => { - EVENT_AGGREGATOR - .send(UiCommand::Parallel(ParallelCommand::UnregisterRightClick)); - } - _ => {} - } - } - }); - Self { - sender: Arc::new(Mutex::new(sender)), - } + Self {} } } @@ -79,12 +33,33 @@ impl Handler for NeovimHandler { _neovim: Neovim, ) { trace!("Neovim notification: {:?}", &event_name); - let sender = self.sender.lock().await; - sender - .send(NotificationEvent { - event_name, - arguments, - }) - .ok(); + + match event_name.as_ref() { + "redraw" => { + for events in arguments { + let parsed_events = parse_redraw_event(events) + .unwrap_or_explained_panic("Could not parse event from neovim"); + + for parsed_event in parsed_events { + EVENT_AGGREGATOR + .send(EditorCommand::NeovimRedrawEvent(parsed_event)); + } + } + } + "setting_changed" => { + SETTINGS.handle_changed_notification(arguments); + } + #[cfg(windows)] + "neovide.register_right_click" => { + EVENT_AGGREGATOR + .send(UiCommand::Parallel(ParallelCommand::RegisterRightClick)); + } + #[cfg(windows)] + "neovide.unregister_right_click" => { + EVENT_AGGREGATOR + .send(UiCommand::Parallel(ParallelCommand::UnregisterRightClick)); + } + _ => {} + } } }