55 lines
1.4 KiB
Nix
55 lines
1.4 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}:
|
|
|
|
lib.mkIf (lib.elem "nvim::cmp" config.machine.pkgs) {
|
|
programs.nvim-lazy.lazyPlugins = [
|
|
# Autocompletion
|
|
{
|
|
dir = vPlug: vPlug.nvim-cmp;
|
|
event = [ "InsertEnter" ];
|
|
dependencies = (
|
|
vPlug: with vPlug; [
|
|
luasnip
|
|
]
|
|
);
|
|
config = # lua
|
|
''
|
|
function()
|
|
${
|
|
lib.optionalString (lib.elem "nvim::lsp" config.machine.pkgs) # lua
|
|
''
|
|
local lsp_zero = require('lsp-zero')
|
|
lsp_zero.extend_cmp()
|
|
''
|
|
}
|
|
|
|
local cmp = require('cmp')
|
|
local cmp_action = lsp_zero.cmp_action()
|
|
|
|
cmp.setup({
|
|
${
|
|
lib.optionalString (lib.elem "nvim::lsp" config.machine.pkgs) # lua
|
|
''formatting = lsp_zero.cmp_format(),''
|
|
}
|
|
mapping = cmp.mapping.preset.insert({
|
|
['<C-Space>'] = cmp.mapping.complete(),
|
|
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
|
['<C-u>'] = cmp.mapping.scroll_docs(-4),
|
|
['<C-d>'] = cmp.mapping.scroll_docs(4),
|
|
['<C-f>'] = cmp_action.luasnip_jump_forward(),
|
|
['<C-b>'] = cmp_action.luasnip_jump_backward(),
|
|
})
|
|
})
|
|
end
|
|
'';
|
|
}
|
|
|
|
{
|
|
dir = vPlug: vPlug.luasnip;
|
|
lazy = true;
|
|
}
|
|
];
|
|
}
|