Skip to content

Commit

Permalink
ruff server searches for configuration in parent directories (#11537)
Browse files Browse the repository at this point in the history
## Summary

Fixes #11506.

`RuffSettingsIndex::new` now searches for configuration files in parent
directories.

## Test Plan

I confirmed that the original test case described in the issue worked as
expected.
  • Loading branch information
snowsignal authored May 26, 2024
1 parent 0eef834 commit 627d230
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions crates/ruff_server/src/session/index/ruff_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,43 @@ impl RuffSettingsIndex {
pub(super) fn new(root: &Path, editor_settings: &ResolvedEditorSettings) -> Self {
let mut index = BTreeMap::default();

// Add any settings from above the workspace root.
for directory in root.ancestors() {
if let Some(pyproject) = settings_toml(directory).ok().flatten() {
if index.contains_key(&pyproject) {
continue;
}

let Ok(settings) = ruff_workspace::resolver::resolve_root_settings(
&pyproject,
Relativity::Parent,
&EditorConfigurationTransformer(editor_settings, root),
) else {
continue;
};
index.insert(
directory.to_path_buf(),
Arc::new(RuffSettings {
linter: settings.linter,
formatter: settings.formatter,
}),
);
break;
}
}

// Add any settings within the workspace itself.
for directory in WalkDir::new(root)
.into_iter()
.filter_map(Result::ok)
.filter(|entry| entry.file_type().is_dir())
.map(DirEntry::into_path)
{
if let Some(pyproject) = settings_toml(&directory).ok().flatten() {
if index.contains_key(&pyproject) {
continue;
}

let Ok(settings) = ruff_workspace::resolver::resolve_root_settings(
&pyproject,
Relativity::Parent,
Expand Down

0 comments on commit 627d230

Please sign in to comment.