summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-08-29 23:08:30 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-08-29 23:08:30 -0400
commit6a75a0b6d390759cbee3f53c606d47ca193a19b8 (patch)
tree3a216319c8fcc14a4ddec10910d12c56d36510c1 /lua
parent9bb62777b251ddc7a277debf19f0b3796e8ec81f (diff)
fix: but I don't like that I fixed by scheduling... Seems race condition
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/finders.lua2
-rw-r--r--lua/telescope/pickers.lua17
2 files changed, 8 insertions, 11 deletions
diff --git a/lua/telescope/finders.lua b/lua/telescope/finders.lua
index 64dfcaa..6fa4099 100644
--- a/lua/telescope/finders.lua
+++ b/lua/telescope/finders.lua
@@ -74,7 +74,7 @@ function Finder:_find(prompt, process_result, process_complete)
log.trace("Finding...")
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
process_result(v)
end
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index c0f9e62..e09f3bd 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -237,7 +237,7 @@ function Picker:find(opts)
self.manager:add_entry(sort_score, entry)
end
- local process_complete = function()
+ local process_complete = vim.schedule_wrap(function()
self:set_selection(self:get_selection_row())
local worst_line = self.max_results - self.manager.num_results()
@@ -245,13 +245,11 @@ function Picker:find(opts)
return
end
- vim.schedule(function()
- local empty_lines = utils.repeated_table(worst_line, "")
- vim.api.nvim_buf_set_lines(results_bufnr, 0, worst_line, false, empty_lines)
+ local empty_lines = utils.repeated_table(worst_line, "")
+ 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)
- end)
- end
+ log.trace("Worst Line after process_complete: %s", worst_line, results_bufnr)
+ end)
local ok, msg = pcall(function()
return finder(prompt, process_result, process_complete)
@@ -378,8 +376,8 @@ function Picker:set_selection(row)
end
local entry = self.manager:get_entry(self.max_results - row + 1)
- if entry == self._selection then
- log.debug("Same entry as before. Skipping set")
+ if entry == self._selection and row == self._selection_row then
+ log.trace("Same entry as before. Skipping set")
return
end
@@ -407,7 +405,6 @@ function Picker:set_selection(row)
-1
)
-
-- if self._match_id then
-- -- vim.fn.matchdelete(self._match_id)
-- vim.fn.clearmatches(results_win)