From a4aab077ba3959873cd645eea9ff3f8a6b23c28f Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Sun, 21 May 2023 17:01:24 -0500 Subject: feat(nvim): enable auto-setup in mason configs --- nvim/.config/nvim/lua/plugins/mason-lspconfig.lua | 51 ++++++++++++++++++++++ nvim/.config/nvim/lua/plugins/mason-null-ls.lua | 15 +++++++ nvim/.config/nvim/lua/plugins/mason-nvim-dap.lua | 15 +++++++ nvim/.config/nvim/lua/plugins/mason-update-all.lua | 11 +++++ nvim/.config/nvim/lua/plugins/mason.lua | 42 +++++++++--------- 5 files changed, 112 insertions(+), 22 deletions(-) create mode 100644 nvim/.config/nvim/lua/plugins/mason-lspconfig.lua create mode 100644 nvim/.config/nvim/lua/plugins/mason-null-ls.lua create mode 100644 nvim/.config/nvim/lua/plugins/mason-nvim-dap.lua create mode 100644 nvim/.config/nvim/lua/plugins/mason-update-all.lua diff --git a/nvim/.config/nvim/lua/plugins/mason-lspconfig.lua b/nvim/.config/nvim/lua/plugins/mason-lspconfig.lua new file mode 100644 index 0000000..0620763 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/mason-lspconfig.lua @@ -0,0 +1,51 @@ +---@type LazySpec +local M = { + "williamboman/mason-lspconfig.nvim", + version = "*", + event = "BufReadPre", + cmd = { + "LspInstall", + "LspUninstall", + }, + dependencies = { "williamboman/mason.nvim", "neovim/nvim-lspconfig" }, + opts = { + handlers = { + function(name) + local config = require("tobyvin.lsp.configs")[name] or {} + local available = require("lspconfig").util.available_servers() + + if not vim.tbl_contains(available, name) then + require("lspconfig")[name].setup(config) + end + end, + }, + }, +} + +function M:init() + vim.api.nvim_create_autocmd("FileType", { + group = vim.api.nvim_create_augroup("mason-lspconfig", { clear = true }), + callback = function(args) + if vim.bo[args.buf].buftype ~= "" then + return + end + + local available = require("mason-lspconfig").get_available_servers({ filetype = args.match }) + if #available == 0 then + return + end + + local installed = require("mason-lspconfig").get_installed_servers() + for _, server in ipairs(available) do + if vim.tbl_contains(installed, server) then + return + end + end + + vim.schedule(vim.cmd.LspInstall) + end, + desc = "prompt to install missing lspconfig servers", + }) +end + +return M diff --git a/nvim/.config/nvim/lua/plugins/mason-null-ls.lua b/nvim/.config/nvim/lua/plugins/mason-null-ls.lua new file mode 100644 index 0000000..17e3544 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/mason-null-ls.lua @@ -0,0 +1,15 @@ +---@type LazySpec +local M = { + "jayp0521/mason-null-ls.nvim", + version = "*", + cmd = { + "NullLsInstall", + "NullLsUninstall", + }, + dependencies = { "williamboman/mason.nvim", "jose-elias-alvarez/null-ls.nvim" }, + opts = { + handlers = {}, + }, +} + +return M diff --git a/nvim/.config/nvim/lua/plugins/mason-nvim-dap.lua b/nvim/.config/nvim/lua/plugins/mason-nvim-dap.lua new file mode 100644 index 0000000..97d6d3f --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/mason-nvim-dap.lua @@ -0,0 +1,15 @@ +---@type LazySpec +local M = { + "jayp0521/mason-nvim-dap.nvim", + version = "*", + cmd = { + "DapInstall", + "DapUninstall", + }, + dependencies = { "williamboman/mason.nvim", "mfussenegger/nvim-dap" }, + opts = { + handlers = {}, + }, +} + +return M diff --git a/nvim/.config/nvim/lua/plugins/mason-update-all.lua b/nvim/.config/nvim/lua/plugins/mason-update-all.lua new file mode 100644 index 0000000..fa1f17c --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/mason-update-all.lua @@ -0,0 +1,11 @@ +---@type LazySpec +local M = { + "RubixDev/mason-update-all", + cmd = { + "MasonUpdateAll", + }, + dependencies = { "williamboman/mason.nvim" }, + config = true, +} + +return M diff --git a/nvim/.config/nvim/lua/plugins/mason.lua b/nvim/.config/nvim/lua/plugins/mason.lua index a5b0971..eba1cfe 100644 --- a/nvim/.config/nvim/lua/plugins/mason.lua +++ b/nvim/.config/nvim/lua/plugins/mason.lua @@ -1,26 +1,24 @@ +---@type LazySpec local M = { - "williamboman/mason.nvim", - build = ":MasonUpdate", - cmd = { - "Mason", - "MasonInstall", - "MasonUninstall", - "MasonUninstall", - "MasonLog", - }, - dependencies = { - { "RubixDev/mason-update-all", config = true }, - { "williamboman/mason-lspconfig.nvim", config = true }, - { "jayp0521/mason-null-ls.nvim", version = "*", config = true }, - { "jayp0521/mason-nvim-dap.nvim", version = "*", config = true }, - }, - opts = { - ui = { - border = "single", - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗", + { + "williamboman/mason.nvim", + version = "*", + build = ":MasonUpdate", + cmd = { + "Mason", + "MasonLog", + "MasonInstall", + "MasonUninstall", + }, + dependencies = {}, + opts = { + ui = { + border = "single", + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, }, }, }, -- cgit v1.2.3-70-g09d2