diff options
| author | fdschmidt93 <39233597+fdschmidt93@users.noreply.github.com> | 2021-09-01 18:17:18 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-01 18:17:18 +0200 |
| commit | 5d37c3ea08f40d8c9d3a9ebcc72bd641d366c110 (patch) | |
| tree | e66df8fe1312c38ad28ff64e0f0218b415bf18af /lua/telescope/algos/linked_list.lua | |
| parent | 67bc1dcdd6eea1915b7c397b7c02451bbdc277a0 (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.lua | 37 |
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 |
