local servers = { "sumneko_lua", "cssls", "html", "tsserver", "pyright", "bashls", "jsonls", "yamlls", "rust_analyzer", "gopls", "clangd", } local settings = { ui = { border = "none", icons = { package_installed = "◍", package_pending = "◍", package_uninstalled = "◍", }, }, log_level = vim.log.levels.INFO, max_concurrent_installers = 4, } require("mason").setup(settings) require("mason-lspconfig").setup({ ensure_installed = servers, automatic_installation = false, }) local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") if not lspconfig_status_ok then return end local opts = {} for _, server in pairs(servers) do opts = { on_attach = require("user.lsp.handlers").on_attach, capabilities = require("user.lsp.handlers").capabilities, } server = vim.split(server, "@")[1] local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server) if require_ok then opts = vim.tbl_deep_extend("force", conf_opts, opts) end lspconfig[server].setup(opts) end local mason_nvim_dap_ok, mason_nvim_dap = pcall(require, "mason-nvim-dap") if mason_nvim_dap_ok then local dap = require('dap') mason_nvim_dap.setup({ automatic_setup = true, }) mason_nvim_dap.setup_handlers({ function(source_name) -- all sources with no handler get passed here -- Keep original functionality of `automatic_setup = true` require("mason-nvim-dap.automatic_setup")(source_name) end, python = function(source_name) dap.adapters.python = { type = "executable", command = "/usr/bin/python3", args = { "-m", "debugpy.adapter", }, } dap.configurations.python = { { type = "python", request = "launch", name = "Launch file", program = "${file}", -- This configuration will launch the current file if used. }, } end, }) end