diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-06-30 18:22:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-30 18:22:02 +0800 |
commit | 751b9d73fdf6114b1f14026826306d8a41234862 (patch) | |
tree | eab508581dfbe60096d0b7264ced90d36c616ee6 | |
parent | 37079fca58f396fd866dc7b7d87a0100c17ee760 (diff) | |
parent | 6cceef6d4c2cece6a9283c9926f3b0d254bbd5db (diff) | |
download | rneovim-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.vim | 7 | ||||
-rw-r--r-- | test/functional/lua/runtime_spec.lua | 24 |
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() |