aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/init.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-12-05 18:57:02 +0100
committerGitHub <noreply@github.com>2021-12-05 18:57:02 +0100
commitc82abb3117d83a36b58f07d341fd56a00bdfd360 (patch)
treec6efa60621a8ab8eb9d128e4a6c75f89aea82a62 /lua/nvim-lsp-installer/installers/init.lua
parentsumneko_lua: don't provide -E argument as it's not needed (#309) (diff)
downloadmason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar.gz
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar.bz2
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar.lz
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar.xz
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.tar.zst
mason-c82abb3117d83a36b58f07d341fd56a00bdfd360.zip
add ccls (#299)
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua33
1 files changed, 23 insertions, 10 deletions
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
index fdf3b0f4..a04eeafb 100644
--- a/lua/nvim-lsp-installer/installers/init.lua
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -1,9 +1,21 @@
local platform = require "nvim-lsp-installer.platform"
local log = require "nvim-lsp-installer.log"
local Data = require "nvim-lsp-installer.data"
+local fs = require "nvim-lsp-installer.fs"
+local path = require "nvim-lsp-installer.path"
local M = {}
+---@param installer ServerInstallerFunction[]|ServerInstallerFunction
+---@return ServerInstallerFunction
+local function normalize_installer(installer)
+ if type(installer) == "table" then
+ return M.pipe(installer)
+ else
+ return installer
+ end
+end
+
---@alias ServerInstallCallback fun(success: boolean)
---@class ServerInstallContext
@@ -120,11 +132,7 @@ function M.on(platform_table)
return function(server, callback, context)
local installer = get_by_platform(platform_table)
if installer then
- if type(installer) == "function" then
- installer(server, callback, context)
- else
- M.pipe(installer)(server, callback, context)
- end
+ normalize_installer(installer)(server, callback, context)
else
callback(true)
end
@@ -139,11 +147,7 @@ function M.when(platform_table)
return function(server, callback, context)
local installer = get_by_platform(platform_table)
if installer then
- if type(installer) == "function" then
- installer(server, callback, context)
- else
- M.pipe(installer)(server, callback, context)
- end
+ normalize_installer(installer)(server, callback, context)
else
context.stdio_sink.stderr(
("Current operating system is not yet supported for server %q.\n"):format(server.name)
@@ -153,4 +157,13 @@ function M.when(platform_table)
end
end
+---@param installer ServerInstallerFunction|ServerInstallerFunction[] @The installer to execute in a new installer context.
+function M.branch_context(installer)
+ ---@type ServerInstallerFunction
+ return function(server, callback, context)
+ local new_context = vim.deepcopy(context)
+ normalize_installer(installer)(server, callback, new_context)
+ end
+end
+
return M