summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorSimon Hauser <Simon-Hauser@outlook.de>2021-11-23 21:11:05 +0100
committerGitHub <noreply@github.com>2021-11-23 21:11:05 +0100
commit7695d224c81e4ceeb3100d759c296814183ccfae (patch)
tree69efe26c84c4c8dd507589a3b4c97cae12a6a07d /lua
parent6daf35c88c07dd4b220468968a742cda04889cd3 (diff)
fix: telescope close process and cleanup layout actions (#1480)
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/actions/init.lua4
-rw-r--r--lua/telescope/actions/layout.lua9
-rw-r--r--lua/telescope/pickers.lua19
3 files changed, 16 insertions, 16 deletions
diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua
index 0da521b..c16be44 100644
--- a/lua/telescope/actions/init.lua
+++ b/lua/telescope/actions/init.lua
@@ -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
diff --git a/lua/telescope/actions/layout.lua b/lua/telescope/actions/layout.lua
index f40151f..7131823 100644
--- a/lua/telescope/actions/layout.lua
+++ b/lua/telescope/actions/layout.lua
@@ -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
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 936f377..ff11568 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -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