diff --git a/zed/src/editor.rs b/zed/src/editor.rs index d06b4611d4..9f9a0e955a 100644 --- a/zed/src/editor.rs +++ b/zed/src/editor.rs @@ -2190,6 +2190,10 @@ impl Editor { font_cache.em_width(font_id, settings.buffer_font_size) } + pub fn set_width(&self, width: f32) { + self.display_map.set_wrap_width(Some(width)); + } + // TODO: Can we make this not return a result? pub fn max_line_number_width( &self, diff --git a/zed/src/editor/display_map/wrap_map.rs b/zed/src/editor/display_map/wrap_map.rs index 8dfef04a11..cf8cc1aa09 100644 --- a/zed/src/editor/display_map/wrap_map.rs +++ b/zed/src/editor/display_map/wrap_map.rs @@ -293,6 +293,14 @@ struct BackgroundWrapper { snapshot: Snapshot, } +enum WrapChange { + InputChange { + snapshot: InputSnapshot, + edits: Vec, + }, + WidthChange(Option), +} + impl BackgroundWrapper { fn new( snapshot: Snapshot, @@ -313,7 +321,7 @@ impl BackgroundWrapper { async fn run( &mut self, snapshot: InputSnapshot, - edits_rx: channel::Receiver<(InputSnapshot, Vec)>, + edits_rx: channel::Receiver, mut snapshot_tx: watch::Sender, ) { let edit = InputEdit { diff --git a/zed/src/editor/element.rs b/zed/src/editor/element.rs index 2921b2ce6a..70a254f0d5 100644 --- a/zed/src/editor/element.rs +++ b/zed/src/editor/element.rs @@ -338,6 +338,8 @@ impl Element for EditorElement { } let view = self.view(app); + view.set_width(size.x()); + let font_cache = &cx.font_cache; let layout_cache = &cx.text_layout_cache; let line_height = view.line_height(font_cache);