Merge pull request #23779 from neovim/backport-23727-to-release-0.9

[Backport release-0.9] fix(colorscheme): try .lua files in 'rtp' before .vim files in 'pp'
This commit is contained in:
zeertzjq 2023-05-27 11:14:44 +08:00 committed by GitHub
commit b5a66b1830
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 2 deletions

View File

@ -686,10 +686,18 @@ int load_colors(char *name)
char *buf = xmalloc(buflen);
apply_autocmds(EVENT_COLORSCHEMEPRE, name, curbuf->b_fname, false, curbuf);
snprintf(buf, buflen, "colors/%s.vim", name);
int retval = source_runtime(buf, DIP_START + DIP_OPT);
int retval = source_runtime(buf, 0);
if (retval == FAIL) {
snprintf(buf, buflen, "colors/%s.lua", name);
retval = source_runtime(buf, DIP_START + DIP_OPT);
retval = source_runtime(buf, 0);
}
if (retval == FAIL) {
snprintf(buf, buflen, "colors/%s.vim", name);
retval = source_runtime(buf, DIP_NORTP + DIP_START + DIP_OPT);
}
if (retval == FAIL) {
snprintf(buf, buflen, "colors/%s.lua", name);
retval = source_runtime(buf, DIP_NORTP + DIP_START + DIP_OPT);
}
xfree(buf);
if (retval == OK) {

View File

@ -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()