From 62f09017e09b7dc7bc837b0b13d9f1598685be46 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 26 Jan 2023 10:58:03 +0800 Subject: test: add test for :runtime completion for .lua --- test/functional/lua/runtime_spec.lua | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index b659f2eacb..884ef3ef8e 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -18,6 +18,7 @@ describe('runtime:', function() io.open(init, 'w'):close() -- touch init file clear{args = {'-u', init}} exec('set rtp+=' .. plug_dir) + exec('set completeslash=slash') end) teardown(function() @@ -42,6 +43,7 @@ describe('runtime:', function() write_file(colorscheme_file, [[vim.g.lua_colorscheme = 1]]) eq({'new_colorscheme'}, funcs.getcompletion('new_c', 'color')) + eq({'colors/new_colorscheme.lua'}, funcs.getcompletion('colors/new_c', 'runtime')) exec('colorscheme new_colorscheme') @@ -71,6 +73,7 @@ describe('runtime:', function() write_file(compiler_file, [[vim.b.lua_compiler = 1]]) eq({'new_compiler'}, funcs.getcompletion('new_c', 'compiler')) + eq({'compiler/new_compiler.lua'}, funcs.getcompletion('compiler/new_c', 'runtime')) exec('compiler new_compiler') @@ -100,6 +103,7 @@ describe('runtime:', function() write_file(ftplugin_file , [[vim.b.lua_ftplugin = 1]]) eq({'new-ft'}, funcs.getcompletion('new-f', 'filetype')) + eq({'ftplugin/new-ft.lua'}, funcs.getcompletion('ftplugin/new-f', 'runtime')) exec [[set filetype=new-ft]] eq(1, eval('b:lua_ftplugin')) @@ -116,6 +120,7 @@ describe('runtime:', function() write_file(indent_file , [[vim.b.lua_indent = 1]]) eq({'new-ft'}, funcs.getcompletion('new-f', 'filetype')) + eq({'indent/new-ft.lua'}, funcs.getcompletion('indent/new-f', 'runtime')) exec [[set filetype=new-ft]] eq(1, eval('b:lua_indent')) @@ -152,6 +157,7 @@ describe('runtime:', function() it('lua syntaxes are included in cmdline completion', function() eq({'my-lang'}, funcs.getcompletion('my-l', 'filetype')) eq({'my-lang'}, funcs.getcompletion('my-l', 'syntax')) + eq({'syntax/my-lang.lua'}, funcs.getcompletion('syntax/my-l', 'runtime')) end) end) -- cgit From c6f8af36e134a67b489d59e078425cada5eafd7b Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 18 Mar 2023 09:55:08 +0800 Subject: fix(spell): properly source spell/LANG.{vim,lua} (#22716) Using regexp doesn't work here because there are no wildcards. --- test/functional/lua/runtime_spec.lua | 37 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index 884ef3ef8e..72c99ac1f3 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -36,10 +36,12 @@ describe('runtime:', function() describe('colors', function() local colorscheme_folder = plug_dir .. sep .. 'colors' + before_each(function() + mkdir_p(colorscheme_folder) + end) it('loads lua colorscheme', function() local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme.lua' - mkdir_p(colorscheme_folder) write_file(colorscheme_file, [[vim.g.lua_colorscheme = 1]]) eq({'new_colorscheme'}, funcs.getcompletion('new_c', 'color')) @@ -48,28 +50,27 @@ describe('runtime:', function() exec('colorscheme new_colorscheme') eq(1, eval('g:lua_colorscheme')) - rmdir(colorscheme_folder) end) it('loads vim colorscheme when both lua and vim version exist', function() local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme' - mkdir_p(colorscheme_folder) write_file(colorscheme_file..'.vim', [[let g:colorscheme = 'vim']]) write_file(colorscheme_file..'.lua', [[vim.g.colorscheme = 'lua']]) exec('colorscheme new_colorscheme') eq('vim', eval('g:colorscheme')) - rmdir(colorscheme_folder) end) end) describe('compiler', function() local compiler_folder = plug_dir .. sep .. 'compiler' + before_each(function() + mkdir_p(compiler_folder) + end) it('loads lua compilers', function() local compiler_file = compiler_folder .. sep .. 'new_compiler.lua' - mkdir_p(compiler_folder) write_file(compiler_file, [[vim.b.lua_compiler = 1]]) eq({'new_compiler'}, funcs.getcompletion('new_c', 'compiler')) @@ -78,19 +79,16 @@ describe('runtime:', function() exec('compiler new_compiler') eq(1, eval('b:lua_compiler')) - rmdir(compiler_folder) end) it('loads vim compilers when both lua and vim version exist', function() local compiler_file = compiler_folder .. sep .. 'new_compiler' - mkdir_p(compiler_folder) write_file(compiler_file..'.vim', [[let b:compiler = 'vim']]) write_file(compiler_file..'.lua', [[vim.b.compiler = 'lua']]) exec('compiler new_compiler') eq('vim', eval('b:compiler')) - rmdir(compiler_folder) end) end) @@ -98,8 +96,8 @@ describe('runtime:', function() local ftplugin_folder = table.concat({plug_dir, 'ftplugin'}, sep) it('loads lua ftplugins', function() - local ftplugin_file = table.concat({ftplugin_folder , 'new-ft.lua'}, sep) mkdir_p(ftplugin_folder) + local ftplugin_file = table.concat({ftplugin_folder , 'new-ft.lua'}, sep) write_file(ftplugin_file , [[vim.b.lua_ftplugin = 1]]) eq({'new-ft'}, funcs.getcompletion('new-f', 'filetype')) @@ -107,7 +105,6 @@ describe('runtime:', function() exec [[set filetype=new-ft]] eq(1, eval('b:lua_ftplugin')) - rmdir(ftplugin_folder) end) end) @@ -115,8 +112,8 @@ describe('runtime:', function() local indent_folder = table.concat({plug_dir, 'indent'}, sep) it('loads lua indents', function() - local indent_file = table.concat({indent_folder , 'new-ft.lua'}, sep) mkdir_p(indent_folder) + local indent_file = table.concat({indent_folder , 'new-ft.lua'}, sep) write_file(indent_file , [[vim.b.lua_indent = 1]]) eq({'new-ft'}, funcs.getcompletion('new-f', 'filetype')) @@ -124,7 +121,6 @@ describe('runtime:', function() exec [[set filetype=new-ft]] eq(1, eval('b:lua_indent')) - rmdir(indent_folder) end) end) @@ -132,8 +128,8 @@ describe('runtime:', function() local syntax_folder = table.concat({plug_dir, 'syntax'}, sep) before_each(function() - local syntax_file = table.concat({syntax_folder , 'my-lang.lua'}, sep) mkdir_p(syntax_folder) + local syntax_file = table.concat({syntax_folder , 'my-lang.lua'}, sep) write_file(syntax_file , [[vim.b.current_syntax = 'my-lang']]) exec([[let b:current_syntax = '']]) end) @@ -161,5 +157,20 @@ describe('runtime:', function() end) end) + describe('spell', function() + local spell_folder = table.concat({plug_dir, 'spell'}, sep) + + it('loads spell/LANG.{vim,lua}', function() + mkdir_p(spell_folder) + local spell_vim = table.concat({spell_folder , 'Xtest.vim'}, sep) + write_file(spell_vim , [[let b:spell_vim = 1]]) + local spell_lua = table.concat({spell_folder , 'Xtest.lua'}, sep) + write_file(spell_lua , [[vim.b.spell_lua = 1]]) + exec('set spelllang=Xtest') + eq(1, eval('b:spell_vim')) + eq(1, eval('b:spell_lua')) + end) + end) + end) -- cgit From 62e0e0349c00c2c1fa1e5ec09aa7028f12ed329b Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 23 May 2023 16:12:16 +0800 Subject: fix(colorscheme): try .lua files in 'rtp' before .vim files in 'pp' (#23727) This ensures that colorschemes in 'rtp' are tried before ones in 'pp', because some colorschemes in 'pp' may not work if not added to 'rtp'. This also match the current documentation better. --- test/functional/lua/runtime_spec.lua | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index 72c99ac1f3..cd19ea4e49 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -61,6 +61,38 @@ describe('runtime:', function() eq('vim', eval('g:colorscheme')) end) + + it("loads lua colorscheme in 'rtp' if vim version only exists in 'pp' #23724", function() + local pack_dir = 'Test_Pack' + mkdir_p(pack_dir) + finally(function() + rmdir(pack_dir) + end) + exec('set pp+=' .. pack_dir) + + local pack_opt_dir = pack_dir .. sep .. 'pack' .. sep .. 'some_name' .. sep .. 'opt' + local colors_opt_dir = pack_opt_dir .. sep .. 'some_pack' .. sep .. 'colors' + mkdir_p(colors_opt_dir) + + local rtp_colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme' + local pp_opt_colorscheme_file = colors_opt_dir .. sep .. 'new_colorscheme' + + write_file(pp_opt_colorscheme_file .. '.lua', [[vim.g.colorscheme = 'lua_pp']]) + exec('colorscheme new_colorscheme') + eq('lua_pp', eval('g:colorscheme')) + + write_file(pp_opt_colorscheme_file .. '.vim', [[let g:colorscheme = 'vim_pp']]) + exec('colorscheme new_colorscheme') + eq('vim_pp', eval('g:colorscheme')) + + write_file(rtp_colorscheme_file .. '.lua', [[vim.g.colorscheme = 'lua_rtp']]) + exec('colorscheme new_colorscheme') + eq('lua_rtp', eval('g:colorscheme')) + + write_file(rtp_colorscheme_file .. '.vim', [[let g:colorscheme = 'vim_rtp']]) + exec('colorscheme new_colorscheme') + eq('vim_rtp', eval('g:colorscheme')) + end) end) describe('compiler', function() -- cgit From 6cceef6d4c2cece6a9283c9926f3b0d254bbd5db Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 30 Jun 2023 17:01:13 +0800 Subject: test(lua/runtime_spec): add test for ftplugin ordering --- test/functional/lua/runtime_spec.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'test/functional/lua/runtime_spec.lua') 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() -- cgit From fbeef0d4ef1aadc4e50b9f33946cf4dca8ca6b62 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 8 Jul 2023 23:29:24 +0800 Subject: fix(completion): don't add backslashes to runtime pattern (#24296) Problem: Bashslashes added as regexp in runtime completion may be treated as path separator with some 'isfname' value. Solution: Make curly braces work for runtime completion and use it. --- test/functional/lua/runtime_spec.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index e80a65ef3d..7d3d640265 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -18,7 +18,10 @@ describe('runtime:', function() io.open(init, 'w'):close() -- touch init file clear{args = {'-u', init}} exec('set rtp+=' .. plug_dir) - exec('set completeslash=slash') + exec([[ + set completeslash=slash + set isfname+=(,) + ]]) end) teardown(function() -- cgit From 516b173780e39de3ce1e4525f0a8f0ff250c992b Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Thu, 13 Jul 2023 10:17:19 +0100 Subject: perf(rtp): reduce rtp scans (#24191) * perf(rtp): reduce rtp scans Problem: Scanning the filesystem is expensive and particularly affects startuptime. Solution: Reduce the amount of redundant directory scans by relying less on glob patterns and handle vim and lua sourcing lower down. --- test/functional/lua/runtime_spec.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index 7d3d640265..aa682cad19 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -118,12 +118,14 @@ describe('runtime:', function() it('loads vim compilers when both lua and vim version exist', function() local compiler_file = compiler_folder .. sep .. 'new_compiler' - write_file(compiler_file..'.vim', [[let b:compiler = 'vim']]) - write_file(compiler_file..'.lua', [[vim.b.compiler = 'lua']]) + exec('let b:compiler = "compiler"') + write_file(compiler_file..'.vim', [[let b:compiler = b:compiler.'_vim']]) + write_file(compiler_file..'.lua', [[vim.b.compiler = vim.b.compiler..'_lua']]) exec('compiler new_compiler') - eq('vim', eval('b:compiler')) + -- lua version is sourced after vim + eq('compiler_vim_lua', eval('b:compiler')) end) end) -- cgit From dbb840da01c72d8a311e0c55d3248d78a64b63a4 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 14 Jul 2023 06:46:16 +0800 Subject: fix(runtime): respect 'rtp' order for all runtime files (#24335) --- test/functional/lua/runtime_spec.lua | 139 +++++++++++++++++++++++------------ 1 file changed, 94 insertions(+), 45 deletions(-) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index aa682cad19..1f312fc513 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -19,6 +19,7 @@ describe('runtime:', function() clear{args = {'-u', init}} exec('set rtp+=' .. plug_dir) exec([[ + set shell=doesnotexist set completeslash=slash set isfname+=(,) ]]) @@ -43,8 +44,8 @@ describe('runtime:', function() mkdir_p(colorscheme_folder) end) - it('loads lua colorscheme', function() - local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme.lua' + it('lua colorschemes work and are included in cmdline completion', function() + local colorscheme_file = table.concat({colorscheme_folder, 'new_colorscheme.lua'}, sep) write_file(colorscheme_file, [[vim.g.lua_colorscheme = 1]]) eq({'new_colorscheme'}, funcs.getcompletion('new_c', 'color')) @@ -55,17 +56,7 @@ describe('runtime:', function() eq(1, eval('g:lua_colorscheme')) end) - it('loads vim colorscheme when both lua and vim version exist', function() - local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme' - write_file(colorscheme_file..'.vim', [[let g:colorscheme = 'vim']]) - write_file(colorscheme_file..'.lua', [[vim.g.colorscheme = 'lua']]) - - exec('colorscheme new_colorscheme') - - eq('vim', eval('g:colorscheme')) - end) - - it("loads lua colorscheme in 'rtp' if vim version only exists in 'pp' #23724", function() + it("'rtp'/'pp' order is respected", function() local pack_dir = 'Test_Pack' mkdir_p(pack_dir) finally(function() @@ -73,38 +64,53 @@ describe('runtime:', function() end) exec('set pp+=' .. pack_dir) - local pack_opt_dir = pack_dir .. sep .. 'pack' .. sep .. 'some_name' .. sep .. 'opt' - local colors_opt_dir = pack_opt_dir .. sep .. 'some_pack' .. sep .. 'colors' + local pack_opt_dir = table.concat({pack_dir, 'pack', 'some_name', 'opt'}, sep) + local colors_opt_dir = table.concat({pack_opt_dir, 'some_pack', 'colors'}, sep) mkdir_p(colors_opt_dir) - local rtp_colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme' - local pp_opt_colorscheme_file = colors_opt_dir .. sep .. 'new_colorscheme' + local after_colorscheme_folder = table.concat({plug_dir, 'after', 'colors'}, sep) + mkdir_p(after_colorscheme_folder) + exec('set rtp+=' .. plug_dir .. '/after') - write_file(pp_opt_colorscheme_file .. '.lua', [[vim.g.colorscheme = 'lua_pp']]) + write_file(table.concat({colors_opt_dir, 'new_colorscheme.lua'}, sep), + [[vim.g.colorscheme = 'lua_pp']]) exec('colorscheme new_colorscheme') eq('lua_pp', eval('g:colorscheme')) - write_file(pp_opt_colorscheme_file .. '.vim', [[let g:colorscheme = 'vim_pp']]) + write_file(table.concat({colors_opt_dir, 'new_colorscheme.vim'}, sep), + [[let g:colorscheme = 'vim_pp']]) exec('colorscheme new_colorscheme') eq('vim_pp', eval('g:colorscheme')) - write_file(rtp_colorscheme_file .. '.lua', [[vim.g.colorscheme = 'lua_rtp']]) + write_file(table.concat({after_colorscheme_folder, 'new_colorscheme.lua'}, sep), + [[vim.g.colorscheme = 'lua_rtp_after']]) + exec('colorscheme new_colorscheme') + eq('lua_rtp_after', eval('g:colorscheme')) + + write_file(table.concat({after_colorscheme_folder, 'new_colorscheme.vim'}, sep), + [[let g:colorscheme = 'vim_rtp_after']]) + exec('colorscheme new_colorscheme') + eq('vim_rtp_after', eval('g:colorscheme')) + + write_file(table.concat({colorscheme_folder, 'new_colorscheme.lua'}, sep), + [[vim.g.colorscheme = 'lua_rtp']]) exec('colorscheme new_colorscheme') eq('lua_rtp', eval('g:colorscheme')) - write_file(rtp_colorscheme_file .. '.vim', [[let g:colorscheme = 'vim_rtp']]) + write_file(table.concat({colorscheme_folder, 'new_colorscheme.vim'}, sep), + [[let g:colorscheme = 'vim_rtp']]) exec('colorscheme new_colorscheme') eq('vim_rtp', eval('g:colorscheme')) end) end) describe('compiler', function() - local compiler_folder = plug_dir .. sep .. 'compiler' + local compiler_folder = table.concat({plug_dir, 'compiler'}, sep) before_each(function() mkdir_p(compiler_folder) end) - it('loads lua compilers', function() + it('lua compilers work and are included in cmdline completion', function() local compiler_file = compiler_folder .. sep .. 'new_compiler.lua' write_file(compiler_file, [[vim.b.lua_compiler = 1]]) @@ -116,23 +122,27 @@ describe('runtime:', function() eq(1, eval('b:lua_compiler')) end) - it('loads vim compilers when both lua and vim version exist', function() - local compiler_file = compiler_folder .. sep .. 'new_compiler' - exec('let b:compiler = "compiler"') - write_file(compiler_file..'.vim', [[let b:compiler = b:compiler.'_vim']]) - write_file(compiler_file..'.lua', [[vim.b.compiler = vim.b.compiler..'_lua']]) - + it("'rtp' order is respected", function() + local after_compiler_folder = table.concat({plug_dir, 'after', 'compiler'}, sep) + mkdir_p(table.concat({compiler_folder, 'new_compiler'}, sep)) + mkdir_p(table.concat({after_compiler_folder, 'new_compiler'}, 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/compiler/ are loaded after all files in compiler/. + write_file(table.concat({compiler_folder, 'new_compiler.vim'}, sep), [[let g:seq ..= 'A']]) + write_file(table.concat({compiler_folder, 'new_compiler.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'B']]) + write_file(table.concat({after_compiler_folder, 'new_compiler.vim'}, sep), [[let g:seq ..= 'a']]) + write_file(table.concat({after_compiler_folder, 'new_compiler.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'b']]) exec('compiler new_compiler') - - -- lua version is sourced after vim - eq('compiler_vim_lua', eval('b:compiler')) + eq('ABab', eval('g:seq')) end) end) describe('ftplugin', function() local ftplugin_folder = table.concat({plug_dir, 'ftplugin'}, sep) - it('loads lua ftplugins', function() + it('lua ftplugins work and are included in cmdline completion', function() mkdir_p(ftplugin_folder) local ftplugin_file = table.concat({ftplugin_folder , 'new-ft.lua'}, sep) write_file(ftplugin_file , [[vim.b.lua_ftplugin = 1]]) @@ -172,7 +182,7 @@ describe('runtime:', function() describe('indent', function() local indent_folder = table.concat({plug_dir, 'indent'}, sep) - it('loads lua indents', function() + it('lua indents work and are included in cmdline completion', function() mkdir_p(indent_folder) local indent_file = table.concat({indent_folder , 'new-ft.lua'}, sep) write_file(indent_file , [[vim.b.lua_indent = 1]]) @@ -183,6 +193,22 @@ describe('runtime:', function() exec [[set filetype=new-ft]] eq(1, eval('b:lua_indent')) end) + + it("'rtp' order is respected", function() + local after_indent_folder = table.concat({plug_dir, 'after', 'indent'}, sep) + mkdir_p(table.concat({indent_folder, 'new-ft'}, sep)) + mkdir_p(table.concat({after_indent_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/indent/ are loaded after all files in indent/. + write_file(table.concat({indent_folder, 'new-ft.vim'}, sep), [[let g:seq ..= 'A']]) + write_file(table.concat({indent_folder, 'new-ft.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'B']]) + write_file(table.concat({after_indent_folder, 'new-ft.vim'}, sep), [[let g:seq ..= 'a']]) + write_file(table.concat({after_indent_folder, 'new-ft.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'b']]) + exec('setfiletype new-ft') + eq('ABab', eval('g:seq')) + end) end) describe('syntax', function() @@ -216,22 +242,45 @@ describe('runtime:', function() eq({'my-lang'}, funcs.getcompletion('my-l', 'syntax')) eq({'syntax/my-lang.lua'}, funcs.getcompletion('syntax/my-l', 'runtime')) end) + + it("'rtp' order is respected", function() + local after_syntax_folder = table.concat({plug_dir, 'after', 'syntax'}, sep) + mkdir_p(table.concat({syntax_folder, 'my-lang'}, sep)) + mkdir_p(table.concat({after_syntax_folder, 'my-lang'}, 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/syntax/ are loaded after all files in syntax/. + write_file(table.concat({syntax_folder, 'my-lang.vim'}, sep), [[let g:seq ..= 'A']]) + write_file(table.concat({syntax_folder, 'my-lang.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'B']]) + write_file(table.concat({syntax_folder, 'my-lang', 'a.vim'}, sep), [[let g:seq ..= 'C']]) + write_file(table.concat({syntax_folder, 'my-lang', 'a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'D']]) + write_file(table.concat({after_syntax_folder, 'my-lang.vim'}, sep), [[let g:seq ..= 'a']]) + write_file(table.concat({after_syntax_folder, 'my-lang.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'b']]) + write_file(table.concat({after_syntax_folder, 'my-lang', 'a.vim'}, sep), [[let g:seq ..= 'c']]) + write_file(table.concat({after_syntax_folder, 'my-lang', 'a.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'd']]) + exec('setfiletype my-lang') + eq('ABCDabcd', eval('g:seq')) + end) end) describe('spell', function() - local spell_folder = table.concat({plug_dir, 'spell'}, sep) - - it('loads spell/LANG.{vim,lua}', function() - mkdir_p(spell_folder) - local spell_vim = table.concat({spell_folder , 'Xtest.vim'}, sep) - write_file(spell_vim , [[let b:spell_vim = 1]]) - local spell_lua = table.concat({spell_folder , 'Xtest.lua'}, sep) - write_file(spell_lua , [[vim.b.spell_lua = 1]]) + it("loads spell/LANG.{vim,lua} respecting 'rtp' order", function() + local spell_folder = table.concat({plug_dir, 'spell'}, sep) + local after_spell_folder = table.concat({plug_dir, 'after', 'spell'}, sep) + mkdir_p(table.concat({spell_folder, 'Xtest'}, sep)) + mkdir_p(table.concat({after_spell_folder, 'Xtest'}, 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/spell/ are loaded after all files in spell/. + write_file(table.concat({spell_folder, 'Xtest.vim'}, sep), [[let g:seq ..= 'A']]) + write_file(table.concat({spell_folder, 'Xtest.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'B']]) + write_file(table.concat({after_spell_folder, 'Xtest.vim'}, sep), [[let g:seq ..= 'a']]) + write_file(table.concat({after_spell_folder, 'Xtest.lua'}, sep), [[vim.g.seq = vim.g.seq .. 'b']]) exec('set spelllang=Xtest') - eq(1, eval('b:spell_vim')) - eq(1, eval('b:spell_lua')) + eq('ABab', eval('g:seq')) end) end) end) - -- cgit From 9176b5e10a6b32ff65c8ba3f532e3bd55c168ec6 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 14 Jul 2023 07:57:13 +0800 Subject: fix(runtime): respect 'fileignorecase' when sourcing (#24344) --- test/functional/lua/runtime_spec.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test/functional/lua/runtime_spec.lua') diff --git a/test/functional/lua/runtime_spec.lua b/test/functional/lua/runtime_spec.lua index 1f312fc513..0b8b2234db 100644 --- a/test/functional/lua/runtime_spec.lua +++ b/test/functional/lua/runtime_spec.lua @@ -177,6 +177,31 @@ describe('runtime:', function() exec('setfiletype new-ft') eq('ABCDEFabcdef', eval('g:seq')) end) + + it("'rtp' order is respected with 'fileignorecase'", function() + exec('set fileignorecase') + 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() -- cgit