This commit is contained in:
Conrad Irwin
2025-09-17 13:53:14 -06:00
parent 16974e64aa
commit 0ade84e5e6
5 changed files with 20 additions and 60 deletions

View File

@@ -14,9 +14,7 @@ use gpui::{
use http_client::BlockedHttpClient;
use language::{
FakeLspAdapter, Language, LanguageConfig, LanguageMatcher, LanguageRegistry,
language_settings::{
Formatter, FormatterList, PrettierSettings, SelectedFormatter, language_settings,
},
language_settings::{Formatter, FormatterList, SelectedFormatter, language_settings},
tree_sitter_typescript,
};
use node_runtime::NodeRuntime;

View File

@@ -176,6 +176,7 @@ pub struct SearchSettings {
pub include_ignored: bool,
pub regex: bool,
}
impl EditorSettings {
pub fn jupyter_enabled(cx: &App) -> bool {
EditorSettings::get_global(cx).jupyter.enabled

View File

@@ -1480,7 +1480,7 @@ mod tests {
use gpui::{Hsla, TestAppContext, UpdateGlobal, VisualTestContext};
use language::{Buffer, Point};
use project::Project;
use settings::SettingsStore;
use settings::{SearchSettingsContent, SettingsStore};
use smol::stream::StreamExt as _;
use unindent::Unindent as _;
@@ -2867,7 +2867,13 @@ mod tests {
cx.update(|cx| {
SettingsStore::update_global(cx, |store, cx| {
store.update_user_settings(cx, |settings| {
settings.editor.search = Some(search_settings);
settings.editor.search = Some(SearchSettingsContent {
button: Some(search_settings.button),
whole_word: Some(search_settings.whole_word),
case_sensitive: Some(search_settings.case_sensitive),
include_ignored: Some(search_settings.include_ignored),
regex: Some(search_settings.regex),
});
});
});
});

View File

@@ -295,57 +295,8 @@ impl SettingsUiTree {
// so that we can keep none/skip and still test in CI that all settings have
#[cfg(feature = "test-support")]
pub fn all_paths(&self, cx: &App) -> Vec<Vec<SharedString>> {
fn all_paths_rec(
tree: &[UiEntry],
paths: &mut Vec<Vec<SharedString>>,
current_path: &mut Vec<SharedString>,
idx: usize,
cx: &App,
) {
let child = &tree[idx];
let mut pushed_path = false;
if let Some(path) = child.path.as_ref() {
current_path.push(path.clone());
paths.push(current_path.clone());
pushed_path = true;
}
// todo(settings_ui): handle dynamic nodes here
let selected_descendant_index = child
.dynamic_render
.as_ref()
.map(|dynamic_render| {
read_settings_value_from_path(
SettingsStore::global(cx).raw_default_settings(),
&current_path,
)
.map(|value| (dynamic_render.determine_option)(value, cx))
})
.and_then(|selected_descendant_index| {
selected_descendant_index.map(|index| child.nth_descendant_index(tree, index))
});
if let Some(selected_descendant_index) = selected_descendant_index {
// just silently fail if we didn't find a setting value for the path
if let Some(descendant_index) = selected_descendant_index {
all_paths_rec(tree, paths, current_path, descendant_index, cx);
}
} else if let Some(desc_idx) = child.first_descendant_index() {
let mut desc_idx = Some(desc_idx);
while let Some(descendant_index) = desc_idx {
all_paths_rec(&tree, paths, current_path, descendant_index, cx);
desc_idx = tree[descendant_index].next_sibling;
}
}
if pushed_path {
current_path.pop();
}
}
let mut paths = Vec::new();
for &index in &self.root_entry_indices {
all_paths_rec(&self.entries, &mut paths, &mut Vec::new(), index, cx);
}
paths
// todo(settings_ui) this needs to be implemented not in terms of JSON anymore
Vec::default()
}
}

View File

@@ -1724,8 +1724,8 @@ mod test {
async fn test_f_and_t_smartcase(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestContext::new(cx, true).await;
cx.update_global(|store: &mut SettingsStore, cx| {
store.update_user_settings::<VimSettings>(cx, |s| {
s.use_smartcase_find = Some(true);
store.update_user_settings(cx, |s| {
s.vim.get_or_insert_default().use_smartcase_find = Some(true);
});
});
@@ -1891,8 +1891,12 @@ mod test {
cx.update(|_, cx| {
SettingsStore::update_global(cx, |settings, cx| {
settings.update_user_settings::<AllLanguageSettings>(cx, |settings| {
settings.defaults.preferred_line_length = Some(5);
settings.update_user_settings(cx, |settings| {
settings
.project
.all_languages
.defaults
.preferred_line_length = Some(5);
});
})
});