aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lua/lspconfig/configs.lua17
1 files changed, 13 insertions, 4 deletions
diff --git a/lua/lspconfig/configs.lua b/lua/lspconfig/configs.lua
index 391a329b..0e4caa34 100644
--- a/lua/lspconfig/configs.lua
+++ b/lua/lspconfig/configs.lua
@@ -101,11 +101,15 @@ function configs.__newindex(t, config_name, config_def)
if config.autostart == true then
local event_conf = config.filetypes and { event = 'FileType', pattern = config.filetypes }
- or { event = 'BufReadPost' }
+ or { event = { 'BufReadPost', 'BufNewFile' } }
api.nvim_create_autocmd(event_conf.event, {
pattern = event_conf.pattern or '*',
callback = function(opt)
- M.manager:try_add(opt.buf)
+ -- Use vim.schedule() to ensure filetype detection happens first.
+ -- Sometimes, BufNewFile triggers before 'filetype' is set.
+ vim.schedule(function()
+ M.manager:try_add(opt.buf)
+ end)
end,
group = lsp_group,
desc = string.format(
@@ -142,13 +146,18 @@ function configs.__newindex(t, config_name, config_def)
end
if root_dir then
- api.nvim_create_autocmd('BufReadPost', {
+ api.nvim_create_autocmd({ 'BufReadPost', 'BufNewFile' }, {
pattern = fn.fnameescape(root_dir) .. '/*',
callback = function(arg)
if #M.manager:clients() == 0 then
return true
end
- M.manager:try_add_wrapper(arg.buf, root_dir)
+
+ -- Use vim.schedule() to ensure filetype detection happens first.
+ -- Sometimes, BufNewFile triggers before 'filetype' is set.
+ vim.schedule(function()
+ M.manager:try_add_wrapper(arg.buf, root_dir)
+ end)
end,
group = lsp_group,
desc = string.format(