1#[path = "../wit/since_v0.0.6/settings.rs"]
2mod 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}