dotfiles/modules/programs/nvim/new_plugins/blink-cmp.nix

63 lines
1.8 KiB
Nix

{ lib, pkgs, inputs, ... }:
{
home-manager.users.moritz.programs.nixvim = {
extraPlugins = [
(pkgs.vimUtils.buildVimPlugin {
pname = "blink-compat";
src = inputs.blink-compat;
version = lib.my.mkVersionInput inputs.blink-compat;
})
];
extraConfigLuaPre = ''
require("blink.compat").setup({
impersonate_nvim_cmp = true
})
'';
plugins.blink-cmp = {
enable = true;
package = inputs.blink-cmp.packages.${pkgs.system}.blink-cmp;
settings = {
keymap = {
"<C-e>" = [ "hide" ];
"<C-space>" = [ "show" "show_documentation" "hide_documentation" ];
"<Tab>" = [ "select_next" "fallback" ];
"<S-Tab>" = [ "select_prev" "fallback" ];
"<C-n>" = [ "snippet_forward" "fallback" ];
"<C-p>" = [ "snippet_backward" "fallback" ];
"<CR>" = [ "accept" "fallback" ];
cmdline.preset = "super-tab";
};
appearance.nerd_font_variant = "mono";
sources = {
default = [
"lsp"
"path"
"luasnip"
"buffer"
"vimtex"
];
providers.vimtex = {
name = "vimtex";
module = "blink.compat.source";
};
};
signature.enabled = true;
completion.documentation.auto_show = true;
completion.accept.auto_brackets.enabled = true;
snippets = {
expand.__raw = ''require("luasnip").lsp_expand'';
active.__raw = ''
function(filter)
if filter and filter.direction then
return require('luasnip').jumpable(filter.direction)
end
return require('luasnip').in_snippet()
end
'';
jump.__raw = ''require("luasnip").jump'';
};
};
};
};
}