diff --git a/crates/ruff_server/src/session/index/ruff_settings.rs b/crates/ruff_server/src/session/index/ruff_settings.rs index 404437d57bfc8..a564c75d000db 100644 --- a/crates/ruff_server/src/session/index/ruff_settings.rs +++ b/crates/ruff_server/src/session/index/ruff_settings.rs @@ -340,7 +340,7 @@ impl<'a> ConfigurationTransformer for EditorConfigurationTransformer<'a> { // Merge in the editor-specified configuration file, if it exists. let editor_configuration = if let Some(config_file_path) = configuration { - match open_configuration_file(&config_file_path, project_root) { + match open_configuration_file(&config_file_path) { Ok(config_from_file) => editor_configuration.combine(config_from_file), Err(err) => { tracing::error!("Unable to find editor-specified configuration file: {err}"); @@ -363,11 +363,18 @@ impl<'a> ConfigurationTransformer for EditorConfigurationTransformer<'a> { } } -fn open_configuration_file( - config_path: &Path, - project_root: &Path, -) -> crate::Result { - let options = ruff_workspace::pyproject::load_options(config_path)?; +fn open_configuration_file(config_path: &Path) -> crate::Result { + ruff_workspace::resolver::resolve_configuration( + config_path, + Relativity::Parent, + &IdentityTransformer, + ) +} + +struct IdentityTransformer; - Configuration::from_options(options, Some(config_path), project_root) +impl ConfigurationTransformer for IdentityTransformer { + fn transform(&self, config: Configuration) -> Configuration { + config + } } diff --git a/crates/ruff_workspace/src/pyproject.rs b/crates/ruff_workspace/src/pyproject.rs index 6230672814743..6c3bc74c4bb9c 100644 --- a/crates/ruff_workspace/src/pyproject.rs +++ b/crates/ruff_workspace/src/pyproject.rs @@ -140,7 +140,7 @@ pub fn find_user_settings_toml() -> Option { } /// Load `Options` from a `pyproject.toml` or `ruff.toml` file. -pub fn load_options>(path: P) -> Result { +pub(super) fn load_options>(path: P) -> Result { if path.as_ref().ends_with("pyproject.toml") { let pyproject = parse_pyproject_toml(&path)?; let mut ruff = pyproject diff --git a/crates/ruff_workspace/src/resolver.rs b/crates/ruff_workspace/src/resolver.rs index 3fc92348e7ee4..42687be4d5c54 100644 --- a/crates/ruff_workspace/src/resolver.rs +++ b/crates/ruff_workspace/src/resolver.rs @@ -263,7 +263,7 @@ pub trait ConfigurationTransformer { // configuration file extends another in the same path, we'll re-parse the same // file at least twice (possibly more than twice, since we'll also parse it when // resolving the "default" configuration). -fn resolve_configuration( +pub fn resolve_configuration( pyproject: &Path, relativity: Relativity, transformer: &dyn ConfigurationTransformer,