mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-24 13:33:50 +00:00
ruff server
: Introduce the ruff.printDebugInformation
command (#11831)
## Summary
Closes #11715.
Introduces a new command, `ruff.printDebugInformation`. This will print
useful information about the status of the server to `stderr`.
Right now, the information shown by this command includes:
* The path to the server executable
* The version of the executable
* The text encoding being used
* The number of open documents and workspaces
* A list of registered configuration files
* The capabilities of the client
## Test Plan
First, checkout and use [the corresponding `ruff-vscode`
PR](https://github.com/astral-sh/ruff-vscode/pull/495).
Running the `Print debug information` command in VS Code should show
something like the following in the Output channel:
<img width="991" alt="Screenshot 2024-06-11 at 11 41 46 AM"
src="ab93c009
-bb7b-4291-b057-d44fdc6f9f86">
This commit is contained in:
parent
507f5c1137
commit
4e9d771aa0
5 changed files with 103 additions and 4 deletions
|
@ -1,4 +1,5 @@
|
|||
use lsp_types::ClientCapabilities;
|
||||
use ruff_linter::display_settings;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
#[allow(clippy::struct_excessive_bools)]
|
||||
|
@ -65,3 +66,20 @@ impl ResolvedClientCapabilities {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for ResolvedClientCapabilities {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
display_settings! {
|
||||
formatter = f,
|
||||
namespace = "capabilities",
|
||||
fields = [
|
||||
self.code_action_deferred_edit_resolution,
|
||||
self.apply_edit,
|
||||
self.document_changes,
|
||||
self.workspace_refresh,
|
||||
self.pull_diagnostics,
|
||||
]
|
||||
};
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -187,6 +187,21 @@ impl Index {
|
|||
Self::register_workspace_settings(&mut self.settings, url, None, global_settings)
|
||||
}
|
||||
|
||||
pub(super) fn num_documents(&self) -> usize {
|
||||
self.documents.len()
|
||||
}
|
||||
|
||||
pub(super) fn num_workspaces(&self) -> usize {
|
||||
self.settings.len()
|
||||
}
|
||||
|
||||
pub(super) fn list_config_files(&self) -> Vec<&Path> {
|
||||
self.settings
|
||||
.values()
|
||||
.flat_map(|WorkspaceSettings { ruff_settings, .. }| ruff_settings.list_files())
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn register_workspace_settings(
|
||||
settings_index: &mut SettingsIndex,
|
||||
workspace_url: &Url,
|
||||
|
|
|
@ -19,6 +19,9 @@ use walkdir::WalkDir;
|
|||
use crate::session::settings::{ConfigurationPreference, ResolvedEditorSettings};
|
||||
|
||||
pub(crate) struct RuffSettings {
|
||||
/// The path to this configuration file, used for debugging.
|
||||
/// The default fallback configuration does not have a file path.
|
||||
path: Option<PathBuf>,
|
||||
/// Settings used to manage file inclusion and exclusion.
|
||||
file_resolver: ruff_workspace::FileResolverSettings,
|
||||
/// Settings to pass into the Ruff linter.
|
||||
|
@ -48,14 +51,17 @@ impl std::fmt::Display for RuffSettings {
|
|||
|
||||
impl RuffSettings {
|
||||
pub(crate) fn fallback(editor_settings: &ResolvedEditorSettings, root: &Path) -> RuffSettings {
|
||||
let mut path = None;
|
||||
let fallback = find_user_settings_toml()
|
||||
.and_then(|user_settings| {
|
||||
ruff_workspace::resolver::resolve_root_settings(
|
||||
let settings = ruff_workspace::resolver::resolve_root_settings(
|
||||
&user_settings,
|
||||
Relativity::Cwd,
|
||||
&EditorConfigurationTransformer(editor_settings, root),
|
||||
)
|
||||
.ok()
|
||||
.ok();
|
||||
path = Some(user_settings);
|
||||
settings
|
||||
})
|
||||
.unwrap_or_else(|| {
|
||||
let default_configuration = Configuration::default();
|
||||
|
@ -68,6 +74,7 @@ impl RuffSettings {
|
|||
});
|
||||
|
||||
RuffSettings {
|
||||
path,
|
||||
file_resolver: fallback.file_resolver,
|
||||
formatter: fallback.formatter,
|
||||
linter: fallback.linter,
|
||||
|
@ -108,6 +115,7 @@ impl RuffSettingsIndex {
|
|||
index.insert(
|
||||
directory.to_path_buf(),
|
||||
Arc::new(RuffSettings {
|
||||
path: Some(pyproject),
|
||||
file_resolver: settings.file_resolver,
|
||||
linter: settings.linter,
|
||||
formatter: settings.formatter,
|
||||
|
@ -176,6 +184,7 @@ impl RuffSettingsIndex {
|
|||
index.insert(
|
||||
directory,
|
||||
Arc::new(RuffSettings {
|
||||
path: Some(pyproject),
|
||||
file_resolver: settings.file_resolver,
|
||||
linter: settings.linter,
|
||||
formatter: settings.formatter,
|
||||
|
@ -198,6 +207,12 @@ impl RuffSettingsIndex {
|
|||
.clone()
|
||||
}
|
||||
|
||||
pub(crate) fn list_files(&self) -> impl Iterator<Item = &Path> {
|
||||
self.index
|
||||
.values()
|
||||
.filter_map(|settings| settings.path.as_deref())
|
||||
}
|
||||
|
||||
pub(super) fn fallback(&self) -> Arc<RuffSettings> {
|
||||
self.fallback.clone()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue