python: Uplift basedpyright support into core (#35250)
This PR adds a built-in adapter for the basedpyright language server. For now, it's behind the `basedpyright` feature flag, and needs to be requested explicitly like this for staff: ``` "languages": { "Python": { "language_servers": ["basedpyright", "!pylsp", "!pyright"] } } ``` (After uninstalling the basedpyright extension.) Release Notes: - N/A
This commit is contained in:
parent
e5269212ad
commit
cfd5b8ff10
4 changed files with 362 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
|||
use anyhow::Context as _;
|
||||
use feature_flags::{FeatureFlag, FeatureFlagAppExt as _};
|
||||
use gpui::{App, UpdateGlobal};
|
||||
use node_runtime::NodeRuntime;
|
||||
use python::PyprojectTomlManifestProvider;
|
||||
|
@ -11,7 +12,7 @@ use util::{ResultExt, asset_str};
|
|||
|
||||
pub use language::*;
|
||||
|
||||
use crate::json::JsonTaskProvider;
|
||||
use crate::{json::JsonTaskProvider, python::BasedPyrightLspAdapter};
|
||||
|
||||
mod bash;
|
||||
mod c;
|
||||
|
@ -52,6 +53,12 @@ pub static LANGUAGE_GIT_COMMIT: std::sync::LazyLock<Arc<Language>> =
|
|||
))
|
||||
});
|
||||
|
||||
struct BasedPyrightFeatureFlag;
|
||||
|
||||
impl FeatureFlag for BasedPyrightFeatureFlag {
|
||||
const NAME: &'static str = "basedpyright";
|
||||
}
|
||||
|
||||
pub fn init(languages: Arc<LanguageRegistry>, node: NodeRuntime, cx: &mut App) {
|
||||
#[cfg(feature = "load-grammars")]
|
||||
languages.register_native_grammars([
|
||||
|
@ -88,6 +95,7 @@ pub fn init(languages: Arc<LanguageRegistry>, node: NodeRuntime, cx: &mut App) {
|
|||
let py_lsp_adapter = Arc::new(python::PyLspAdapter::new());
|
||||
let python_context_provider = Arc::new(python::PythonContextProvider);
|
||||
let python_lsp_adapter = Arc::new(python::PythonLspAdapter::new(node.clone()));
|
||||
let basedpyright_lsp_adapter = Arc::new(BasedPyrightLspAdapter::new());
|
||||
let python_toolchain_provider = Arc::new(python::PythonToolchainProvider::default());
|
||||
let rust_context_provider = Arc::new(rust::RustContextProvider);
|
||||
let rust_lsp_adapter = Arc::new(rust::RustLspAdapter);
|
||||
|
@ -228,6 +236,20 @@ pub fn init(languages: Arc<LanguageRegistry>, node: NodeRuntime, cx: &mut App) {
|
|||
);
|
||||
}
|
||||
|
||||
let mut basedpyright_lsp_adapter = Some(basedpyright_lsp_adapter);
|
||||
cx.observe_flag::<BasedPyrightFeatureFlag, _>({
|
||||
let languages = languages.clone();
|
||||
move |enabled, _| {
|
||||
if enabled {
|
||||
if let Some(adapter) = basedpyright_lsp_adapter.take() {
|
||||
languages
|
||||
.register_available_lsp_adapter(adapter.name(), move || adapter.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.detach();
|
||||
|
||||
// Register globally available language servers.
|
||||
//
|
||||
// This will allow users to add support for a built-in language server (e.g., Tailwind)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue