Add edit JSON button (#39732)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
This commit is contained in:
@@ -162,8 +162,8 @@ pub enum SettingsFile {
|
||||
User,
|
||||
Server,
|
||||
Default,
|
||||
/// Local also represents project settings in ssh projects as well as local projects
|
||||
Local((WorktreeId, Arc<RelPath>)),
|
||||
/// Represents project settings in ssh projects as well as local projects
|
||||
Project((WorktreeId, Arc<RelPath>)),
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -469,7 +469,7 @@ impl SettingsStore {
|
||||
// rev because these are sorted by path, so highest precedence is last
|
||||
.rev()
|
||||
.cloned()
|
||||
.map(SettingsFile::Local),
|
||||
.map(SettingsFile::Project),
|
||||
);
|
||||
|
||||
if self.server_settings.is_some() {
|
||||
@@ -496,7 +496,7 @@ impl SettingsStore {
|
||||
.map(|settings| settings.content.as_ref()),
|
||||
SettingsFile::Default => Some(self.default_settings.as_ref()),
|
||||
SettingsFile::Server => self.server_settings.as_deref(),
|
||||
SettingsFile::Local(ref key) => self.local_settings.get(key),
|
||||
SettingsFile::Project(ref key) => self.local_settings.get(key),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -515,8 +515,8 @@ impl SettingsStore {
|
||||
continue;
|
||||
}
|
||||
|
||||
if let SettingsFile::Local((wt_id, ref path)) = file
|
||||
&& let SettingsFile::Local((target_wt_id, ref target_path)) = target_file
|
||||
if let SettingsFile::Project((wt_id, ref path)) = file
|
||||
&& let SettingsFile::Project((target_wt_id, ref target_path)) = target_file
|
||||
&& (wt_id != target_wt_id || !target_path.starts_with(path))
|
||||
{
|
||||
// if requesting value from a local file, don't return values from local files in different worktrees
|
||||
@@ -543,7 +543,7 @@ impl SettingsStore {
|
||||
target_file: SettingsFile,
|
||||
pick: fn(&SettingsContent) -> &Option<T>,
|
||||
) -> (SettingsFile, Option<&T>) {
|
||||
// TODO: Add a metadata field for overriding the "overrides" tag, for contextually different settings
|
||||
// todo(settings_ui): Add a metadata field for overriding the "overrides" tag, for contextually different settings
|
||||
// e.g. disable AI isn't overridden, or a vec that gets extended instead or some such
|
||||
|
||||
// todo(settings_ui) cache all files
|
||||
@@ -556,9 +556,9 @@ impl SettingsStore {
|
||||
}
|
||||
found_file = true;
|
||||
|
||||
if let SettingsFile::Local((wt_id, ref path)) = file
|
||||
&& let SettingsFile::Local((target_wt_id, ref target_path)) = target_file
|
||||
&& (wt_id != target_wt_id || !target_path.starts_with(&path))
|
||||
if let SettingsFile::Project((worktree_id, ref path)) = file
|
||||
&& let SettingsFile::Project((target_worktree_id, ref target_path)) = target_file
|
||||
&& (worktree_id != target_worktree_id || !target_path.starts_with(&path))
|
||||
{
|
||||
// if requesting value from a local file, don't return values from local files in different worktrees
|
||||
continue;
|
||||
@@ -1718,7 +1718,7 @@ mod tests {
|
||||
let default_value = get(&store.default_settings).unwrap();
|
||||
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local.clone()), get),
|
||||
store.get_value_from_file(SettingsFile::Project(local.clone()), get),
|
||||
(SettingsFile::User, Some(&0))
|
||||
);
|
||||
assert_eq!(
|
||||
@@ -1727,7 +1727,7 @@ mod tests {
|
||||
);
|
||||
store.set_user_settings(r#"{}"#, cx).unwrap();
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local.clone()), get),
|
||||
store.get_value_from_file(SettingsFile::Project(local.clone()), get),
|
||||
(SettingsFile::Default, Some(&default_value))
|
||||
);
|
||||
store
|
||||
@@ -1740,8 +1740,8 @@ mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local.clone()), get),
|
||||
(SettingsFile::Local(local), Some(&80))
|
||||
store.get_value_from_file(SettingsFile::Project(local.clone()), get),
|
||||
(SettingsFile::Project(local), Some(&80))
|
||||
);
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::User, get),
|
||||
@@ -1821,12 +1821,12 @@ mod tests {
|
||||
|
||||
// each local child should only inherit from it's parent
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local_2_child), get),
|
||||
(SettingsFile::Local(local_2), Some(&2))
|
||||
store.get_value_from_file(SettingsFile::Project(local_2_child), get),
|
||||
(SettingsFile::Project(local_2), Some(&2))
|
||||
);
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local_1_child.clone()), get),
|
||||
(SettingsFile::Local(local_1.clone()), Some(&1))
|
||||
store.get_value_from_file(SettingsFile::Project(local_1_child.clone()), get),
|
||||
(SettingsFile::Project(local_1.clone()), Some(&1))
|
||||
);
|
||||
|
||||
// adjacent children should be treated as siblings not inherit from each other
|
||||
@@ -1851,8 +1851,8 @@ mod tests {
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local_1_adjacent_child.clone()), get),
|
||||
(SettingsFile::Local(local_1.clone()), Some(&1))
|
||||
store.get_value_from_file(SettingsFile::Project(local_1_adjacent_child.clone()), get),
|
||||
(SettingsFile::Project(local_1.clone()), Some(&1))
|
||||
);
|
||||
store
|
||||
.set_local_settings(
|
||||
@@ -1873,8 +1873,8 @@ mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
store.get_value_from_file(SettingsFile::Local(local_1_child), get),
|
||||
(SettingsFile::Local(local_1), Some(&1))
|
||||
store.get_value_from_file(SettingsFile::Project(local_1_child), get),
|
||||
(SettingsFile::Project(local_1), Some(&1))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1950,9 +1950,9 @@ mod tests {
|
||||
overrides,
|
||||
vec![
|
||||
SettingsFile::User,
|
||||
SettingsFile::Local(wt0_root.clone()),
|
||||
SettingsFile::Local(wt0_child1.clone()),
|
||||
SettingsFile::Local(wt1_root.clone()),
|
||||
SettingsFile::Project(wt0_root.clone()),
|
||||
SettingsFile::Project(wt0_child1.clone()),
|
||||
SettingsFile::Project(wt1_root.clone()),
|
||||
]
|
||||
);
|
||||
|
||||
@@ -1960,25 +1960,26 @@ mod tests {
|
||||
assert_eq!(
|
||||
overrides,
|
||||
vec![
|
||||
SettingsFile::Local(wt0_root.clone()),
|
||||
SettingsFile::Local(wt0_child1.clone()),
|
||||
SettingsFile::Local(wt1_root.clone()),
|
||||
SettingsFile::Project(wt0_root.clone()),
|
||||
SettingsFile::Project(wt0_child1.clone()),
|
||||
SettingsFile::Project(wt1_root.clone()),
|
||||
]
|
||||
);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt0_root), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt0_root), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt0_child1.clone()), get);
|
||||
let overrides =
|
||||
store.get_overrides_for_field(SettingsFile::Project(wt0_child1.clone()), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt0_child2), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt0_child2), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt1_root), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt1_root), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt1_subdir), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt1_subdir), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let wt0_deep_child = (
|
||||
@@ -1995,10 +1996,10 @@ mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt0_deep_child), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt0_deep_child), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Local(wt0_child1), get);
|
||||
let overrides = store.get_overrides_for_field(SettingsFile::Project(wt0_child1), get);
|
||||
assert_eq!(overrides, vec![]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user