97 lines
2.9 KiB
Lua
97 lines
2.9 KiB
Lua
require("mason").setup()
|
|
require("mason-lspconfig").setup {
|
|
ensure_installed = {
|
|
"rust_analyzer",
|
|
"wgsl_analyzer",
|
|
"tsserver",
|
|
"svelte",
|
|
"lua_ls",
|
|
"clangd",
|
|
"kotlin_language_server",
|
|
"jedi_language_server",
|
|
"jdtls",
|
|
},
|
|
}
|
|
|
|
local servers = {
|
|
"tsserver",
|
|
"svelte",
|
|
"lua_ls",
|
|
"clangd",
|
|
"kotlin_language_server",
|
|
"html",
|
|
"cssls",
|
|
"bashls",
|
|
"cmake",
|
|
"jedi_language_server",
|
|
"jdtls",
|
|
"wgsl_analyzer",
|
|
"nil_ls",
|
|
}
|
|
|
|
-- shit wouldn't stop whining about an unused local variable
|
|
---@diagnostic disable-next-line: unused-local
|
|
local on_attach = function(client, bufnr)
|
|
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
|
|
|
|
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
|
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
|
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
|
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
|
|
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
|
|
vim.keymap.set('n', '<space>wl', function()
|
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
|
end, bufopts)
|
|
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
|
|
vim.keymap.set('n', '<space>r', vim.lsp.buf.rename, bufopts)
|
|
vim.keymap.set('n', '<space>a', vim.lsp.buf.code_action, bufopts)
|
|
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
|
vim.keymap.set('n', '<C-f>', function() vim.lsp.buf.format { async = true } end, bufopts)
|
|
end
|
|
|
|
local lsp_flags = {
|
|
}
|
|
|
|
for _, server in ipairs(servers) do
|
|
require("lspconfig")[server].setup(require("coq").lsp_ensure_capabilities({
|
|
on_attach = on_attach,
|
|
flags = lsp_flags,
|
|
}))
|
|
end
|
|
|
|
require("flutter-tools").setup {
|
|
lsp = require("coq").lsp_ensure_capabilities({
|
|
on_attach = on_attach,
|
|
flags = lsp_flags,
|
|
virtual_text = true,
|
|
}),
|
|
}
|
|
|
|
local rt = require("rust-tools")
|
|
rt.setup({
|
|
tools = {
|
|
inlay_hints = {
|
|
auto = true,
|
|
only_current_line = true,
|
|
show_parameter_hints = true,
|
|
}
|
|
},
|
|
server = {
|
|
on_attach = function(client, bufnr)
|
|
on_attach(client, bufnr)
|
|
-- Hover actions
|
|
vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, { buffer = bufnr })
|
|
-- Code action groups
|
|
vim.keymap.set("n", "<leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
|
|
end,
|
|
-- https://github.com/simrat39/rust-tools.nvim/issues/300
|
|
settings = {
|
|
["rust-analyzer"] = {
|
|
inlayHints = { locationLinks = false },
|
|
},
|
|
},
|
|
},
|
|
})
|