fix: but I don't like that I fixed by scheduling... Seems race condition
This commit is contained in:
@@ -74,7 +74,7 @@ function Finder:_find(prompt, process_result, process_complete)
|
|||||||
|
|
||||||
log.trace("Finding...")
|
log.trace("Finding...")
|
||||||
if self.static and self.done then
|
if self.static and self.done then
|
||||||
log.info("Using previous results")
|
log.trace("Using previous results")
|
||||||
for _, v in ipairs(self._cached_lines) do
|
for _, v in ipairs(self._cached_lines) do
|
||||||
process_result(v)
|
process_result(v)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ function Picker:find(opts)
|
|||||||
self.manager:add_entry(sort_score, entry)
|
self.manager:add_entry(sort_score, entry)
|
||||||
end
|
end
|
||||||
|
|
||||||
local process_complete = function()
|
local process_complete = vim.schedule_wrap(function()
|
||||||
self:set_selection(self:get_selection_row())
|
self:set_selection(self:get_selection_row())
|
||||||
|
|
||||||
local worst_line = self.max_results - self.manager.num_results()
|
local worst_line = self.max_results - self.manager.num_results()
|
||||||
@@ -245,13 +245,11 @@ function Picker:find(opts)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.schedule(function()
|
|
||||||
local empty_lines = utils.repeated_table(worst_line, "")
|
local empty_lines = utils.repeated_table(worst_line, "")
|
||||||
vim.api.nvim_buf_set_lines(results_bufnr, 0, worst_line, false, empty_lines)
|
vim.api.nvim_buf_set_lines(results_bufnr, 0, worst_line, false, empty_lines)
|
||||||
|
|
||||||
log.trace("Worst Line after process_complete: %s", worst_line, results_bufnr)
|
log.trace("Worst Line after process_complete: %s", worst_line, results_bufnr)
|
||||||
end)
|
end)
|
||||||
end
|
|
||||||
|
|
||||||
local ok, msg = pcall(function()
|
local ok, msg = pcall(function()
|
||||||
return finder(prompt, process_result, process_complete)
|
return finder(prompt, process_result, process_complete)
|
||||||
@@ -378,8 +376,8 @@ function Picker:set_selection(row)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local entry = self.manager:get_entry(self.max_results - row + 1)
|
local entry = self.manager:get_entry(self.max_results - row + 1)
|
||||||
if entry == self._selection then
|
if entry == self._selection and row == self._selection_row then
|
||||||
log.debug("Same entry as before. Skipping set")
|
log.trace("Same entry as before. Skipping set")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -407,7 +405,6 @@ function Picker:set_selection(row)
|
|||||||
-1
|
-1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
-- if self._match_id then
|
-- if self._match_id then
|
||||||
-- -- vim.fn.matchdelete(self._match_id)
|
-- -- vim.fn.matchdelete(self._match_id)
|
||||||
-- vim.fn.clearmatches(results_win)
|
-- vim.fn.clearmatches(results_win)
|
||||||
|
|||||||
Reference in New Issue
Block a user