global/neovim: redo keybindings with leader key

This commit is contained in:
Infinidoge 2024-11-06 10:41:10 -05:00
parent d5da333c2f
commit b1e109a6fe
Signed by: Infinidoge
SSH key fingerprint: SHA256:oAMyvotlNFraMmZmr+p6AxnNfW/GioTs1pOn3V4tQ7A

View file

@ -1,4 +1,20 @@
{ pkgs, ... }: { pkgs, lib, ... }:
let
flattenTree = lib.our.flattenTree' (val: val ? action) "";
mkLeader = { leader, mode }: name: value: {
key = leader + name;
inherit mode;
} // value;
mkLeaderMap = tree:
builtins.concatMap
(leader: lib.mapAttrsToList (mkLeader leader) (flattenTree tree))
[
{ leader = "<leader>"; mode = [ "n" "v" ]; }
{ leader = "<M- >"; mode = [ "n" "v" "i" ]; }
];
in
{ {
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
@ -29,24 +45,51 @@
doom-one-nvim doom-one-nvim
]; ];
globals.mapleader = "<space>"; globals.mapleader = " ";
autoCmd = [ autoCmd = [
{ event = [ "TermOpen" ]; command = "setlocal nonumber norelativenumber"; } { event = [ "TermOpen" ]; command = "setlocal nonumber norelativenumber"; }
]; ];
keymaps = [ keymaps = [
{
key = "<Space>";
action = "<Nop>";
mode = [ "n" "v" ];
options = {
silent = true;
};
}
{ {
key = "<C-w>n"; key = "<C-w>n";
action = "<C-\\><C-n>"; action = "<C-\\><C-n>";
mode = "t"; mode = "t";
} }
{ ] ++ mkLeaderMap {
key = "<M-CR>"; c = {
action.__raw = "vim.lsp.buf.code_action"; a.action.__raw = "vim.lsp.buf.code_action";
mode = [ "n" "i" "v" "s" ]; f.action = ":Format<Enter>";
} t = {
]; f.action = ":FormatToggle<Enter>";
};
};
w = {
q.action = ":close<Enter>";
v.action = ":vsplit<Enter>";
s.action = ":split<Enter>";
V.action = ":vsplit ";
S.action = ":split ";
n.action = ":next<Enter>";
p.action = ":previous<Enter>";
};
f = {
s.action = ":w<enter>";
};
q = {
q.action = ":q<Enter>";
x.action = ":x<Enter>";
};
};
plugins = { plugins = {
autoclose = { autoclose = {