diff --git a/plugins/languages/typst/typst-vim.nix b/plugins/languages/typst/typst-vim.nix index 4d8f1e5b..88650136 100644 --- a/plugins/languages/typst/typst-vim.nix +++ b/plugins/languages/typst/typst-vim.nix @@ -5,91 +5,82 @@ pkgs, ... }: -with lib; let - cfg = config.plugins.typst-vim; -in { - options.plugins.typst-vim = { - enable = mkEnableOption "typst.vim"; - - package = helpers.mkPackageOption "typst-vim" pkgs.vimPlugins.typst-vim; - - cmd = helpers.defaultNullOpts.mkStr "typst" '' - Specifies the location of the Typst executable. - ''; - - pdfViewer = helpers.mkNullOrOption types.str '' - Specifies pdf viewer that `typst watch --open` will use. - ''; - - concealMath = helpers.defaultNullOpts.mkBool false '' - Enable concealment for math symbols in math mode (i.e. replaces symbols with their actual - unicode character). - Warning: this can affect performance - ''; - - autoCloseToc = helpers.defaultNullOpts.mkBool false '' - Specifies whether TOC will be automatically closed after using it. - ''; - - keymaps = { - silent = mkOption { - type = types.bool; - description = "Whether typst-vim keymaps should be silent."; - default = false; - }; - - watch = - helpers.mkNullOrOption types.str - "Keymap to preview the document and recompile on change."; - }; - - extraConfig = mkOption { - type = types.attrs; - default = {}; - description = '' - The configuration options for typst-vim without the 'typst_' prefix. - Example: To set 'typst_foobar' to 1, write - extraConfig = { - foobar = true; - }; - ''; - }; - }; - - config = mkIf cfg.enable { - extraPlugins = [cfg.package]; +with lib; + helpers.vim-plugin.mkVimPlugin config { + name = "typst-vim"; + originalName = "typst.vim"; + defaultPackage = pkgs.vimPlugins.typst-vim; + globalPrefix = "typst_"; # Add the typst compiler to nixvim packages - extraPackages = with pkgs; [typst]; + extraPackages = [pkgs.typst]; - globals = - mapAttrs' - (name: nameValuePair ("typst_" + name)) - ( - with cfg; - { - inherit cmd; - pdf_viewer = pdfViewer; - conceal_math = concealMath; - auto_close_toc = autoCloseToc; - } - // extraConfig - ); + maintainers = [maintainers.GaetanLepage]; - keymaps = with cfg.keymaps; - helpers.keymaps.mkKeymaps - { - mode = "n"; - options.silent = silent; - } - ( - optional - (watch != null) + # TODO introduced 2024-02-20: remove 2024-04-20 + deprecateExtraConfig = true; + optionsRenamedToSettings = [ + "cmd" + "pdfViewer" + "concealMath" + "autoCloseToc" + ]; + + extraOptions = { + keymaps = { + silent = mkOption { + type = types.bool; + description = "Whether typst-vim keymaps should be silent."; + default = false; + }; + + watch = + helpers.mkNullOrOption types.str + "Keymap to preview the document and recompile on change."; + }; + }; + + extraConfig = cfg: { + keymaps = with cfg.keymaps; + helpers.keymaps.mkKeymaps { - # mode = "n"; - key = watch; - action = ":TypstWatch"; + mode = "n"; + options.silent = silent; } - ); - }; -} + ( + optional + (watch != null) + { + # mode = "n"; + key = watch; + action = ":TypstWatch"; + } + ); + }; + + settingsOptions = { + cmd = helpers.defaultNullOpts.mkStr "typst" '' + Specifies the location of the Typst executable. + ''; + + pdf_viewer = helpers.mkNullOrOption types.str '' + Specifies pdf viewer that `typst watch --open` will use. + ''; + + conceal_math = helpers.defaultNullOpts.mkBool false '' + Enable concealment for math symbols in math mode (i.e. replaces symbols with their actual + unicode character). + Warning: this can affect performance + ''; + + auto_close_toc = helpers.defaultNullOpts.mkBool false '' + Specifies whether TOC will be automatically closed after using it. + ''; + }; + + settingsExample = { + cmd = "typst"; + conceal_math = true; + auto_close_toc = true; + }; + } diff --git a/tests/test-sources/plugins/languages/typst/typst-vim.nix b/tests/test-sources/plugins/languages/typst/typst-vim.nix index ebc4661a..b92e9f3a 100644 --- a/tests/test-sources/plugins/languages/typst/typst-vim.nix +++ b/tests/test-sources/plugins/languages/typst/typst-vim.nix @@ -7,10 +7,13 @@ plugins.typst-vim = { enable = true; - cmd = "typst"; - pdfViewer = "zathura"; - concealMath = false; - autoCloseToc = false; + settings = { + cmd = "typst"; + pdf_viewer = "zathura"; + conceal_math = false; + auto_close_toc = false; + }; + keymaps = { silent = true; watch = "w";