TerminalView

Conrad Irwin created

Change summary

crates/agent/src/agent_profile.rs          |  2 
crates/terminal/src/terminal_settings.rs   |  2 
crates/terminal_view/src/terminal_panel.rs | 27 ++++++++---------------
crates/terminal_view/src/terminal_view.rs  | 11 ++-------
4 files changed, 15 insertions(+), 27 deletions(-)

Detailed changes

crates/agent/src/agent_profile.rs 🔗

@@ -49,7 +49,7 @@ impl AgentProfile {
                 .unwrap_or_default(),
         };
 
-        update_settings_file::<AgentSettings>(fs, cx, {
+        update_settings_file(fs, cx, {
             let id = id.clone();
             move |settings, _cx| {
                 profile_settings.save_to_settings(id, settings).log_err();

crates/terminal/src/terminal_settings.rs 🔗

@@ -108,7 +108,7 @@ impl settings::Settings for TerminalSettings {
                 breadcrumbs: content.toolbar.unwrap().breadcrumbs.unwrap(),
             },
             scrollbar: ScrollbarSettings {
-                show: content.scrollbar.unwrap().show.unwrap(),
+                show: content.scrollbar.unwrap().show.flatten(),
             },
             minimum_contrast: content.minimum_contrast.unwrap(),
         }

crates/terminal_view/src/terminal_panel.rs 🔗

@@ -18,12 +18,9 @@ use gpui::{
 use itertools::Itertools;
 use project::{Fs, Project, ProjectEntryId};
 use search::{BufferSearchBar, buffer_search::DivRegistrar};
-use settings::Settings;
+use settings::{Settings, TerminalDockPosition};
 use task::{RevealStrategy, RevealTarget, SpawnInTerminal, TaskId};
-use terminal::{
-    Terminal,
-    terminal_settings::{TerminalDockPosition, TerminalSettings},
-};
+use terminal::{Terminal, terminal_settings::TerminalSettings};
 use ui::{
     ButtonCommon, Clickable, ContextMenu, FluentBuilder, PopoverMenu, Toggleable, Tooltip,
     prelude::*,
@@ -1433,18 +1430,14 @@ impl Panel for TerminalPanel {
         _window: &mut Window,
         cx: &mut Context<Self>,
     ) {
-        settings::update_settings_file::<TerminalSettings>(
-            self.fs.clone(),
-            cx,
-            move |settings, _| {
-                let dock = match position {
-                    DockPosition::Left => TerminalDockPosition::Left,
-                    DockPosition::Bottom => TerminalDockPosition::Bottom,
-                    DockPosition::Right => TerminalDockPosition::Right,
-                };
-                settings.dock = Some(dock);
-            },
-        );
+        settings::update_settings_file(self.fs.clone(), cx, move |settings, _| {
+            let dock = match position {
+                DockPosition::Left => TerminalDockPosition::Left,
+                DockPosition::Bottom => TerminalDockPosition::Bottom,
+                DockPosition::Right => TerminalDockPosition::Right,
+            };
+            settings.terminal.get_or_insert_default().dock = Some(dock);
+        });
     }
 
     fn size(&self, window: &Window, cx: &App) -> Pixels {

crates/terminal_view/src/terminal_view.rs 🔗

@@ -25,7 +25,7 @@ use terminal::{
         index::Point,
         term::{TermMode, point_to_viewport, search::RegexSearch},
     },
-    terminal_settings::{self, CursorShape, TerminalBlink, TerminalSettings, WorkingDirectory},
+    terminal_settings::{CursorShape, TerminalSettings},
 };
 use terminal_element::TerminalElement;
 use terminal_panel::TerminalPanel;
@@ -50,7 +50,7 @@ use workspace::{
 };
 
 use serde::Deserialize;
-use settings::{Settings, SettingsStore};
+use settings::{Settings, SettingsStore, TerminalBlink, WorkingDirectory};
 use smol::Timer;
 use zed_actions::assistant::InlineAssist;
 
@@ -997,12 +997,7 @@ impl ScrollbarVisibility for TerminalScrollbarSettingsWrapper {
         TerminalSettings::get_global(cx)
             .scrollbar
             .show
-            .map(|value| match value {
-                terminal_settings::ShowScrollbar::Auto => scrollbars::ShowScrollbar::Auto,
-                terminal_settings::ShowScrollbar::System => scrollbars::ShowScrollbar::System,
-                terminal_settings::ShowScrollbar::Always => scrollbars::ShowScrollbar::Always,
-                terminal_settings::ShowScrollbar::Never => scrollbars::ShowScrollbar::Never,
-            })
+            .map(Into::into)
             .unwrap_or_else(|| EditorSettings::get_global(cx).scrollbar.show)
     }
 }