outline panel

Conrad Irwin created

Change summary

crates/outline_panel/src/outline_panel.rs          | 10 ++--
crates/outline_panel/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(-)

Detailed changes

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<Self>) {
         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);
         });

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<ShowIndentGuides>,
-}
-
 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(

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::<VimSettings>(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::<VimSettings>(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::<AllLanguageSettings>(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::<VimSettings>(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::<VimSettings>(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::<VimSettings>(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::<VimSettings>(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)
             });
         });
 

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::<EditorSettings>(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::<EditorSettings>(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::<EditorSettings>(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);
             });
         });