zlog_settings.rs

 1//! # zlog_settings
 2use anyhow::Result;
 3use gpui::App;
 4use schemars::JsonSchema;
 5use serde::{Deserialize, Serialize};
 6use settings::{Settings, SettingsStore, SettingsUi};
 7
 8pub fn init(cx: &mut App) {
 9    ZlogSettings::register(cx);
10
11    cx.observe_global::<SettingsStore>(|cx| {
12        let zlog_settings = ZlogSettings::get_global(cx);
13        zlog::filter::refresh_from_settings(&zlog_settings.scopes);
14    })
15    .detach();
16}
17
18#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq, JsonSchema, SettingsUi)]
19pub struct ZlogSettings {
20    #[serde(default, flatten)]
21    pub scopes: std::collections::HashMap<String, String>,
22}
23
24impl Settings for ZlogSettings {
25    const KEY: Option<&'static str> = Some("log");
26
27    type FileContent = Self;
28
29    fn load(sources: settings::SettingsSources<Self::FileContent>, _: &mut App) -> Result<Self>
30    where
31        Self: Sized,
32    {
33        sources.json_merge()
34    }
35
36    fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut Self::FileContent) {}
37}