aboutsummaryrefslogtreecommitdiffstats
path: root/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
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')
-rw-r--r--lua/nvim-lsp-installer/_generated/filetype_map.lua2
-rw-r--r--lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua1
-rw-r--r--lua/nvim-lsp-installer/_generated/metadata.lua3
-rw-r--r--lua/nvim-lsp-installer/_generated/schemas/r_language_server.lua3
-rw-r--r--lua/nvim-lsp-installer/core/receipt.lua2
-rw-r--r--lua/nvim-lsp-installer/jobs/outdated-servers/init.lua2
-rw-r--r--lua/nvim-lsp-installer/servers/init.lua1
-rw-r--r--lua/nvim-lsp-installer/servers/r_language_server/init.lua51
8 files changed, 65 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/_generated/filetype_map.lua b/lua/nvim-lsp-installer/_generated/filetype_map.lua
index 3d98a387..6486ba73 100644
--- a/lua/nvim-lsp-installer/_generated/filetype_map.lua
+++ b/lua/nvim-lsp-installer/_generated/filetype_map.lua
@@ -99,9 +99,11 @@ return {
purescript = { "purescriptls" },
python = { "jedi_language_server", "pylsp", "pyright" },
ql = { "codeqlls" },
+ r = { "r_language_server" },
razor = { "tailwindcss" },
reason = { "ocamlls", "tailwindcss" },
rescript = { "rescriptls", "tailwindcss" },
+ rmd = { "r_language_server" },
rnoweb = { "ltex" },
rst = { "esbonio", "ltex" },
ruby = { "solargraph", "sorbet" },
diff --git a/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua b/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua
index e2810677..e7d2b570 100644
--- a/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua
+++ b/lua/nvim-lsp-installer/_generated/language_autocomplete_map.lua
@@ -2,6 +2,7 @@
-- stylua: ignore start
return {
OpenFOAM = { "foam_ls" },
+ R = { "r_language_server" },
["assembly-gas"] = { "asm_lsp" },
["assembly-go"] = { "asm_lsp" },
["assembly-nasm"] = { "asm_lsp" },
diff --git a/lua/nvim-lsp-installer/_generated/metadata.lua b/lua/nvim-lsp-installer/_generated/metadata.lua
index dbb4c6b7..348db23a 100644
--- a/lua/nvim-lsp-installer/_generated/metadata.lua
+++ b/lua/nvim-lsp-installer/_generated/metadata.lua
@@ -205,6 +205,9 @@ return {
quick_lint_js = {
filetypes = { "javascript" }
},
+ r_language_server = {
+ filetypes = { "r", "rmd" }
+ },
remark_ls = {
filetypes = { "markdown" }
},
diff --git a/lua/nvim-lsp-installer/_generated/schemas/r_language_server.lua b/lua/nvim-lsp-installer/_generated/schemas/r_language_server.lua
new file mode 100644
index 00000000..27e1bbd4
--- /dev/null
+++ b/lua/nvim-lsp-installer/_generated/schemas/r_language_server.lua
@@ -0,0 +1,3 @@
+-- THIS FILE IS GENERATED. DO NOT EDIT MANUALLY.
+-- stylua: ignore start
+return {properties = {["r.lsp.args"] = {default = {},description = "The command line arguments to use when launching R Language Server",type = "array"},["r.lsp.debug"] = {default = false,description = "Debug R Language Server",type = "boolean"},["r.lsp.diagnostics"] = {default = true,description = "Enable Diagnostics",type = "boolean"},["r.lsp.lang"] = {default = "",description = "Override default LANG environment variable",type = "string"},["r.lsp.path"] = {default = "",deprecationMessage = "Will be deprecated. Use r.rpath.windows, r.rpath.mac, or r.rpath.linux instead.",description = "Path to R binary for launching Language Server",markdownDeprecationMessage = "Will be deprecated. Use `#r.rpath.windows#`, `#r.rpath.mac#`, or `#r.rpath.linux#` instead.",type = "string"},["r.lsp.use_stdio"] = {default = false,description = "Use STDIO connection instead of TCP. (Unix/macOS users only)",type = "boolean"},["r.rpath.linux"] = {default = "",description = 'Path to an R executable for Linux. Must be "vanilla" R, not radian etc.!',type = "string"},["r.rpath.mac"] = {default = "",description = 'Path to an R executable for macOS. Must be "vanilla" R, not radian etc.!',type = "string"},["r.rpath.windows"] = {default = "",description = 'Path to an R executable for Windows. Must be "vanilla" R, not radian etc.!',type = "string"}},title = "R LSP Client",type = "object"} \ No newline at end of file
diff --git a/lua/nvim-lsp-installer/core/receipt.lua b/lua/nvim-lsp-installer/core/receipt.lua
index d430d9dc..0c631c27 100644
--- a/lua/nvim-lsp-installer/core/receipt.lua
+++ b/lua/nvim-lsp-installer/core/receipt.lua
@@ -11,6 +11,7 @@ local M = {}
---| '"go"'
---| '"cargo"'
---| '"dotnet"'
+---| '"r_package"'
---| '"unmanaged"'
---| '"system"'
---| '"jdtls"'
@@ -118,6 +119,7 @@ InstallReceiptBuilder.go = package_source "go"
InstallReceiptBuilder.dotnet = package_source "dotnet"
InstallReceiptBuilder.cargo = package_source "cargo"
InstallReceiptBuilder.composer = package_source "composer"
+InstallReceiptBuilder.r_package = package_source "r_package"
InstallReceiptBuilder.unmanaged = { type = "unmanaged" }
diff --git a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
index 8e4548f7..e51fd44a 100644
--- a/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
+++ b/lua/nvim-lsp-installer/jobs/outdated-servers/init.lua
@@ -22,6 +22,7 @@ local function noop(server, _, on_result)
on_result(VersionCheckResult.empty(server))
end
+---@type Record<InstallReceiptSourceType, function>
local checkers = {
["npm"] = npm_check,
["pip3"] = pip3_check,
@@ -30,6 +31,7 @@ local checkers = {
["composer"] = composer_check,
["go"] = noop, -- TODO
["dotnet"] = noop, -- TODO
+ ["r_package"] = noop, -- TODO
["unmanaged"] = noop,
["system"] = noop,
["jdtls"] = jdtls,
diff --git a/lua/nvim-lsp-installer/servers/init.lua b/lua/nvim-lsp-installer/servers/init.lua
index 29017de7..eabf3e46 100644
--- a/lua/nvim-lsp-installer/servers/init.lua
+++ b/lua/nvim-lsp-installer/servers/init.lua
@@ -99,6 +99,7 @@ local CORE_SERVERS = Data.set_of {
"pylsp",
"pyright",
"quick_lint_js",
+ "r_language_server",
"remark_ls",
"rescriptls",
"rnix",
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