aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-06-30 18:22:02 +0800
committerGitHub <noreply@github.com>2023-06-30 18:22:02 +0800
commit751b9d73fdf6114b1f14026826306d8a41234862 (patch)
treeeab508581dfbe60096d0b7264ced90d36c616ee6
parent37079fca58f396fd866dc7b7d87a0100c17ee760 (diff)
parent6cceef6d4c2cece6a9283c9926f3b0d254bbd5db (diff)
downloadrneovim-751b9d73fdf6114b1f14026826306d8a41234862.tar.gz
rneovim-751b9d73fdf6114b1f14026826306d8a41234862.tar.bz2
rneovim-751b9d73fdf6114b1f14026826306d8a41234862.zip
Merge pull request #24147 from clason/fix/ftplugin
fix(ftplugin): respect runtimepath ordering
-rw-r--r--runtime/ftplugin.vim7
-rw-r--r--test/functional/lua/runtime_spec.lua24
2 files changed, 28 insertions, 3 deletions
diff --git a/runtime/ftplugin.vim b/runtime/ftplugin.vim
index d24c0a036e..f5c411fbe6 100644
--- a/runtime/ftplugin.vim
+++ b/runtime/ftplugin.vim
@@ -30,9 +30,10 @@ augroup filetypeplugin
for name in split(s, '\.')
" Load Lua ftplugins after Vim ftplugins _per directory_
" TODO(clason): use nvim__get_runtime when supports globs and modeline
- exe printf('runtime! ftplugin/%s.vim ftplugin/%s.lua', name, name)
- exe printf('runtime! ftplugin/%s_*.vim ftplugin/%s_*.lua', name, name)
- exe printf('runtime! ftplugin/%s/*.vim ftplugin/%s/*.lua', name, name)
+ exe printf('runtime! ftplugin/%s.vim ftplugin/%s.lua
+ \ ftplugin/%s_*.vim ftplugin/%s_*.lua
+ \ ftplugin/%s/*.vim ftplugin/%s/*.lua',
+ \ name, name, name, name, name, name)
endfor
endif
endfunc
diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua
index cd19ea4e49..e80a65ef3d 100644
--- a/test/functional/lua/runtime_spec.lua
+++ b/test/functional/lua/runtime_spec.lua
@@ -138,6 +138,30 @@ describe('runtime:', function()
exec [[set filetype=new-ft]]
eq(1, eval('b:lua_ftplugin'))
end)
+
+ it("'rtp' order is respected", function()
+ local after_ftplugin_folder = table.concat({plug_dir, 'after', 'ftplugin'}, sep)
+ mkdir_p(table.concat({ftplugin_folder, 'new-ft'}, sep))
+ mkdir_p(table.concat({after_ftplugin_folder, 'new-ft'}, sep))
+ exec('set rtp+=' .. plug_dir .. '/after')
+ exec('let g:seq = ""')
+ -- A .lua file is loaded after a .vim file if they only differ in extension.
+ -- All files in after/ftplugin/ are loaded after all files in ftplugin/.
+ write_file(table.concat({ftplugin_folder, 'new-ft.vim'}, sep), [[let g:seq ..= 'A']])
+ write_file(table.concat({ftplugin_folder, 'new-ft.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'B']])
+ write_file(table.concat({ftplugin_folder, 'new-ft_a.vim'}, sep), [[let g:seq ..= 'C']])
+ write_file(table.concat({ftplugin_folder, 'new-ft_a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'D']])
+ write_file(table.concat({ftplugin_folder, 'new-ft', 'a.vim'}, sep), [[let g:seq ..= 'E']])
+ write_file(table.concat({ftplugin_folder, 'new-ft', 'a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'F']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft.vim'}, sep), [[let g:seq ..= 'a']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'b']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft_a.vim'}, sep), [[let g:seq ..= 'c']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft_a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'd']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft', 'a.vim'}, sep), [[let g:seq ..= 'e']])
+ write_file(table.concat({after_ftplugin_folder, 'new-ft', 'a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'f']])
+ exec('setfiletype new-ft')
+ eq('ABCDEFabcdef', eval('g:seq'))
+ end)
end)
describe('indent', function()