diff --git a/crates/ai/src/ai.rs b/crates/ai/src/ai.rs index cd42ee115328febc04e632e3632ad9030ad3edcd..64d8b6962801cb57a4d2c253e63e3aac05c14a07 100644 --- a/crates/ai/src/ai.rs +++ b/crates/ai/src/ai.rs @@ -15,7 +15,6 @@ use std::cell::RefCell; use std::fs; use std::rc::Rc; use std::{io, sync::Arc}; -use util::channel::{ReleaseChannel, RELEASE_CHANNEL}; use util::{ResultExt, TryFutureExt}; pub use assistant::AssistantPanel; diff --git a/crates/ai/src/assistant.rs b/crates/ai/src/assistant.rs index 0c58f7a4791243b60d0fda3f66c202003e54c438..72e4e9fa427b22bcd985535e5ae431b52029f0f5 100644 --- a/crates/ai/src/assistant.rs +++ b/crates/ai/src/assistant.rs @@ -235,6 +235,7 @@ impl ContextEditor { let editor = cx.add_view(|cx| { let mut editor = Editor::for_multibuffer(multibuffer, None, cx); editor.set_soft_wrap_mode(SoftWrap::EditorWidth, cx); + editor.set_show_gutter(false, cx); editor }); @@ -328,7 +329,12 @@ impl View for ContextEditor { } fn render(&mut self, cx: &mut ViewContext) -> AnyElement { - ChildView::new(&self.editor, cx).into_any() + let theme = &theme::current(cx).assistant; + + ChildView::new(&self.editor, cx) + .contained() + .with_style(theme.container) + .into_any() } } diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index f5d109e15bd2138fba6914e058b575a5bdf42e80..31df5069db39f2c769f7d96b88958b4d9f606c2d 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -496,6 +496,7 @@ pub struct Editor { blink_manager: ModelHandle, show_local_selections: bool, mode: EditorMode, + show_gutter: bool, placeholder_text: Option>, highlighted_rows: Option>, #[allow(clippy::type_complexity)] @@ -526,6 +527,7 @@ pub struct Editor { pub struct EditorSnapshot { pub mode: EditorMode, + pub show_gutter: bool, pub display_snapshot: DisplaySnapshot, pub placeholder_text: Option>, is_focused: bool, @@ -1297,6 +1299,7 @@ impl Editor { blink_manager: blink_manager.clone(), show_local_selections: true, mode, + show_gutter: mode == EditorMode::Full, placeholder_text: None, highlighted_rows: None, background_highlights: Default::default(), @@ -1393,6 +1396,7 @@ impl Editor { pub fn snapshot(&mut self, cx: &mut WindowContext) -> EditorSnapshot { EditorSnapshot { mode: self.mode, + show_gutter: self.show_gutter, display_snapshot: self.display_map.update(cx, |map, cx| map.snapshot(cx)), scroll_anchor: self.scroll_manager.anchor(), ongoing_scroll: self.scroll_manager.ongoing_scroll(), @@ -6654,6 +6658,11 @@ impl Editor { cx.notify(); } + pub fn set_show_gutter(&mut self, show_gutter: bool, cx: &mut ViewContext) { + self.show_gutter = show_gutter; + cx.notify(); + } + pub fn reveal_in_finder(&mut self, _: &RevealInFinder, cx: &mut ViewContext) { if let Some(buffer) = self.buffer().read(cx).as_singleton() { if let Some(file) = buffer.read(cx).file().and_then(|f| f.as_local()) { diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 6be065084814e570a0411ffb91df4a4eb380e1ac..5b4da4407360b1a2af410b411bc910385307401e 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1899,7 +1899,7 @@ impl Element for EditorElement { let gutter_padding; let gutter_width; let gutter_margin; - if snapshot.mode == EditorMode::Full { + if snapshot.show_gutter { let em_width = style.text.em_width(cx.font_cache()); gutter_padding = (em_width * style.gutter_padding_factor).round(); gutter_width = self.max_line_number_width(&snapshot, cx) + gutter_padding * 2.0; diff --git a/crates/theme/src/theme.rs b/crates/theme/src/theme.rs index b1c9e9c215324bbd6dcdf363d2aeb272ec86f057..010d6956eb47ac57b8a9d08b876715f86a1d61b8 100644 --- a/crates/theme/src/theme.rs +++ b/crates/theme/src/theme.rs @@ -60,6 +60,7 @@ pub struct Theme { pub incoming_call_notification: IncomingCallNotification, pub tooltip: TooltipStyle, pub terminal: TerminalStyle, + pub assistant: AssistantStyle, pub feedback: FeedbackStyle, pub welcome: WelcomeStyle, pub color_scheme: ColorScheme, @@ -967,6 +968,11 @@ pub struct TerminalStyle { pub dim_foreground: Color, } +#[derive(Clone, Deserialize, Default)] +pub struct AssistantStyle { + pub container: ContainerStyle, +} + #[derive(Clone, Deserialize, Default)] pub struct FeedbackStyle { pub submit_button: Interactive, diff --git a/styles/src/styleTree/app.ts b/styles/src/styleTree/app.ts index 6238e1abe1e07a8df61094c82c6aacd11ac32548..a9700a8d9994f0b8f63b74862b8db26c873a37da 100644 --- a/styles/src/styleTree/app.ts +++ b/styles/src/styleTree/app.ts @@ -22,6 +22,7 @@ import { ColorScheme } from "../themes/common/colorScheme" import feedback from "./feedback" import welcome from "./welcome" import copilot from "./copilot" +import assistant from "./assistant" export default function app(colorScheme: ColorScheme): Object { return { @@ -50,6 +51,7 @@ export default function app(colorScheme: ColorScheme): Object { simpleMessageNotification: simpleMessageNotification(colorScheme), tooltip: tooltip(colorScheme), terminal: terminal(colorScheme), + assistant: assistant(colorScheme), feedback: feedback(colorScheme), colorScheme: { ...colorScheme, diff --git a/styles/src/styleTree/assistant.ts b/styles/src/styleTree/assistant.ts new file mode 100644 index 0000000000000000000000000000000000000000..810831285e0ec38f248ae01b3b00ba10c4ca669c --- /dev/null +++ b/styles/src/styleTree/assistant.ts @@ -0,0 +1,13 @@ +import { ColorScheme } from "../themes/common/colorScheme" +import editor from "./editor" + +export default function assistant(colorScheme: ColorScheme) { + return { + container: { + background: editor(colorScheme).background, + padding: { + left: 10, + } + } + } +}