{ config, lib, ... }: # Cmp - Completion plugin (nvim-cmp) for auto-completion { config.programs.nixvim.plugins.cmp = lib.mkIf config.programs.nixvim.enable { enable = true; autoEnableSources = true; settings = { snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; mapping = { "" = "cmp.mapping.complete()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.select_prev_item()"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.select_prev_item()"; "" = "cmp.mapping.scroll_docs(-4)"; # scroll docs up "" = "cmp.mapping.scroll_docs(4)"; # scroll docs down "" = '' cmp.mapping(function(fallback) if cmp.visible() then cmp.abort() else fallback() end end, { "i" }) ''; }; sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ]; }; }; }