Move lsp configuration into language crate

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Max Brunsfeld 2021-10-26 12:17:51 -07:00
parent de8218314c
commit 7d5425e142
8 changed files with 79 additions and 47 deletions

View file

@ -8,12 +8,11 @@ use futures::Future;
use fuzzy::{PathMatch, PathMatchCandidate, PathMatchCandidateSet};
use gpui::{AppContext, Entity, ModelContext, ModelHandle, Task};
use language::LanguageRegistry;
use lsp::LanguageServer;
use std::{
path::Path,
sync::{atomic::AtomicBool, Arc},
};
use util::TryFutureExt as _;
use util::{ResultExt, TryFutureExt as _};
pub use fs::*;
pub use worktree::*;
@ -74,11 +73,20 @@ impl Project {
let rpc = self.client.clone();
let languages = self.languages.clone();
let path = Arc::from(abs_path);
let language_server = LanguageServer::rust(&path, cx);
let language_server = languages
.get_language("Rust")
.unwrap()
.start_server(&path, cx);
cx.spawn(|this, mut cx| async move {
let worktree =
Worktree::open_local(rpc, path, fs, languages, Some(language_server?), &mut cx)
.await?;
let worktree = Worktree::open_local(
rpc,
path,
fs,
languages,
language_server.log_err().flatten(),
&mut cx,
)
.await?;
this.update(&mut cx, |this, cx| {
this.add_worktree(worktree.clone(), cx);
});

View file

@ -295,7 +295,7 @@ impl Worktree {
}
}
pub fn language_server(&self) -> Option<&Arc<lsp::LanguageServer>> {
pub fn language_server(&self) -> Option<&Arc<LanguageServer>> {
match self {
Worktree::Local(worktree) => worktree.language_server.as_ref(),
Worktree::Remote(_) => None,
@ -2872,7 +2872,6 @@ mod tests {
use anyhow::Result;
use client::test::FakeServer;
use fs::RealFs;
use language::Point;
use lsp::Url;
use rand::prelude::*;
use serde_json::json;