Skip to content

Commit 16c3998

Browse files
danilo-lealcameron1024probably-neb
authored
settings_ui: Add ability to copy a link for a given setting (#41172)
Release Notes: - settings_ui: Added the ability to copy a link to a given setting, allowing users to quickly open the settings window at the correct location in a faster way. --------- Co-authored-by: cameron <[email protected]> Co-authored-by: Ben Kunkle <[email protected]>
1 parent 3583e12 commit 16c3998

File tree

6 files changed

+266
-142
lines changed

6 files changed

+266
-142
lines changed

assets/icons/link.svg

Lines changed: 5 additions & 0 deletions
Loading

crates/icons/src/icons.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ pub enum IconName {
145145
Keyboard,
146146
Library,
147147
LineHeight,
148+
Link,
148149
ListCollapse,
149150
ListFilter,
150151
ListTodo,

crates/settings_ui/src/page_data.rs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,17 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
177177
}),
178178
SettingsPageItem::SectionHeader("Scoped Settings"),
179179
SettingsPageItem::SettingItem(SettingItem {
180-
// todo(settings_ui): Implement another setting item type that just shows an edit in settings.json
181180
files: USER,
182181
title: "Preview Channel",
183182
description: "Which settings should be activated only in Preview build of Zed.",
184183
field: Box::new(
185184
SettingField {
186-
json_path: Some("use_system_prompts"),
185+
json_path: Some("preview_channel_settings"),
187186
pick: |settings_content| {
188-
settings_content.workspace.use_system_prompts.as_ref()
187+
Some(settings_content)
189188
},
190-
write: |settings_content, value| {
191-
settings_content.workspace.use_system_prompts = value;
189+
write: |_settings_content, _value| {
190+
192191
},
193192
}
194193
.unimplemented(),
@@ -201,12 +200,11 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
201200
description: "Any number of settings profiles that are temporarily applied on top of your existing user settings.",
202201
field: Box::new(
203202
SettingField {
204-
json_path: Some(""),
203+
json_path: Some("settings_profiles"),
205204
pick: |settings_content| {
206-
settings_content.workspace.use_system_prompts.as_ref()
205+
Some(settings_content)
207206
},
208-
write: |settings_content, value| {
209-
settings_content.workspace.use_system_prompts = value;
207+
write: |_settings_content, _value| {
210208
},
211209
}
212210
.unimplemented(),
@@ -290,6 +288,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
290288
},
291289
write: |settings_content, value| {
292290
let Some(value) = value else {
291+
settings_content.theme.theme = None;
293292
return;
294293
};
295294
let settings_value = settings_content.theme.theme.get_or_insert_with(|| {
@@ -459,6 +458,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
459458
},
460459
write: |settings_content, value| {
461460
let Some(value) = value else {
461+
settings_content.theme.icon_theme = None;
462462
return;
463463
};
464464
let settings_value = settings_content.theme.icon_theme.get_or_insert_with(|| {
@@ -662,6 +662,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
662662
},
663663
write: |settings_content, value| {
664664
let Some(value) = value else {
665+
settings_content.theme.buffer_line_height = None;
665666
return;
666667
};
667668
let settings_value = settings_content.theme.buffer_line_height.get_or_insert_with(|| {
@@ -1123,6 +1124,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
11231124
},
11241125
write: |settings_content, value| {
11251126
let Some(value) = value else {
1127+
settings_content.workspace.autosave = None;
11261128
return;
11271129
};
11281130
let settings_value = settings_content.workspace.autosave.get_or_insert_with(|| {
@@ -1171,6 +1173,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
11711173
},
11721174
write: |settings_content, value| {
11731175
let Some(value) = value else {
1176+
settings_content.workspace.autosave = None;
11741177
return;
11751178
};
11761179
match settings_content
@@ -2105,7 +2108,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
21052108
description: "A mapping from languages to files and file extensions that should be treated as that language.",
21062109
field: Box::new(
21072110
SettingField {
2108-
json_path: Some("file_types"),
2111+
json_path: Some("file_type_associations"),
21092112
pick: |settings_content| {
21102113
settings_content.project.all_languages.file_types.as_ref()
21112114
},
@@ -4449,6 +4452,9 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
44494452
},
44504453
write: |settings_content, value| {
44514454
let Some(value) = value else {
4455+
if let Some(terminal) = settings_content.terminal.as_mut() {
4456+
terminal.project.shell = None;
4457+
}
44524458
return;
44534459
};
44544460
let settings_value = settings_content
@@ -4500,7 +4506,7 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
45004506
title: "Program",
45014507
description: "The shell program to use.",
45024508
field: Box::new(SettingField {
4503-
json_path: Some("terminal.shell.program"),
4509+
json_path: Some("terminal.shell"),
45044510
pick: |settings_content| {
45054511
match settings_content.terminal.as_ref()?.project.shell.as_ref() {
45064512
Some(settings::Shell::Program(program)) => Some(program),
@@ -4632,6 +4638,9 @@ pub(crate) fn settings_data(cx: &App) -> Vec<SettingsPage> {
46324638
},
46334639
write: |settings_content, value| {
46344640
let Some(value) = value else {
4641+
if let Some(terminal) = settings_content.terminal.as_mut() {
4642+
terminal.project.working_directory = None;
4643+
}
46354644
return;
46364645
};
46374646
let settings_value = settings_content
@@ -7092,7 +7101,7 @@ fn non_editor_language_settings_data() -> Vec<SettingsPageItem> {
70927101
description: "Default Prettier options, in the format as in package.json section for Prettier.",
70937102
field: Box::new(
70947103
SettingField {
7095-
json_path: Some("languages.$(language).prettier"),
7104+
json_path: Some("languages.$(language).prettier.options"),
70967105
pick: |settings_content| {
70977106
language_settings_field(settings_content, |language| {
70987107
language.prettier.as_ref()?.options.as_ref()

0 commit comments

Comments
 (0)