return { -- lspconfig { "neovim/nvim-lspconfig", ---@class PluginLspOpts -- init = function () local keys = require("lazyvim.plugins.lsp.keymaps").get() -- TODO: setup a new mapping for this -- { "gr", "Telescope lsp_references", desc = "References" }, keys[#keys+1] = { "gr", false } end, opts = { inlay_hints = { enabled = false }, -- Automatically format on save -- autoformat = false, -- LSP Server Settings ---@type lspconfig.options servers = { lua_ls = { settings = { Lua = { diagnostics = { disable = { "missing-fields", }, }, }, }, }, -- Add clangd extensions -- https://github.com/p00f/clangd_extensions.nvim }, -- you can do any additional lsp server setup here -- return true if you don't want this server to be setup with lspconfig ---@type table setup = { -- example to setup with typescript.nvim -- tsserver = function(_, opts) -- require("typescript").setup({ server = opts }) -- return true -- end, -- Specify * to use this function as a fallback for any server -- ["*"] = function(server, opts) end, }, }, }, -- cmdline tools and lsp servers { "williamboman/mason.nvim", cmd = "Mason", keys = { { "cm", "Mason", desc = "Mason" } }, opts = { ensure_installed = { "stylua", "shfmt", -- "flake8", }, }, ---@param opts MasonSettings | {ensure_installed: string[]} config = function(_, opts) require("mason").setup(opts) local mr = require("mason-registry") local function ensure_installed() for _, tool in ipairs(opts.ensure_installed) do local p = mr.get_package(tool) if not p:is_installed() then p:install() end end end if mr.refresh then mr.refresh(ensure_installed) else ensure_installed() end end, }, }