wip

Max Brunsfeld created

Change summary

zed/src/editor.rs                      |  4 ++++
zed/src/editor/display_map/wrap_map.rs | 10 +++++++++-
zed/src/editor/element.rs              |  2 ++
3 files changed, 15 insertions(+), 1 deletion(-)

Detailed changes

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,

zed/src/editor/display_map/wrap_map.rs 🔗

@@ -293,6 +293,14 @@ struct BackgroundWrapper {
     snapshot: Snapshot,
 }
 
+enum WrapChange {
+    InputChange {
+        snapshot: InputSnapshot,
+        edits: Vec<tab_map::Edit>,
+    },
+    WidthChange(Option<f32>),
+}
+
 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<InputEdit>)>,
+        edits_rx: channel::Receiver<WrapChange>,
         mut snapshot_tx: watch::Sender<Snapshot>,
     ) {
         let edit = InputEdit {

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);