From c7e9e94f007e04836d134cd3e53f71c38b7ba1ec Mon Sep 17 00:00:00 2001
From: Anshul Dalal <83179501+ArchUsr64@users.noreply.github.com>
Date: Tue, 8 Aug 2023 05:43:10 +0530
Subject: [PATCH] Skip rendering gutters when gutter width exceeds view width
 (#7821)

---
 helix-term/src/ui/editor.rs | 21 ++++++++++++---------
 helix-view/src/view.rs      | 10 ++++++++--
 2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index 5b5cda93..aa159d40 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -163,15 +163,18 @@ impl EditorView {
             Box::new(highlights)
         };
 
-        Self::render_gutter(
-            editor,
-            doc,
-            view,
-            view.area,
-            theme,
-            is_focused,
-            &mut line_decorations,
-        );
+        let gutter_overflow = view.gutter_offset(doc) == 0;
+        if !gutter_overflow {
+            Self::render_gutter(
+                editor,
+                doc,
+                view,
+                view.area,
+                theme,
+                is_focused,
+                &mut line_decorations,
+            );
+        }
 
         if is_focused {
             let cursor = doc
diff --git a/helix-view/src/view.rs b/helix-view/src/view.rs
index ee6fc127..e5e2641a 100644
--- a/helix-view/src/view.rs
+++ b/helix-view/src/view.rs
@@ -187,11 +187,17 @@ impl View {
     }
 
     pub fn gutter_offset(&self, doc: &Document) -> u16 {
-        self.gutters
+        let total_width = self
+            .gutters
             .layout
             .iter()
             .map(|gutter| gutter.width(self, doc) as u16)
-            .sum()
+            .sum();
+        if total_width < self.area.width {
+            total_width
+        } else {
+            0
+        }
     }
 
     //