return { { "pojokcodeid/auto-lsp.nvim", event = { "VeryLazy", "BufReadPre", "BufNewFile", "BufRead" }, dependencies = { { "williamboman/mason-lspconfig.nvim" }, { "neovim/nvim-lspconfig", lazy = true, cmd = { "LspInfo", "LspInstall", "LspUninstall", }, config = function() require("lspconfig.ui.windows").default_options.border = "rounded" end, }, { "williamboman/mason.nvim", lazy = true, cmd = { "Mason", "MasonInstall", "MasonUninstall", "MasonUninstallAll", "MasonLog", }, opts = function() local icons = pcode.icons.ui return { ui = { -- border = "none", border = icons.Border, icons = { package_pending = icons.DotCircle, package_installed = icons.CheckCircle, package_uninstalled = icons.BlankCircle, }, keymaps = { -- Keymap to expand a server in the UI toggle_server_expand = "", -- Keymap to install the server under the current cursor position install_server = "i", -- Keymap to reinstall/update the server under the current cursor position update_server = "u", -- Keymap to check for new version for the server under the current cursor position check_server_version = "c", -- Keymap to update all installed servers update_all_servers = "U", -- Keymap to check which installed servers are outdated check_outdated_servers = "C", -- Keymap to uninstall a server uninstall_server = "X", }, }, log_level = vim.log.levels.INFO, max_concurrent_installers = 4, } end, config = function(_, opts) require("mason").setup(opts) end, }, }, opts = function(_, opts) opts.skip_config = opts.skip_config or {} opts.ensure_installed = opts.ensure_installed or {} local servers = { "lua_ls" } local mason_install = pcode.mason_ensure_installed or {} local unregis_lsp = pcode.unregister_lsp or {} vim.list_extend(servers, mason_install) vim.list_extend(opts.ensure_installed, servers) vim.list_extend(opts.skip_config, unregis_lsp) opts.automatic_installation = true opts.format_on_save = pcode.format_on_save or false -- config format on save none-ls opts.virtual_text = pcode.lsp_virtualtext or false opts.timeout_ms = pcode.format_timeout_ms or 5000 return opts end, config = function(_, opts) require("auto-lsp").setup(opts) end, keys = { { "l", "", desc = "  LSP", mode = "n" }, { "la", "lua vim.lsp.buf.code_action()", desc = "Code Action", mode = "n" }, { "ld", "Telescope diagnostics bufnr=0", desc = "Document Diagnostics", mode = "n" }, { "lw", "Telescope diagnostics", desc = "Workspace Diagnostics", mode = "n" }, { "lf", "lua vim.lsp.buf.format{async=true}", desc = "Format", mode = "n" }, { "li", "LspInfo", desc = "Info", mode = "n" }, { "lI", "Mason", desc = "Mason", mode = "n" }, { "lj", "lua vim.lsp.diagnostic.goto_next()", desc = "Next Diagnostic", mode = "n" }, { "lk", "lua vim.lsp.diagnostic.goto_prev()", desc = "Prev Diagnostic", mode = "n" }, { "ll", "lua vim.lsp.codelens.run()", desc = "Code Lens Action", mode = "n" }, { "lq", "lua vim.diagnostic.setloclist()", desc = "Quickfix", mode = "n" }, { "lr", "lua vim.lsp.buf.rename()", desc = "Rename", mode = "n" }, { "ls", "Telescope lsp_document_symbols", desc = "Document Symbols", mode = "n" }, { "lS", "Telescope lsp_dynamic_workspace_symbols", desc = "Workspace Symbols", mode = "n" }, }, }, }