diff options
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/application.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index 2c0b34dc..1e719f5f 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -241,7 +241,12 @@ impl Renderer { // completion if !prompt.completion.is_empty() { // TODO: find out better way of clearing individual lines of the screen - for i in (3..7) { + let mut row = 0; + let mut col = 0; + let max_col = self.size.0 / BASE_WIDTH; + let col_height = ((prompt.completion.len() as u16 + max_col - 1) / max_col); + + for i in (3..col_height + 3) { self.surface.set_string( 0, self.size.1 - i as u16, @@ -250,14 +255,9 @@ impl Renderer { ); } self.surface.set_style( - Rect::new(0, self.size.1 - 6, self.size.0, 4), + Rect::new(0, self.size.1 - col_height - 2, self.size.0, col_height), view.theme.get("ui.statusline"), ); - let mut row = 0; - let mut col = 0; - let max_col: u16 = self.size.0 / BASE_WIDTH; - // TODO: this will crash if there are too many cols added - // TODO: set char limit for (i, command) in prompt.completion.iter().enumerate() { let color = if prompt.completion_selection_index.is_some() && i == prompt.completion_selection_index.unwrap() @@ -268,13 +268,13 @@ impl Renderer { }; self.surface.set_stringn( 1 + col * BASE_WIDTH, - self.size.1 - 6 + row as u16, + self.size.1 - col_height - 2 + row, &command, BASE_WIDTH as usize - 1, color, ); row += 1; - if row > 3 { + if row > col_height - 1 { row = 0; col += 1; } |