zlog_settings.rs

 1//! # zlog_settings
 2use anyhow::Result;
 3use gpui::App;
 4use schemars::JsonSchema;
 5use serde::{Deserialize, Serialize};
 6use settings::{Settings, SettingsKey, 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(
19    Clone,
20    Debug,
21    Default,
22    Serialize,
23    Deserialize,
24    PartialEq,
25    Eq,
26    JsonSchema,
27    SettingsUi,
28    SettingsKey,
29)]
30#[settings_key(key = "log")]
31pub struct ZlogSettings {
32    #[serde(default, flatten)]
33    pub scopes: std::collections::HashMap<String, String>,
34}
35
36impl Settings for ZlogSettings {
37    type FileContent = Self;
38
39    fn load(sources: settings::SettingsSources<Self::FileContent>, _: &mut App) -> Result<Self>
40    where
41        Self: Sized,
42    {
43        sources.json_merge()
44    }
45
46    fn import_from_vscode(_vscode: &settings::VsCodeSettings, _current: &mut Self::FileContent) {}
47}