69 lines
1.9 KiB
Nix
69 lines
1.9 KiB
Nix
{ ... }: {
|
|
programs.nixvim.plugins = {
|
|
# Snippet engine for neovim
|
|
luasnip.enable = true;
|
|
cmp_luasnip.enable = true;
|
|
# CMP Addons
|
|
cmp-buffer.enable = true;
|
|
cmp-path.enable = true;
|
|
cmp-nvim-lsp.enable = true;
|
|
cmp-nvim-lsp-document-symbol.enable = true;
|
|
cmp-nvim-lsp-signature-help.enable = true;
|
|
|
|
nvim-cmp = {
|
|
enable = true;
|
|
autoEnableSources = true;
|
|
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>" = {
|
|
action = "cmp.mapping.select_prev_item()";
|
|
modes = [
|
|
"i"
|
|
"s"
|
|
];
|
|
};
|
|
"<Tab>" = {
|
|
action = "cmp.mapping.select_next_item()";
|
|
modes = [
|
|
"i"
|
|
"s"
|
|
];
|
|
};
|
|
};
|
|
sources = [
|
|
{ name = "nvim_lua"; }
|
|
{ name = "nvim_lsp"; }
|
|
# { name = "nvim_lsp_signature_help"; }
|
|
{ name = "calc"; }
|
|
{ name = "path"; }
|
|
{ name = "buffer"; }
|
|
{ name = "luasnip"; }
|
|
];
|
|
snippet.expand = "luasnip";
|
|
window = {
|
|
completion.border = "rounded";
|
|
documentation.border = "rounded";
|
|
};
|
|
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,
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
}
|