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}