Start moving code from Zed to plugin

Isaac Clayton created

Change summary

crates/zed/src/languages/language_plugin.rs | 18 +++++++++++-------
plugins/json_language/src/lib.rs            |  9 +++++++--
2 files changed, 18 insertions(+), 9 deletions(-)

Detailed changes

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

@@ -10,7 +10,13 @@ use smol::fs;
 use std::{any::Any, path::PathBuf, sync::Arc};
 use util::{ResultExt, TryFutureExt};
 
-pub fn new_json() {}
+pub fn new_json() -> LanguagePluginLspAdapter {
+    let plugin = WasmPlugin {
+        source_bytes: include_bytes!("../../../../plugins/bin/json_language.wasm").to_vec(),
+        store_data: (),
+    };
+    LanguagePluginLspAdapter::new(plugin)
+}
 
 pub struct LanguagePluginLspAdapter {
     runtime: Mutex<Wasm<()>>,
@@ -47,14 +53,12 @@ impl LspAdapter for LanguagePluginLspAdapter {
             self.runtime.lock().call("fetch_latest_server_version", ());
 
         async move {
-            if let Ok((language_version, server_version)) = versions {
-                Ok(Box::new(Versions {
+            versions.map(|(language_version, server_version)| {
+                Box::new(Versions {
                     language_version,
                     server_version,
-                }) as Box<_>)
-            } else {
-                panic!()
-            }
+                }) as Box<_>
+            })
         }
         .boxed()
     }

plugins/json_language/src/lib.rs 🔗

@@ -1,6 +1,11 @@
 use plugin::prelude::*;
 
 #[bind]
-pub fn add(a: (f64, f64)) -> f64 {
-    a.0 + a.1
+pub fn name(_: ()) -> &'static str {
+    "vscode-json-languageserver"
+}
+
+#[bind]
+pub fn server_args(_: ()) -> Vec<String> {
+    vec!["--stdio".into()]
 }