From d686fb27998fc130f7b851fb6c540f3f1fe806e8 Mon Sep 17 00:00:00 2001 From: Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> Date: Tue, 16 Nov 2021 11:14:52 +0000 Subject: fix: cleanup of layout actions * fix: finish docs and remove mistakes from merge * fix: change order of `popup` changes based on type of change - removes "flash" issue where popups don't update in sync --- lua/telescope/pickers.lua | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'lua/telescope/pickers.lua') diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index b626c46..6b850e9 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -533,11 +533,12 @@ function Picker:recalculate_layout() local results_win = status.results_win local preview_win = status.preview_win - popup.move(results_win, popup_opts.results) - local preview_opts, preview_border_win if popup_opts.preview then if preview_win ~= nil then + -- Move all popups at the same time + popup.move(prompt_win, popup_opts.prompt) + popup.move(results_win, popup_opts.results) popup.move(preview_win, popup_opts.preview) else popup_opts.preview.highlight = "TelescopePreviewNormal" @@ -555,20 +556,33 @@ function Picker:recalculate_layout() self.preview_win = preview_win self.preview_border_win = preview_border_win self.preview_border = preview_opts and preview_opts.border + + -- Move prompt and results after preview created + vim.defer_fn(function() + popup.move(prompt_win, popup_opts.prompt) + popup.move(results_win, popup_opts.results) + end, 0) end elseif preview_win ~= nil then - utils.win_delete("preview_win", preview_win, true) - utils.win_delete("preview_win", status.preview_border_win, true) - status.preview_win = nil - status.preview_border_win = nil - state.set_status(prompt_win, status) - self.preview_win = nil - self.preview_border_win = nil - self.preview_border = nil + popup.move(prompt_win, popup_opts.prompt) + popup.move(results_win, popup_opts.results) + + -- Remove preview after the prompt and results are moved + vim.defer_fn(function() + utils.win_delete("preview_win", preview_win, true) + utils.win_delete("preview_win", status.preview_border_win, true) + status.preview_win = nil + status.preview_border_win = nil + state.set_status(prompt_win, status) + self.preview_win = nil + self.preview_border_win = nil + self.preview_border = nil + end, 0) + else + popup.move(prompt_win, popup_opts.prompt) + popup.move(results_win, popup_opts.results) end - popup.move(prompt_win, popup_opts.prompt) - -- Temporarily disabled: Draw the screen ASAP. This makes things feel speedier. -- vim.cmd [[redraw]] -- cgit v1.2.3