{ pkgs, lib, config, ... }: with lib; with builtins; { options.vim = { autocomplete = { enable = mkOption { type = types.bool; default = false; description = "enable autocomplete"; }; type = mkOption { type = types.enum ["nvim-cmp"]; default = "nvim-cmp"; description = "Set the autocomplete plugin. Options: [nvim-cmp]"; }; sources = mkOption { description = nvim.nmd.asciiDoc '' Attribute set of source names for nvim-cmp. If an attribute set is provided, then the menu value of `vim_item` in the format will be set to the value (if utilizing the `nvim_cmp_menu_map` function). Note: only use a single attribute name per attribute set ''; type = with types; attrsOf (nullOr str); default = {}; example = '' {nvim-cmp = null; buffer = "[Buffer]";} ''; }; formatting = { format = mkOption { description = nvim.nmd.asciiDoc '' The function used to customize the appearance of the completion menu. If <> is true, then the function will be called before modifications from lspkind. Default is to call the menu mapping function. ''; type = types.str; default = "nvim_cmp_menu_map"; example = nvim.nmd.literalAsciiDoc '' [source,lua] --- function(entry, vim_item) return vim_item end --- ''; }; }; }; }; }