{config, ...}: { programs.nixvim.plugins.cmp = let neorg_source = if config.programs.nixvim.plugins.neorg.modules."core.completion".config.engine == "nvim-cmp" then [{name = "neorg";}] else []; in { /* TODO: integrate this: ```lua enabled = { function() -- disable completion in comments local context = require 'cmp.config.context' -- keep command mode completion enabled when cursor is in a comment -- te if vim.api.nvim_get_mode().mode == 'c' then return true else return not context.in_treesitter_capture("comment") and not context.in_syntax_group("Comment") end end }, ``` */ enable = true; autoEnableSources = true; settings = { mapping = { # TODO: add support for desc and which key here "" = "cmp.mapping.scroll_docs(-4)"; # desc = "Scroll up by four lines" "" = "cmp.mapping.scroll_docs(4)"; # desc = "Scroll down by four lines" "HH" = "cmp.mapping.complete()"; # desc = "Confirm snipped" }; snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; sources = [ {name = "nvim_lsp";} {name = "luasnip";} {name = "path";} {name = "git";} # TODO: I might want to add config to allow all issues/prs <2023-10-16> # {name = "convertionalcommits";} # TODO: Useless without commitlint [https://commitlint.js.org/] <2023-10-16> # {name = "rg";} # TODO: This might really RIP-grep my system <2023-10-16> # {name = "buffer";} # {name = "digraphs";} {name = "calc";} ] ++ neorg_source; }; }; }