@@ -31,6 +31,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "The displayed name of this project. If left empty, the root directory name will be displayed.",
field: Box::new(
SettingField {
+ json_path: Some("project_name"),
pick: |settings_content| {
settings_content.project.worktree.project_name.as_ref()?.as_ref().or(DEFAULT_EMPTY_STRING)
},
@@ -45,6 +46,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "When Closing With No Tabs",
description: "What to do when using the 'close active item' action with no tabs.",
field: Box::new(SettingField {
+ json_path: Some("when_closing_with_no_tabs"),
pick: |settings_content| {
settings_content
.workspace
@@ -62,6 +64,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "On Last Window Closed",
description: "What to do when the last window is closed.",
field: Box::new(SettingField {
+ json_path: Some("on_last_window_closed"),
pick: |settings_content| {
settings_content.workspace.on_last_window_closed.as_ref()
},
@@ -76,6 +79,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Use System Path Prompts",
description: "Use native OS dialogs for 'Open' and 'Save As'.",
field: Box::new(SettingField {
+ json_path: Some("use_system_path_prompts"),
pick: |settings_content| {
settings_content.workspace.use_system_path_prompts.as_ref()
},
@@ -90,6 +94,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Use System Prompts",
description: "Use native OS dialogs for confirmations.",
field: Box::new(SettingField {
+ json_path: Some("use_system_prompts"),
pick: |settings_content| {
settings_content.workspace.use_system_prompts.as_ref()
},
@@ -104,6 +109,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Redact Private Values",
description: "Hide the values of variables in private files.",
field: Box::new(SettingField {
+ json_path: Some("redact_private_values"),
pick: |settings_content| {
settings_content.editor.redact_private_values.as_ref()
},
@@ -119,6 +125,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Globs to match against file paths to determine if a file is private.",
field: Box::new(
SettingField {
+ json_path: Some("worktree.private_files"),
pick: |settings_content| {
settings_content.project.worktree.private_files.as_ref()
},
@@ -136,6 +143,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Restore Unsaved Buffers",
description: "Whether or not to restore unsaved buffers on restart.",
field: Box::new(SettingField {
+ json_path: Some("session.restore_unsaved_buffers"),
pick: |settings_content| {
settings_content
.session
@@ -156,6 +164,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Restore On Startup",
description: "What to restore from the previous session when opening Zed.",
field: Box::new(SettingField {
+ json_path: Some("restore_on_startup"),
pick: |settings_content| {
settings_content.workspace.restore_on_startup.as_ref()
},
@@ -174,6 +183,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Which settings should be activated only in Preview build of Zed.",
field: Box::new(
SettingField {
+ json_path: Some("use_system_prompts"),
pick: |settings_content| {
settings_content.workspace.use_system_prompts.as_ref()
},
@@ -191,6 +201,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Any number of settings profiles that are temporarily applied on top of your existing user settings.",
field: Box::new(
SettingField {
+ json_path: Some(""),
pick: |settings_content| {
settings_content.workspace.use_system_prompts.as_ref()
},
@@ -207,6 +218,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Telemetry Diagnostics",
description: "Send debug information like crash reports.",
field: Box::new(SettingField {
+ json_path: Some("telemetry.diagnostics"),
pick: |settings_content| {
settings_content
.telemetry
@@ -227,6 +239,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Telemetry Metrics",
description: "Send anonymized usage data like what languages you're using Zed with.",
field: Box::new(SettingField {
+ json_path: Some("telemetry.metrics"),
pick: |settings_content| {
settings_content
.telemetry
@@ -245,6 +258,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Auto Update",
description: "Whether or not to automatically check for updates.",
field: Box::new(SettingField {
+ json_path: Some("auto_update"),
pick: |settings_content| settings_content.auto_update.as_ref(),
write: |settings_content, value| {
settings_content.auto_update = value;
@@ -265,6 +279,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Theme Mode",
description: "Choose a static, fixed theme or dynamically select themes based on appearance and light/dark modes.",
field: Box::new(SettingField {
+ json_path: Some("theme$"),
pick: |settings_content| {
Some(&dynamic_variants::<settings::ThemeSelection>()[
settings_content
@@ -322,6 +337,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Theme Name",
description: "The name of your selected theme.",
field: Box::new(SettingField {
+ json_path: Some("theme"),
pick: |settings_content| {
match settings_content.theme.theme.as_ref() {
Some(settings::ThemeSelection::Static(name)) => Some(name),
@@ -349,6 +365,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Mode",
description: "Choose whether to use the selected light or dark theme or to follow your OS appearance configuration.",
field: Box::new(SettingField {
+ json_path: Some("theme.mode"),
pick: |settings_content| {
match settings_content.theme.theme.as_ref() {
Some(settings::ThemeSelection::Dynamic { mode, ..}) => Some(mode),
@@ -374,6 +391,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Light Theme",
description: "The theme to use when mode is set to light, or when mode is set to system and it is in light mode.",
field: Box::new(SettingField {
+ json_path: Some("theme.light"),
pick: |settings_content| {
match settings_content.theme.theme.as_ref() {
Some(settings::ThemeSelection::Dynamic { light, ..}) => Some(light),
@@ -399,6 +417,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Dark Theme",
description: "The theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.",
field: Box::new(SettingField {
+ json_path: Some("theme.dark"),
pick: |settings_content| {
match settings_content.theme.theme.as_ref() {
Some(settings::ThemeSelection::Dynamic { dark, ..}) => Some(dark),
@@ -429,6 +448,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Icon Theme",
description: "The custom set of icons Zed will associate with files and directories.",
field: Box::new(SettingField {
+ json_path: Some("icon_theme$"),
pick: |settings_content| {
Some(&dynamic_variants::<settings::IconThemeSelection>()[
settings_content
@@ -486,6 +506,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Icon Theme Name",
description: "The name of your selected icon theme.",
field: Box::new(SettingField {
+ json_path: Some("icon_theme$string"),
pick: |settings_content| {
match settings_content.theme.icon_theme.as_ref() {
Some(settings::IconThemeSelection::Static(name)) => Some(name),
@@ -513,6 +534,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Mode",
description: "Choose whether to use the selected light or dark icon theme or to follow your OS appearance configuration.",
field: Box::new(SettingField {
+ json_path: Some("icon_theme"),
pick: |settings_content| {
match settings_content.theme.icon_theme.as_ref() {
Some(settings::IconThemeSelection::Dynamic { mode, ..}) => Some(mode),
@@ -538,6 +560,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Light Icon Theme",
description: "The icon theme to use when mode is set to light, or when mode is set to system and it is in light mode.",
field: Box::new(SettingField {
+ json_path: Some("icon_theme.light"),
pick: |settings_content| {
match settings_content.theme.icon_theme.as_ref() {
Some(settings::IconThemeSelection::Dynamic { light, ..}) => Some(light),
@@ -563,6 +586,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Dark Icon Theme",
description: "The icon theme to use when mode is set to dark, or when mode is set to system and it is in dark mode.",
field: Box::new(SettingField {
+ json_path: Some("icon_theme.dark"),
pick: |settings_content| {
match settings_content.theme.icon_theme.as_ref() {
Some(settings::IconThemeSelection::Dynamic { dark, ..}) => Some(dark),
@@ -592,6 +616,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Family",
description: "Font family for editor text.",
field: Box::new(SettingField {
+ json_path: Some("buffer_font_family"),
pick: |settings_content| settings_content.theme.buffer_font_family.as_ref(),
write: |settings_content, value|{ settings_content.theme.buffer_font_family = value;},
}),
@@ -602,6 +627,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Size",
description: "Font size for editor text.",
field: Box::new(SettingField {
+ json_path: Some("buffer_font_size"),
pick: |settings_content| settings_content.theme.buffer_font_size.as_ref(),
write: |settings_content, value|{ settings_content.theme.buffer_font_size = value;},
}),
@@ -612,6 +638,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Weight",
description: "Font weight for editor text (100-900).",
field: Box::new(SettingField {
+ json_path: Some("buffer_font_weight"),
pick: |settings_content| settings_content.theme.buffer_font_weight.as_ref(),
write: |settings_content, value|{ settings_content.theme.buffer_font_weight = value;},
}),
@@ -624,6 +651,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Line Height",
description: "Line height for editor text.",
field: Box::new(SettingField {
+ json_path: Some("buffer_line_height$"),
pick: |settings_content| {
Some(&dynamic_variants::<settings::BufferLineHeight>()[
settings_content
@@ -668,6 +696,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Custom Line Height",
description: "Custom line height value (must be at least 1.0).",
field: Box::new(SettingField {
+ json_path: Some("buffer_line_height"),
pick: |settings_content| {
match settings_content.theme.buffer_line_height.as_ref() {
Some(settings::BufferLineHeight::Custom(value)) => Some(value),
@@ -698,6 +727,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "The OpenType features to enable for rendering in text buffers.",
field: Box::new(
SettingField {
+ json_path: Some("buffer_font_features"),
pick: |settings_content| {
settings_content.theme.buffer_font_features.as_ref()
},
@@ -716,6 +746,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "The font fallbacks to use for rendering in text buffers.",
field: Box::new(
SettingField {
+ json_path: Some("buffer_font_fallbacks"),
pick: |settings_content| {
settings_content.theme.buffer_font_fallbacks.as_ref()
},
@@ -733,6 +764,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Family",
description: "Font family for UI elements.",
field: Box::new(SettingField {
+ json_path: Some("ui_font_family"),
pick: |settings_content| settings_content.theme.ui_font_family.as_ref(),
write: |settings_content, value|{ settings_content.theme.ui_font_family = value;},
}),
@@ -743,6 +775,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Size",
description: "Font size for UI elements.",
field: Box::new(SettingField {
+ json_path: Some("ui_font_size"),
pick: |settings_content| settings_content.theme.ui_font_size.as_ref(),
write: |settings_content, value|{ settings_content.theme.ui_font_size = value;},
}),
@@ -753,6 +786,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Font Weight",
description: "Font weight for UI elements (100-900).",
field: Box::new(SettingField {
+ json_path: Some("ui_font_weight"),
pick: |settings_content| settings_content.theme.ui_font_weight.as_ref(),
write: |settings_content, value|{ settings_content.theme.ui_font_weight = value;},
}),
@@ -765,6 +799,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "The Opentype features to enable for rendering in UI elements.",
field: Box::new(
SettingField {
+ json_path: Some("ui_font_features"),
pick: |settings_content| {
settings_content.theme.ui_font_features.as_ref()
},
@@ -783,6 +818,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "The font fallbacks to use for rendering in the UI.",
field: Box::new(
SettingField {
+ json_path: Some("ui_font_fallbacks"),
pick: |settings_content| {
settings_content.theme.ui_font_fallbacks.as_ref()
},
@@ -800,6 +836,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "UI Font Size",
description: "Font size for agent response text in the agent panel. Falls back to the regular UI font size.",
field: Box::new(SettingField {
+ json_path: Some("agent_ui_font_size"),
pick: |settings_content| {
settings_content
.theme
@@ -816,6 +853,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Buffer Font Size",
description: "Font size for user messages text in the agent panel.",
field: Box::new(SettingField {
+ json_path: Some("agent_buffer_font_size"),
pick: |settings_content| {
settings_content
.theme
@@ -836,6 +874,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Multi Cursor Modifier",
description: "Modifier key for adding multiple cursors.",
field: Box::new(SettingField {
+ json_path: Some("multi_cursor_modifier"),
pick: |settings_content| {
settings_content.editor.multi_cursor_modifier.as_ref()
},
@@ -851,6 +890,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Cursor Blink",
description: "Whether the cursor blinks in the editor.",
field: Box::new(SettingField {
+ json_path: Some("cursor_blink"),
pick: |settings_content| settings_content.editor.cursor_blink.as_ref(),
write: |settings_content, value|{ settings_content.editor.cursor_blink = value;},
}),
@@ -861,6 +901,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Cursor Shape",
description: "Cursor shape for the editor.",
field: Box::new(SettingField {
+ json_path: Some("cursor_shape"),
pick: |settings_content| settings_content.editor.cursor_shape.as_ref(),
write: |settings_content, value|{ settings_content.editor.cursor_shape = value;},
}),
@@ -871,6 +912,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Hide Mouse",
description: "When to hide the mouse cursor.",
field: Box::new(SettingField {
+ json_path: Some("hide_mouse"),
pick: |settings_content| settings_content.editor.hide_mouse.as_ref(),
write: |settings_content, value|{ settings_content.editor.hide_mouse = value;},
}),
@@ -882,6 +924,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Unnecessary Code Fade",
description: "How much to fade out unused code (0.0 - 0.9).",
field: Box::new(SettingField {
+ json_path: Some("unnecessary_code_fade"),
pick: |settings_content| {
settings_content.theme.unnecessary_code_fade.as_ref()
},
@@ -897,6 +940,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Current Line Highlight",
description: "How to highlight the current line.",
field: Box::new(SettingField {
+ json_path: Some("current_line_highlight"),
pick: |settings_content| {
settings_content.editor.current_line_highlight.as_ref()
},
@@ -912,6 +956,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Selection Highlight",
description: "Highlight all occurrences of selected text.",
field: Box::new(SettingField {
+ json_path: Some("selection_highlight"),
pick: |settings_content| {
settings_content.editor.selection_highlight.as_ref()
},
@@ -927,6 +972,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Rounded Selection",
description: "Whether the text selection should have rounded corners.",
field: Box::new(SettingField {
+ json_path: Some("rounded_selection"),
pick: |settings_content| settings_content.editor.rounded_selection.as_ref(),
write: |settings_content, value|{ settings_content.editor.rounded_selection = value;},
}),
@@ -937,6 +983,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Minimum Contrast For Highlights",
description: "The minimum APCA perceptual contrast to maintain when rendering text over highlight backgrounds.",
field: Box::new(SettingField {
+ json_path: Some("minimum_contrast_for_highlights"),
pick: |settings_content| {
settings_content
.editor
@@ -956,6 +1003,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Wrap Guides",
description: "Show wrap guides (vertical rulers).",
field: Box::new(SettingField {
+ json_path: Some("show_wrap_guides"),
pick: |settings_content| {
settings_content
.project
@@ -982,6 +1030,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Character counts at which to show wrap guides.",
field: Box::new(
SettingField {
+ json_path: Some("wrap_guides"),
pick: |settings_content| {
settings_content
.project
@@ -992,7 +1041,6 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
},
write: |settings_content, value| {
settings_content.project.all_languages.defaults.wrap_guides = value;
-
},
}
.unimplemented(),
@@ -1010,6 +1058,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Base Keymap",
description: "The name of a base set of key bindings to use.",
field: Box::new(SettingField {
+ json_path: Some("base_keymap"),
pick: |settings_content| settings_content.base_keymap.as_ref(),
write: |settings_content, value| {
settings_content.base_keymap = value;
@@ -1028,6 +1077,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Vim Mode",
description: "Enable Vim mode and key bindings.",
field: Box::new(SettingField {
+ json_path: Some("vim_mode"),
pick: |settings_content| settings_content.vim_mode.as_ref(),
write: |settings_content, value| {
settings_content.vim_mode = value;
@@ -1040,6 +1090,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Helix Mode",
description: "Enable Helix mode and key bindings.",
field: Box::new(SettingField {
+ json_path: Some("helix_mode"),
pick: |settings_content| settings_content.helix_mode.as_ref(),
write: |settings_content, value| {
settings_content.helix_mode = value;
@@ -1061,6 +1112,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Auto Save Mode",
description: "When to auto save buffer changes.",
field: Box::new(SettingField {
+ json_path: Some("autosave$"),
pick: |settings_content| {
Some(&dynamic_variants::<settings::AutosaveSetting>()[
settings_content
@@ -1110,6 +1162,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Delay (milliseconds)",
description: "Save after inactivity period (in milliseconds).",
field: Box::new(SettingField {
+ json_path: Some("autosave.after_delay.milliseconds"),
pick: |settings_content| {
match settings_content.workspace.autosave.as_ref() {
Some(settings::AutosaveSetting::AfterDelay { milliseconds }) => Some(milliseconds),
@@ -1141,6 +1194,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Double Click In Multibuffer",
description: "What to do when multibuffer is double-clicked in some of its excerpts.",
field: Box::new(SettingField {
+ json_path: Some("double_click_in_multibuffer"),
pick: |settings_content| {
settings_content.editor.double_click_in_multibuffer.as_ref()
},
@@ -1155,6 +1209,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Expand Excerpt Lines",
description: "How many lines to expand the multibuffer excerpts by default.",
field: Box::new(SettingField {
+ json_path: Some("expand_excerpt_lines"),
pick: |settings_content| {
settings_content.editor.expand_excerpt_lines.as_ref()
},
@@ -1169,6 +1224,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Excerpt Context Lines",
description: "How many lines of context to provide in multibuffer excerpts by default.",
field: Box::new(SettingField {
+ json_path: Some("excerpt_context_lines"),
pick: |settings_content| {
settings_content.editor.excerpt_context_lines.as_ref()
},
@@ -1183,6 +1239,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Expand Outlines With Depth",
description: "Default depth to expand outline items in the current file.",
field: Box::new(SettingField {
+ json_path: Some("outline_panel.expand_outlines_with_depth"),
pick: |settings_content| {
settings_content
.outline_panel
@@ -1206,6 +1263,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Scroll Beyond Last Line",
description: "Whether the editor will scroll beyond the last line.",
field: Box::new(SettingField {
+ json_path: Some("scroll_beyond_last_line"),
pick: |settings_content| {
settings_content.editor.scroll_beyond_last_line.as_ref()
},
@@ -1220,6 +1278,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Vertical Scroll Margin",
description: "The number of lines to keep above/below the cursor when auto-scrolling.",
field: Box::new(SettingField {
+ json_path: Some("vertical_scroll_margin"),
pick: |settings_content| {
settings_content.editor.vertical_scroll_margin.as_ref()
},
@@ -1234,6 +1293,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Horizontal Scroll Margin",
description: "The number of characters to keep on either side when scrolling with the mouse.",
field: Box::new(SettingField {
+ json_path: Some("horizontal_scroll_margin"),
pick: |settings_content| {
settings_content.editor.horizontal_scroll_margin.as_ref()
},
@@ -1248,6 +1308,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Scroll Sensitivity",
description: "Scroll sensitivity multiplier for both horizontal and vertical scrolling.",
field: Box::new(SettingField {
+ json_path: Some("scroll_sensitivity"),
pick: |settings_content| {
settings_content.editor.scroll_sensitivity.as_ref()
},
@@ -1262,6 +1323,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Fast Scroll Sensitivity",
description: "Fast scroll sensitivity multiplier for both horizontal and vertical scrolling.",
field: Box::new(SettingField {
+ json_path: Some("fast_scroll_sensitivity"),
pick: |settings_content| {
settings_content.editor.fast_scroll_sensitivity.as_ref()
},
@@ -1276,6 +1338,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Autoscroll On Clicks",
description: "Whether to scroll when clicking near the edge of the visible text area.",
field: Box::new(SettingField {
+ json_path: Some("autoscroll_on_clicks"),
pick: |settings_content| {
settings_content.editor.autoscroll_on_clicks.as_ref()
},
@@ -1291,6 +1354,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Auto Signature Help",
description: "Automatically show a signature help pop-up.",
field: Box::new(SettingField {
+ json_path: Some("auto_signature_help"),
pick: |settings_content| {
settings_content.editor.auto_signature_help.as_ref()
},
@@ -1305,6 +1369,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Signature Help After Edits",
description: "Show the signature help pop-up after completions or bracket pairs are inserted.",
field: Box::new(SettingField {
+ json_path: Some("show_signature_help_after_edits"),
pick: |settings_content| {
settings_content
.editor
@@ -1322,6 +1387,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Snippet Sort Order",
description: "Determines how snippets are sorted relative to other completion items.",
field: Box::new(SettingField {
+ json_path: Some("snippet_sort_order"),
pick: |settings_content| {
settings_content.editor.snippet_sort_order.as_ref()
},
@@ -1337,6 +1403,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Enabled",
description: "Show the informational hover box when moving the mouse over symbols in the editor.",
field: Box::new(SettingField {
+ json_path: Some("hover_popover_enabled"),
pick: |settings_content| {
settings_content.editor.hover_popover_enabled.as_ref()
},
@@ -1352,6 +1419,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Delay",
description: "Time to wait in milliseconds before showing the informational hover box.",
field: Box::new(SettingField {
+ json_path: Some("hover_popover_enabled"),
pick: |settings_content| {
settings_content.editor.hover_popover_delay.as_ref()
},
@@ -1367,6 +1435,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Enabled",
description: "Enable drag and drop selection.",
field: Box::new(SettingField {
+ json_path: Some("drag_and_drop_selection.enabled"),
pick: |settings_content| {
settings_content
.editor
@@ -1389,6 +1458,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Delay",
description: "Delay in milliseconds before drag and drop selection starts.",
field: Box::new(SettingField {
+ json_path: Some("drag_and_drop_selection.delay"),
pick: |settings_content| {
settings_content
.editor
@@ -1412,6 +1482,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Line Numbers",
description: "Show line numbers in the gutter.",
field: Box::new(SettingField {
+ json_path: Some("gutter.line_numbers"),
pick: |settings_content| {
settings_content
.editor
@@ -1434,6 +1505,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Relative Line Numbers",
description: "Whether the line numbers in the editor's gutter are relative or not.",
field: Box::new(SettingField {
+ json_path: Some("relative_line_numbers"),
pick: |settings_content| {
settings_content.editor.relative_line_numbers.as_ref()
},
@@ -1448,6 +1520,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Runnables",
description: "Show runnable buttons in the gutter.",
field: Box::new(SettingField {
+ json_path: Some("gutter.runnables"),
pick: |settings_content| {
settings_content
.editor
@@ -1470,6 +1543,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Breakpoints",
description: "Show breakpoints in the gutter.",
field: Box::new(SettingField {
+ json_path: Some("gutter.breakpoints"),
pick: |settings_content| {
settings_content
.editor
@@ -1492,6 +1566,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show Folds",
description: "Show code folding controls in the gutter.",
field: Box::new(SettingField {
+ json_path: Some("gutter.folds"),
pick: |settings_content| {
settings_content
.editor
@@ -1511,6 +1586,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Min Line Number Digits",
description: "Minimum number of characters to reserve space for in the gutter.",
field: Box::new(SettingField {
+ json_path: Some("gutter.min_line_number_digits"),
pick: |settings_content| {
settings_content
.editor
@@ -1533,6 +1609,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Inline Code Actions",
description: "Show code action button at start of buffer line.",
field: Box::new(SettingField {
+ json_path: Some("inline_code_actions"),
pick: |settings_content| {
settings_content.editor.inline_code_actions.as_ref()
},
@@ -1548,6 +1625,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show",
description: "When to show the scrollbar in the editor.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar"),
pick: |settings_content| {
settings_content.editor.scrollbar.as_ref()?.show.as_ref()
},
@@ -1566,6 +1644,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Cursors",
description: "Show cursor positions in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.cursors"),
pick: |settings_content| {
settings_content.editor.scrollbar.as_ref()?.cursors.as_ref()
},
@@ -1584,6 +1663,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Git Diff",
description: "Show Git diff indicators in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.git_diff"),
pick: |settings_content| {
settings_content
.editor
@@ -1607,6 +1687,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Search Results",
description: "Show buffer search result indicators in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.search_results"),
pick: |settings_content| {
settings_content
.editor
@@ -1630,6 +1711,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Selected Text",
description: "Show selected text occurrences in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.selected_text"),
pick: |settings_content| {
settings_content
.editor
@@ -1653,6 +1735,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Selected Symbol",
description: "Show selected symbol occurrences in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.selected_symbol"),
pick: |settings_content| {
settings_content
.editor
@@ -1676,6 +1759,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Diagnostics",
description: "Which diagnostic indicators to show in the scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.diagnostics"),
pick: |settings_content| {
settings_content
.editor
@@ -1699,6 +1783,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Horizontal Scrollbar",
description: "When false, forcefully disables the horizontal scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.axes.horizontal"),
pick: |settings_content| {
settings_content
.editor
@@ -1726,6 +1811,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Vertical Scrollbar",
description: "When false, forcefully disables the vertical scrollbar.",
field: Box::new(SettingField {
+ json_path: Some("scrollbar.axes.vertical"),
pick: |settings_content| {
settings_content
.editor
@@ -1754,6 +1840,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Show",
description: "When to show the minimap in the editor.",
field: Box::new(SettingField {
+ json_path: Some("minimap.show"),
pick: |settings_content| {
settings_content.editor.minimap.as_ref()?.show.as_ref()
},
@@ -1769,6 +1856,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Display In",
description: "Where to show the minimap in the editor.",
field: Box::new(SettingField {
+ json_path: Some("minimap.display_in"),
pick: |settings_content| {
settings_content
.editor
@@ -1792,6 +1880,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Thumb",
description: "When to show the minimap thumb.",
field: Box::new(SettingField {
+ json_path: Some("minimap.thumb"),
pick: |settings_content| {
settings_content.editor.minimap.as_ref()?.thumb.as_ref()
},
@@ -1810,6 +1899,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Thumb Border",
description: "Border style for the minimap's scrollbar thumb.",
field: Box::new(SettingField {
+ json_path: Some("minimap.thumb_border"),
pick: |settings_content| {
settings_content
.editor
@@ -1833,6 +1923,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Current Line Highlight",
description: "How to highlight the current line in the minimap.",
field: Box::new(SettingField {
+ json_path: Some("minimap.current_line_highlight"),
pick: |settings_content| {
settings_content
.editor
@@ -1856,6 +1947,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Max Width Columns",
description: "Maximum number of columns to display in the minimap.",
field: Box::new(SettingField {
+ json_path: Some("minimap.max_width_columns"),
pick: |settings_content| {
settings_content
.editor
@@ -1880,6 +1972,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Breadcrumbs",
description: "Show breadcrumbs.",
field: Box::new(SettingField {
+ json_path: Some("toolbar.breadcrumbs"),
pick: |settings_content| {
settings_content
.editor
@@ -1903,6 +1996,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Quick Actions",
description: "Show quick action buttons (e.g., search, selection, editor controls, etc.).",
field: Box::new(SettingField {
+ json_path: Some("toolbar.quick_actions"),
pick: |settings_content| {
settings_content
.editor
@@ -1926,6 +2020,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Selections Menu",
description: "Show the selections menu in the editor toolbar.",
field: Box::new(SettingField {
+ json_path: Some("toolbar.selections_menu"),
pick: |settings_content| {
settings_content
.editor
@@ -1949,6 +2044,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Agent Review",
description: "Show agent review buttons in the editor toolbar.",
field: Box::new(SettingField {
+ json_path: Some("toolbar.agent_review"),
pick: |settings_content| {
settings_content
.editor
@@ -1972,6 +2068,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Code Actions",
description: "Show code action buttons in the editor toolbar.",
field: Box::new(SettingField {
+ json_path: Some("toolbar.code_actions"),
pick: |settings_content| {
settings_content
.editor
@@ -2008,6 +2105,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "A mapping from languages to files and file extensions that should be treated as that language.",
field: Box::new(
SettingField {
+ json_path: Some("file_types"),
pick: |settings_content| {
settings_content.project.all_languages.file_types.as_ref()
},
@@ -2029,6 +2127,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Max Severity",
description: "Which level to use to filter out diagnostics displayed in the editor.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics_max_severity"),
pick: |settings_content| settings_content.editor.diagnostics_max_severity.as_ref(),
write: |settings_content, value| {
settings_content.editor.diagnostics_max_severity = value;
@@ -2042,6 +2141,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Include Warnings",
description: "Whether to show warnings or not by default.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.include_warnings"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.include_warnings.as_ref()
},
@@ -2062,6 +2162,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Enabled",
description: "Whether to show diagnostics inline or not.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.inline.enabled"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.inline.as_ref()?.enabled.as_ref()
},
@@ -2083,6 +2184,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Update Debounce",
description: "The delay in milliseconds to show inline diagnostics after the last diagnostic update.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.inline.update_debounce_ms"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.inline.as_ref()?.update_debounce_ms.as_ref()
},
@@ -2104,6 +2206,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Padding",
description: "The amount of padding between the end of the source line and the start of the inline diagnostic.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.inline.padding"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.inline.as_ref()?.padding.as_ref()
},
@@ -2125,6 +2228,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Minimum Column",
description: "The minimum column at which to display inline diagnostics.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.inline.min_column"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.inline.as_ref()?.min_column.as_ref()
},
@@ -2147,6 +2251,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Enabled",
description: "Whether to pull for language server-powered diagnostics or not.",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.lsp_pull_diagnostics.enabled"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.enabled.as_ref()
},
@@ -2169,6 +2274,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Debounce",
description: "Minimum time to wait before pulling diagnostics from the language server(s).",
field: Box::new(SettingField {
+ json_path: Some("diagnostics.lsp_pull_diagnostics.debounce_ms"),
pick: |settings_content| {
settings_content.diagnostics.as_ref()?.lsp_pull_diagnostics.as_ref()?.debounce_ms.as_ref()
},
@@ -2191,10 +2297,10 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Debounce",
description: "The debounce delay before querying highlights from the language.",
field: Box::new(SettingField {
+ json_path: Some("lsp_highlight_debounce"),
pick: |settings_content| settings_content.editor.lsp_highlight_debounce.as_ref(),
write: |settings_content, value| {
settings_content.editor.lsp_highlight_debounce = value;
-
},
}),
metadata: None,
@@ -2234,6 +2340,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Whole Word",
description: "Search for whole words by default.",
field: Box::new(SettingField {
+ json_path: Some("search.whole_word"),
pick: |settings_content| {
settings_content.editor.search.as_ref()?.whole_word.as_ref()
},
@@ -2252,6 +2359,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Case Sensitive",
description: "Search case-sensitively by default.",
field: Box::new(SettingField {
+ json_path: Some("search.case_sensitive"),
pick: |settings_content| {
settings_content
.editor
@@ -2275,6 +2383,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Use Smartcase Search",
description: "Whether to automatically enable case-sensitive search based on the search query.",
field: Box::new(SettingField {
+ json_path: Some("use_smartcase_search"),
pick: |settings_content| {
settings_content.editor.use_smartcase_search.as_ref()
},
@@ -2289,6 +2398,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Include Ignored",
description: "Include ignored files in search results by default.",
field: Box::new(SettingField {
+ json_path: Some("search.include_ignored"),
pick: |settings_content| {
settings_content
.editor
@@ -2312,6 +2422,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Regex",
description: "Use regex search by default.",
field: Box::new(SettingField {
+ json_path: Some("search.regex"),
pick: |settings_content| {
settings_content.editor.search.as_ref()?.regex.as_ref()
},
@@ -2326,6 +2437,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Search Wrap",
description: "Whether the editor search results will loop.",
field: Box::new(SettingField {
+ json_path: Some("search_wrap"),
pick: |settings_content| settings_content.editor.search_wrap.as_ref(),
write: |settings_content, value| {
settings_content.editor.search_wrap = value;
@@ -2338,6 +2450,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Seed Search Query From Cursor",
description: "When to populate a new search's query based on the text under the cursor.",
field: Box::new(SettingField {
+ json_path: Some("seed_search_query_from_cursor"),
pick: |settings_content| {
settings_content
.editor
@@ -2358,6 +2471,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Use gitignored files when searching.",
field: Box::new(
SettingField {
+ json_path: Some("file_finder.include_ignored"),
pick: |settings_content| {
settings_content
.file_finder
@@ -2380,6 +2494,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "File Icons",
description: "Show file icons in the file finder.",
field: Box::new(SettingField {
+ json_path: Some("file_finder.file_icons"),
pick: |settings_content| {
settings_content.file_finder.as_ref()?.file_icons.as_ref()
},
@@ -2397,6 +2512,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Modal Max Width",
description: "Determines how much space the file finder can take up in relation to the available window width.",
field: Box::new(SettingField {
+ json_path: Some("file_finder.modal_max_width"),
pick: |settings_content| {
settings_content
.file_finder
@@ -2418,6 +2534,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Skip Focus For Active In Search",
description: "Whether the file finder should skip focus for the active file in search results.",
field: Box::new(SettingField {
+ json_path: Some("file_finder.skip_focus_for_active_in_search"),
pick: |settings_content| {
settings_content
.file_finder
@@ -2439,6 +2556,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Git Status",
description: "Show the Git status in the file finder.",
field: Box::new(SettingField {
+ json_path: Some("file_finder.git_status"),
pick: |settings_content| {
settings_content.file_finder.as_ref()?.git_status.as_ref()
},
@@ -2458,6 +2576,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Takes precedence over \"File Scan Inclusions\"",
field: Box::new(
SettingField {
+ json_path: Some("file_scan_exclusions"),
pick: |settings_content| {
settings_content
.project
@@ -2479,15 +2598,16 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
description: "Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. \"File Scan Exclusions\" takes precedence over these inclusions",
field: Box::new(
SettingField {
+ json_path: Some("file_scan_inclusions"),
pick: |settings_content| {
settings_content
.project
.worktree
- .file_scan_exclusions
+ .file_scan_inclusions
.as_ref()
},
write: |settings_content, value| {
- settings_content.project.worktree.file_scan_exclusions = value;
+ settings_content.project.worktree.file_scan_inclusions = value;
},
}
.unimplemented(),
@@ -2499,6 +2619,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
title: "Restore File State",
description: "Restore previous file state when reopening.",
field: Box::new(SettingField {
+ json_path: Some("restore_on_file_reopen"),
pick: |settings_content| {
settings_content.workspace.restore_on_file_reopen.as_ref()
},