From 0968cc8256c2631633f6e61097e275be84865e61 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Wed, 17 Sep 2025 13:41:46 -0600 Subject: [PATCH] outline panel --- crates/outline_panel/src/outline_panel.rs | 10 +++---- .../src/outline_panel_settings.rs | 16 ++++------ crates/vim/src/normal/paste.rs | 29 ++++++++++--------- crates/vim/src/normal/scroll.rs | 13 +++------ 4 files changed, 30 insertions(+), 38 deletions(-) diff --git a/crates/outline_panel/src/outline_panel.rs b/crates/outline_panel/src/outline_panel.rs index b4c0bb71ecb21f986d4a155fec045dd6b56987ea..76ee4beec2315ed1db55bd3002af1d49d83095e0 100644 --- a/crates/outline_panel/src/outline_panel.rs +++ b/crates/outline_panel/src/outline_panel.rs @@ -38,7 +38,7 @@ use std::{ u32, }; -use outline_panel_settings::{LeftRightDockPosition, OutlinePanelSettings, ShowIndentGuides}; +use outline_panel_settings::{DockSide, OutlinePanelSettings, ShowIndentGuides}; use project::{File, Fs, GitEntry, GitTraversal, Project, ProjectItem}; use search::{BufferSearchBar, ProjectSearchView}; use serde::{Deserialize, Serialize}; @@ -4836,8 +4836,8 @@ impl Panel for OutlinePanel { fn position(&self, _: &Window, cx: &App) -> DockPosition { match OutlinePanelSettings::get_global(cx).dock { - LeftRightDockPosition::Left => DockPosition::Left, - LeftRightDockPosition::Right => DockPosition::Right, + DockSide::Left => DockPosition::Left, + DockSide::Right => DockPosition::Right, } } @@ -4848,8 +4848,8 @@ impl Panel for OutlinePanel { fn set_position(&mut self, position: DockPosition, _: &mut Window, cx: &mut Context) { settings::update_settings_file(self.fs.clone(), cx, move |settings, _| { let dock = match position { - DockPosition::Left | DockPosition::Bottom => LeftRightDockPosition::Left, - DockPosition::Right => LeftRightDockPosition::Right, + DockPosition::Left | DockPosition::Bottom => DockSide::Left, + DockPosition::Right => DockSide::Right, }; settings.outline_panel.get_or_insert_default().dock = Some(dock); }); diff --git a/crates/outline_panel/src/outline_panel_settings.rs b/crates/outline_panel/src/outline_panel_settings.rs index 638bf76fcaf258caef149b9283ec49e28032cd69..b9b0518a7cf3eac107abc04c39ac1d6d65a61bb9 100644 --- a/crates/outline_panel/src/outline_panel_settings.rs +++ b/crates/outline_panel/src/outline_panel_settings.rs @@ -8,7 +8,7 @@ use util::MergeFrom; pub struct OutlinePanelSettings { pub button: bool, pub default_width: Pixels, - pub dock: LeftRightDockPosition, + pub dock: DockSide, pub file_icons: bool, pub folder_icons: bool, pub git_status: bool, @@ -33,12 +33,6 @@ pub struct IndentGuidesSettings { pub show: ShowIndentGuides, } -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub struct IndentGuidesSettingsContent { - /// When to show the scrollbar in the outline panel. - pub show: Option, -} - impl ScrollbarVisibility for OutlinePanelSettings { fn visibility(&self, cx: &App) -> ShowScrollbar { self.scrollbar @@ -70,7 +64,7 @@ impl Settings for OutlinePanelSettings { } } - fn refine(&mut self, content: &settings::SettingsContent, cx: &mut App) { + fn refine(&mut self, content: &settings::SettingsContent, _cx: &mut App) { let Some(panel) = content.outline_panel.as_ref() else { return; }; @@ -92,8 +86,10 @@ impl Settings for OutlinePanelSettings { .merge_from(&panel.auto_reveal_entries); self.auto_fold_dirs.merge_from(&panel.auto_fold_dirs); - if let Some(scrollbar) = panel.scrollbar.as_ref() { - self.scrollbar.show.merge_from(&scrollbar.show.flatten()); + if let Some(scrollbar) = panel.scrollbar.as_ref() + && let Some(show) = scrollbar.show.flatten() + { + self.scrollbar.show = Some(show.into()) } } fn import_from_vscode( diff --git a/crates/vim/src/normal/paste.rs b/crates/vim/src/normal/paste.rs index 933b119d3794540681cc096b0fe22b7f70da00cb..04761d3270b9f4ffef8c4e3880ee4e9fb21fd2ad 100644 --- a/crates/vim/src/normal/paste.rs +++ b/crates/vim/src/normal/paste.rs @@ -408,8 +408,8 @@ mod test { let mut cx = VimTestContext::new(cx, true).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::Never) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = Some(UseSystemClipboard::Never) }); }); @@ -444,8 +444,9 @@ mod test { let mut cx = VimTestContext::new(cx, true).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::OnYank) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = + Some(UseSystemClipboard::OnYank) }); }); @@ -709,8 +710,8 @@ mod test { Mode::Normal, ); cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |settings| { - settings.languages.0.insert( + store.update_user_settings(cx, |settings| { + settings.project.all_languages.languages.0.insert( LanguageName::new("Rust"), LanguageSettingsContent { auto_indent_on_paste: Some(false), @@ -772,8 +773,8 @@ mod test { let mut cx = NeovimBackedTestContext::new(cx).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::Never) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = Some(UseSystemClipboard::Never) }); }); @@ -818,8 +819,8 @@ mod test { let mut cx = NeovimBackedTestContext::new(cx).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::Never) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = Some(UseSystemClipboard::Never) }); }); @@ -847,8 +848,8 @@ mod test { let mut cx = NeovimBackedTestContext::new(cx).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::Never) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = Some(UseSystemClipboard::Never) }); }); @@ -906,8 +907,8 @@ mod test { let mut cx = VimTestContext::new(cx, true).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.use_system_clipboard = Some(UseSystemClipboard::Never) + store.update_user_settings(cx, |s| { + s.vim.get_or_insert_default().use_system_clipboard = Some(UseSystemClipboard::Never) }); }); diff --git a/crates/vim/src/normal/scroll.rs b/crates/vim/src/normal/scroll.rs index eeb98692bc30c5c8c39c0be23ba17b3276b708df..647f955544ef876647af94f788484a3bc5fbfdfe 100644 --- a/crates/vim/src/normal/scroll.rs +++ b/crates/vim/src/normal/scroll.rs @@ -427,9 +427,7 @@ mod test { // First test without vertical scroll margin cx.neovim.set_option(&format!("scrolloff={}", 0)).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.vertical_scroll_margin = Some(0.0) - }); + store.update_user_settings(cx, |s| s.editor.vertical_scroll_margin = Some(0.0)); }); let content = "ˇ".to_owned() + &sample_text(26, 2, 'a'); @@ -455,9 +453,7 @@ mod test { cx.neovim.set_option(&format!("scrolloff={}", 3)).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.vertical_scroll_margin = Some(3.0) - }); + store.update_user_settings(cx, |s| s.editor.vertical_scroll_margin = Some(3.0)); }); // scroll down: ctrl-f @@ -485,9 +481,8 @@ mod test { cx.set_shared_state(&content).await; cx.update_global(|store: &mut SettingsStore, cx| { - store.update_user_settings::(cx, |s| { - s.scroll_beyond_last_line = Some(ScrollBeyondLastLine::Off); - // s.vertical_scroll_margin = Some(0.); + store.update_user_settings(cx, |s| { + s.editor.scroll_beyond_last_line = Some(ScrollBeyondLastLine::Off); }); });