1use zed_extension_api::{self as zed, LanguageServerId, Result};
2
3pub struct ErlangLanguagePlatform;
4
5impl ErlangLanguagePlatform {
6 pub const LANGUAGE_SERVER_ID: &'static str = "elp";
7
8 pub fn new() -> Self {
9 Self
10 }
11
12 pub fn language_server_command(
13 &mut self,
14 language_server_id: &LanguageServerId,
15 worktree: &zed::Worktree,
16 ) -> Result<zed::Command> {
17 Ok(zed::Command {
18 command: self.language_server_binary_path(language_server_id, worktree)?,
19 args: vec!["server".to_string()],
20 env: Default::default(),
21 })
22 }
23
24 fn language_server_binary_path(
25 &mut self,
26 _language_server_id: &LanguageServerId,
27 worktree: &zed::Worktree,
28 ) -> Result<String> {
29 worktree
30 .which("elp")
31 .ok_or_else(|| "elp must be installed and available on your $PATH".to_string())
32 }
33}