plugins/nvim-lsp: let keymaps actions be attrs

This commit is contained in:
Gaetan Lepage 2023-07-17 15:37:00 +02:00 committed by Gaétan Lepage
parent 54ebe3b0ee
commit 71c0b4cb59
2 changed files with 29 additions and 22 deletions

View file

@ -24,7 +24,7 @@ in {
}; };
diagnostic = mkOption { diagnostic = mkOption {
type = types.attrsOf types.str; type = with types; attrsOf (either str attrs);
description = "Mappings for `vim.diagnostic.<action>` functions."; description = "Mappings for `vim.diagnostic.<action>` functions.";
example = { example = {
"<leader>k" = "goto_prev"; "<leader>k" = "goto_prev";
@ -34,7 +34,7 @@ in {
}; };
lspBuf = mkOption { lspBuf = mkOption {
type = types.attrsOf types.str; type = with types; attrsOf (either str attrs);
description = "Mappings for `vim.lsp.buf.<action>` functions."; description = "Mappings for `vim.lsp.buf.<action>` functions.";
example = { example = {
"gd" = "definition"; "gd" = "definition";
@ -111,27 +111,28 @@ in {
extraPlugins = [pkgs.vimPlugins.nvim-lspconfig]; extraPlugins = [pkgs.vimPlugins.nvim-lspconfig];
maps.normal = let maps.normal = let
diagnosticMaps = mkMaps = prefix:
mapAttrs mapAttrs
(key: action: { (key: action: let
inherit (cfg.keymaps) silent; actionStr =
action = "vim.diagnostic.${action}"; if isString action
lua = true; then action
}) else action.action;
cfg.keymaps.diagnostic; actionProps =
if isString action
lspBuf = then {}
mapAttrs else filterAttrs (n: v: n != "action") action;
(key: action: { in
inherit (cfg.keymaps) silent; {
action = "vim.lsp.buf.${action}"; inherit (cfg.keymaps) silent;
lua = true; action = prefix + actionStr;
}) lua = true;
cfg.keymaps.lspBuf; }
// actionProps);
in in
mkMerge [ mkMerge [
diagnosticMaps (mkMaps "vim.diagnostic." cfg.keymaps.diagnostic)
lspBuf (mkMaps "vim.lsp.buf." cfg.keymaps.lspBuf)
]; ];
# Enable all LSP servers # Enable all LSP servers

View file

@ -11,7 +11,10 @@
silent = true; silent = true;
diagnostic = { diagnostic = {
"<leader>k" = "goto_prev"; "<leader>k" = "goto_prev";
"<leader>j" = "goto_next"; "<leader>j" = {
action = "goto_next";
desc = "Go to next diagnostic";
};
}; };
lspBuf = { lspBuf = {
@ -19,7 +22,10 @@
"gD" = "references"; "gD" = "references";
"gt" = "type_definition"; "gt" = "type_definition";
"gi" = "implementation"; "gi" = "implementation";
"K" = "hover"; "K" = {
action = "hover";
desc = "Hover";
};
}; };
}; };