diff --git a/configuration.nix b/configuration.nix index 2159edc8..15f85480 100644 --- a/configuration.nix +++ b/configuration.nix @@ -80,7 +80,6 @@ isMaximal: { ocaml.enable = false; elixir.enable = false; haskell.enable = false; - ruby.enable = false; tailwind.enable = false; svelte.enable = false; diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index d15c6842..cfa70cd5 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -57,9 +57,3 @@ [kaktu5](https://github.com/kaktu5): - Add WGSL support under `vim.languages.wgsl`. - -[tomasguinzburg](https://github.com/tomasguinzburg): - -[solargraph]: https://github.com/castwide/solargraph - -- Add Ruby support under `vim.languages.ruby` using [solargraph]. diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 219e04fb..bf9194f2 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -39,7 +39,6 @@ in { ./nu.nix ./odin.nix ./wgsl.nix - ./ruby.nix ]; options.vim.languages = { diff --git a/modules/plugins/languages/ruby.nix b/modules/plugins/languages/ruby.nix deleted file mode 100644 index 33f11d5d..00000000 --- a/modules/plugins/languages/ruby.nix +++ /dev/null @@ -1,152 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; - inherit (lib.modules) mkIf mkMerge; - inherit (lib.nvim.types) mkGrammarOption diagnostics; - inherit (lib.types) either listOf package str enum; - inherit (lib.nvim.languages) diagnosticsToLua; - - cfg = config.vim.languages.ruby; - - defaultServer = "rubyserver"; - servers = { - rubyserver = { - package = pkgs.rubyPackages.solargraph; - lspConfig = '' - lspconfig.solargraph.setup { - capabilities = capabilities, - on_attach = attach_keymaps, - flags = { - debounce_text_changes = 150, - }, - cmd = { "${pkgs.solargraph}/bin/solargraph", "stdio" } - } - ''; - }; - }; - - # testing - - defaultFormat = "rubocop"; - formats = { - rubocop = { - package = pkgs.rubyPackages.rubocop; - nullConfig = '' - local conditional = function(fn) - local utils = require("null-ls.utils").make_conditional_utils() - return fn(utils) - end - - table.insert( - ls_sources, - null_ls.builtins.formatting.rubocop.with({ - command="${pkgs.bundler}/bin/bundle", - args = vim.list_extend( - {"exec", "rubocop", "-a" }, - null_ls.builtins.formatting.rubocop._opts.args - ), - }) - ) - ''; - }; - }; - - defaultDiagnosticsProvider = ["rubocop"]; - diagnosticsProviders = { - rubocop = { - package = pkgs.rubyPackages.rubocop; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.rubocop.with({ - command = "${lib.getExe pkg}", - }) - ) - ''; - }; - }; -in { - options.vim.languages.ruby = { - enable = mkEnableOption "Ruby language support"; - - treesitter = { - enable = mkEnableOption "Ruby treesitter" // {default = config.vim.languages.enableTreesitter;}; - package = mkGrammarOption pkgs "ruby"; - }; - - lsp = { - enable = mkEnableOption "Ruby LSP support" // {default = config.vim.languages.enableLSP;}; - - server = mkOption { - type = enum (attrNames servers); - default = defaultServer; - description = "Ruby LSP server to use"; - }; - - package = mkOption { - type = either package (listOf str); - default = servers.${cfg.lsp.server}.package; - description = "Ruby LSP server package, or the command to run as a list of strings"; - }; - }; - - format = { - enable = mkEnableOption "Ruby formatter support" // {default = config.vim.languages.enableFormat;}; - - type = mkOption { - type = enum (attrNames formats); - default = defaultFormat; - description = "Ruby formatter to use"; - }; - - package = mkOption { - type = package; - default = formats.${cfg.format.type}.package; - description = "Ruby formatter package"; - }; - }; - - extraDiagnostics = { - enable = - mkEnableOption "Ruby extra diagnostics support" - // {default = config.vim.languages.enableExtraDiagnostics;}; - - types = diagnostics { - langDesc = "Ruby"; - inherit diagnosticsProviders; - inherit defaultDiagnosticsProvider; - }; - }; - }; - - 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.ruby-lsp = servers.${cfg.lsp.server}.lspConfig; - }) - - (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.ruby-format = formats.${cfg.format.type}.nullConfig; - }) - - (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "ruby"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; - }; - }) - ]); -}