feat: lua autocmd (#1707)

This commit is contained in:
Dave Lage
2022-04-22 10:20:59 -04:00
committed by GitHub
parent cc1a3440f9
commit 697ee7aa70
4 changed files with 47 additions and 40 deletions

View File

@@ -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, "winblend", opts.winblend)
a.nvim_win_set_option(km_win_id, "foldenable", false) a.nvim_win_set_option(km_win_id, "foldenable", false)
vim.cmd(string.format( vim.api.nvim_create_autocmd("BufLeave", {
"autocmd BufLeave <buffer> ++once lua %s", buffer = km_buf,
table.concat({ once = true,
string.format("pcall(vim.api.nvim_win_close, %s, true)", km_win_id), callback = function()
string.format("pcall(vim.api.nvim_win_close, %s, true)", km_opts.border.win_id), pcall(vim.api.nvim_win_close, km_win_id, true)
string.format("require 'telescope.utils'.buf_delete(%s)", km_buf), 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)) 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 -- only set up autocommand after showing preview completed
if opts.close_with_action then if opts.close_with_action then
vim.schedule(function() vim.schedule(function()
vim.cmd(string.format( vim.api.nvim_create_autocmd("User TelescopeKeymap", {
"autocmd User TelescopeKeymap ++once lua %s", once = true,
table.concat({ callback = function()
string.format("pcall(vim.api.nvim_win_close, %s, true)", km_win_id), pcall(vim.api.nvim_win_close, km_win_id, true)
string.format("pcall(vim.api.nvim_win_close, %s, true)", km_opts.border.win_id), pcall(vim.api.nvim_win_close, km_opts.border.win_id, true)
string.format("require 'telescope.utils'.buf_delete(%s)", km_buf), require("telescope.utils").buf_delete(km_buf)
}, ";") end,
)) })
end) end)
end end
end end

View File

@@ -155,13 +155,15 @@ git.bcommits = function(opts)
vim.bo.filetype = ft vim.bo.filetype = ft
vim.cmd "diffthis" vim.cmd "diffthis"
vim.cmd( vim.api.nvim_create_autocmd("WinClosed", {
string.format( event = "WinClosed",
"autocmd WinClosed <buffer=%s> ++nested ++once :lua vim.api.nvim_buf_delete(%s, { force = true })", buffer = bufnr,
bufnr, nested = true,
bufnr once = true,
) function()
) vim.api.nvim_buf_delete(bufnr, { force = true })
end,
})
end end
actions.select_vertical:replace(function(prompt_bufnr) actions.select_vertical:replace(function(prompt_bufnr)

View File

@@ -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)) assert(key_func, string.format("Unsure of how we got this failure: %s %s", prompt_bufnr, keymap_identifier))
key_func(prompt_bufnr) key_func(prompt_bufnr)
vim.cmd [[ doautocmd User TelescopeKeymap ]] vim.api.nvim_exec_autocmds("User TelescopeKeymap", {})
end end
mappings.clear = function(prompt_bufnr) mappings.clear = function(prompt_bufnr)

View File

@@ -339,7 +339,7 @@ function Picker:find()
self.original_win_id = a.nvim_get_current_win() self.original_win_id = a.nvim_get_current_win()
-- User autocmd run it before create Telescope window -- User autocmd run it before create Telescope window
vim.cmd [[doautocmd User TelescopeFindPre]] vim.api.nvim_exec_autocmds("User TelescopeFindPre", {})
-- Create three windows: -- Create three windows:
-- 1. Prompt window -- 1. Prompt window
@@ -508,22 +508,26 @@ function Picker:find()
end, end,
}) })
vim.api.nvim_create_augroup("PickerInsert", {})
-- TODO: Use WinLeave as well? -- TODO: Use WinLeave as well?
local on_buf_leave = string.format( vim.api.nvim_create_autocmd("BufLeave", {
[[ autocmd BufLeave <buffer> ++nested ++once :silent lua require('telescope.pickers').on_close_prompt(%s)]], buffer = prompt_bufnr,
prompt_bufnr group = "PickerInsert",
) nested = true,
once = true,
local on_vim_resize = string.format( callback = function()
[[ autocmd VimResized <buffer> ++nested :lua require('telescope.pickers').on_resize_window(%s)]], require("telescope.pickers").on_close_prompt(prompt_bufnr)
prompt_bufnr end,
) })
vim.api.nvim_create_autocmd("VimResized", {
vim.cmd [[augroup PickerInsert]] buffer = prompt_bufnr,
vim.cmd [[ au!]] group = "PickerInsert",
vim.cmd(on_buf_leave) nested = true,
vim.cmd(on_vim_resize) once = true,
vim.cmd [[augroup END]] callback = function()
require("telescope.pickers").on_resize_window(prompt_bufnr)
end,
})
self.prompt_bufnr = prompt_bufnr self.prompt_bufnr = prompt_bufnr