The lua-language-server not started while opening a .lua file from startup using nvim a.lua
. :LspInfo
showing 0 client(s) attached to this buffer
.
But it works when switching to another .lua file: :e b.lua
.
Only lua_ls with this problem. Other lsp servers (gopls, jsonls, bashls, pylsp) works well.
I use lazy.nvim
and mason
. Here's my lsp config. I can't figure it out. Anyone have any idea?
lua/plugins/lsp.lua:
return {
{
'neovim/nvim-lspconfig',
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
'hrsh7th/cmp-nvim-lsp',
},
priority = 900,
config = function()
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = {
"gopls",
"lua_ls",
"html",
"jsonls",
"yamlls",
"pylsp",
"bashls",
"clangd",
"ts_ls",
"volar",
}
})
-- Set up lspconfig.
-- Enable each lsp servers.
local capabilities = require('cmp_nvim_lsp').default_capabilities()
-- go
require('lspconfig')['gopls'].setup({
capabilities = capabilities
})
-- lua
require('lspconfig')['lua_ls'].setup({
capabilities = capabilities
})
-- html
require('lspconfig')['html'].setup({
capabilities = capabilities
})
-- json
require('lspconfig')['jsonls'].setup({
capabilities = capabilities
})
-- yaml
require('lspconfig')['yamlls'].setup({
capabilities = capabilities
})
-- python
require('lspconfig')['pylsp'].setup({
capabilities = capabilities,
settings = {
pylsp = {
plugins = {
pycodestyle = {
ignore = { 'E501' },
}
}
}
}
})
-- bash
require('lspconfig')['bashls'].setup({
capabilities = capabilities
})
-- clang
require('lspconfig')['clangd'].setup({
capabilities = capabilities,
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' },
})
-- typescript
require('lspconfig')['ts_ls'].setup({
capabilities = capabilities,
init_options = {
plugins = {
{
name = "@vue/typescript-plugin",
location = "/opt/homebrew/lib/node_modules/@vue/typescript-plugin",
languages = { "javascript", "typescript", "vue" },
},
},
},
filetypes = {
"javascript",
"typescript",
"vue",
},
})
-- volar (for vue)
require('lspconfig')['volar'].setup({
capabilities = capabilities
})
-- Keymap for lsp
local vim = vim
local keyset = vim.keymap.set
keyset("n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", { silent = true })
keyset("n", "<leader>f", "<cmd>lua vim.lsp.buf.format()<CR>", { silent = true })
-- Auto format for golang.
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = '*.go',
callback = function()
vim.api.nvim_command('lua vim.lsp.buf.format()')
end,
desc = 'format on save for Go files',
})
end
}
}
:LspInfo
output:
lspconfig: require("lspconfig.health").check()
LSP configs active in this session (globally) ~
- Configured servers: clangd, bashls, volar, yamlls, jsonls, lua_ls, gopls, pylsp, html, ts_ls
- OK Deprecated servers: (none)
LSP configs active in this buffer (bufnr: 1) ~
- Language client log: ~/.local/state/nvim/lsp.log
- Detected filetype: `lua`
- 0 client(s) attached to this buffer
- Other clients that match the "lua" filetype:
- Config: lua_ls
filetypes: lua
cmd: ~/.local/share/nvim/mason/bin/lua-language-server
version: `3.13.6`
executable: true
autostart: true
root directory: ~/.config/nvim/