{lib, ...}: with lib; with builtins; { options.vim = { autocomplete = { enable = mkOption { type = types.bool; default = false; description = "enable autocomplete"; }; mappings = { complete = mkMappingOption "Complete [nvim-cmp]" ""; confirm = mkMappingOption "Confirm [nvim-cmp]" ""; next = mkMappingOption "Next item [nvim-cmp]" ""; previous = mkMappingOption "Previous item [nvim-cmp]" ""; close = mkMappingOption "Close [nvim-cmp]" ""; scrollDocsUp = mkMappingOption "Scroll docs up [nvim-cmp]" ""; scrollDocsDown = mkMappingOption "Scroll docs down [nvim-cmp]" ""; }; 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 --- ''; }; }; }; }; }