From 6915c3f7644da6cd233df90700f6e49620eb910a Mon Sep 17 00:00:00 2001 From: Soliprem Date: Fri, 20 Sep 2024 14:29:07 +0200 Subject: [PATCH 1/5] r: implementing lsp --- configuration.nix | 1 + modules/plugins/languages/default.nix | 1 + modules/plugins/languages/r.nix | 82 +++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 modules/plugins/languages/r.nix diff --git a/configuration.nix b/configuration.nix index b0c613b2..954e811c 100644 --- a/configuration.nix +++ b/configuration.nix @@ -60,6 +60,7 @@ isMaximal: { python.enable = isMaximal; dart.enable = isMaximal; bash.enable = isMaximal; + r.enable = isMaximal; tailwind.enable = isMaximal; typst.enable = isMaximal; clang = { diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index e86a521b..28c1fd8f 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -17,6 +17,7 @@ in { ./ocaml.nix ./php.nix ./python.nix + ./r.nix ./rust.nix ./sql.nix ./svelte.nix diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix new file mode 100644 index 00000000..6b9be04c --- /dev/null +++ b/modules/plugins/languages/r.nix @@ -0,0 +1,82 @@ +{ + config, + pkgs, + lib, + ... +}: let + inherit (builtins) attrNames; + inherit (lib.options) mkEnableOption mkOption literalExpression; + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.lists) isList; + inherit (lib.types) enum either listOf package str bool; + inherit (lib.nvim.lua) expToLua; + + cfg = config.vim.languages.r; + + r-with-languageserver = pkgs.rWrapper.override { + packages = with pkgs.rPackages; [languageserver]; + }; + + defaultServer = "r_language_server"; + servers = { + r_language_server = { + package = pkgs.writeShellScriptBin "r_lsp" '' + ${r-with-languageserver}/bin/R --slave -e "languageserver::run()" + ''; + lspConfig = '' + lspconfig.r_language_server.setup{ + capabilities = capabilities; + on_attach = default_on_attach; + cmd = ${ + if isList cfg.lsp.package + then expToLua cfg.lsp.package + else ''{"${lib.getExe cfg.lsp.package}"}'' + } + } + ''; + }; + }; +in { + options.vim.languages.r = { + enable = mkEnableOption "R language support"; + + treesitter = { + enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;}; + package = mkOption { + description = "R treesitter grammar to use"; + type = package; + default = pkgs.vimPlugins.nvim-treesitter.builtGrammars.r; + }; + }; + + lsp = { + enable = mkEnableOption "R LSP support" // {default = config.vim.languages.enableLSP;}; + + server = mkOption { + description = "R LSP server to use"; + type = enum (attrNames servers); + default = defaultServer; + }; + + package = mkOption { + description = "R LSP server package, or the command to run as a list of strings"; + example = literalExpression "[ (lib.getExe pkgs.jdt-language-server) \"-data\" \"~/.cache/jdtls/workspace\" ]"; + type = either package (listOf str); + default = servers.${cfg.lsp.server}.package; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf cfg.treesitter.enable { + vim.treesitter.enable = true; + vim.treesitter.grammars = [cfg.treesitter.package]; + }) + + (mkIf cfg.lsp.enable { + vim.lsp.lspconfig.enable = true; + vim.lsp.lspconfig.sources.r-lsp = servers.${cfg.lsp.server}.lspConfig; + }) + ]); +} From 43a0770dc3e4e4695440a63acd3745abf2d82443 Mon Sep 17 00:00:00 2001 From: Soliprem Date: Sun, 22 Sep 2024 12:47:56 +0200 Subject: [PATCH 2/5] r: temporarily removed treesitter --- alskdj.r | 1 + modules/plugins/languages/r.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 alskdj.r diff --git a/alskdj.r b/alskdj.r new file mode 100644 index 00000000..11b15b1a --- /dev/null +++ b/alskdj.r @@ -0,0 +1 @@ +print("hello") diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 6b9be04c..988aa017 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -71,7 +71,7 @@ in { config = mkIf cfg.enable (mkMerge [ (mkIf cfg.treesitter.enable { vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.package]; + # vim.treesitter.grammars = [cfg.treesitter.package]; }) (mkIf cfg.lsp.enable { From da0016551a90279d81c737119b797e1c320b8c2a Mon Sep 17 00:00:00 2001 From: Soliprem Date: Sun, 22 Sep 2024 13:01:57 +0200 Subject: [PATCH 3/5] removing random file --- alskdj.r | 1 - 1 file changed, 1 deletion(-) delete mode 100644 alskdj.r diff --git a/alskdj.r b/alskdj.r deleted file mode 100644 index 11b15b1a..00000000 --- a/alskdj.r +++ /dev/null @@ -1 +0,0 @@ -print("hello") From a314c38289f7574615bea5b275cd6f1ccd56836a Mon Sep 17 00:00:00 2001 From: Soliprem Date: Sun, 22 Sep 2024 20:10:11 +0200 Subject: [PATCH 4/5] removing treesitter entirely --- modules/plugins/languages/r.nix | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 988aa017..1b0301dd 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -7,6 +7,7 @@ inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.meta) getExe; + inherit (lib.nvim.types) mkGrammarOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str bool; @@ -41,15 +42,6 @@ in { options.vim.languages.r = { enable = mkEnableOption "R language support"; - treesitter = { - enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;}; - package = mkOption { - description = "R treesitter grammar to use"; - type = package; - default = pkgs.vimPlugins.nvim-treesitter.builtGrammars.r; - }; - }; - lsp = { enable = mkEnableOption "R LSP support" // {default = config.vim.languages.enableLSP;}; @@ -69,11 +61,6 @@ in { }; config = mkIf cfg.enable (mkMerge [ - (mkIf cfg.treesitter.enable { - vim.treesitter.enable = true; - # vim.treesitter.grammars = [cfg.treesitter.package]; - }) - (mkIf cfg.lsp.enable { vim.lsp.lspconfig.enable = true; vim.lsp.lspconfig.sources.r-lsp = servers.${cfg.lsp.server}.lspConfig; From e896d28dde02a07feda93e29c2157e2a8c4de4c8 Mon Sep 17 00:00:00 2001 From: Soliprem Date: Sun, 22 Sep 2024 20:10:59 +0200 Subject: [PATCH 5/5] removed unnecessary imports --- modules/plugins/languages/r.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 1b0301dd..4dfe4e3d 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -6,11 +6,9 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption literalExpression; - inherit (lib.meta) getExe; - inherit (lib.nvim.types) mkGrammarOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; - inherit (lib.types) enum either listOf package str bool; + inherit (lib.types) enum either listOf package str; inherit (lib.nvim.lua) expToLua; cfg = config.vim.languages.r;