From 7483c762229516298c4a2d9398b9418dbc57198b Mon Sep 17 00:00:00 2001
From: kristopherbullinger
 <38427362+kristopherbullinger@users.noreply.github.com>
Date: Wed, 16 Nov 2022 20:06:50 -0500
Subject: [PATCH] update `x_offset` calculation in Buffer::set_string_truncated
 (#3839)

when `truncate_start` is `true`, the `x_offset` is now properly updated
according to the width of the content or the truncated length.
---
 helix-tui/src/buffer.rs | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/helix-tui/src/buffer.rs b/helix-tui/src/buffer.rs
index 5169196a..9b93c405 100644
--- a/helix-tui/src/buffer.rs
+++ b/helix-tui/src/buffer.rs
@@ -360,14 +360,14 @@ impl Buffer {
             let mut start_index = self.index_of(x, y);
             let mut index = self.index_of(max_offset as u16, y);
 
-            let total_width = string.width();
-            let truncated = total_width > width;
+            let content_width = string.width();
+            let truncated = content_width > width;
             if ellipsis && truncated {
                 self.content[start_index].set_symbol("…");
                 start_index += 1;
             }
             if !truncated {
-                index -= width - total_width;
+                index -= width - content_width;
             }
             for (byte_offset, s) in graphemes.rev() {
                 let width = s.width();
@@ -384,6 +384,7 @@ impl Buffer {
                     self.content[i].reset();
                 }
                 index -= width;
+                x_offset += width;
             }
         }
         (x_offset as u16, y)