From 90f20f8c539843f53a7a2b1cfb83b3673ec78534 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 22 Dec 2018 12:13:20 +0300 Subject: [PATCH] less verbose debug --- crates/gen_lsp_server/src/msg.rs | 8 ++++- crates/ra_lsp_server/src/main_loop.rs | 45 ++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/crates/gen_lsp_server/src/msg.rs b/crates/gen_lsp_server/src/msg.rs index af901d0d29..f68cbc541d 100644 --- a/crates/gen_lsp_server/src/msg.rs +++ b/crates/gen_lsp_server/src/msg.rs @@ -152,12 +152,18 @@ impl RawNotification { params: to_value(params).unwrap(), } } + pub fn is(&self) -> bool + where + N: Notification, + { + self.method == N::METHOD + } pub fn cast(self) -> ::std::result::Result where N: Notification, N::Params: serde::de::DeserializeOwned, { - if self.method != N::METHOD { + if !self.is::() { return Err(self); } Ok(from_value(self.params).unwrap()) diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 11e7803e48..84f88eefff 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs @@ -2,6 +2,7 @@ mod handlers; mod subscriptions; use std::{ + fmt, path::PathBuf, sync::Arc, }; @@ -109,6 +110,43 @@ pub fn main_loop( Ok(()) } +enum Event { + Msg(RawMessage), + Task(Task), + Vfs(VfsTask), + Lib(LibraryData), +} + +impl fmt::Debug for Event { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let debug_verbose_not = |not: &RawNotification, f: &mut fmt::Formatter| { + f.debug_struct("RawNotification") + .field("method", ¬.method) + .finish() + }; + + match self { + Event::Msg(RawMessage::Notification(not)) => { + if not.is::() || not.is::() { + return debug_verbose_not(not, f); + } + } + Event::Task(Task::Notify(not)) => { + if not.is::() || not.is::() { + return debug_verbose_not(not, f); + } + } + _ => (), + } + match self { + Event::Msg(it) => fmt::Debug::fmt(it, f), + Event::Task(it) => fmt::Debug::fmt(it, f), + Event::Vfs(it) => fmt::Debug::fmt(it, f), + Event::Lib(it) => fmt::Debug::fmt(it, f), + } + } +} + fn main_loop_inner( internal_mode: bool, publish_decorations: bool, @@ -123,13 +161,6 @@ fn main_loop_inner( ) -> Result<()> { let (libdata_sender, libdata_receiver) = unbounded(); loop { - #[derive(Debug)] - enum Event { - Msg(RawMessage), - Task(Task), - Vfs(VfsTask), - Lib(LibraryData), - } log::trace!("selecting"); let event = select! { recv(msg_receiver, msg) => match msg {