Mercurial > dotfiles
changeset 573:eb6ebdacf201
Use lua api to create autocmds
author | zegervdv <zegervdv@me.com> |
---|---|
date | Thu, 03 Mar 2022 10:55:29 +0100 |
parents | 21745760a5dc |
children | 8b04d5ffd210 |
files | .chezmoitemplates/au.lua |
diffstat | 1 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/.chezmoitemplates/au.lua Thu Mar 03 10:54:39 2022 +0100 +++ b/.chezmoitemplates/au.lua Thu Mar 03 10:55:29 2022 +0100 @@ -1,18 +1,20 @@ -- -- 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 + + local opts = { pattern = pattern } if type(action) == 'function' then - action = this.set(action) + opts.callback = action + else + opts.command = 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) + + vim.api.nvim_create_autocmd(event, opts) end local S = { @@ -36,16 +38,21 @@ end function S.group(grp, cmds) - cmd('augroup ' .. grp) - cmd 'autocmd!' + vim.api.nvim_create_augroup(grp, { clear = true }) if type(cmds) == 'function' then + -- TODO set group? cmds(X) else for _, au in ipairs(cmds) do - autocmd(S, au[1], { au[2], au[3] }) + local opts = { group = grp, pattern = au[2] } + if type(au[3]) == 'function' then + opts.callback = au[3] + else + opts.command = au[3] + end + vim.api.nvim_create_autocmd(au[1], opts) end end - cmd 'augroup END' end return X