From 82010b68c1088466f83a7d567e899764c7fd4861 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Wed, 20 Sep 2023 11:27:52 +0300 Subject: [PATCH] Avoid extra LSP log events --- crates/language_tools/src/lsp_log.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/crates/language_tools/src/lsp_log.rs b/crates/language_tools/src/lsp_log.rs index d0a76610e49c87a027dbdd2853d796b956a2e308..48be24e22fccacd1d0626ea7c03b2e22587330da 100644 --- a/crates/language_tools/src/lsp_log.rs +++ b/crates/language_tools/src/lsp_log.rs @@ -190,14 +190,17 @@ impl LogStore { .ok(); }) }); + let this = cx.weak_handle(); let weak_project = project.downgrade(); server_state._lsp_logs_subscription = server.map(|server| { let server_id = server.server_id(); server.on_notification::({ move |params, mut cx| { - if let Some(project) = weak_project.upgrade(&cx) { - project.update(&mut cx, |_, cx| { - cx.emit(project::Event::LanguageServerLog(server_id, params.message)) + if let Some((project, this)) = + weak_project.upgrade(&mut cx).zip(this.upgrade(&mut cx)) + { + this.update(&mut cx, |this, cx| { + this.add_language_server_log(&project, server_id, ¶ms.message, cx); }); } } @@ -309,19 +312,15 @@ impl LogStore { language_server_id: LanguageServerId, io_kind: IoKind, message: &str, - cx: &mut AppContext, + cx: &mut ModelContext, ) -> Option<()> { let is_received = match io_kind { IoKind::StdOut => true, IoKind::StdIn => false, IoKind::StdErr => { let project = project.upgrade(cx)?; - project.update(cx, |_, cx| { - cx.emit(project::Event::LanguageServerLog( - language_server_id, - format!("stderr: {}\n", message.trim()), - )) - }); + let message = format!("stderr: {}\n", message.trim()); + self.add_language_server_log(&project, language_server_id, &message, cx); return Some(()); } };