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}