mirror of
https://github.com/neovim/neovim
synced 2025-07-17 09:41:46 +00:00
fix(filetype): source ftdetect/* after creating scripts.vim autocmds (#29445)
This commit is contained in:
@ -39,15 +39,6 @@ vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile', 'StdinReadPost' }, {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- These *must* be sourced after the autocommand above is created
|
|
||||||
if not vim.g.did_load_ftdetect then
|
|
||||||
vim.cmd([[
|
|
||||||
augroup filetypedetect
|
|
||||||
runtime! ftdetect/*.{vim,lua}
|
|
||||||
augroup END
|
|
||||||
]])
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Set up the autocmd for user scripts.vim
|
-- Set up the autocmd for user scripts.vim
|
||||||
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||||
group = 'filetypedetect',
|
group = 'filetypedetect',
|
||||||
@ -62,3 +53,10 @@ vim.api.nvim_create_autocmd('StdinReadPost', {
|
|||||||
if not vim.g.ft_ignore_pat then
|
if not vim.g.ft_ignore_pat then
|
||||||
vim.g.ft_ignore_pat = '\\.\\(Z\\|gz\\|bz2\\|zip\\|tgz\\)$'
|
vim.g.ft_ignore_pat = '\\.\\(Z\\|gz\\|bz2\\|zip\\|tgz\\)$'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- These *must* be sourced after the autocommands above are created
|
||||||
|
vim.cmd([[
|
||||||
|
augroup filetypedetect
|
||||||
|
runtime! ftdetect/*.{vim,lua}
|
||||||
|
augroup END
|
||||||
|
]])
|
||||||
|
@ -1325,31 +1325,59 @@ describe('runtime:', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it("loads ftdetect/*.{vim,lua} respecting 'rtp' order", function()
|
it("loads ftdetect/*.{vim,lua} respecting 'rtp' order", function()
|
||||||
local ftdetect_folder = table.concat({ xconfig, 'nvim', 'ftdetect' }, pathsep)
|
local rtp_folder = table.concat({ xconfig, 'nvim' }, pathsep)
|
||||||
local after_ftdetect_folder = table.concat({ xconfig, 'nvim', 'after', 'ftdetect' }, pathsep)
|
local after_rtp_folder = table.concat({ rtp_folder, 'after' }, pathsep)
|
||||||
|
local ftdetect_folder = table.concat({ rtp_folder, 'ftdetect' }, pathsep)
|
||||||
|
local after_ftdetect_folder = table.concat({ after_rtp_folder, 'ftdetect' }, pathsep)
|
||||||
mkdir_p(ftdetect_folder)
|
mkdir_p(ftdetect_folder)
|
||||||
mkdir_p(after_ftdetect_folder)
|
mkdir_p(after_ftdetect_folder)
|
||||||
finally(function()
|
finally(function()
|
||||||
rmdir(ftdetect_folder)
|
rmdir(ftdetect_folder)
|
||||||
rmdir(after_ftdetect_folder)
|
rmdir(after_ftdetect_folder)
|
||||||
end)
|
end)
|
||||||
|
write_file(table.concat({ rtp_folder, 'scripts.vim' }, pathsep), [[let g:aseq ..= 'S']])
|
||||||
|
write_file(table.concat({ after_rtp_folder, 'scripts.vim' }, pathsep), [[let g:aseq ..= 's']])
|
||||||
-- A .lua file is loaded after a .vim file if they only differ in extension.
|
-- A .lua file is loaded after a .vim file if they only differ in extension.
|
||||||
-- All files in after/ftdetect/ are loaded after all files in ftdetect/.
|
-- All files in after/ftdetect/ are loaded after all files in ftdetect/.
|
||||||
write_file(table.concat({ ftdetect_folder, 'new-ft.vim' }, pathsep), [[let g:seq ..= 'A']])
|
write_file(
|
||||||
|
table.concat({ ftdetect_folder, 'new-ft.vim' }, pathsep),
|
||||||
|
[[
|
||||||
|
let g:seq ..= 'A'
|
||||||
|
autocmd BufRead,BufNewFile FTDETECT let g:aseq ..= 'A'
|
||||||
|
]]
|
||||||
|
)
|
||||||
write_file(
|
write_file(
|
||||||
table.concat({ ftdetect_folder, 'new-ft.lua' }, pathsep),
|
table.concat({ ftdetect_folder, 'new-ft.lua' }, pathsep),
|
||||||
[[vim.g.seq = vim.g.seq .. 'B']]
|
[[
|
||||||
|
vim.g.seq = vim.g.seq .. 'B'
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||||
|
pattern = 'FTDETECT',
|
||||||
|
command = "let g:aseq ..= 'B'",
|
||||||
|
})
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
write_file(
|
write_file(
|
||||||
table.concat({ after_ftdetect_folder, 'new-ft.vim' }, pathsep),
|
table.concat({ after_ftdetect_folder, 'new-ft.vim' }, pathsep),
|
||||||
[[let g:seq ..= 'a']]
|
[[
|
||||||
|
let g:seq ..= 'a'
|
||||||
|
autocmd BufRead,BufNewFile FTDETECT let g:aseq ..= 'a'
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
write_file(
|
write_file(
|
||||||
table.concat({ after_ftdetect_folder, 'new-ft.lua' }, pathsep),
|
table.concat({ after_ftdetect_folder, 'new-ft.lua' }, pathsep),
|
||||||
[[vim.g.seq = vim.g.seq .. 'b']]
|
[[
|
||||||
|
vim.g.seq = vim.g.seq .. 'b'
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
|
||||||
|
pattern = 'FTDETECT',
|
||||||
|
command = "let g:aseq ..= 'b'",
|
||||||
|
})
|
||||||
|
]]
|
||||||
)
|
)
|
||||||
clear { args_rm = { '-u' }, args = { '--cmd', 'let g:seq = ""' }, env = xenv }
|
clear { args_rm = { '-u' }, args = { '--cmd', 'let g:seq = ""' }, env = xenv }
|
||||||
eq('ABab', eval('g:seq'))
|
eq('ABab', eval('g:seq'))
|
||||||
|
command('let g:aseq = ""')
|
||||||
|
command('edit FTDETECT')
|
||||||
|
eq('SsABab', eval('g:aseq'))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user