on master help sign in
ui: Paginate prompt completion
39dc09eBlaž Hrastnik
helix-term/src/ui/prompt.rs+9−5
@@ -292,17 +292,21 @@ impl Prompt {
292 let area = completion_area;
292 let area = completion_area;
293 let background = theme.get("ui.statusline");
293 let background = theme.get("ui.statusline");
294
294
295+ let items = height as usize * cols as usize;
296+
297+ let offset = self
298+ .selection
299+ .map(|selection| selection / items * items)
300+ .unwrap_or_default();
301+
295 surface.clear_with(area, background);
302 surface.clear_with(area, background);
296
303
297 let mut row = 0;
304 let mut row = 0;
298 let mut col = 0;
305 let mut col = 0;
299
306
300 // TODO: paginate
307 // TODO: paginate
301− for (i, (_range, completion)) in self
308+ for (i, (_range, completion)) in
302− .completion
309+ self.completion.iter().enumerate().skip(offset).take(items)
303− .iter()
304− .enumerate()
305− .take(height as usize * cols as usize)
306 {
310 {
307 let color = if Some(i) == self.selection {
311 let color = if Some(i) == self.selection {
308 // Style::default().bg(Color::Rgb(104, 60, 232))
312 // Style::default().bg(Color::Rgb(104, 60, 232))