aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/installers/context.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/context.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/context.lua')
-rw-r--r--lua/nvim-lsp-installer/installers/context.lua27
1 files changed, 26 insertions, 1 deletions
diff --git a/lua/nvim-lsp-installer/installers/context.lua b/lua/nvim-lsp-installer/installers/context.lua
index bdb993a5..e80485a4 100644
--- a/lua/nvim-lsp-installer/installers/context.lua
+++ b/lua/nvim-lsp-installer/installers/context.lua
@@ -3,6 +3,8 @@ local log = require "nvim-lsp-installer.log"
local process = require "nvim-lsp-installer.process"
local installers = require "nvim-lsp-installer.installers"
local platform = require "nvim-lsp-installer.platform"
+local fs = require "nvim-lsp-installer.fs"
+local path = require "nvim-lsp-installer.path"
local M = {}
@@ -96,7 +98,12 @@ function M.use_github_release_file(repo, file)
M.use_github_release(repo),
function(server, callback, context)
local function get_download_url(version)
- local target_file = type(file) == "function" and file(version) or file
+ local target_file
+ if type(file) == "function" then
+ target_file = file(version)
+ else
+ target_file = file
+ end
if not target_file then
log.fmt_error(
"Unable to find which release file to download. server_name=%s, repo=%s",
@@ -160,4 +167,22 @@ function M.set(fn)
end
end
+---@param rel_path string @The relative path from the current installation working directory.
+function M.set_working_dir(rel_path)
+ ---@type ServerInstallerFunction
+ return vim.schedule_wrap(function(server, callback, context)
+ log.fmt_debug("Changing installation working directory for %s", server.name)
+ local new_dir = path.concat { context.install_dir, rel_path }
+ if not fs.dir_exists(new_dir) then
+ local ok = pcall(fs.mkdirp, new_dir)
+ if not ok then
+ context.stdio_sink.stderr(("Failed to create directory %s.\n"):format(new_dir))
+ return callback(false)
+ end
+ end
+ context.install_dir = new_dir
+ callback(true)
+ end)
+end
+
return M