diff --git a/crates/zed/src/languages/language_plugin.rs b/crates/zed/src/languages/language_plugin.rs index c5e521dcb7d0aa6c3bf016791dc7a4cc22bac5a6..0a9cb5592bebbce5134dbfbf06200bd367706e42 100644 --- a/crates/zed/src/languages/language_plugin.rs +++ b/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>, @@ -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() } diff --git a/plugins/json_language/src/lib.rs b/plugins/json_language/src/lib.rs index 22b55633cf4189adb4f07cc3eb80c3e0dedc7284..f8796907bea7a58aa8950aacd57b8c457095060b 100644 --- a/plugins/json_language/src/lib.rs +++ b/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 { + vec!["--stdio".into()] }