Hi!
I am trying to troubleshoot the latest unreleased version of doom-nvim. The issue
is described below under the problem heading.
The branch I am using is this one for should anyone be interested: https://github.com/molleweide/doom-nvim/tree/moll_modular
Doom Nvim crash report
Report date: 2022-03-10 01:20:08
System and Doom Nvim information
- OS: Darwin
- Neovim version: 0.6.1
- Doom Nvim information:
- version: 4.0.0-alpha1
doom_root
variable:/Users/hjalmarjakobsson/.config/doom-nvim
doom_configs_root
variable:/Users/hjalmarjakobsson/.config/doom-nvim
problem: require("lspconfig.configs").some_server_name
returns nil for all servers
I am trying to problem solve why overriding the pre-configured servers generate an error.
I am fairly new to lsp stuff but it seems to me that everything in the function below should be correct.
I recall commenting (**)
out, reloading, and then toggle it back in again once, and then all of the server
configs became accessible but I haven’t been able to reproduce this, which I guess makes sense because otherwise
I wouldn’t be writing this
If I run:
:lua print(vim.insperct(require("lspconfig.configs)))
this returns
{
<metatable> = {
__newindex = <function 1>
}
}
but if I do:
:lua print(vim.insperct(require("lspconfig.configs).cssls))
it just returns nil.
my question:
is there anything in particular that could be recommended for me to problem solve this?
As I mentionned above I am an intermediate person when it comes to nvim configs so I don’t know atm
how I should troubleshoot this.
packer info
["nvim-lspconfig"] = {
"neovim/nvim-lspconfig",
commit = "e7df7ecae0b0d2f997ea65e951ddbe98ca3e154b",
opt = true,
cmd = {
"LspStart",
"LspRestart",
"LspStop",
},
module = "lspconfig",
},
this is the helper function used to setup lsp servers
module.use_lsp = function(lsp_name, opts)
local lsp = require('lspconfig')
local lsp_configs = require("lspconfig.configs")
-- Apply or merge lsp configs -- (**) THIS IS WHERE THE ERR HAPPENS.
local config_name = opts.name and opts.name or lsp_name
-- log.info("lsp_name:", lsp_name)
-- log.info("opts.name:", opts.name)
-- log.info("config_name:", config_name)
-- log.info("lsp_configs["..config_name.."] -> ", lsp_configs[config_name]) -- <<<<< returns nil for all configs here?
if opts.config then
if lsp_configs[config_name] then
lsp_configs[config_name] = vim.tbl_deep_extend('force', lsp_configs[config_name], opts.config)
else
lsp_configs[config_name] = opts.config -- <<<<<<<<< enters here for all servers, even though they come predefined in lspconfig.configs??
end
end
-- Start server and bind to buffers
local start_lsp = function()
log.info("start_lsp > " .. config_name)
lsp[config_name].setup({})
local server = lsp[config_name]
log.info(vim.inspect(server))
local buffer_handler = server.filetypes and server.manager.try_add_wrapper or server.manager.try_add
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
buffer_handler(bufnr)
end
end
-- Auto install if possible
if not utils.is_plugin_disabled('auto_install') and not opts.no_installer then
log.info("lsp >> if auto_install")
local lsp_installer = require("nvim-lsp-installer.servers")
local server_available, server = lsp_installer.get_server(lsp_name)
-- log.info(vim.inspect(server))
if server_available then
lsp_configs[config_name].cmd_env = server:get_default_options().cmd_env
if not server:is_installed() then
vim.defer_fn(function()
server:install()
end, 50)
end
server:on_ready(function()
start_lsp()
end)
end
else
log.info("lsp >> else start_lsp")
start_lsp()
end
end
output of log statements
[doom] [INFO 01:24:39] langs_utils.lua:34: lsp_name: cssls
[doom] [INFO 01:24:39] langs_utils.lua:35: opts.name: nil
[doom] [INFO 01:24:39] langs_utils.lua:36: config_name: cssls
[doom] [INFO 01:24:39] langs_utils.lua:37: lsp_configs[cssls] -> nil
error message that is displayed
Error detected while processing BufWritePost Autocommands for "*/doom-nvim/config.lua":
E5108: Error executing lua ...pack/packer/opt/nvim-lspconfig/lua/lspconfig/configs.lua:8: default_config: expected table, got nil
stack traceback:
[C]: in function 'error'
vim/shared.lua:608: in function 'validate'
...pack/packer/opt/nvim-lspconfig/lua/lspconfig/configs.lua:8: in function '__newindex'
...k/cheovim/start/cheovim/lua/doom/modules/langs_utils.lua:44: in function 'use_lsp'
...ck/cheovim/start/cheovim/lua/doom/modules/css/config.lua:18: in main chunk
[C]: in function 'require'
...e/pack/cheovim/start/cheovim/lua/doom/utils/reloader.lua:134: in function 'reload_lua_module'
...e/pack/cheovim/start/cheovim/lua/doom/utils/reloader.lua:159: in function 'reload_lua_modules'
...e/pack/cheovim/start/cheovim/lua/doom/utils/reloader.lua:208: in function 'reload_configs'
...e/pack/cheovim/start/cheovim/lua/doom/utils/reloader.lua:225: in function 'full_reload'
...cheovim/start/cheovim/lua/doom/modules/core/autocmds.lua:8: in function <...cheovim/start/cheovim/lua/doom/modules/core/autocmds.lua:8>
[string ":lua"]:1: in main chunk