diff options
-rw-r--r-- | ftplugin/r.lua | 4 | ||||
l--------- | ftplugin/rmd.lua | 1 | ||||
-rw-r--r-- | lua/default-config.lua | 1 | ||||
-rw-r--r-- | lua/lang/r.lua | 56 |
4 files changed, 62 insertions, 0 deletions
diff --git a/ftplugin/r.lua b/ftplugin/r.lua new file mode 100644 index 00000000..6de40bda --- /dev/null +++ b/ftplugin/r.lua @@ -0,0 +1,4 @@ +require("lang.r").format() +require("lang.r").lint() +require("lang.r").lsp() +require("lang.r").dap() diff --git a/ftplugin/rmd.lua b/ftplugin/rmd.lua new file mode 120000 index 00000000..401cef17 --- /dev/null +++ b/ftplugin/rmd.lua @@ -0,0 +1 @@ +r.lua
\ No newline at end of file diff --git a/lua/default-config.lua b/lua/default-config.lua index 3246787a..70c5f070 100644 --- a/lua/default-config.lua +++ b/lua/default-config.lua @@ -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() diff --git a/lua/lang/r.lua b/lua/lang/r.lua new file mode 100644 index 00000000..b05e6ee6 --- /dev/null +++ b/lua/lang/r.lua @@ -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 |