Fix all residual errors, need to polish off warnings and TODOS

Isaac Clayton created

Change summary

crates/editor/src/editor.rs      |  2 +-
crates/language/src/language.rs  |  2 +-
crates/zed/src/languages.rs      | 28 ++++++++++++++--------------
crates/zed/src/languages/go.rs   |  2 +-
crates/zed/src/languages/rust.rs |  4 ++--
5 files changed, 19 insertions(+), 19 deletions(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -6233,7 +6233,7 @@ mod tests {
         platform::{WindowBounds, WindowOptions},
     };
     use indoc::indoc;
-    use language::{FakeLspAdapter, LanguageConfig, FakeLspAdapterInner};
+    use language::{FakeLspAdapter, FakeLspAdapterInner, LanguageConfig};
     use lsp::FakeLanguageServer;
     use project::FakeFs;
     use settings::LanguageSettings;

crates/language/src/language.rs 🔗

@@ -78,7 +78,7 @@ pub struct LspAdapter {
 }
 
 impl LspAdapter {
-    pub async fn new(adapter: impl LspAdapterTrait) -> Arc<Self> {
+    pub async fn new<T: LspAdapterTrait>(adapter: T) -> Arc<Self> {
         let adapter = Box::new(adapter);
         let name = adapter.name().await;
         let server_args = adapter.server_args().await;

crates/zed/src/languages.rs 🔗

@@ -22,26 +22,26 @@ pub async fn init(languages: Arc<LanguageRegistry>, executor: Arc<Background>) {
         (
             "c",
             tree_sitter_c::language(),
-            Some(Arc::new(c::CLspAdapter) as Arc<dyn LspAdapter>),
+            Some(LspAdapter::new(c::CLspAdapter).await),
         ),
         (
             "cpp",
             tree_sitter_cpp::language(),
-            Some(Arc::new(c::CLspAdapter) as Arc<dyn LspAdapter>),
+            Some(LspAdapter::new(c::CLspAdapter).await),
         ),
         (
             "go",
             tree_sitter_go::language(),
-            Some(Arc::new(go::GoLspAdapter) as Arc<dyn LspAdapter>),
+            Some(LspAdapter::new(go::GoLspAdapter).await),
         ),
         (
             "json",
             tree_sitter_json::language(),
-            // Some(Arc::new(json::JsonLspAdapter)),
-            language_plugin::new_json(executor)
-                .await
-                .log_err()
-                .map(|lang| Arc::new(lang) as Arc<_>),
+            // Some(LspAdapter::new(json::JsonLspAdapter)),
+            match language_plugin::new_json(executor).await.log_err() {
+                Some(lang) => Some(LspAdapter::new(lang).await),
+                None => None,
+            },
         ),
         (
             "markdown",
@@ -51,12 +51,12 @@ pub async fn init(languages: Arc<LanguageRegistry>, executor: Arc<Background>) {
         (
             "python",
             tree_sitter_python::language(),
-            Some(Arc::new(python::PythonLspAdapter)),
+            Some(LspAdapter::new(python::PythonLspAdapter).await),
         ),
         (
             "rust",
             tree_sitter_rust::language(),
-            Some(Arc::new(rust::RustLspAdapter)),
+            Some(LspAdapter::new(rust::RustLspAdapter).await),
         ),
         (
             "toml",
@@ -66,17 +66,17 @@ pub async fn init(languages: Arc<LanguageRegistry>, executor: Arc<Background>) {
         (
             "tsx",
             tree_sitter_typescript::language_tsx(),
-            Some(Arc::new(typescript::TypeScriptLspAdapter)),
+            Some(LspAdapter::new(typescript::TypeScriptLspAdapter).await),
         ),
         (
             "typescript",
             tree_sitter_typescript::language_typescript(),
-            Some(Arc::new(typescript::TypeScriptLspAdapter)),
+            Some(LspAdapter::new(typescript::TypeScriptLspAdapter).await),
         ),
         (
             "javascript",
             tree_sitter_typescript::language_tsx(),
-            Some(Arc::new(typescript::TypeScriptLspAdapter)),
+            Some(LspAdapter::new(typescript::TypeScriptLspAdapter).await),
         ),
     ] {
         languages.add(Arc::new(language(name, grammar, lsp_adapter)));
@@ -86,7 +86,7 @@ pub async fn init(languages: Arc<LanguageRegistry>, executor: Arc<Background>) {
 pub(crate) fn language(
     name: &str,
     grammar: tree_sitter::Language,
-    lsp_adapter: Option<Arc<dyn LspAdapter>>,
+    lsp_adapter: Option<Arc<LspAdapter>>,
 ) -> Language {
     let config = toml::from_slice(
         &LanguageDir::get(&format!("{}/config.toml", name))

crates/zed/src/languages/go.rs 🔗

@@ -314,7 +314,7 @@ mod tests {
         let language = language(
             "go",
             tree_sitter_go::language(),
-            Some(Arc::new(GoLspAdapter)),
+            Some(smol::block_on(LspAdapter::new(GoLspAdapter))),
         );
 
         let theme = SyntaxTheme::new(vec![

crates/zed/src/languages/rust.rs 🔗

@@ -305,7 +305,7 @@ mod tests {
         let language = language(
             "rust",
             tree_sitter_rust::language(),
-            Some(Arc::new(RustLspAdapter)),
+            Some(smol::block_on(LspAdapter::new(RustLspAdapter))),
         );
         let grammar = language.grammar().unwrap();
         let theme = SyntaxTheme::new(vec![
@@ -384,7 +384,7 @@ mod tests {
         let language = language(
             "rust",
             tree_sitter_rust::language(),
-            Some(Arc::new(RustLspAdapter)),
+            Some(smol::block_on(LspAdapter::new(RustLspAdapter))),
         );
         let grammar = language.grammar().unwrap();
         let theme = SyntaxTheme::new(vec![