From 2532b98d6747230bb8e55753aa992bea267540a1 Mon Sep 17 00:00:00 2001 From: Simon Hauser Date: Sun, 13 Mar 2022 20:04:32 +0100 Subject: fix: selection strategy madness if its not set to `reset` (#1559) * fix: selection strategy madness when its not row * fix: selection_strategy row --- lua/telescope/pickers.lua | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'lua/telescope/pickers.lua') diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index a9c7fb2..9edd9e9 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -709,9 +709,9 @@ function Picker:delete_selection(delete_cb) end self:refresh() - vim.schedule(function() + vim.defer_fn(function() self.selection_strategy = original_selection_strategy - end) + end, 50) end function Picker:set_prompt(str) @@ -755,7 +755,16 @@ end --- Get the row number of the current selection ---@return number function Picker:get_selection_row() - return self._selection_row or self.max_results + if self._selection_row then + -- If the current row is no longer selectable than reduce it to num_results - 1, so the next selectable row. + -- This makes selection_strategy `row` work much better if the selected row is no longer part of the output. + local num_results = self.manager:num_results() + if num_results <= self._selection_row then + return num_results - 1 + end + return self._selection_row + end + return self.max_results end --- Move the current selection by `change` steps @@ -1277,13 +1286,6 @@ function Picker:get_result_processor(find_id, prompt, status_updater) end self.sorter:score(prompt, entry, cb_add, cb_filter) - - -- Only on the first addition do we want to set the selection. - -- This allows us to handle moving the cursor to the bottom or top of the window - -- depending on the strategy. - if count == 1 then - self:_do_selection(prompt) - end end end -- cgit v1.2.3