dotfiles/neovim/.config/nvim/lua/warrenhood/mason-config.lua

54 lines
2 KiB
Lua

-- Setup mason and language servers
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = { "sumneko_lua", "rust_analyzer", "pyright" }
})
local lspconfig = require('lspconfig')
require("mason-lspconfig").setup_handlers({
-- default handler
function(server_name) -- default handler (optional)
require("lspconfig")[server_name].setup {
on_attach = function()
vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0 })
vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = 0, desc = "Go to definition"})
vim.keymap.set("n", "gr", ":Telescope lsp_references<CR>", { buffer = 0, desc = "Go to references"})
vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, { buffer = 0, desc = "Go to type definition"})
vim.keymap.set("n", "gI", vim.lsp.buf.implementation, { buffer = 0, desc = "Go to implementation"})
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, { buffer = 0, desc = "Refactor/Rename" })
vim.keymap.set("n", "<leader>df", vim.diagnostic.goto_next, { buffer = 0, desc = "Go to next diagnostic"})
vim.keymap.set("n", "<leader>db", vim.diagnostic.goto_prev, { buffer = 0, desc = "Go to previous diagnostic"})
end
}
end,
-- Overrides
["sumneko_lua"] = function()
lspconfig.sumneko_lua.setup {
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { 'vim' },
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file("", true),
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = {
enable = false,
},
},
},
}
end,
})