aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/autocmd_spec.lua
diff options
context:
space:
mode:
authorGregory Anders <8965202+gpanders@users.noreply.github.com>2022-03-19 18:57:58 -0600
committerGitHub <noreply@github.com>2022-03-19 18:57:58 -0600
commitbe35d3c5ad501abb029279f8e1812d0e4525284f (patch)
tree22f0371d83adcf5f2a97809c8a573562bd7fd129 /test/functional/api/autocmd_spec.lua
parent77eb6f9dc75ebe00aa835441ad623ba46d7108bb (diff)
downloadrneovim-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.lua28
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()