summaryrefslogtreecommitdiff
path: root/lua/telescope
diff options
context:
space:
mode:
authorSimon Hauser <Simon-Hauser@outlook.de>2020-11-13 16:20:09 +0100
committerGitHub <noreply@github.com>2020-11-13 10:20:09 -0500
commitba52c70a60fb7e34a1512355ace2cd984705b7c6 (patch)
treeb661ad310b3d8a29bfad866e47d9a96882e1e7bc /lua/telescope
parent64aae0abd83ac852c9751d4b42310f6a213c3fd1 (diff)
fix: selection_strategies row and follow (#218)
Diffstat (limited to 'lua/telescope')
-rw-r--r--lua/telescope/entry_manager.lua4
-rw-r--r--lua/telescope/pickers.lua10
2 files changed, 10 insertions, 4 deletions
diff --git a/lua/telescope/entry_manager.lua b/lua/telescope/entry_manager.lua
index d53586e..fea0b7a 100644
--- a/lua/telescope/entry_manager.lua
+++ b/lua/telescope/entry_manager.lua
@@ -53,7 +53,7 @@ function EntryManager:new(max_results, set_entry, info)
local existing_entry = v.entry
-- FIXME: This has the problem of assuming that display will not be the same for two different entries.
- if existing_entry.display == entry.display then
+ if existing_entry == entry then
return k
end
end
@@ -110,7 +110,7 @@ function EntryManager:insert(picker, index, entry)
-- and then shift all the corresponding items one place.
local next_entry, last_score
repeat
- self.info.inserted = self.info.inserted + 1
+ self.info.inserted = self.info.inserted + 1
next_entry = self.entry_state[index]
self.set_entry(picker, index, entry.entry, entry.score)
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index fea687d..43d3b96 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -683,8 +683,14 @@ function Picker:set_selection(row)
row = self:_handle_scroll_strategy(row)
if not self:can_select_row(row) then
- log.debug("Cannot select row:", row, self.manager:num_results(), self.max_results)
- return
+ -- If the current selected row exceeds number of currently displayed
+ -- elements we have to reset it. Affectes sorting_strategy = 'row'.
+ if not self:can_select_row(self:get_selection_row()) then
+ row = self:get_row(self.manager:num_results())
+ else
+ log.debug("Cannot select row:", row, self.manager:num_results(), self.max_results)
+ return
+ end
end
-- local entry = self.manager:get_entry(self.max_results - row + 1)