mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-19 18:41:56 +03:00
Get nextLS running
This commit is contained in:
parent
e37373a636
commit
0cceb3fdf1
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -9861,6 +9861,7 @@ dependencies = [
|
|||||||
"rpc",
|
"rpc",
|
||||||
"rsa",
|
"rsa",
|
||||||
"rust-embed",
|
"rust-embed",
|
||||||
|
"schemars",
|
||||||
"search",
|
"search",
|
||||||
"semantic_index",
|
"semantic_index",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -373,6 +373,27 @@
|
|||||||
"enabled": false,
|
"enabled": false,
|
||||||
"reindexing_delay_seconds": 600
|
"reindexing_delay_seconds": 600
|
||||||
},
|
},
|
||||||
|
// Settings specific to our elixir integration
|
||||||
|
"elixir": {
|
||||||
|
// Set Zed to use the experimental Next LS LSP server.
|
||||||
|
// Note that changing this setting requires a restart of Zed
|
||||||
|
// to take effect.
|
||||||
|
//
|
||||||
|
// May take 3 values:
|
||||||
|
// 1. Use the standard elixir-ls LSP server
|
||||||
|
// "next": "off"
|
||||||
|
// 2. Use a bundled version of the next Next LS LSP server
|
||||||
|
// "next": "on",
|
||||||
|
// 3. Use a locally running version of the next Next LS LSP server,
|
||||||
|
// on a specific port:
|
||||||
|
// "next": {
|
||||||
|
// "local": {
|
||||||
|
// "port": 4000
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
//
|
||||||
|
"next": "off"
|
||||||
|
},
|
||||||
// Different settings for specific languages.
|
// Different settings for specific languages.
|
||||||
"languages": {
|
"languages": {
|
||||||
"Plain Text": {
|
"Plain Text": {
|
||||||
|
@ -456,7 +456,7 @@ fn main() {
|
|||||||
let languages = Arc::new(languages);
|
let languages = Arc::new(languages);
|
||||||
|
|
||||||
let node_runtime = RealNodeRuntime::new(http.clone());
|
let node_runtime = RealNodeRuntime::new(http.clone());
|
||||||
languages::init(languages.clone(), node_runtime.clone());
|
languages::init(languages.clone(), node_runtime.clone(), cx);
|
||||||
language::init(cx);
|
language::init(cx);
|
||||||
|
|
||||||
project::Project::init(&client, cx);
|
project::Project::init(&client, cx);
|
||||||
|
@ -99,6 +99,7 @@ rust-embed.workspace = true
|
|||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
serde_derive.workspace = true
|
serde_derive.workspace = true
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
|
schemars.workspace = true
|
||||||
simplelog = "0.9"
|
simplelog = "0.9"
|
||||||
smallvec.workspace = true
|
smallvec.workspace = true
|
||||||
smol.workspace = true
|
smol.workspace = true
|
||||||
|
@ -1,13 +1,17 @@
|
|||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
|
use gpui::AppContext;
|
||||||
pub use language::*;
|
pub use language::*;
|
||||||
use node_runtime::NodeRuntime;
|
use node_runtime::NodeRuntime;
|
||||||
use rust_embed::RustEmbed;
|
use rust_embed::RustEmbed;
|
||||||
use std::{borrow::Cow, str, sync::Arc};
|
use std::{borrow::Cow, str, sync::Arc};
|
||||||
use util::asset_str;
|
use util::asset_str;
|
||||||
|
|
||||||
|
use self::elixir_next::ElixirSettings;
|
||||||
|
|
||||||
mod c;
|
mod c;
|
||||||
mod css;
|
mod css;
|
||||||
mod elixir;
|
mod elixir;
|
||||||
|
mod elixir_next;
|
||||||
mod go;
|
mod go;
|
||||||
mod html;
|
mod html;
|
||||||
mod json;
|
mod json;
|
||||||
@ -37,7 +41,13 @@ mod yaml;
|
|||||||
#[exclude = "*.rs"]
|
#[exclude = "*.rs"]
|
||||||
struct LanguageDir;
|
struct LanguageDir;
|
||||||
|
|
||||||
pub fn init(languages: Arc<LanguageRegistry>, node_runtime: Arc<dyn NodeRuntime>) {
|
pub fn init(
|
||||||
|
languages: Arc<LanguageRegistry>,
|
||||||
|
node_runtime: Arc<dyn NodeRuntime>,
|
||||||
|
cx: &mut AppContext,
|
||||||
|
) {
|
||||||
|
settings::register::<elixir_next::ElixirSettings>(cx);
|
||||||
|
|
||||||
let language = |name, grammar, adapters| {
|
let language = |name, grammar, adapters| {
|
||||||
languages.register(name, load_config(name), grammar, adapters, load_queries)
|
languages.register(name, load_config(name), grammar, adapters, load_queries)
|
||||||
};
|
};
|
||||||
@ -61,11 +71,25 @@ pub fn init(languages: Arc<LanguageRegistry>, node_runtime: Arc<dyn NodeRuntime>
|
|||||||
Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())),
|
Arc::new(tailwind::TailwindLspAdapter::new(node_runtime.clone())),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
language(
|
|
||||||
"elixir",
|
match settings::get::<ElixirSettings>(cx).next {
|
||||||
tree_sitter_elixir::language(),
|
elixir_next::ElixirNextSetting::Off => language(
|
||||||
vec![Arc::new(elixir::ElixirLspAdapter)],
|
"elixir",
|
||||||
);
|
tree_sitter_elixir::language(),
|
||||||
|
vec![Arc::new(elixir::ElixirLspAdapter)],
|
||||||
|
),
|
||||||
|
elixir_next::ElixirNextSetting::On => language(
|
||||||
|
"elixir",
|
||||||
|
tree_sitter_elixir::language(),
|
||||||
|
vec![Arc::new(elixir_next::BundledNextLspAdapter)],
|
||||||
|
),
|
||||||
|
elixir_next::ElixirNextSetting::Local { port } => unimplemented!(), /*language(
|
||||||
|
"elixir",
|
||||||
|
tree_sitter_elixir::language(),
|
||||||
|
vec![Arc::new(elixir_next::LocalNextLspAdapter { port })],
|
||||||
|
)*/
|
||||||
|
}
|
||||||
|
|
||||||
language(
|
language(
|
||||||
"go",
|
"go",
|
||||||
tree_sitter_go::language(),
|
tree_sitter_go::language(),
|
||||||
|
@ -134,7 +134,7 @@ fn main() {
|
|||||||
let languages = Arc::new(languages);
|
let languages = Arc::new(languages);
|
||||||
let node_runtime = RealNodeRuntime::new(http.clone());
|
let node_runtime = RealNodeRuntime::new(http.clone());
|
||||||
|
|
||||||
languages::init(languages.clone(), node_runtime.clone());
|
languages::init(languages.clone(), node_runtime.clone(), cx);
|
||||||
let user_store = cx.add_model(|cx| UserStore::new(client.clone(), http.clone(), cx));
|
let user_store = cx.add_model(|cx| UserStore::new(client.clone(), http.clone(), cx));
|
||||||
let channel_store =
|
let channel_store =
|
||||||
cx.add_model(|cx| ChannelStore::new(client.clone(), user_store.clone(), cx));
|
cx.add_model(|cx| ChannelStore::new(client.clone(), user_store.clone(), cx));
|
||||||
|
@ -2392,7 +2392,7 @@ mod tests {
|
|||||||
languages.set_executor(cx.background().clone());
|
languages.set_executor(cx.background().clone());
|
||||||
let languages = Arc::new(languages);
|
let languages = Arc::new(languages);
|
||||||
let node_runtime = node_runtime::FakeNodeRuntime::new();
|
let node_runtime = node_runtime::FakeNodeRuntime::new();
|
||||||
languages::init(languages.clone(), node_runtime);
|
languages::init(languages.clone(), node_runtime, cx);
|
||||||
for name in languages.language_names() {
|
for name in languages.language_names() {
|
||||||
languages.language_for_name(&name);
|
languages.language_for_name(&name);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user