mirror of
https://github.com/zoriya/auto-save.nvim.git
synced 2025-12-06 06:36:11 +00:00
44 lines
1.1 KiB
Lua
44 lines
1.1 KiB
Lua
local M = {}
|
|
|
|
local api = vim.api
|
|
local augroup_name = "AutoSave"
|
|
|
|
--- @param event TriggerEvent
|
|
--- @return VerboseTriggerEvent
|
|
local function parse_trigger_event(event)
|
|
if type(event) == "string" then
|
|
return { event }
|
|
end
|
|
return event
|
|
end
|
|
|
|
--- @param opts? table
|
|
--- @return number
|
|
M.create_augroup = function(opts)
|
|
opts = opts or { clear = true }
|
|
return api.nvim_create_augroup(augroup_name, opts)
|
|
end
|
|
|
|
--- @param pattern string
|
|
--- @param data? table
|
|
M.exec_autocmd = function(pattern, data)
|
|
local opts = { pattern = pattern }
|
|
if data ~= nil then
|
|
opts.data = data
|
|
end
|
|
api.nvim_exec_autocmds("User", opts)
|
|
end
|
|
|
|
--- @param trigger_events TriggerEvent[]?
|
|
M.create_autocmd_for_trigger_events = function(trigger_events, autocmd_opts)
|
|
if trigger_events ~= nil then
|
|
for _, event in pairs(trigger_events) do
|
|
local parsed_event = parse_trigger_event(event)
|
|
local autocmd_opts_with_pattern = vim.tbl_extend("force", autocmd_opts, { pattern = parsed_event.pattern })
|
|
api.nvim_create_autocmd(parsed_event[1], autocmd_opts_with_pattern)
|
|
end
|
|
end
|
|
end
|
|
|
|
return M
|