kickstart.nvim/lua/core/setup/language-servers.lua

102 lines
2.1 KiB
Lua
Raw Normal View History

2023-08-16 00:12:13 -03:00
local servers = {
-- clangd = {},
2024-04-19 14:57:13 -03:00
gopls = {
go = {
analyses = {
unusedparams = true,
},
usePlaceholders = true,
completeUnimported = true,
staticcheck = true,
gofumpt = true,
},
},
2023-08-16 00:12:13 -03:00
-- pyright = {},
-- rust_analyzer = {},
2023-08-16 18:40:05 -03:00
eslint = {},
2025-03-08 17:01:24 -03:00
ts_ls = {
typescript = {
settings = {
preferences = {
2024-04-25 17:08:01 -03:00
importModuleSpecifierPreference = "non-relative",
preferTypeOnlyAutoImports = true,
}
}
},
},
2023-08-23 17:36:50 -03:00
tailwindcss = {},
2023-08-16 00:12:13 -03:00
2023-10-16 11:28:38 -03:00
prismals = {},
2023-08-16 00:12:13 -03:00
lua_ls = {
Lua = {
workspace = { checkThirdParty = false },
telemetry = { enable = false },
},
},
}
-- Setup neovim lua configuration
require('neodev').setup()
-- nvim-cmp supports additional completion capabilities,
-- so broadcast that to servers
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
-- Ensure the servers above are installed
local mason_lspconfig = require 'mason-lspconfig'
mason_lspconfig.setup {
ensure_installed = vim.tbl_keys(servers),
}
local lspKeymaps = require('core.keymaps.async.language-servers')
local on_attach = function(_, bufnr)
lspKeymaps(bufnr)
end
mason_lspconfig.setup_handlers {
function(server_name)
require('lspconfig')[server_name].setup {
capabilities = capabilities,
on_attach = on_attach,
settings = servers[server_name],
}
end,
}
-- Tsserver run organize imports command
local function organize_imports()
local params = {
command = "_typescript.organizeImports",
arguments = { vim.api.nvim_buf_get_name(0) },
title = ""
}
vim.lsp.buf.execute_command(params)
end
2025-03-08 17:01:24 -03:00
-- TODO Add back OrganizeImports command
local tsserverKeymaps = require('core.keymaps.async.ts_ls')
2023-08-16 00:12:13 -03:00
local tsserver_on_attach = function(_, bufnr)
lspKeymaps(bufnr)
tsserverKeymaps(bufnr, {
organize_imports = organize_imports
})
end
2025-03-08 17:01:24 -03:00
require('lspconfig').ts_ls.setup {
2023-08-16 00:12:13 -03:00
on_attach = tsserver_on_attach,
capabilities = capabilities,
commands = {
OrganizeImports = {
organize_imports,
description = "Organize Imports"
}
}
}