on master help sign in
Skip rendering gutters when gutter width exceeds view width (#7821)
c7e9e94Anshul Dalal
helix-term/src/ui/editor.rs+12−9
@@ -163,15 +163,18 @@ impl EditorView {
163 Box::new(highlights)
163 Box::new(highlights)
164 };
164 };
165
165
166+ let gutter_overflow = view.gutter_offset(doc) == 0;
167+ if !gutter_overflow {
166− Self::render_gutter(
168+ Self::render_gutter(
167− editor,
169+ editor,
168− doc,
170+ doc,
169− view,
171+ view,
170− view.area,
172+ view.area,
171− theme,
173+ theme,
172− is_focused,
174+ is_focused,
173− &mut line_decorations,
175+ &mut line_decorations,
174− );
176+ );
177+ }
175
178
176 if is_focused {
179 if is_focused {
177 let cursor = doc
180 let cursor = doc
helix-view/src/view.rs+8−2
@@ -187,11 +187,17 @@ impl View {
187 }
187 }
188
188
189 pub fn gutter_offset(&self, doc: &Document) -> u16 {
189 pub fn gutter_offset(&self, doc: &Document) -> u16 {
190+ let total_width = self
190− self.gutters
191+ .gutters
191 .layout
192 .layout
192 .iter()
193 .iter()
193 .map(|gutter| gutter.width(self, doc) as u16)
194 .map(|gutter| gutter.width(self, doc) as u16)
194− .sum()
195+ .sum();
196+ if total_width < self.area.width {
197+ total_width
198+ } else {
199+ 0
200+ }
195 }
201 }
196
202
197 //
203 //