fix: telescope close process and cleanup layout actions (#1480)

This commit is contained in:
Simon Hauser
2021-11-23 21:11:05 +01:00
committed by GitHub
parent 6daf35c88c
commit 7695d224c8
3 changed files with 16 additions and 16 deletions

View File

@@ -240,6 +240,7 @@ end
actions._close = function(prompt_bufnr, keepinsert)
action_state.get_current_history():reset()
local picker = action_state.get_current_picker(prompt_bufnr)
local prompt_win = state.get_status(prompt_bufnr).prompt_win
local original_win_id = picker.original_win_id
actions.close_pum(prompt_bufnr)
@@ -247,7 +248,8 @@ actions._close = function(prompt_bufnr, keepinsert)
vim.cmd [[stopinsert]]
end
require("telescope.pickers").on_close_prompt(prompt_bufnr)
vim.api.nvim_win_close(prompt_win, true)
pcall(vim.cmd, string.format([[silent bdelete! %s]], prompt_bufnr))
pcall(a.nvim_set_current_win, original_win_id)
end

View File

@@ -8,7 +8,13 @@ local action_state = require "telescope.actions.state"
local state = require "telescope.state"
local layout_strats = require "telescope.pickers.layout_strategies"
local action_layout = {}
local transform_mod = require("telescope.actions.mt").transform_mod
local action_layout = setmetatable({}, {
__index = function(_, k)
error("'telescope.actions.layout' does not have a value: " .. tostring(k))
end,
})
--- Toggle preview window.
--- - Note: preview window can be toggled even if preview is set to false.
@@ -137,4 +143,5 @@ action_layout.cycle_layout_next = get_cycle_layout(1)
---@param prompt_bufnr number: The prompt bufnr
action_layout.cycle_layout_prev = get_cycle_layout(-1)
action_layout = transform_mod(action_layout)
return action_layout

View File

@@ -461,14 +461,12 @@ function Picker:find()
-- TODO: Use WinLeave as well?
local on_buf_leave = string.format(
[[ autocmd BufLeave <buffer=%s> ++nested ++once :silent lua require('telescope.pickers').on_close_prompt(%s)]],
prompt_bufnr,
[[ autocmd BufLeave <buffer> ++nested ++once :silent lua require('telescope.pickers').on_close_prompt(%s)]],
prompt_bufnr
)
local on_vim_resize = string.format(
[[ autocmd VimResized <buffer=%s> ++nested :lua require('telescope.pickers').on_resize_window(%s)]],
prompt_bufnr,
[[ autocmd VimResized <buffer> ++nested :lua require('telescope.pickers').on_resize_window(%s)]],
prompt_bufnr
)
@@ -672,8 +670,6 @@ function Picker:set_prompt(str)
end
function Picker.close_windows(status)
-- make sure we don't have BufLeave autocmd.
vim.cmd(string.format([[ autocmd! PickerInsert BufLeave <buffer=%s> ]], status.prompt_bufnr))
local prompt_win = status.prompt_win
local results_win = status.results_win
local preview_win = status.preview_win
@@ -682,7 +678,6 @@ function Picker.close_windows(status)
local results_border_win = status.results_border_win
local preview_border_win = status.preview_border_win
utils.win_delete("prompt_win", prompt_win, true, true)
utils.win_delete("results_win", results_win, true, true)
utils.win_delete("preview_win", preview_win, true, true)
@@ -690,13 +685,9 @@ function Picker.close_windows(status)
utils.win_delete("results_border_win", results_border_win, true, true)
utils.win_delete("preview_border_win", preview_border_win, true, true)
-- Buffers should be deleted but it may be also the case that buffer was swapped in window
-- so make sure that buffers created in Picker are deleted.
utils.buf_delete(status.prompt_bufnr)
utils.buf_delete(status.results_bufnr)
utils.buf_delete(status.preview_bufnr)
-- vim.cmd(string.format("bdelete! %s", status.prompt_bufnr))
vim.defer_fn(function()
utils.win_delete("prompt_win", prompt_win, true)
end, 10)
state.clear_status(status.prompt_bufnr)
end