diff options
author | Phạm Bình An <111893501+brianhuster@users.noreply.github.com> | 2025-03-18 05:41:07 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-17 15:41:07 -0700 |
commit | 08c328b8b079334e7fb38472339c4f8ba1a0df3b (patch) | |
tree | fc1fcbd553ad90486af0a016ca96739b7f09fbd7 /test | |
parent | 063b69bab4ab64b614e31ab0c93279fdbebb40b7 (diff) | |
download | rneovim-08c328b8b079334e7fb38472339c4f8ba1a0df3b.tar.gz rneovim-08c328b8b079334e7fb38472339c4f8ba1a0df3b.tar.bz2 rneovim-08c328b8b079334e7fb38472339c4f8ba1a0df3b.zip |
feat(runtime): Lua ftplugin 'includeexpr' #32719
Problem:
Current `'includeexpr'` in runtime/ftplugin/lua.vim doesn't work with Nvim Lua.
Solution:
Provide an improved 'includeexpr' for Lua in "ftplugin/lua.lua".
Closes: https://github.com/neovim/neovim/issues/32490
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/editor/ftplugin_spec.lua | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/functional/editor/ftplugin_spec.lua b/test/functional/editor/ftplugin_spec.lua new file mode 100644 index 0000000000..5b57f98d92 --- /dev/null +++ b/test/functional/editor/ftplugin_spec.lua @@ -0,0 +1,85 @@ +local t = require('test.testutil') +local n = require('test.functional.testnvim')() + +local exec_lua = n.exec_lua +local command = n.command +local eq = t.eq + +---@param type string +---@return string +local function stdpath(type) + return exec_lua(([[return vim.fs.normalize(vim.fn.stdpath("%s"))]]):format(type)) +end + +---@return string +local function vimruntime() + return exec_lua [[ return vim.fs.normalize(vim.env.VIMRUNTIME) ]] +end + +---@param module string +---@return string +local function lua_includeexpr(module) + return exec_lua(([[return require('vim._ftplugin.lua').includeexpr("%s")]]):format(module)) +end + +local root = exec_lua [[ return vim.fs.normalize(vim.fn.getcwd()) ]] + +describe("Lua 'includeexpr'", function() + setup(n.clear) + local temp_dir = t.tmpname(false) + before_each(function() + command(([[ + edit `=stdpath('config') .. '/lua/user-foo/init.lua'` + write ++p + edit `=stdpath('config') .. '/lua/user-foo/bar.lua'` + write ++p + edit `=stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/init.lua'` + write ++p + edit `=stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/bar.lua'` + write ++p + + edit runtime/lua/foo/init.lua + write ++p + edit runtime/lua/foo/bar/init.lua + write ++p + + edit %s/lua/runtime-foo/init.lua + write ++p + edit %s/lua/runtime-foo/bar.lua + write ++p + ]]):format(temp_dir, temp_dir)) + end) + + it('finds module in current repo', function() + command [[ edit runtime/lua/vim/_ftplugin/lua.lua ]] + eq(root .. '/runtime/lua/vim/_ftplugin/lua.lua', lua_includeexpr('vim._ftplugin.lua')) + eq(root .. '/runtime/lua/editorconfig.lua', lua_includeexpr('editorconfig')) + eq(root .. '/runtime/lua/foo/init.lua', lua_includeexpr('foo')) + eq(root .. '/runtime/lua/foo/bar/init.lua', lua_includeexpr('foo.bar')) + end) + + it('find module in packpath/start', function() + eq( + stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/init.lua', + lua_includeexpr('plugin-foo') + ) + eq( + stdpath('data') .. '/site/pack/packer/start/plugin-foo/lua/plugin-foo/bar.lua', + lua_includeexpr('plugin-foo.bar') + ) + end) + + it('finds module in $VIMRUNTIME', function() + command('edit ' .. root) + eq(vimruntime() .. '/lua/vim/_ftplugin/lua.lua', lua_includeexpr('vim._ftplugin.lua')) + eq(vimruntime() .. '/lua/editorconfig.lua', lua_includeexpr('editorconfig')) + end) + + it('find module in runtimepath', function() + eq(stdpath('config') .. '/lua/user-foo/init.lua', lua_includeexpr('user-foo')) + eq(stdpath('config') .. '/lua/user-foo/bar.lua', lua_includeexpr('user-foo.bar')) + command('set rtp+=' .. temp_dir) + eq(temp_dir .. '/lua/runtime-foo/init.lua', lua_includeexpr('runtime-foo')) + eq(temp_dir .. '/lua/runtime-foo/bar.lua', lua_includeexpr('runtime-foo.bar')) + end) +end) |