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}