nix/home-manager/common/software/cli/nixvim/cmp.nix

61 lines
1.8 KiB
Nix
Raw Normal View History

2024-04-03 13:08:21 +02:00
{ ... }: {
2024-04-03 13:08:51 +02:00
programs.nixvim.plugins = {
2024-04-03 13:08:21 +02:00
# Snippet engine for neovim
luasnip.enable = true;
cmp_luasnip.enable = true;
# CMP Addons
cmp-buffer.enable = true;
cmp-path.enable = true;
2024-07-02 14:07:37 +02:00
cmp-npm.enable = true;
2024-04-03 13:08:21 +02:00
cmp-nvim-lsp.enable = true;
cmp-nvim-lsp-document-symbol.enable = true;
cmp-nvim-lsp-signature-help.enable = true;
2024-07-02 14:07:37 +02:00
typescript-tools.enable = true;
2024-04-03 13:08:21 +02:00
2024-06-12 12:15:32 +02:00
cmp = {
2024-04-03 13:08:21 +02:00
enable = true;
autoEnableSources = true;
2024-06-12 12:15:32 +02:00
settings = {
mapping = {
"<C-Space>" = "cmp.mapping.complete()";
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
"<C-e>" = "cmp.mapping.close()";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<CR>" = "cmp.mapping.confirm({ select = true })";
"<S-Tab>" = "cmp.mapping.select_prev_item()";
"<Tab>" = "cmp.mapping.select_next_item()";
2024-06-08 09:48:59 +02:00
};
window = {
completion.border = "rounded";
documentation.border = "rounded";
};
2024-06-12 12:15:32 +02:00
sources = [
{ name = "nvim_lua"; }
{ name = "nvim_lsp"; }
{ name = "calc"; }
{ name = "path"; }
{ name = "buffer"; }
{ name = "luasnip"; }
];
snippet.expand = "luasnip";
2024-06-08 09:48:59 +02:00
formatting = {
fields = [ "menu" "abbr" "kind" ];
# https://rsdlt.github.io/posts/rust-nvim-ide-guide-walkthrough-development-debug/
format = ''
function(entry, item)
local menu_icon = {
nvim_lsp = 'λ',
luasnip = '',
buffer = 'Ω',
path = '🖫',
}
item.menu = menu_icon[entry.source.name]
return item
end,
2024-06-12 12:15:32 +02:00
'';
};
2024-04-03 13:08:21 +02:00
};
};
};
}