fix(pickers): sorting_strategy=asc stale result clearing (#3298)

With `sorting_strategy='ascending'`, the results buffer should never
have lines beyond the `max_results` count OR the number of available
results, whichever is smaller.

closes #3282
This commit is contained in:
James Trew
2024-09-23 02:02:08 +00:00
committed by GitHub
parent 2ffcfc0d93
commit b324469959
3 changed files with 64 additions and 9 deletions

View File

@@ -431,13 +431,8 @@ function Picker:clear_extra_rows(results_bufnr)
local worst_line, ok, msg
if self.sorting_strategy == "ascending" then
local num_results = self.manager:num_results()
worst_line = self.max_results - num_results
if worst_line <= 0 then
return
end
ok, msg = pcall(vim.api.nvim_buf_set_lines, results_bufnr, num_results, -1, false, {})
worst_line = math.min(num_results, self.max_results)
ok, msg = pcall(vim.api.nvim_buf_set_lines, results_bufnr, worst_line, -1, false, {})
else
worst_line = self:get_row(self.manager:num_results())
if worst_line <= 0 then
@@ -1452,10 +1447,10 @@ end
--- Handles updating the picker after all the entries are scored/processed.
---@param results_bufnr number
---@param find_id number
---@param _ number
---@param prompt string
---@param status_updater function
function Picker:get_result_completor(results_bufnr, find_id, prompt, status_updater)
function Picker:get_result_completor(results_bufnr, _, prompt, status_updater)
return vim.schedule_wrap(function()
if self.closed == true or self:is_done() then
return