summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorDave Lage <rockerboo@gmail.com>2022-04-22 10:20:59 -0400
committerGitHub <noreply@github.com>2022-04-22 16:20:59 +0200
commit697ee7aa7035841866bd2af0dcdbde45ae2e053c (patch)
tree7949a3c140131e5b60c2aa96f81e4cbec87844b7 /lua
parentcc1a3440f9ba6f28a8ca0bfff867f60c2d80c353 (diff)
feat: lua autocmd (#1707)
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/actions/init.lua33
-rw-r--r--lua/telescope/builtin/git.lua16
-rw-r--r--lua/telescope/mappings.lua2
-rw-r--r--lua/telescope/pickers.lua36
4 files changed, 47 insertions, 40 deletions
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 <buffer> ++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 <buffer=%s> ++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 <buffer> ++nested ++once :silent lua require('telescope.pickers').on_close_prompt(%s)]],
- prompt_bufnr
- )
-
- local on_vim_resize = string.format(
- [[ autocmd VimResized <buffer> ++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