feat: add nvim-cmp keybindings

This commit is contained in:
n3oney 2023-04-22 17:43:58 +02:00
commit 49d0fe596a
No known key found for this signature in database
GPG key ID: C786693DE727850E
2 changed files with 145 additions and 72 deletions

View file

@ -1,34 +1,6 @@
{
pkgs,
lib,
config,
...
}:
{lib, ...}:
with lib;
with builtins; let
cfg = config.vim.autocomplete;
lspkindEnabled = config.vim.lsp.enable && config.vim.lsp.lspkind.enable;
builtSources =
concatMapStringsSep
"\n"
(n: "{ name = '${n}'},")
(attrNames cfg.sources);
builtMaps =
concatStringsSep
"\n"
(mapAttrsToList
(n: v:
if v == null
then ""
else "${n} = '${v}',")
cfg.sources);
dagPlacement =
if lspkindEnabled
then nvim.dag.entryAfter ["lspkind"]
else nvim.dag.entryAnywhere;
in {
with builtins; {
options.vim = {
autocomplete = {
enable = mkOption {
@ -37,6 +9,16 @@ in {
description = "enable autocomplete";
};
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 = types.enum ["nvim-cmp"];
default = "nvim-cmp";