@@ -107,6 +107,7 @@ impl MessageEditor {
let this = cx.entity().downgrade();
editor.update(cx, |editor, cx| {
editor.set_soft_wrap_mode(SoftWrap::EditorWidth, cx);
+ editor.set_offset_content(false, cx);
editor.set_use_autoclose(false);
editor.set_show_gutter(false, cx);
editor.set_show_wrap_guides(false, cx);
@@ -923,6 +923,7 @@ pub struct Editor {
show_gutter: bool,
show_scrollbars: bool,
minimap_visibility: MinimapVisibility,
+ offset_content: bool,
disable_expand_excerpt_buttons: bool,
show_line_numbers: Option<bool>,
use_relative_line_numbers: Option<bool>,
@@ -1761,6 +1762,7 @@ impl Editor {
show_local_selections: true,
show_scrollbars: full_mode,
minimap_visibility: MinimapVisibility::for_mode(&mode, cx),
+ offset_content: !matches!(mode, EditorMode::SingleLine { .. }),
show_breadcrumbs: EditorSettings::get_global(cx).toolbar.breadcrumbs,
show_gutter: mode.is_full(),
show_line_numbers: None,
@@ -16921,6 +16923,17 @@ impl Editor {
self.set_minimap_visibility(MinimapVisibility::Disabled, window, cx);
}
+ /// Normally the text in full mode and auto height editors is padded on the
+ /// left side by roughly half a character width for improved hit testing.
+ ///
+ /// Use this method to disable this for cases where this is not wanted (e.g.
+ /// if you want to align the editor text with some other text above or below)
+ /// or if you want to add this padding to single-line editors.
+ pub fn set_offset_content(&mut self, offset_content: bool, cx: &mut Context<Self>) {
+ self.offset_content = offset_content;
+ cx.notify();
+ }
+
pub fn set_show_line_numbers(&mut self, show_line_numbers: bool, cx: &mut Context<Self>) {
self.show_line_numbers = Some(show_line_numbers);
cx.notify();
@@ -7343,9 +7343,12 @@ impl Element for EditorElement {
self.max_line_number_width(&snapshot, window, cx),
cx,
)
- .unwrap_or_else(|| {
- GutterDimensions::default_with_margin(font_id, font_size, cx)
- });
+ .or_else(|| {
+ self.editor.read(cx).offset_content.then(|| {
+ GutterDimensions::default_with_margin(font_id, font_size, cx)
+ })
+ })
+ .unwrap_or_default();
let text_width = bounds.size.width - gutter_dimensions.width;
let settings = EditorSettings::get_global(cx);
@@ -9391,7 +9394,12 @@ fn compute_auto_height_layout(
let mut snapshot = editor.snapshot(window, cx);
let gutter_dimensions = snapshot
.gutter_dimensions(font_id, font_size, max_line_number_width, cx)
- .unwrap_or_else(|| GutterDimensions::default_with_margin(font_id, font_size, cx));
+ .or_else(|| {
+ editor
+ .offset_content
+ .then(|| GutterDimensions::default_with_margin(font_id, font_size, cx))
+ })
+ .unwrap_or_default();
editor.gutter_dimensions = gutter_dimensions;
let text_width = width - gutter_dimensions.width;