diff options
| -rw-r--r-- | lua/lspconfig/configs.lua | 17 |
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( |
