diff --git a/plugins/by-name/blink-cmp-copilot/default.nix b/plugins/by-name/blink-cmp-copilot/default.nix new file mode 100644 index 00000000..5fe0faf6 --- /dev/null +++ b/plugins/by-name/blink-cmp-copilot/default.nix @@ -0,0 +1,67 @@ +{ config, lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "blink-cmp-copilot"; + package = "blink-cmp-copilot"; + + maintainers = [ lib.maintainers.HeitorAugustoLN ]; + + description = '' + This plugin should be configured through blink-cmp's source settings. + + For example: + + ```nix + plugins.blink-cmp = { + enable = true; + settings.sources = { + copilot = { + async = true; + module = "blink-cmp-copilot"; + name = "copilot"; + score_offset = 100; + }; + }; + }; + ``` + + And then you can add it as a source for blink-cmp: + + ```nix + plugins.blink-cmp = { + enable = true; + settings.sources.default = [ + "lsp" + "path" + "luasnip" + "buffer" + "copilot" + ]; + }; + ``` + ''; + + callSetup = false; + hasLuaConfig = false; + hasSettings = false; + + extraConfig = { + warnings = + let + copilot-lua-cfg = config.plugins.copilot-lua; + isEnabled = b: builtins.isBool b && b; + in + lib.optionals (isEnabled copilot-lua-cfg.suggestion.enabled) [ + '' + It is recommended to disable copilot's `suggestion` module, as it can interfere with + completions properly appearing in blink-cmp-copilot. + '' + ] + ++ lib.optionals (isEnabled copilot-lua-cfg.panel.enabled) [ + '' + It is recommended to disable copilot's `panel` module, as it can interfere with completions + properly appearing in blink-cmp-copilot. + '' + ]; + plugins.copilot-lua.enable = lib.mkDefault true; + }; +} diff --git a/tests/test-sources/plugins/by-name/blink-cmp-copilot/default.nix b/tests/test-sources/plugins/by-name/blink-cmp-copilot/default.nix new file mode 100644 index 00000000..35eec8bd --- /dev/null +++ b/tests/test-sources/plugins/by-name/blink-cmp-copilot/default.nix @@ -0,0 +1,11 @@ +{ + empty = { + plugins.blink-cmp-copilot.enable = true; + }; + + defaults = { + plugins.blink-cmp-copilot = { + enable = true; + }; + }; +}