diff options
author | Gregory Anders <8965202+gpanders@users.noreply.github.com> | 2022-03-19 18:57:58 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-19 18:57:58 -0600 |
commit | be35d3c5ad501abb029279f8e1812d0e4525284f (patch) | |
tree | 22f0371d83adcf5f2a97809c8a573562bd7fd129 /test/functional/api/autocmd_spec.lua | |
parent | 77eb6f9dc75ebe00aa835441ad623ba46d7108bb (diff) | |
download | rneovim-be35d3c5ad501abb029279f8e1812d0e4525284f.tar.gz rneovim-be35d3c5ad501abb029279f8e1812d0e4525284f.tar.bz2 rneovim-be35d3c5ad501abb029279f8e1812d0e4525284f.zip |
feat(api): remove Lua autocommand callbacks when they return true (#17784)
This copies the semantics of nvim_buf_attach callbacks, and is a
convenient way to create oneshot autocommands gated by some condition.
Diffstat (limited to 'test/functional/api/autocmd_spec.lua')
-rw-r--r-- | test/functional/api/autocmd_spec.lua | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua index 372cbf2c30..a58ca00a75 100644 --- a/test/functional/api/autocmd_spec.lua +++ b/test/functional/api/autocmd_spec.lua @@ -154,6 +154,34 @@ describe('autocmd api', function() eq(1, #aus, aus) end) end) + + it('removes an autocommand if the callback returns true', function() + meths.set_var("some_condition", false) + + exec_lua [[ + vim.api.nvim_create_autocmd("User", { + pattern = "Test", + desc = "A test autocommand", + callback = function() + return vim.g.some_condition + end, + }) + ]] + + meths.do_autocmd("User", {pattern = "Test"}) + eq({{ + buflocal = false, + command = 'A test autocommand', + desc = 'A test autocommand', + event = 'User', + id = 1, + once = false, + pattern = 'Test', + }}, meths.get_autocmds({event = "User", pattern = "Test"})) + meths.set_var("some_condition", true) + meths.do_autocmd("User", {pattern = "Test"}) + eq({}, meths.get_autocmds({event = "User", pattern = "Test"})) + end) end) describe('nvim_get_autocmds', function() |