diff --git a/plugins/by-name/quarto/default.nix b/plugins/by-name/quarto/default.nix new file mode 100644 index 00000000..6591f01b --- /dev/null +++ b/plugins/by-name/quarto/default.nix @@ -0,0 +1,101 @@ +{ lib, pkgs, ... }: +let + inherit (lib.nixvim) defaultNullOpts; + inherit (lib) types; +in +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "quarto"; + originalName = "quarto-nvim"; + package = "quarto-nvim"; + + maintainers = [ lib.maintainers.BoneyPatel ]; + + settingsOptions = { + debug = defaultNullOpts.mkBool false '' + Enables or disables debugging. + ''; + + closePreviewOnExit = defaultNullOpts.mkBool true '' + Closes preview on exit. + ''; + + lspFeatures = { + enabled = defaultNullOpts.mkBool true '' + Enables LSP features. + ''; + + chunks = defaultNullOpts.mkStr "curly" '' + Sets chunk delimiter style. + ''; + + languages = + defaultNullOpts.mkListOf types.str + [ + "r" + "python" + "julia" + "bash" + "html" + ] + '' + List of supported languages. + ''; + + diagnostics = { + enabled = defaultNullOpts.mkBool true '' + Enables diagnostics. + ''; + + triggers = defaultNullOpts.mkListOf types.str [ "BufWritePost" ] '' + Sets triggers for diagnostics. + ''; + }; + + completion = { + enabled = defaultNullOpts.mkBool true '' + Enables completion. + ''; + }; + }; + + codeRunner = { + enabled = defaultNullOpts.mkBool false '' + Enables or disables the code runner. + ''; + + default_method = + defaultNullOpts.mkEnum + [ + "molten" + "slime" + ] + null + '' + Sets the default code runner method. Either "molten", "slime", or `null`. + ''; + + ft_runners = defaultNullOpts.mkAttrsOf types.str { } '' + Specifies filetype to runner mappings. + ''; + + never_run = defaultNullOpts.mkListOf types.str [ "yaml" ] '' + List of filetypes that are never sent to a code runner. + ''; + }; + }; + + settingsExample = { + debug = false; + lspFeatures = { + enabled = false; + diagnostics = { + enabled = true; + triggers = [ "BufWritePost" ]; + }; + }; + codeRunner = { + enabled = false; + default_method = "vim-slime"; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/quarto/default.nix b/tests/test-sources/plugins/by-name/quarto/default.nix new file mode 100644 index 00000000..45d036d1 --- /dev/null +++ b/tests/test-sources/plugins/by-name/quarto/default.nix @@ -0,0 +1,75 @@ +{ + empty = { + plugins.quarto.enable = true; + }; + + defaults = { + plugins.quarto = { + enable = true; + + settings = { + debug = false; + closePreviewOnExit = true; + lspFeatures = { + enabled = true; + chunks = "curly"; + languages = [ + "r" + "python" + "julia" + "bash" + "html" + ]; + diagnostics = { + enabled = true; + triggers = [ "BufWritePost" ]; + }; + completion = { + enabled = true; + }; + }; + codeRunner = { + enabled = false; + default_method = null; + ft_runners = { }; + never_run = [ "yaml" ]; + }; + }; + }; + }; + + example = { + plugins.quarto = { + enable = true; + + settings = { + debug = true; + closePreviewOnExit = false; + lspFeatures = { + enabled = true; + chunks = "curly"; + languages = [ + "r" + "python" + "julia" + ]; + diagnostics = { + enabled = true; + triggers = [ "BufWritePost" ]; + }; + completion = { + enabled = true; + }; + }; + codeRunner = { + enabled = true; + default_method = "molten"; + ft_runners = { + python = "molten"; + }; + never_run = [ "yaml" ]; + }; + }; + }; + }; +}