diff --git a/crates/language/src/diagnostic_set.rs b/crates/language/src/diagnostic_set.rs index 5d85fbc290..ea35bc184c 100644 --- a/crates/language/src/diagnostic_set.rs +++ b/crates/language/src/diagnostic_set.rs @@ -1,4 +1,4 @@ -use crate::Diagnostic; +use crate::{range_to_lsp, Diagnostic}; use collections::HashMap; use lsp::LanguageServerId; use std::{ @@ -51,7 +51,7 @@ pub struct Summary { count: usize, } -impl DiagnosticEntry { +impl DiagnosticEntry { /// Returns a raw LSP diagnostic ssed to provide diagnostic context to LSP /// codeAction request pub fn to_lsp_diagnostic_stub(&self) -> lsp::Diagnostic { @@ -61,9 +61,14 @@ impl DiagnosticEntry { .clone() .map(lsp::NumberOrString::String); + let range = range_to_lsp(self.range.clone()); + lsp::Diagnostic { code, + range, severity: Some(self.diagnostic.severity), + source: self.diagnostic.source.clone(), + message: self.diagnostic.message.clone(), ..Default::default() } } diff --git a/crates/project/src/lsp_command.rs b/crates/project/src/lsp_command.rs index 043503bf0d..38df25378a 100644 --- a/crates/project/src/lsp_command.rs +++ b/crates/project/src/lsp_command.rs @@ -1699,9 +1699,10 @@ impl LspCommand for GetCodeActions { ) -> lsp::CodeActionParams { let relevant_diagnostics = buffer .snapshot() - .diagnostics_in_range::<_, usize>(self.range.clone(), false) + .diagnostics_in_range::<_, language::PointUtf16>(self.range.clone(), false) .map(|entry| entry.to_lsp_diagnostic_stub()) - .collect(); + .collect::>(); + lsp::CodeActionParams { text_document: lsp::TextDocumentIdentifier::new( lsp::Url::from_file_path(path).unwrap(),