dots/modules/home-manager/files/nvim/lua/plugins/lsp-config.lua
2024-11-18 22:26:22 -05:00

65 lines
1.9 KiB
Lua

return {
{
"williamboman/mason.nvim",
config = true,
},
{
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = {
"lemminx", -- xml
"lua_ls", -- lua
"nil_ls", -- nix
"puppet", -- puppet
"ruff", -- python
},
})
end,
},
{
"neovim/nvim-lspconfig",
config = function()
local on_attach = function(_, _)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, {})
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, {})
vim.keymap.set("n", "gr", require("telescope.builtin").lsp_references, {})
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
end
local lspconfig = require("lspconfig")
local capabilities = require("cmp_nvim_lsp").default_capabilities()
lspconfig.lemminx.setup({
capabilities = capabilities,
on_attach = on_attach,
})
lspconfig.lua_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
settings = { Lua = { diagnostics = { globals = { "vim" } } } },
})
lspconfig.nil_ls.setup({
capabilities = capabilities,
on_attach = on_attach,
})
local puppet_languageserver = vim.fn.expand(
"$HOME/.local/share/nvim/mason/packages/puppet-editor-services/libexec/puppet-languageserver"
)
lspconfig.puppet.setup({
capabilities = capabilities,
on_attach = on_attach,
cmd = { puppet_languageserver, "--feature-flags=puppetstrings" },
settings = { puppet = { editorServices = { formatOnType = { enable = true } } } },
})
lspconfig.ruff.setup({ on_attach = on_attach })
end,
},
}