settings.rs

 1#[path = "../wit/since_v0.0.7/settings.rs"]
 2mod types;
 3
 4use crate::{wit, Result, SettingsLocation, Worktree};
 5use serde_json;
 6pub use types::*;
 7
 8impl LanguageSettings {
 9    /// Returns the [`LanguageSettings`] for the given language.
10    pub fn for_worktree(language: Option<&str>, worktree: &Worktree) -> Result<Self> {
11        let location = SettingsLocation {
12            worktree_id: worktree.id(),
13            path: worktree.root_path(),
14        };
15        let settings_json = wit::get_settings(Some(&location), "language", language)?;
16        let settings: Self = serde_json::from_str(&settings_json).map_err(|err| err.to_string())?;
17        Ok(settings)
18    }
19}
20
21impl LspSettings {
22    /// Returns the [`LspSettings`] for the given language server.
23    pub fn for_worktree(language_server_name: &str, worktree: &Worktree) -> Result<Self> {
24        let location = SettingsLocation {
25            worktree_id: worktree.id(),
26            path: worktree.root_path(),
27        };
28        let settings_json = wit::get_settings(Some(&location), "lsp", Some(language_server_name))?;
29        let settings: Self = serde_json::from_str(&settings_json).map_err(|err| err.to_string())?;
30        Ok(settings)
31    }
32}