diff --git a/flake.lock b/flake.lock index dc71af0..0a83798 100644 --- a/flake.lock +++ b/flake.lock @@ -1597,6 +1597,22 @@ "type": "github" } }, + "plugin-ts-error-translator": { + "flake": false, + "locked": { + "lastModified": 1712269172, + "narHash": "sha256-NJ0qfKvkwZ/0GolAeATlQLyQ7nGN6Z6q3uRqI+73wPk=", + "owner": "dmmulroy", + "repo": "ts-error-translator.nvim", + "rev": "11ae55b28bde02663b5f983f59b0e3fd9c4e845b", + "type": "github" + }, + "original": { + "owner": "dmmulroy", + "repo": "ts-error-translator.nvim", + "type": "github" + } + }, "plugin-vim-dirtytalk": { "flake": false, "locked": { @@ -1840,6 +1856,7 @@ "plugin-toggleterm-nvim": "plugin-toggleterm-nvim", "plugin-tokyonight": "plugin-tokyonight", "plugin-trouble": "plugin-trouble", + "plugin-ts-error-translator": "plugin-ts-error-translator", "plugin-vim-dirtytalk": "plugin-vim-dirtytalk", "plugin-vim-fugitive": "plugin-vim-fugitive", "plugin-vim-illuminate": "plugin-vim-illuminate", diff --git a/flake.nix b/flake.nix index 9df0448..3a5dfcd 100644 --- a/flake.nix +++ b/flake.nix @@ -183,6 +183,11 @@ flake = false; }; + plugin-ts-error-translator = { + url = "github:dmmulroy/ts-error-translator.nvim"; + flake = false; + }; + # Copying/Registers plugin-registers = { url = "github:tversteeg/registers.nvim"; diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index 139c409..c9942ec 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -9,10 +9,11 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.meta) getExe; - inherit (lib.types) enum either listOf package str; - inherit (lib.nvim.lua) expToLua; - inherit (lib.nvim.types) mkGrammarOption diagnostics; + inherit (lib.types) enum either listOf package str bool; + inherit (lib.nvim.lua) expToLua toLuaObject; + inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption; inherit (lib.nvim.languages) diagnosticsToLua; + inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.languages.ts; @@ -32,6 +33,7 @@ } ''; }; + denols = { package = pkgs.deno; lspConfig = '' @@ -143,6 +145,24 @@ in { inherit defaultDiagnosticsProvider; }; }; + + extensions = { + ts-error-translator = { + enable = mkEnableOption '' + Typescript error translation with + [ts-error-translator.nvim](github.com/dmmulroy/ts-error-translator.nvim) + ''; + + setupOpts = mkPluginSetupOption "ts-error-translator" { + # This is the default configuration behaviour. + auto_override_publish_diagnostics = mkOption { + description = "Automatically override the publish_diagnostics handler"; + type = bool; + default = true; + }; + }; + }; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -169,5 +189,12 @@ in { inherit diagnosticsProviders; }; }) + + (mkIf cfg.extensions."ts-error-translator".enable { + vim.startPlugins = ["ts-error-translator"]; + vim.luaConfigRC.ts-error-translator = entryAnywhere '' + require("ts-error-translator").setup(${toLuaObject cfg.extensions.ts-error-translator.setupOpts}) + ''; + }) ]); }