From 77b495801c2c6c33e126ef1d7e84e684fd020ecd Mon Sep 17 00:00:00 2001 From: Balssh Date: Mon, 4 Nov 2024 22:40:54 +0200 Subject: [PATCH] plugins/blink-cmp: update configuration --- plugins/by-name/blink-cmp/default.nix | 122 +++++++++++------- .../plugins/by-name/blink-cmp/default.nix | 98 +++++++++++--- 2 files changed, 160 insertions(+), 60 deletions(-) diff --git a/plugins/by-name/blink-cmp/default.nix b/plugins/by-name/blink-cmp/default.nix index fae11560..5ebf0ea9 100644 --- a/plugins/by-name/blink-cmp/default.nix +++ b/plugins/by-name/blink-cmp/default.nix @@ -18,30 +18,64 @@ lib.nixvim.neovim-plugin.mkNeovimPlugin { ''; 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. - ''; + keymap = defaultNullOpts.mkNullableWithRaw' { + type = with types; either (attrsOf anything) (enum [ false ]); + pluginDefault = { + preset = "default"; + }; + example = { + "" = [ + "show" + "show_documentation" + "hide_documentation" + ]; + "" = [ "hide" ]; + "" = [ "select_and_accept" ]; + + "" = [ + "select_prev" + "fallback" + ]; + "" = [ + "select_next" + "fallback" + ]; + "" = [ + "select_prev" + "fallback" + ]; + "" = [ + "select_next" + "fallback" + ]; + + "" = [ + "scroll_documentation_up" + "fallback" + ]; + "" = [ + "scroll_documentation_down" + "fallback" + ]; + + "" = [ + "snippet_forward" + "fallback" + ]; + "" = [ + "snippet_backward" + "fallback" + ]; + + }; + description = '' + The keymap can be: + - A preset (`'default'` | `'super-tab'` | `'enter'`) + - A table of `keys => command[]` (optionally with a "preset" key to merge with a preset) + When specifying 'preset' in the keymap table, the custom key mappings are merged with the preset, + and any conflicting keys will overwrite the preset mappings. + ''; + }; highlight = { use_nvim_cmp_as_default = defaultNullOpts.mkBool false '' @@ -61,16 +95,18 @@ lib.nixvim.neovim-plugin.mkNeovimPlugin { ''; }; - 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. - ''; + windows = { + 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 = @@ -102,17 +138,7 @@ lib.nixvim.neovim-plugin.mkNeovimPlugin { settingsExample = { keymap = { - show = ""; - hide = ""; - accept = ""; - select_prev = ""; - select_next = ""; - show_documentation = ""; - hide_documentation = ""; - scroll_documentation_up = ""; - scroll_documentation_down = ""; - snippet_forward = ""; - snippet_backward = ""; + preset = "default"; }; highlight = { use_nvim_cmp_as_default = true; @@ -131,4 +157,10 @@ lib.nixvim.neovim-plugin.mkNeovimPlugin { }; }; }; + + extraConfig = cfg: { + warnings = lib.optional (cfg.settings ? documentation) '' + Nixvim(plugins.blink): `settings.documentation` does not correspond to a known setting, use `settings.windows.documentation` instead. + ''; + }; } diff --git a/tests/test-sources/plugins/by-name/blink-cmp/default.nix b/tests/test-sources/plugins/by-name/blink-cmp/default.nix index fd37c334..cf34db71 100644 --- a/tests/test-sources/plugins/by-name/blink-cmp/default.nix +++ b/tests/test-sources/plugins/by-name/blink-cmp/default.nix @@ -10,26 +10,18 @@ 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 = ""; + preset = "default"; }; highlight = { use_nvim_cmp_as_default = false; }; nerd_font_variant = "normal"; - documentation = { - auto_show = false; - auto_show_delay_ms = 500; - update_delay_ms = 50; + windows = { + documentation = { + auto_show = false; + auto_show_delay_ms = 500; + update_delay_ms = 50; + }; }; accept = { auto_brackets = { @@ -63,4 +55,80 @@ }; }; }; + + example = { + plugins.blink-cmp = { + enable = true; + settings = { + fuzzy = { + prebuilt_binaries = { + download = false; + }; + }; + keymap = { + "" = [ + "show" + "show_documentation" + "hide_documentation" + ]; + "" = [ "hide" ]; + "" = [ "select_and_accept" ]; + + "" = [ + "select_prev" + "fallback" + ]; + "" = [ + "select_next" + "fallback" + ]; + "" = [ + "select_prev" + "fallback" + ]; + "" = [ + "select_next" + "fallback" + ]; + + "" = [ + "scroll_documentation_up" + "fallback" + ]; + "" = [ + "scroll_documentation_down" + "fallback" + ]; + + "" = [ + "snippet_forward" + "fallback" + ]; + "" = [ + "snippet_backward" + "fallback" + ]; + }; + highlight = { + use_nvim_cmp_as_default = true; + }; + windows = { + documentation = { + auto_show = true; + }; + }; + accept = { + auto_brackets = { + enabled = true; + }; + }; + trigger = { + signature_help = { + enabled = true; + }; + }; + }; + + }; + }; }