return { { "mason-org/mason.nvim", opts = { ui = { icons = { package_installed = "✓", package_pending = "➜", package_uninstalled = "✗", }, }, }, config = function(_, opts) require("mason").setup(opts) end, }, { "mason-org/mason-lspconfig.nvim", event = "VeryLazy", dependencies = { { "mason-org/mason.nvim" }, { "neovim/nvim-lspconfig" }, { "folke/neodev.nvim" }, }, config = function() -- setup lsps vim.lsp.config('lua_ls', { settings = { Lua = { hint = { enable = true }, runtime = { version = "LuaJIT" }, diagnostics = { globals = { "vim", "require" } }, workspace = { checkThirdParty = true, library = { [vim.fn.expand("$VIMRUNTIME/lua")] = true, [vim.fn.expand("$VIMRUNTIME/lua/vim/lsp")] = true, }, }, }, }, }) require("mason-lspconfig").setup { ensure_installed = { "lua_ls", "vimls", "bashls" }, automatic_enable = { 'lua_ls', 'vimls', 'bashls' } } require("neodev").setup() -- setup keymaps vim.api.nvim_create_autocmd("LspAttach", { callback = function(_) -- local fn_format = function() -- vim.lsp.buf.format({ async = true }) -- end -- hover vim.keymap.set("n", "K", vim.lsp.buf.hover, { desc = "hover (K)" }) -- vim.keymap.set("n", "lah", vim.lsp.buf.hover, { desc = "hover (K)" }) -- format -- vim.keymap.set({ "n", "v" }, "laf", fn_format, { desc = "formatting" }) -- rename -- vim.keymap.set({ "n", "v" }, "lar", vim.lsp.buf.rename, { desc = "rename" }) -- code_action -- vim.keymap.set({ "n", "v" }, "laa", vim.lsp.buf.code_action, { desc = "code_action" }) -- definition -- vim.keymap.set("n", "lgd", vim.lsp.buf.definition, { desc = "definition" }) -- declaration -- vim.keymap.set("n", "lgD", vim.lsp.buf.declaration, { desc = "declaration" }) -- implementation -- vim.keymap.set("n", "lgi", vim.lsp.buf.implementation, { desc = "implementation" }) -- references -- vim.keymap.set("n", "lgr", vim.lsp.buf.references, { desc = "references" }) -- type_definition -- vim.keymap.set("n", "lgt", vim.lsp.buf.type_definition, { desc = "type_definition" }) end, }) end, }, }