Mercurial > dotfiles
view .chezmoitemplates/au.lua @ 489:1635e29e0ed4
Move autocmds to init.lua
author | zegervdv <zegervdv@me.com> |
---|---|
date | Sun, 14 Nov 2021 09:34:26 +0100 |
parents | ae7e377bced8 |
children | eb6ebdacf201 |
line wrap: on
line source
-- -- Copied from https://gist.github.com/numToStr/1ab83dd2e919de9235f9f774ef8076da -- local cmd = vim.api.nvim_command local function autocmd(this, event, spec) local is_table = type(spec) == 'table' local pattern = is_table and spec[1] or '*' local action = is_table and spec[2] or spec if type(action) == 'function' then action = this.set(action) end local e = type(event) == 'table' and table.concat(event, ',') or event local pattern = type(pattern) == 'table' and table.concat(pattern, ',') or pattern cmd('autocmd ' .. e .. ' ' .. pattern .. ' ' .. action) end local S = { __au = {}, } local X = setmetatable({}, { __index = S, __newindex = autocmd, __call = autocmd, }) function S.exec(id) S.__au[id]() end function S.set(fn) local id = string.format('%p', fn) S.__au[id] = fn return string.format('lua require("au").exec("%s")', id) end function S.group(grp, cmds) cmd('augroup ' .. grp) cmd 'autocmd!' if type(cmds) == 'function' then cmds(X) else for _, au in ipairs(cmds) do autocmd(S, au[1], { au[2], au[3] }) end end cmd 'augroup END' end return X