2022-11-08 22:44:29 +00:00
|
|
|
-- 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)
|
2022-11-13 01:00:45 +00:00
|
|
|
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"})
|
2022-11-13 02:27:51 +00:00
|
|
|
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"})
|
2022-11-13 01:00:45 +00:00
|
|
|
end
|
|
|
|
}
|
2022-11-08 22:44:29 +00:00
|
|
|
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,
|
|
|
|
})
|
|
|
|
|