From a4c3ad01cd0755dd1e93473d74efdd89a1cf5999 Mon Sep 17 00:00:00 2001 From: Balssh Date: Thu, 10 Oct 2024 23:39:56 +0300 Subject: [PATCH] feat: add blink.nvim --- plugins/by-name/blink-cmp/default.nix | 134 ++++++++++++++++++ .../plugins/by-name/blink-cmp/default.nix | 66 +++++++++ 2 files changed, 200 insertions(+) create mode 100644 plugins/by-name/blink-cmp/default.nix create mode 100644 tests/test-sources/plugins/by-name/blink-cmp/default.nix diff --git a/plugins/by-name/blink-cmp/default.nix b/plugins/by-name/blink-cmp/default.nix new file mode 100644 index 00000000..fae11560 --- /dev/null +++ b/plugins/by-name/blink-cmp/default.nix @@ -0,0 +1,134 @@ +{ + lib, + ... +}: +let + inherit (lib) types; + inherit (lib.nixvim) defaultNullOpts; +in +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "blink-cmp"; + originalName = "blink.cmp"; + package = "blink-cmp"; + + maintainers = [ lib.maintainers.balssh ]; + + description = '' + Performant, batteries-included completion plugin for Neovim. + ''; + + settingsOptions = { + keymap = + defaultNullOpts.mkNullableWithRaw (with types; either (attrsOf anything) (enum [ false ])) + { + show = ""; + hide = ""; + accept = ""; + select_prev = [ + "" + "" + ]; + select_next = [ + "" + "" + ]; + show_documentation = ""; + hide_documentation = ""; + scroll_documentation_up = ""; + scroll_documentation_down = ""; + snippet_forward = ""; + snippet_backward = ""; + } + '' + Customize the keymaps for blink. + ''; + + highlight = { + use_nvim_cmp_as_default = defaultNullOpts.mkBool false '' + Sets the fallback highlight groups to nvim-cmp's highlight groups. + ''; + }; + + fuzzy = { + use_frecency = defaultNullOpts.mkBool true '' + Enable the `Frecency` integration to boost the score of the most recently/frequently used items. + ''; + use_proximity = defaultNullOpts.mkBool true '' + Enables the `Proximity` integration that boosts the score of items with a value in the buffer. + ''; + max_items = defaultNullOpts.mkUnsignedInt 200 '' + Maximum number of items shown. + ''; + }; + + documentation = { + auto_show = defaultNullOpts.mkBool false '' + Enables automatically showing documentation when typing. + ''; + auto_show_delay_ms = defaultNullOpts.mkUnsignedInt 500 '' + Delay, in milliseconds, after which documentation is shown. + ''; + update_delay_ms = defaultNullOpts.mkUnsignedInt 50 '' + Delay, in milliseconds, after which documentation is updated. + ''; + }; + + nerd_font_variant = + defaultNullOpts.mkEnumFirstDefault + [ + "normal" + "mono" + ] + '' + Set to `mono` for `Nerd Font Mono` or `normal` for `Nerd Font`. + Adjusts spacing to ensure icons are aligned. + ''; + + accept = { + auto_brackets = { + enabled = defaultNullOpts.mkBool false '' + Enable experimental auto-brackets support. + ''; + }; + }; + trigger = { + signature_help = { + enabled = defaultNullOpts.mkBool false '' + Enable experimental signature help support. + ''; + }; + }; + }; + + settingsExample = { + keymap = { + show = ""; + hide = ""; + accept = ""; + select_prev = ""; + select_next = ""; + show_documentation = ""; + hide_documentation = ""; + scroll_documentation_up = ""; + scroll_documentation_down = ""; + snippet_forward = ""; + snippet_backward = ""; + }; + highlight = { + use_nvim_cmp_as_default = true; + }; + documentation = { + auto_show = false; + }; + accept = { + auto_brackets = { + enabled = false; + }; + }; + trigger = { + signature_help = { + enabled = true; + }; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/blink-cmp/default.nix b/tests/test-sources/plugins/by-name/blink-cmp/default.nix new file mode 100644 index 00000000..fd37c334 --- /dev/null +++ b/tests/test-sources/plugins/by-name/blink-cmp/default.nix @@ -0,0 +1,66 @@ +{ + empty = { + test.runNvim = false; + plugins.blink-cmp.enable = true; + }; + + default = { + test.runNvim = false; + plugins.blink-cmp = { + enable = true; + settings = { + keymap = { + show = ""; + hide = ""; + accept = ""; + select_prev = ""; + select_next = ""; + show_documentation = ""; + hide_documentation = ""; + scroll_documentation_up = ""; + scroll_documentation_down = ""; + snippet_forward = ""; + snippet_backward = ""; + }; + highlight = { + use_nvim_cmp_as_default = false; + }; + nerd_font_variant = "normal"; + documentation = { + auto_show = false; + auto_show_delay_ms = 500; + update_delay_ms = 50; + }; + accept = { + auto_brackets = { + enabled = false; + }; + }; + trigger = { + signature_help = { + enabled = false; + show_on_insert_on_trigger_character = false; + }; + }; + fuzzy = { + use_frecency = true; + use_proximity = true; + max_items = 200; + prebuiltBinaries = { + download = false; + }; + }; + sources = { + completion = { + enabled_providers = [ + "lsp" + "path" + "snippets" + "buffer" + ]; + }; + }; + }; + }; + }; +}