summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/diagnostics.rs22
-rw-r--r--cli/lsp/language_server.rs30
2 files changed, 33 insertions, 19 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index a5b8df879..7ddb3ff7b 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -218,6 +218,17 @@ impl<'a> From<&'a diagnostics::Position> for lsp::Position {
}
}
+/// Check if diagnostics can be generated for the provided media type.
+pub fn is_diagnosable(media_type: MediaType) -> bool {
+ matches!(
+ media_type,
+ MediaType::TypeScript
+ | MediaType::JavaScript
+ | MediaType::Tsx
+ | MediaType::Jsx
+ )
+}
+
fn get_diagnostic_message(diagnostic: &diagnostics::Diagnostic) -> String {
if let Some(message) = diagnostic.message_text.clone() {
message
@@ -312,8 +323,8 @@ async fn generate_lint_diagnostics(
.lock()
.await
.get_version(specifier, &DiagnosticSource::DenoLint);
- if version != current_version {
- let media_type = MediaType::from(specifier);
+ let media_type = MediaType::from(specifier);
+ if version != current_version && is_diagnosable(media_type) {
if let Ok(Some(source_code)) = documents.content(specifier) {
if let Ok(references) = analysis::get_lint_references(
specifier,
@@ -354,10 +365,11 @@ async fn generate_ts_diagnostics(
let version = snapshot.documents.version(s);
let current_version =
collection.get_version(s, &DiagnosticSource::TypeScript);
- if version == current_version {
- None
- } else {
+ let media_type = MediaType::from(s);
+ if version != current_version && is_diagnosable(media_type) {
Some(s.clone())
+ } else {
+ None
}
})
.collect()
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 9f5a7c84a..fcf28dbf7 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -10,7 +10,6 @@ use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::serde_json::Value;
use deno_core::ModuleSpecifier;
-use dprint_plugin_typescript as dprint;
use log::error;
use log::info;
use log::warn;
@@ -30,13 +29,6 @@ use std::sync::atomic::Ordering;
use std::sync::Arc;
use tokio::fs;
-use crate::config_file::ConfigFile;
-use crate::config_file::TsConfig;
-use crate::deno_dir;
-use crate::import_map::ImportMap;
-use crate::logger;
-use crate::media_type::MediaType;
-
use super::analysis;
use super::analysis::ts_changes_to_edit;
use super::analysis::CodeActionCollection;
@@ -62,6 +54,15 @@ use super::tsc::AssetDocument;
use super::tsc::Assets;
use super::tsc::TsServer;
use super::urls;
+use crate::config_file::ConfigFile;
+use crate::config_file::TsConfig;
+use crate::deno_dir;
+use crate::import_map::ImportMap;
+use crate::logger;
+use crate::lsp::diagnostics::is_diagnosable;
+use crate::media_type::MediaType;
+use crate::tools::fmt::format_file;
+use crate::tools::fmt::get_typescript_config;
pub const REGISTRIES_PATH: &str = "registries";
const SOURCES_PATH: &str = "deps";
@@ -785,6 +786,11 @@ impl Inner {
if !self.config.specifier_enabled(&specifier) {
return Ok(None);
}
+ let media_type = MediaType::from(&specifier);
+ if !is_diagnosable(media_type) {
+ return Ok(None);
+ }
+
let mark = self.performance.mark("document_symbol", Some(&params));
let line_index =
@@ -845,12 +851,8 @@ impl Inner {
// TODO(lucacasonato): handle error properly
let text_edits = tokio::task::spawn_blocking(move || {
- let config = dprint::configuration::ConfigurationBuilder::new()
- .deno()
- .build();
- // TODO(@kitsonk) this could be handled better in `cli/tools/fmt.rs` in the
- // future.
- match dprint::format_text(&file_path, &file_text, &config) {
+ let config = get_typescript_config();
+ match format_file(&file_path, &file_text, config) {
Ok(new_text) => {
Some(text::get_edits(&file_text, &new_text, line_index))
}