aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/servers/r_language_server/init.lua
diff options
context:
space:
mode:
authormeriops <meriops@users.noreply.github.com>2022-02-12 14:10:02 +0100
committerGitHub <noreply@github.com>2022-02-12 14:10:02 +0100
commit8e03401ad37a6f95e2097ea6139308e24270662d (patch)
treee15bb9af14f83a2efebcf3d9ed7132ce8dfb9550 /lua/nvim-lsp-installer/servers/r_language_server/init.lua
parentadd omnisharp net6.0 support instead of mono (#472) (diff)
downloadmason-8e03401ad37a6f95e2097ea6139308e24270662d.tar
mason-8e03401ad37a6f95e2097ea6139308e24270662d.tar.gz
mason-8e03401ad37a6f95e2097ea6139308e24270662d.tar.bz2
mason-8e03401ad37a6f95e2097ea6139308e24270662d.tar.lz
mason-8e03401ad37a6f95e2097ea6139308e24270662d.tar.xz
mason-8e03401ad37a6f95e2097ea6139308e24270662d.tar.zst
mason-8e03401ad37a6f95e2097ea6139308e24270662d.zip
add r_language_server (#467)
Closes #185. Co-authored-by: Olivier Devineau <olivier.devineau@inn.no> Co-authored-by: William Boman <william@redwill.se>
Diffstat (limited to 'lua/nvim-lsp-installer/servers/r_language_server/init.lua')
-rw-r--r--lua/nvim-lsp-installer/servers/r_language_server/init.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/servers/r_language_server/init.lua b/lua/nvim-lsp-installer/servers/r_language_server/init.lua
new file mode 100644
index 00000000..c85107c1
--- /dev/null
+++ b/lua/nvim-lsp-installer/servers/r_language_server/init.lua
@@ -0,0 +1,51 @@
+local server = require "nvim-lsp-installer.server"
+local process = require "nvim-lsp-installer.process"
+local context = require "nvim-lsp-installer.installers.context"
+
+return function(name, root_dir)
+ local function create_install_script(install_dir)
+ return ([[
+options(langserver_library = %q);
+options(repos = list(CRAN = "http://cran.rstudio.com/"));
+rlsLib <- getOption("langserver_library");
+install.packages("languageserversetup", lib = rlsLib);
+loadNamespace("languageserversetup", lib.loc = rlsLib);
+
+languageserversetup::languageserver_install(
+ fullReinstall = TRUE,
+ confirmBeforeInstall = FALSE,
+ strictLibrary = TRUE
+);
+]]):format(install_dir, install_dir, install_dir)
+ end
+
+ local server_script = ([[
+options("langserver_library" = %q);
+rlsLib <- getOption("langserver_library");
+.libPaths(new = rlsLib);
+loadNamespace("languageserver", lib.loc = rlsLib);
+languageserver::run();
+ ]]):format(root_dir)
+
+ return server.Server:new {
+ name = name,
+ root_dir = root_dir,
+ homepage = "https://github.com/REditorSupport/languageserver",
+ languages = { "R" },
+ installer = {
+ function(_, callback, ctx)
+ process.spawn("R", {
+ cwd = ctx.install_dir,
+ args = { "-e", create_install_script(ctx.install_dir) },
+ stdio_sink = ctx.stdio_sink,
+ }, callback)
+ end,
+ context.receipt(function(receipt)
+ receipt:with_primary_source(receipt.r_package "languageserver")
+ end),
+ },
+ default_options = {
+ cmd = { "R", "--slave", "-e", server_script },
+ },
+ }
+end