From 9041186ed9d0f21308a33375766b0ad1e510ea1f Mon Sep 17 00:00:00 2001 From: Dhruv Manilawala Date: Tue, 9 Jul 2024 09:58:11 +0530 Subject: [PATCH] Conside `include`, `extend-include` for the native server --- Cargo.lock | 1 - crates/ruff_server/Cargo.toml | 1 - crates/ruff_server/src/lint.rs | 14 ++++++++++++++ .../src/server/api/requests/format.rs | 11 +++++++++++ .../src/session/index/ruff_settings.rs | 18 ++++++------------ 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 38efac3b1b31e7..1f111e1ec13c0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2447,7 +2447,6 @@ version = "0.2.2" dependencies = [ "anyhow", "crossbeam", - "globset", "insta", "jod-thread", "libc", diff --git a/crates/ruff_server/Cargo.toml b/crates/ruff_server/Cargo.toml index 2da3aff1c05d11..6420703f1fa700 100644 --- a/crates/ruff_server/Cargo.toml +++ b/crates/ruff_server/Cargo.toml @@ -28,7 +28,6 @@ ruff_workspace = { workspace = true } anyhow = { workspace = true } crossbeam = { workspace = true } -globset = { workspace = true } jod-thread = { workspace = true } lsp-server = { workspace = true } lsp-types = { workspace = true } diff --git a/crates/ruff_server/src/lint.rs b/crates/ruff_server/src/lint.rs index d3cd8dc9a66402..7a50754d4d5e8b 100644 --- a/crates/ruff_server/src/lint.rs +++ b/crates/ruff_server/src/lint.rs @@ -87,6 +87,20 @@ pub(crate) fn check( return DiagnosticsMap::default(); } + if file_resolver_settings.include.is_match(document_path) { + tracing::debug!("Included path via `include`: {:?}", document_path.display()); + } else if file_resolver_settings + .extend_include + .is_match(document_path) + { + tracing::debug!( + "Included path via `extend-include`: {:?}", + document_path.display() + ); + } else { + return DiagnosticsMap::default(); + } + detect_package_root( document_path .parent() diff --git a/crates/ruff_server/src/server/api/requests/format.rs b/crates/ruff_server/src/server/api/requests/format.rs index b8d4d27c1f8534..ee723ba0891465 100644 --- a/crates/ruff_server/src/server/api/requests/format.rs +++ b/crates/ruff_server/src/server/api/requests/format.rs @@ -95,6 +95,17 @@ fn format_text_document( tracing::debug!("Ignored path via `{}`: {}", exclusion, file_path.display()); return Ok(None); } + + if file_resolver_settings.include.is_match(&file_path) { + tracing::debug!("Included path via `include`: {:?}", file_path.display()); + } else if file_resolver_settings.extend_include.is_match(&file_path) { + tracing::debug!( + "Included path via `extend-include`: {:?}", + file_path.display() + ); + } else { + return Ok(None); + } } let source = text_document.contents(); diff --git a/crates/ruff_server/src/session/index/ruff_settings.rs b/crates/ruff_server/src/session/index/ruff_settings.rs index 39b35fa97bf16d..d8de9326046db5 100644 --- a/crates/ruff_server/src/session/index/ruff_settings.rs +++ b/crates/ruff_server/src/session/index/ruff_settings.rs @@ -1,9 +1,8 @@ -use globset::Candidate; use ruff_linter::{ display_settings, fs::normalize_path_to, settings::types::FilePattern, settings::types::PreviewMode, }; -use ruff_workspace::resolver::match_candidate_exclusion; +use ruff_workspace::resolver::match_exclusion; use ruff_workspace::{ configuration::{Configuration, FormatConfiguration, LintConfiguration, RuleSelection}, pyproject::{find_user_settings_toml, settings_toml}, @@ -41,6 +40,7 @@ impl std::fmt::Display for RuffSettings { display_settings! { formatter = f, fields = [ + self.file_resolver, self.linter, self.formatter ] @@ -146,20 +146,14 @@ impl RuffSettingsIndex { .range(..directory.clone()) .rfind(|(path, _)| directory.starts_with(path)) { - let candidate = Candidate::new(&directory); - let basename = Candidate::new(file_name); - if match_candidate_exclusion( - &candidate, - &basename, - &settings.file_resolver.exclude, - ) { + if match_exclusion(&directory, file_name, &settings.file_resolver.exclude) { tracing::debug!("Ignored path via `exclude`: {}", directory.display()); walker.skip_current_dir(); continue; - } else if match_candidate_exclusion( - &candidate, - &basename, + } else if match_exclusion( + &directory, + file_name, &settings.file_resolver.extend_exclude, ) { tracing::debug!(