From b3e20c39c764f52126107a989ff39d7eed2a9b47 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 28 Jun 2024 02:07:15 +0200 Subject: [PATCH] Added option to use system lsp instead of mason --- nvim/dot-config/nvim/lua/plugins/lsp.lua | 24 ++++++++++++++-------- nvim/dot-config/nvim/lua/plugins/mason.lua | 8 +++++++- nvim/dot-config/nvim/lua/tools.lua | 5 ++++- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/nvim/dot-config/nvim/lua/plugins/lsp.lua b/nvim/dot-config/nvim/lua/plugins/lsp.lua index 5487de0..ea8f9e5 100644 --- a/nvim/dot-config/nvim/lua/plugins/lsp.lua +++ b/nvim/dot-config/nvim/lua/plugins/lsp.lua @@ -122,16 +122,22 @@ return { dynamicRegistration = true, } - require("mason-lspconfig").setup({ - handlers = { - function(server_name) - local server = require("tools").servers[server_name] or {} - server.capabilities = vim.tbl_deep_extend("force", capabilities, server.capabilities or {}) - server.handlers = handlers + local handler = function(server_name) + local server = require("tools").servers[server_name] or {} + server.capabilities = vim.tbl_deep_extend("force", capabilities, server.capabilities or {}) + server.handlers = handlers - require("lspconfig")[server_name].setup(server) - end, - }, + require("lspconfig")[server_name].setup(server) + end + + for server, config in pairs(require("tools").servers) do + if config.system then + handler(server) + end + end + + require("mason-lspconfig").setup({ + handlers = { handler }, }) end, } diff --git a/nvim/dot-config/nvim/lua/plugins/mason.lua b/nvim/dot-config/nvim/lua/plugins/mason.lua index c2d59ac..486f70e 100644 --- a/nvim/dot-config/nvim/lua/plugins/mason.lua +++ b/nvim/dot-config/nvim/lua/plugins/mason.lua @@ -15,7 +15,13 @@ return { }, config = function() local tools = require("tools") - local ensure_installed = vim.tbl_keys(tools.servers) + local ensure_installed = vim.tbl_keys(vim.tbl_map(function(server) + if server.system then + return nil + else + return server + end + end, tools.servers)) ensure_installed = vim.list_extend(ensure_installed, require("util.mason").process_formatters(tools.formatters)) ensure_installed = vim.list_extend(ensure_installed, tools.extra) diff --git a/nvim/dot-config/nvim/lua/tools.lua b/nvim/dot-config/nvim/lua/tools.lua index 4d178c3..7726bec 100644 --- a/nvim/dot-config/nvim/lua/tools.lua +++ b/nvim/dot-config/nvim/lua/tools.lua @@ -8,6 +8,7 @@ tools.servers = { gopls = {}, pyright = {}, rust_analyzer = { + system = true, settings = { ["rust-analyzer"] = { check = { @@ -45,7 +46,9 @@ tools.servers = { }, taplo = {}, neocmake = {}, - -- nil_ls = {}, + nil_ls = { + system = true, + }, typos_lsp = { init_options = { diagnosticSeverity = "Hint",