on master help sign in
Add single width left margin for completion popup (#2728)
16ccc7eGokul Soumya
helix-term/src/ui/menu.rs+11−1
@@ -48,6 +48,8 @@ pub struct Menu<T: Item> {
48}
48}
49
49
50impl<T: Item> Menu<T> {
50impl<T: Item> Menu<T> {
51+ const LEFT_PADDING: usize = 1;
52+
51 // TODO: it's like a slimmed down picker, share code? (picker = menu + prompt with different
53 // TODO: it's like a slimmed down picker, share code? (picker = menu + prompt with different
52 // rendering)
54 // rendering)
53 pub fn new(
55 pub fn new(
@@ -150,6 +152,7 @@ impl<T: Item> Menu<T> {
150 len += 1; // +1: reserve some space for scrollbar
152 len += 1; // +1: reserve some space for scrollbar
151 }
153 }
152
154
155+ len += Self::LEFT_PADDING;
153 let width = len.min(viewport.0 as usize);
156 let width = len.min(viewport.0 as usize);
154
157
155 self.widths = max_lens
158 self.widths = max_lens
@@ -271,6 +274,7 @@ impl<T: Item + 'static> Component for Menu<T> {
271 .try_get("ui.menu")
274 .try_get("ui.menu")
272 .unwrap_or_else(|| theme.get("ui.text"));
275 .unwrap_or_else(|| theme.get("ui.text"));
273 let selected = theme.get("ui.menu.selected");
276 let selected = theme.get("ui.menu.selected");
277+ surface.clear_with(area, style);
274
278
275 let scroll = self.scroll;
279 let scroll = self.scroll;
276
280
@@ -306,7 +310,7 @@ impl<T: Item + 'static> Component for Menu<T> {
306 use tui::widgets::TableState;
310 use tui::widgets::TableState;
307
311
308 table.render_table(
312 table.render_table(
309− area,
313+ area.clip_left(Self::LEFT_PADDING as u16),
310 surface,
314 surface,
311 &mut TableState {
315 &mut TableState {
312 offset: scroll,
316 offset: scroll,
@@ -314,6 +318,12 @@ impl<T: Item + 'static> Component for Menu<T> {
314 },
318 },
315 );
319 );
316
320
321+ if let Some(cursor) = self.cursor {
322+ let offset_from_top = cursor - scroll;
323+ let cell = &mut surface[(area.x, area.y + offset_from_top as u16)];
324+ cell.set_style(selected);
325+ }
326+
317 let fits = len <= win_height;
327 let fits = len <= win_height;
318
328
319 for (i, _) in (scroll..(scroll + win_height).min(len)).enumerate() {
329 for (i, _) in (scroll..(scroll + win_height).min(len)).enumerate() {