diff options
| author | TJ DeVries <devries.timothyj@gmail.com> | 2020-08-29 23:08:30 -0400 |
|---|---|---|
| committer | TJ DeVries <devries.timothyj@gmail.com> | 2020-08-29 23:08:30 -0400 |
| commit | 6a75a0b6d390759cbee3f53c606d47ca193a19b8 (patch) | |
| tree | 3a216319c8fcc14a4ddec10910d12c56d36510c1 /lua | |
| parent | 9bb62777b251ddc7a277debf19f0b3796e8ec81f (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.lua | 2 | ||||
| -rw-r--r-- | lua/telescope/pickers.lua | 17 |
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) |
