From 39dc09e6c4172299bc79de4c1c52288d3f624bd7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Wed, 23 Jun 2021 15:38:49 +0900
Subject: [PATCH] ui: Paginate prompt completion

---
 helix-term/src/ui/prompt.rs | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs
index c40be1a2..63078c39 100644
--- a/helix-term/src/ui/prompt.rs
+++ b/helix-term/src/ui/prompt.rs
@@ -292,17 +292,21 @@ impl Prompt {
             let area = completion_area;
             let background = theme.get("ui.statusline");
 
+            let items = height as usize * cols as usize;
+
+            let offset = self
+                .selection
+                .map(|selection| selection / items * items)
+                .unwrap_or_default();
+
             surface.clear_with(area, background);
 
             let mut row = 0;
             let mut col = 0;
 
             // TODO: paginate
-            for (i, (_range, completion)) in self
-                .completion
-                .iter()
-                .enumerate()
-                .take(height as usize * cols as usize)
+            for (i, (_range, completion)) in
+                self.completion.iter().enumerate().skip(offset).take(items)
             {
                 let color = if Some(i) == self.selection {
                     // Style::default().bg(Color::Rgb(104, 60, 232))