return { { "williamboman/mason.nvim", config = function() require("mason").setup() end }, { "williamboman/mason-lspconfig.nvim", config = function() require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", "ts_ls" } }) end }, { "neovim/nvim-lspconfig", config = function() local lspconfig = require("lspconfig") lspconfig.lua_ls.setup({}) lspconfig.ts_ls.setup({}) vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "Display symbol info" }) vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { desc = "Go to declaration" }) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "Go to definition" }) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { desc = "Go to implementation" }) vim.keymap.set('n', '', vim.lsp.buf.signature_help, { desc = "Get signature help" }) vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, { desc = "Get code actions" }) end }, }