diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua index 95f2ce4..03bd20c 100644 --- a/lua/telescope/actions/init.lua +++ b/lua/telescope/actions/init.lua @@ -1205,14 +1205,15 @@ actions.which_key = function(prompt_bufnr, opts) a.nvim_win_set_option(km_win_id, "winblend", opts.winblend) a.nvim_win_set_option(km_win_id, "foldenable", false) - vim.cmd(string.format( - "autocmd BufLeave ++once lua %s", - table.concat({ - string.format("pcall(vim.api.nvim_win_close, %s, true)", km_win_id), - string.format("pcall(vim.api.nvim_win_close, %s, true)", km_opts.border.win_id), - string.format("require 'telescope.utils'.buf_delete(%s)", km_buf), - }, ";") - )) + vim.api.nvim_create_autocmd("BufLeave", { + buffer = km_buf, + once = true, + callback = function() + pcall(vim.api.nvim_win_close, km_win_id, true) + pcall(vim.api.nvim_win_close, km_opts.border.win_id, true) + require("telescope.utils").buf_delete(km_buf) + end, + }) a.nvim_buf_set_lines(km_buf, 0, -1, false, utils.repeated_table(opts.num_rows + 2 * opts.line_padding, column_indent)) @@ -1245,14 +1246,14 @@ actions.which_key = function(prompt_bufnr, opts) -- only set up autocommand after showing preview completed if opts.close_with_action then vim.schedule(function() - vim.cmd(string.format( - "autocmd User TelescopeKeymap ++once lua %s", - table.concat({ - string.format("pcall(vim.api.nvim_win_close, %s, true)", km_win_id), - string.format("pcall(vim.api.nvim_win_close, %s, true)", km_opts.border.win_id), - string.format("require 'telescope.utils'.buf_delete(%s)", km_buf), - }, ";") - )) + vim.api.nvim_create_autocmd("User TelescopeKeymap", { + once = true, + callback = function() + pcall(vim.api.nvim_win_close, km_win_id, true) + pcall(vim.api.nvim_win_close, km_opts.border.win_id, true) + require("telescope.utils").buf_delete(km_buf) + end, + }) end) end end diff --git a/lua/telescope/builtin/git.lua b/lua/telescope/builtin/git.lua index 2683107..a0007cc 100644 --- a/lua/telescope/builtin/git.lua +++ b/lua/telescope/builtin/git.lua @@ -155,13 +155,15 @@ git.bcommits = function(opts) vim.bo.filetype = ft vim.cmd "diffthis" - vim.cmd( - string.format( - "autocmd WinClosed ++nested ++once :lua vim.api.nvim_buf_delete(%s, { force = true })", - bufnr, - bufnr - ) - ) + vim.api.nvim_create_autocmd("WinClosed", { + event = "WinClosed", + buffer = bufnr, + nested = true, + once = true, + function() + vim.api.nvim_buf_delete(bufnr, { force = true }) + end, + }) end actions.select_vertical:replace(function(prompt_bufnr) diff --git a/lua/telescope/mappings.lua b/lua/telescope/mappings.lua index bbb6d48..b81552e 100644 --- a/lua/telescope/mappings.lua +++ b/lua/telescope/mappings.lua @@ -240,7 +240,7 @@ mappings.execute_keymap = function(prompt_bufnr, keymap_identifier) assert(key_func, string.format("Unsure of how we got this failure: %s %s", prompt_bufnr, keymap_identifier)) key_func(prompt_bufnr) - vim.cmd [[ doautocmd User TelescopeKeymap ]] + vim.api.nvim_exec_autocmds("User TelescopeKeymap", {}) end mappings.clear = function(prompt_bufnr) diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua index 97e5ec6..56f0ada 100644 --- a/lua/telescope/pickers.lua +++ b/lua/telescope/pickers.lua @@ -339,7 +339,7 @@ function Picker:find() self.original_win_id = a.nvim_get_current_win() -- User autocmd run it before create Telescope window - vim.cmd [[doautocmd User TelescopeFindPre]] + vim.api.nvim_exec_autocmds("User TelescopeFindPre", {}) -- Create three windows: -- 1. Prompt window @@ -508,22 +508,26 @@ function Picker:find() end, }) + vim.api.nvim_create_augroup("PickerInsert", {}) -- TODO: Use WinLeave as well? - local on_buf_leave = string.format( - [[ autocmd BufLeave ++nested ++once :silent lua require('telescope.pickers').on_close_prompt(%s)]], - prompt_bufnr - ) - - local on_vim_resize = string.format( - [[ autocmd VimResized ++nested :lua require('telescope.pickers').on_resize_window(%s)]], - prompt_bufnr - ) - - vim.cmd [[augroup PickerInsert]] - vim.cmd [[ au!]] - vim.cmd(on_buf_leave) - vim.cmd(on_vim_resize) - vim.cmd [[augroup END]] + vim.api.nvim_create_autocmd("BufLeave", { + buffer = prompt_bufnr, + group = "PickerInsert", + nested = true, + once = true, + callback = function() + require("telescope.pickers").on_close_prompt(prompt_bufnr) + end, + }) + vim.api.nvim_create_autocmd("VimResized", { + buffer = prompt_bufnr, + group = "PickerInsert", + nested = true, + once = true, + callback = function() + require("telescope.pickers").on_resize_window(prompt_bufnr) + end, + }) self.prompt_bufnr = prompt_bufnr