mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-09 10:00:25 +00:00
Centralize client options validation (#18623)
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / mkdocs (push) Waiting to run
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
[ty Playground] Release / publish (push) Waiting to run
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux) (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / mkdocs (push) Waiting to run
CI / ecosystem (push) Blocked by required conditions
CI / Fuzz for new ty panics (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / check playground (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
[ty Playground] Release / publish (push) Waiting to run
This commit is contained in:
parent
ef564094a9
commit
3c6c017950
9 changed files with 1164 additions and 1003 deletions
|
@ -4,19 +4,21 @@ use std::path::Path;
|
|||
use std::sync::Arc;
|
||||
|
||||
use lsp_types::{ClientCapabilities, FileEvent, NotebookDocumentCellChange, Url};
|
||||
use settings::ResolvedClientSettings;
|
||||
use settings::ClientSettings;
|
||||
|
||||
use crate::edit::{DocumentKey, DocumentVersion, NotebookDocument};
|
||||
use crate::session::settings::GlobalClientSettings;
|
||||
use crate::workspace::Workspaces;
|
||||
use crate::{PositionEncoding, TextDocument};
|
||||
|
||||
pub(crate) use self::capabilities::ResolvedClientCapabilities;
|
||||
pub use self::index::DocumentQuery;
|
||||
pub use self::settings::ClientSettings;
|
||||
pub(crate) use self::settings::{AllSettings, WorkspaceSettingsMap};
|
||||
pub(crate) use self::options::{AllOptions, WorkspaceOptionsMap};
|
||||
pub use self::options::{ClientOptions, GlobalOptions};
|
||||
|
||||
mod capabilities;
|
||||
mod index;
|
||||
mod options;
|
||||
mod settings;
|
||||
|
||||
/// The global state for the LSP
|
||||
|
@ -26,7 +28,8 @@ pub struct Session {
|
|||
/// The global position encoding, negotiated during LSP initialization.
|
||||
position_encoding: PositionEncoding,
|
||||
/// Global settings provided by the client.
|
||||
global_settings: ClientSettings,
|
||||
global_settings: GlobalClientSettings,
|
||||
|
||||
/// Tracks what LSP features the client supports and doesn't support.
|
||||
resolved_client_capabilities: Arc<ResolvedClientCapabilities>,
|
||||
}
|
||||
|
@ -35,7 +38,7 @@ pub struct Session {
|
|||
/// a specific document.
|
||||
pub struct DocumentSnapshot {
|
||||
resolved_client_capabilities: Arc<ResolvedClientCapabilities>,
|
||||
client_settings: settings::ResolvedClientSettings,
|
||||
client_settings: Arc<settings::ClientSettings>,
|
||||
document_ref: index::DocumentQuery,
|
||||
position_encoding: PositionEncoding,
|
||||
}
|
||||
|
@ -44,13 +47,13 @@ impl Session {
|
|||
pub fn new(
|
||||
client_capabilities: &ClientCapabilities,
|
||||
position_encoding: PositionEncoding,
|
||||
global_settings: ClientSettings,
|
||||
global: GlobalClientSettings,
|
||||
workspaces: &Workspaces,
|
||||
) -> crate::Result<Self> {
|
||||
Ok(Self {
|
||||
position_encoding,
|
||||
index: index::Index::new(workspaces, &global_settings)?,
|
||||
global_settings,
|
||||
index: index::Index::new(workspaces, &global)?,
|
||||
global_settings: global,
|
||||
resolved_client_capabilities: Arc::new(ResolvedClientCapabilities::new(
|
||||
client_capabilities,
|
||||
)),
|
||||
|
@ -66,7 +69,10 @@ impl Session {
|
|||
let key = self.key_from_url(url);
|
||||
Some(DocumentSnapshot {
|
||||
resolved_client_capabilities: self.resolved_client_capabilities.clone(),
|
||||
client_settings: self.index.client_settings(&key, &self.global_settings),
|
||||
client_settings: self
|
||||
.index
|
||||
.client_settings(&key)
|
||||
.unwrap_or_else(|| self.global_settings.to_settings_arc()),
|
||||
document_ref: self.index.make_document_ref(key, &self.global_settings)?,
|
||||
position_encoding: self.position_encoding,
|
||||
})
|
||||
|
@ -163,8 +169,8 @@ impl Session {
|
|||
}
|
||||
|
||||
/// Returns the resolved global client settings.
|
||||
pub(crate) fn global_client_settings(&self) -> ResolvedClientSettings {
|
||||
ResolvedClientSettings::global(&self.global_settings)
|
||||
pub(crate) fn global_client_settings(&self) -> &ClientSettings {
|
||||
self.global_settings.to_settings()
|
||||
}
|
||||
|
||||
/// Returns the number of open documents in the session.
|
||||
|
@ -183,7 +189,7 @@ impl DocumentSnapshot {
|
|||
&self.resolved_client_capabilities
|
||||
}
|
||||
|
||||
pub(crate) fn client_settings(&self) -> &settings::ResolvedClientSettings {
|
||||
pub(crate) fn client_settings(&self) -> &settings::ClientSettings {
|
||||
&self.client_settings
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue