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