154 lines
2.8 KiB
Lua
154 lines
2.8 KiB
Lua
local M = {}
|
|
|
|
local autocmds = {
|
|
"BufAdd",
|
|
"BufDelete",
|
|
"BufEnter",
|
|
"BufFilePost",
|
|
"BufFilePre",
|
|
"BufHidden",
|
|
"BufLeave",
|
|
"BufModifiedSet",
|
|
"BufNew",
|
|
"BufNewFile",
|
|
"BufRead",
|
|
-- "BufReadCmd",
|
|
"BufReadPre",
|
|
"BufUnload",
|
|
"BufWinEnter",
|
|
"BufWinLeave",
|
|
"BufWipeout",
|
|
"BufWrite",
|
|
-- "BufWriteCmd",
|
|
"BufWritePost",
|
|
"ChanInfo",
|
|
"ChanOpen",
|
|
"CmdUndefined",
|
|
"CmdlineChanged",
|
|
"CmdlineEnter",
|
|
"CmdlineLeave",
|
|
"CmdwinEnter",
|
|
"CmdwinLeave",
|
|
"ColorScheme",
|
|
"ColorSchemePre",
|
|
"CompleteChanged",
|
|
"CompleteDonePre",
|
|
"CompleteDone",
|
|
"CursorHold",
|
|
"CursorHoldI",
|
|
"CursorMoved",
|
|
"CursorMovedI",
|
|
"DiffUpdated",
|
|
"DirChanged",
|
|
-- "FileAppendCmd",
|
|
"FileAppendPost",
|
|
"FileAppendPre",
|
|
"FileChangedRO",
|
|
"ExitPre",
|
|
"FileChangedShell",
|
|
"FileChangedShellPost",
|
|
-- "FileReadCmd",
|
|
"FileReadPost",
|
|
"FileReadPre",
|
|
"FileType",
|
|
-- "FileWriteCmd",
|
|
"FileWritePost",
|
|
"FileWritePre",
|
|
"FilterReadPost",
|
|
"FilterReadPre",
|
|
"FilterWritePost",
|
|
"FilterWritePre",
|
|
"FocusGained",
|
|
"FocusLost",
|
|
"FuncUndefined",
|
|
"UIEnter",
|
|
"UILeave",
|
|
"InsertChange",
|
|
"InsertCharPre",
|
|
"TextYankPost",
|
|
"InsertEnter",
|
|
"InsertLeavePre",
|
|
"InsertLeave",
|
|
"LspAttach",
|
|
"LspDetach",
|
|
"LspTokenUpdate",
|
|
"MenuPopup",
|
|
"OptionSet",
|
|
"QuickFixCmdPre",
|
|
"QuickFixCmdPost",
|
|
"QuitPre",
|
|
"RemoteReply",
|
|
"SessionLoadPost",
|
|
"ShellCmdPost",
|
|
"Signal",
|
|
"ShellFilterPost",
|
|
"SourcePre",
|
|
"SourcePost",
|
|
-- "SourceCmd",
|
|
"SpellFileMissing",
|
|
"StdinReadPost",
|
|
"StdinReadPre",
|
|
"SwapExists",
|
|
"Syntax",
|
|
"TabEnter",
|
|
"TabLeave",
|
|
"TabNew",
|
|
"TabNewEntered",
|
|
"TabClosed",
|
|
"TermOpen",
|
|
"TermEnter",
|
|
"TermLeave",
|
|
"TermClose",
|
|
"TermResponse",
|
|
"TextChanged",
|
|
"TextChangedI",
|
|
"TextChangedP",
|
|
"User",
|
|
"VimEnter",
|
|
"VimLeave",
|
|
"VimLeavePre",
|
|
"VimResized",
|
|
"VimResume",
|
|
"VimSuspend",
|
|
"WinClosed",
|
|
"WinEnter",
|
|
"WinLeave",
|
|
"WinNew",
|
|
"WinScrolled",
|
|
}
|
|
|
|
---@param groupname string
|
|
---@param fn string
|
|
local function create(groupname, fn)
|
|
local aug = vim.api.nvim_create_augroup(groupname, {})
|
|
for _, autocmd in ipairs(autocmds) do
|
|
vim.api.nvim_create_autocmd(autocmd, {
|
|
desc = "profile.nvim " .. fn,
|
|
pattern = "*",
|
|
group = aug,
|
|
callback = function(args)
|
|
require("profile")[fn](autocmd, { match = args.match })
|
|
end,
|
|
})
|
|
end
|
|
end
|
|
|
|
M.instrument_start = function()
|
|
create("lua_profile_start", "log_start")
|
|
end
|
|
|
|
M.instrument_auto = function()
|
|
if vim.fn.exists("#lua_profile_start") ~= 0 then
|
|
create("lua_profile_end", "log_end")
|
|
else
|
|
create("lua_profile", "log_instant")
|
|
end
|
|
end
|
|
|
|
M.clear = function()
|
|
vim.api.nvim_create_augroup("lua_profile", {})
|
|
vim.api.nvim_create_augroup("lua_profile_start", {})
|
|
vim.api.nvim_create_augroup("lua_profile_end", {})
|
|
end
|
|
|
|
return M
|