aboutsummaryrefslogtreecommitdiff
path: root/test/functional/editor/extreg_spec.lua
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2026-10-18 18:43:26 -0600
committerJosh Rahm <joshuarahm@gmail.com>2026-10-18 18:43:26 -0600
commit41be894eb2e8d02c052ad4e85962550c54ae4589 (patch)
tree637542858b010b99eb0cfb7cdde8d9cdce057630 /test/functional/editor/extreg_spec.lua
parente4a17c62aecdad0c90a08d43ce773316d27404f7 (diff)
downloadrneovim-extregs.tar.gz
rneovim-extregs.tar.bz2
rneovim-extregs.zip
[extregs] implement tab completion for ~ menu.extregs
Diffstat (limited to 'test/functional/editor/extreg_spec.lua')
-rw-r--r--test/functional/editor/extreg_spec.lua89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/functional/editor/extreg_spec.lua b/test/functional/editor/extreg_spec.lua
index 44f2b618f8..b9637288f9 100644
--- a/test/functional/editor/extreg_spec.lua
+++ b/test/functional/editor/extreg_spec.lua
@@ -889,4 +889,93 @@ describe('extregs', function()
feed(':%yank ~empty.reg<CR>')
eq('5 lines yanked into "~empty.reg', exec_lua([[ return vim.v.statusmsg ]]))
end)
+
+ it('get_provider_names returns registered provider names', function()
+ exec_lua([[
+ vim._extregs.register('alpha',
+ function(_)
+ return true
+ end,
+ function()
+ return { lines = {'alpha'}, size = 1, type = 'v' }
+ end
+ )
+ vim._extregs.register('beta',
+ function(_)
+ return true
+ end,
+ function()
+ return { lines = {'beta'}, size = 1, type = 'v' }
+ end
+ )
+ vim._extregs.register('gamma',
+ function(_)
+ return true
+ end,
+ function()
+ return { lines = {'gamma'}, size = 1, type = 'v' }
+ end
+ )
+ ]])
+
+ local names = exec_lua([[ return vim._extregs.get_provider_names() ]])
+
+ eq('table', type(names))
+ -- 'test' provider exists from before_each, so we expect 6 providers total
+ eq(6, #names)
+
+ -- Check that all expected providers are present
+ local provider_map = {}
+ for i, name in ipairs(names) do
+ provider_map[name] = true
+ end
+ eq(true, provider_map.test) -- from before_each
+ eq(true, provider_map['let.test']) -- from before_each
+ eq(true, provider_map.alpha)
+ eq(true, provider_map.beta)
+ eq(true, provider_map.gamma)
+
+ -- Cleanup
+ exec_lua([[
+ vim._extregs.unregister('alpha')
+ vim._extregs.unregister('beta')
+ vim._extregs.unregister('gamma')
+ ]])
+ end)
+
+ it('get_provider_names handles empty and unregistered providers', function()
+ -- Unregister providers from before_each
+ exec_lua([[
+ vim._extregs.unregister('test')
+ vim._extregs.unregister('let.test')
+ vim._extregs.unregister('macro.replay')
+ ]])
+
+ -- Test with no providers
+ local names = exec_lua([[ return vim._extregs.get_provider_names() ]])
+ eq('table', type(names))
+ eq(0, #names)
+
+ -- Register one provider but then unregister it
+ exec_lua([[
+ vim._extregs.register('temp',
+ function(_)
+ return true
+ end,
+ function()
+ return { lines = {'temp'}, size = 1, type = 'v' }
+ end
+ )
+ ]])
+
+ names = exec_lua([[ return vim._extregs.get_provider_names() ]])
+ eq(1, #names)
+ eq('temp', names[1])
+
+ -- Unregister the provider
+ exec_lua([[ vim._extregs.unregister('temp') ]])
+
+ names = exec_lua([[ return vim._extregs.get_provider_names() ]])
+ eq(0, #names)
+ end)
end)