return { init = function() local loader = nil packer_plugins = packer_plugins or nil -- suppress warnings local log = require('navigator.util').log -- packer only if packer_plugins ~= nil then -- packer install local lazy_plugins = { ['nvim-lspconfig'] = 'neovim/nvim-lspconfig', ['guihua.lua'] = 'ray-x/guihua.lua', } if _NgConfigValues.lsp_installer == true then lazy_plugins['nvim-lsp-installer'] = 'williamboman/nvim-lsp-installer' end -- packer installed loader = require('packer').loader for plugin, url in pairs(lazy_plugins) do if not packer_plugins[url] or not packer_plugins[url].loaded then -- log("loading ", plugin) loader(plugin) end end else loader = function(plugin) local cmd = 'packadd ' .. plugin vim.cmd(cmd) end end if _NgConfigValues.lsp_installer == true then vim.cmd('packadd nvim-lsp-installer') local has_lspinst, lspinst = pcall(require, 'nvim-lsp-installer') log('lsp_installer installed', has_lspinst) if has_lspinst then lspinst.setup() local configs = require('lspconfig/configs') local servers = require('nvim-lsp-installer').get_installed_servers() for _, server in pairs(servers) do local cfg = require('navigator.lspclient.clients').get_cfg(server) local lsp_inst_cfg = configs[server] if lsp_inst_cfg and lsp_inst_cfg.document_config.default_config then lsp_inst_cfg = lsp_inst_cfg.document_config.default_config lsp_inst_cfg = vim.tbl_deep_extend('keep', lsp_inst_cfg, cfg) require('lspconfig')[server].setup(lsp_inst_cfg) end end end end end, load = function(plugin_name, path) local loader = nil packer_plugins = packer_plugins or nil -- suppress warnings -- packer only if packer_plugins ~= nil then -- packer install local lazy_plugins = {} lazy_plugins[plugin_name] = path loader = require('packer').loader for plugin, _ in pairs(lazy_plugins) do if packer_plugins[plugin] and packer_plugins[plugin].loaded == false then -- log("loading ", plugin) pcall(loader, plugin) end end end end, }