feat: lua autocmd (#1707)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user