From 9694d0a52ea275ee16595849af841c1e7c8e324c Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 30 Aug 2024 08:18:39 +0100 Subject: [PATCH 1/3] fix(lsp): update diagnostics only for supported files --- crates/biome_lsp/src/handlers/text_document.rs | 4 +++- crates/biome_lsp/src/session.rs | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/biome_lsp/src/handlers/text_document.rs b/crates/biome_lsp/src/handlers/text_document.rs index 3d03fabb6830..87e31f6d0bd6 100644 --- a/crates/biome_lsp/src/handlers/text_document.rs +++ b/crates/biome_lsp/src/handlers/text_document.rs @@ -5,6 +5,7 @@ use biome_service::workspace::{ use tower_lsp::lsp_types; use tracing::{error, field}; +use crate::diagnostics::LspError; use crate::utils::apply_document_changes; use crate::{documents::Document, session::Session}; @@ -20,7 +21,7 @@ use crate::{documents::Document, session::Session}; pub(crate) async fn did_open( session: &Session, params: lsp_types::DidOpenTextDocumentParams, -) -> Result<()> { +) -> Result<(), LspError> { let url = params.text_document.uri; let version = params.text_document.version; let content = params.text_document.text; @@ -40,6 +41,7 @@ pub(crate) async fn did_open( if let Err(err) = session.update_diagnostics(url).await { error!("Failed to update diagnostics: {}", err); + return Err(err); } Ok(()) diff --git a/crates/biome_lsp/src/session.rs b/crates/biome_lsp/src/session.rs index 44ce8d84a0ef..035972a6fd19 100644 --- a/crates/biome_lsp/src/session.rs +++ b/crates/biome_lsp/src/session.rs @@ -318,6 +318,13 @@ impl Session { path: biome_path.clone(), })?; + if !file_features.supports_lint() + && !file_features.supports_organize_imports() + && !file_features.supports_assists() + { + return Ok(()); + } + let diagnostics: Vec = { let mut categories = RuleCategoriesBuilder::default().with_syntax(); if self.configuration_status().is_loaded() { From 5f8b298524232b75c765964d5b2a14a848345351 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 30 Aug 2024 13:21:34 +0100 Subject: [PATCH 2/3] revert change of type --- crates/biome_lsp/src/handlers/text_document.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/crates/biome_lsp/src/handlers/text_document.rs b/crates/biome_lsp/src/handlers/text_document.rs index 87e31f6d0bd6..a85facdd85ee 100644 --- a/crates/biome_lsp/src/handlers/text_document.rs +++ b/crates/biome_lsp/src/handlers/text_document.rs @@ -1,3 +1,5 @@ +use crate::utils::apply_document_changes; +use crate::{documents::Document, session::Session}; use anyhow::Result; use biome_service::workspace::{ ChangeFileParams, CloseFileParams, DocumentFileSource, GetFileContentParams, OpenFileParams, @@ -5,10 +7,6 @@ use biome_service::workspace::{ use tower_lsp::lsp_types; use tracing::{error, field}; -use crate::diagnostics::LspError; -use crate::utils::apply_document_changes; -use crate::{documents::Document, session::Session}; - /// Handler for `textDocument/didOpen` LSP notification #[tracing::instrument( level = "debug", @@ -21,7 +19,7 @@ use crate::{documents::Document, session::Session}; pub(crate) async fn did_open( session: &Session, params: lsp_types::DidOpenTextDocumentParams, -) -> Result<(), LspError> { +) -> Result<()> { let url = params.text_document.uri; let version = params.text_document.version; let content = params.text_document.text; @@ -41,7 +39,6 @@ pub(crate) async fn did_open( if let Err(err) = session.update_diagnostics(url).await { error!("Failed to update diagnostics: {}", err); - return Err(err); } Ok(()) From 2f95bd2f7c723c7156f4e97d893414edd8ac8ee5 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Fri, 30 Aug 2024 13:25:57 +0100 Subject: [PATCH 3/3] send empty diagnostics --- crates/biome_lsp/src/session.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crates/biome_lsp/src/session.rs b/crates/biome_lsp/src/session.rs index 035972a6fd19..a68b93dd6780 100644 --- a/crates/biome_lsp/src/session.rs +++ b/crates/biome_lsp/src/session.rs @@ -322,6 +322,9 @@ impl Session { && !file_features.supports_organize_imports() && !file_features.supports_assists() { + self.client + .publish_diagnostics(url, vec![], Some(doc.version)) + .await; return Ok(()); }