settings.rs

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