neovim-flake/modules/completion/nvim-cmp/nvim-cmp.nix

67 lines
2.1 KiB
Nix
Raw Normal View History

{lib, ...}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.nvim.binds) mkMappingOption;
inherit (lib.types) enum attrsOf nullOr str;
in {
options.vim = {
autocomplete = {
enable = mkEnableOption "enable autocomplete" // {default = false;};
2023-04-22 17:43:58 +02:00
mappings = {
complete = mkMappingOption "Complete [nvim-cmp]" "<C-Space>";
confirm = mkMappingOption "Confirm [nvim-cmp]" "<CR>";
next = mkMappingOption "Next item [nvim-cmp]" "<Tab>";
previous = mkMappingOption "Previous item [nvim-cmp]" "<S-Tab>";
close = mkMappingOption "Close [nvim-cmp]" "<C-e>";
scrollDocsUp = mkMappingOption "Scroll docs up [nvim-cmp]" "<C-d>";
scrollDocsDown = mkMappingOption "Scroll docs down [nvim-cmp]" "<C-f>";
};
type = mkOption {
type = enum ["nvim-cmp"];
default = "nvim-cmp";
description = "Set the autocomplete plugin. Options: [nvim-cmp]";
};
sources = mkOption {
description = ''
2023-04-18 00:48:44 +02:00
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 = attrsOf (nullOr str);
2023-04-18 00:48:44 +02:00
default = {};
example = ''
{nvim-cmp = null; buffer = "[Buffer]";}
'';
};
formatting = {
format = mkOption {
description = ''
2023-04-18 00:48:44 +02:00
The function used to customize the appearance of the completion menu.
If [](#opt-vim.lsp.lspkind.enable) is true, then the function
2023-04-18 00:48:44 +02:00
will be called before modifications from lspkind.
Default is to call the menu mapping function.
'';
type = str;
2023-04-18 00:48:44 +02:00
default = "nvim_cmp_menu_map";
example = lib.literalMD ''
```lua
2023-04-18 00:48:44 +02:00
function(entry, vim_item)
return vim_item
end
```
2023-04-18 00:48:44 +02:00
'';
};
};
};
};
}