erlang_language_platform.rs

 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}