summaryrefslogtreecommitdiff
path: root/lua/telescope/algos/linked_list.lua
diff options
context:
space:
mode:
authorfdschmidt93 <39233597+fdschmidt93@users.noreply.github.com>2021-09-01 18:17:18 +0200
committerGitHub <noreply@github.com>2021-09-01 18:17:18 +0200
commit5d37c3ea08f40d8c9d3a9ebcc72bd641d366c110 (patch)
treee66df8fe1312c38ad28ff64e0f0218b415bf18af /lua/telescope/algos/linked_list.lua
parent67bc1dcdd6eea1915b7c397b7c02451bbdc277a0 (diff)
feat: allow caching and resuming picker (#1051)
* expose `cache_picker` in telescope.setup to configure caching, see `:h telescope.defaults.cache_picker` * add builtin.resume and builtin.pickers picker
Diffstat (limited to 'lua/telescope/algos/linked_list.lua')
-rw-r--r--lua/telescope/algos/linked_list.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/lua/telescope/algos/linked_list.lua b/lua/telescope/algos/linked_list.lua
index 6015e1e..2da6a6e 100644
--- a/lua/telescope/algos/linked_list.lua
+++ b/lua/telescope/algos/linked_list.lua
@@ -215,4 +215,41 @@ function LinkedList:ipairs()
end
end
+function LinkedList:truncate(max_results)
+ if max_results >= self.size then
+ return
+ end
+
+ local current_node
+ if max_results < self.size - max_results then
+ local index = 1
+ current_node = self.head
+ while index < max_results do
+ local node = current_node
+ if not node.next then
+ break
+ end
+ current_node = current_node.next
+ index = index + 1
+ end
+ self.size = max_results
+ else
+ current_node = self.tail
+ while self.size > max_results do
+ if current_node.prev == nil then
+ break
+ end
+ current_node = current_node.prev
+ self.size = self.size - 1
+ end
+ end
+ self.tail = current_node
+ self.tail.next = nil
+ if max_results < self.track_at then
+ self.track_at = max_results
+ self.tracked = current_node.item
+ self._tracked_node = current_node
+ end
+end
+
return LinkedList