diff --git a/plugins/completion/coq-thirdparty.nix b/plugins/completion/coq-thirdparty.nix new file mode 100644 index 00000000..350a3408 --- /dev/null +++ b/plugins/completion/coq-thirdparty.nix @@ -0,0 +1,65 @@ +{ + pkgs, + config, + lib, + ... +}: +with lib; let + cfg = config.plugins.coq-thirdparty; + helpers = import ../helpers.nix {inherit lib;}; +in { + options.plugins.coq-thirdparty = { + enable = mkEnableOption "coq-thirdparty"; + + package = helpers.mkPackageOption "coq-thirdparty" pkgs.vimPlugins.coq-thirdparty; + + sources = mkOption { + type = types.listOf (types.submodule { + freeformType = types.attrs; + + options = { + src = mkOption { + type = types.str; + description = "The name of the source"; + }; + + short_name = mkOption { + type = types.nullOr types.str; + description = '' + A short name for the source. + If not specified, it is uppercase `src`. + ''; + example = "nLUA"; + default = null; + }; + }; + }); + description = "List of sources"; + default = []; + example = [ + { + src = "nvimlua"; + shortName = "nLUA"; + } + { + src = "vimtex"; + shortName = "vTEX"; + } + { + src = "copilot"; + shortName = "COP"; + acceptKey = ""; + } + {src = "demo";} + ]; + }; + }; + + config = mkIf cfg.enable { + extraPlugins = [cfg.package]; + + extraConfigLua = '' + require('coq_3p')(${helpers.toLuaObject cfg.sources}) + ''; + }; +} diff --git a/plugins/default.nix b/plugins/default.nix index aa475b13..e65aac3b 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -11,6 +11,7 @@ ./colorschemes/tokyonight.nix ./completion/coq.nix + ./completion/coq-thirdparty.nix ./completion/copilot.nix ./completion/nvim-cmp ./completion/nvim-cmp/sources diff --git a/tests/test-sources/plugins/completion/coq-thirdparty.nix b/tests/test-sources/plugins/completion/coq-thirdparty.nix new file mode 100644 index 00000000..2ac42c52 --- /dev/null +++ b/tests/test-sources/plugins/completion/coq-thirdparty.nix @@ -0,0 +1,29 @@ +{ + # Empty configuration + empty = { + plugins.coq-thirdparty.enable = true; + }; + + example = { + plugins.coq-thirdparty = { + enable = true; + + sources = [ + { + src = "nvimlua"; + short_name = "nLUA"; + } + { + src = "vimtex"; + short_name = "vTEX"; + } + { + src = "copilot"; + short_name = "COP"; + accept_key = ""; + } + {src = "demo";} + ]; + }; + }; +}