diff options
Diffstat (limited to 'lua/mason-registry/index/r-languageserver/init.lua')
| -rw-r--r-- | lua/mason-registry/index/r-languageserver/init.lua | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/lua/mason-registry/index/r-languageserver/init.lua b/lua/mason-registry/index/r-languageserver/init.lua deleted file mode 100644 index c8b08fb3..00000000 --- a/lua/mason-registry/index/r-languageserver/init.lua +++ /dev/null @@ -1,87 +0,0 @@ -local Pkg = require "mason-core.package" -local a = require "mason-core.async" -local async_uv = require "mason-core.async.uv" -local github = require "mason-core.managers.github" -local path = require "mason-core.path" - ----@param install_dir string ----@param ref string -local function create_install_script(install_dir, ref) - return ([[ -options(langserver_library = %q); -options(langserver_quiet = FALSE); -options(repos = list(CRAN = "http://cran.rstudio.com/")); -rlsLib <- getOption("langserver_library"); -.libPaths(new = rlsLib); - -didInstallRemotes <- FALSE; -tryCatch( - expr = { library("remotes") }, - error = function (e) { - install.packages("remotes", lib = rlsLib); - loadNamespace("remotes", lib.loc = rlsLib); - didInstallRemotes <- TRUE; - } -); - -# We set force = TRUE because this command will error if languageserversetup is already installed (even if it's at a -# different library location). -remotes::install_github("jozefhajnala/languageserversetup", lib = rlsLib, force = TRUE); - -if (didInstallRemotes) { - remove.packages("remotes", lib = rlsLib); -} - -loadNamespace("languageserversetup", lib.loc = rlsLib); -languageserversetup::languageserver_install( - fullReinstall = FALSE, - confirmBeforeInstall = FALSE, - strictLibrary = TRUE, - ref = %q -); -library("languageserver", lib.loc = rlsLib); -]]):format(install_dir, ref) -end - ----@param install_dir string -local function create_server_script(install_dir) - return ([[ -options("langserver_library" = %q); -rlsLib <- getOption("langserver_library"); -.libPaths(new = c(rlsLib, .libPaths())); -loadNamespace("languageserver", lib.loc = rlsLib); -languageserver::run(); - ]]):format(install_dir) -end - -return Pkg.new { - name = "r-languageserver", - desc = [[An implementation of the Language Server Protocol for R]], - homepage = "https://github.com/REditorSupport/languageserver", - languages = { Pkg.Lang.R }, - categories = { Pkg.Cat.LSP }, - ---@async - ---@param ctx InstallContext - install = function(ctx) - local source = github.release_version { repo = "REditorSupport/languageserver" } - source.with_receipt() - ctx.spawn.R { - "--no-save", - on_spawn = a.scope(function(_, stdio) - local stdin = stdio[1] - async_uv.write(stdin, create_install_script(ctx.cwd:get(), source.release)) - async_uv.shutdown(stdin) - async_uv.close(stdin) - end), - } - ctx.fs:write_file("server.R", create_server_script(ctx.package:get_install_path())) - - ctx:link_bin( - "r-languageserver", - ctx:write_shell_exec_wrapper( - "r-languageserver", - ("R --slave -f %q"):format(path.concat { ctx.package:get_install_path(), "server.R" }) - ) - ) - end, -} |
