Get nextLS running

This commit is contained in:
Mikayla 2023-09-20 06:55:24 -07:00
parent e37373a636
commit 0cceb3fdf1
No known key found for this signature in database
7 changed files with 56 additions and 9 deletions

1
Cargo.lock generated
View File

@ -9861,6 +9861,7 @@ dependencies = [
"rpc", "rpc",
"rsa", "rsa",
"rust-embed", "rust-embed",
"schemars",
"search", "search",
"semantic_index", "semantic_index",
"serde", "serde",

View File

@ -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": {

View File

@ -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);

View File

@ -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

View File

@ -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(),

View File

@ -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));

View File

@ -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);
} }