[Feature] Add R support (#965)

This commit is contained in:
Abouzar Parvan 2021-07-18 22:26:51 +04:30 committed by GitHub
parent 0e8f69f339
commit 113f69c447
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 62 additions and 0 deletions

4
ftplugin/r.lua Normal file
View file

@ -0,0 +1,4 @@
require("lang.r").format()
require("lang.r").lint()
require("lang.r").lsp()
require("lang.r").dap()

1
ftplugin/rmd.lua Symbolic link
View file

@ -0,0 +1 @@
r.lua

View file

@ -179,6 +179,7 @@ require("lang.kotlin").config()
require("lang.lua").config()
require("lang.php").config()
require("lang.python").config()
require("lang.r").config()
require("lang.ruby").config()
require("lang.rust").config()
require("lang.sh").config()

56
lua/lang/r.lua Normal file
View file

@ -0,0 +1,56 @@
local M = {}
M.config = function()
-- R -e 'install.packages("formatR",repos = "http://cran.us.r-project.org")'
-- R -e 'install.packages("readr",repos = "http://cran.us.r-project.org")'
O.lang.r = {
formatter = {
exe = "R",
args = {
"--slave",
"--no-restore",
"--no-save",
'-e "formatR::tidy_source(text=readr::read_file(file(\\"stdin\\")), arrow=FALSE)"',
},
stdin = true,
},
}
end
M.format = function()
O.formatters.filetype["r"] = {
function()
return {
exe = O.lang.r.formatter.exe,
args = O.lang.r.formatter.args,
stdin = O.lang.r.formatter.stdin,
}
end,
}
O.formatters.filetype["rmd"] = O.formatters.filetype["r"]
require("formatter.config").set_defaults {
logging = false,
filetype = O.formatters.filetype,
}
end
M.lint = function()
-- TODO: implement linters (if applicable)
return "No linters configured!"
end
M.lsp = function()
if require("lv-utils").check_lsp_client_active "r_language_server" then
return
end
-- R -e 'install.packages("languageserver",repos = "http://cran.us.r-project.org")'
require("lspconfig").r_language_server.setup {}
end
M.dap = function()
-- TODO: implement dap
return "No DAP configured!"
end
return M