aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/nvim-lsp-installer/installers/init.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua16
1 files changed, 14 insertions, 2 deletions
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
index ab9ad4f9..cfe48faa 100644
--- a/lua/nvim-lsp-installer/installers/init.lua
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -17,9 +17,11 @@ end
---@alias ServerInstallCallback fun(success: boolean)
---@class ServerInstallContext
+---@field receipt InstallReceiptBuilder
---@field requested_server_version string|nil @The version requested by the user.
---@field stdio_sink StdioSink
---@field github_release_file string|nil @Only available if context.use_github_release_file has been called.
+---@field github_repo string|nil @Only available if context.use_github_release_file has been called.
---@field os_distribution table<string, any> @Only available if context.use_os_distribution has been called.
---@field homebrew_prefix string @Only available if context.use_homebrew_prefix has been called.
---@field install_dir string
@@ -165,10 +167,20 @@ 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)
+ return function(server, callback, ctx)
+ local receipt = ctx.receipt
+ -- This temporary nil assignment is done to avoid deepcopy traversing the receipt builder unnecessarily
+ ctx.receipt = nil
+ local new_context = vim.deepcopy(ctx)
+ ctx.receipt = receipt
+ new_context.receipt = receipt
normalize_installer(installer)(server, callback, new_context)
end
end
+---@type ServerInstallerFunction
+function M.noop(_, callback)
+ callback(true)
+end
+
return M