diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-04-17 05:44:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-17 05:44:06 +0800 |
commit | f150b62423d57b6f9fbe57330589937dfbb34f4a (patch) | |
tree | c6d137ab0d2164e97adce7f3ddce689bc97b0a86 /test/functional/api/autocmd_spec.lua | |
parent | 8e5c48b08dad54706500e353c58ffb91f2684dd3 (diff) | |
download | rneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.tar.gz rneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.tar.bz2 rneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.zip |
fix(lua): only free luarefs when returning from API (#28373)
Diffstat (limited to 'test/functional/api/autocmd_spec.lua')
-rw-r--r-- | test/functional/api/autocmd_spec.lua | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua index e5412a8e99..d2ec3a576c 100644 --- a/test/functional/api/autocmd_spec.lua +++ b/test/functional/api/autocmd_spec.lua @@ -355,6 +355,44 @@ describe('autocmd api', function() test({ 'list' }) test({ foo = 'bar' }) end) + + it('function in arbitrary data is passed to all autocmds #28353', function() + eq( + 1303, + exec_lua([[ + local res = 1 + + local fun = function(m, x) + res = res * m + x + end + + local group = vim.api.nvim_create_augroup('MyTest', { clear = false }) + + vim.api.nvim_create_autocmd('User', { + group = group, + callback = function(payload) + payload.data.fun(10, payload.data.x) + end, + pattern = 'MyEvent', + }) + vim.api.nvim_create_autocmd('User', { + group = group, + callback = function(payload) + payload.data.fun(100, payload.data.x) + end, + pattern = 'MyEvent', + }) + + vim.api.nvim_exec_autocmds('User', { + group = group, + pattern = 'MyEvent', + data = { x = 3, fun = fun }, + }) + + return res + ]]) + ) + end) end) describe('nvim_get_autocmds', function() |