about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--home-manager/config/neomutt/default.nix147
1 files changed, 146 insertions, 1 deletions
diff --git a/home-manager/config/neomutt/default.nix b/home-manager/config/neomutt/default.nix
index 5d1152c1..01833656 100644
--- a/home-manager/config/neomutt/default.nix
+++ b/home-manager/config/neomutt/default.nix
@@ -5,9 +5,154 @@
       systemctl --user start mbsync.service;
       ${pkgs.neomutt}/bin/neomutt;
     '';
-    vimKeys = true;
+    vimKeys = false; # see the modified ones below
     checkStatsInterval = 60;
     binds = [
+      #------------------------------------------------------------
+      # Vi Key Bindings (taken from their configuration, modified for dvorak)
+      #------------------------------------------------------------
+
+      # Moving around
+      {
+        action = "noop";
+        key = "g";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "first-entry";
+        key = "gg";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "last-entry";
+        key = "G";
+        map = ["attach" "browser" "index"];
+      }
+      {
+        action = "noop";
+        key = "g";
+        map = ["pager"];
+      }
+      {
+        action = "top";
+        key = "gg";
+        map = ["pager"];
+      }
+      {
+        action = "bottom";
+        key = "G";
+        map = ["pager"];
+      }
+      {
+        action = "previous-line";
+        key = "n";
+        map = ["pager"];
+      }
+      {
+        action = "next-line";
+        key = "t";
+        map = ["pager"];
+      }
+
+      # Scrolling
+      {
+        action = "next-page";
+        key = "\CF";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "previous-page";
+        key = "\CB";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-up";
+        key = "\Cu";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "half-down";
+        key = "\Cd";
+        map = ["attach" "browser" "pager" "index"];
+      }
+      {
+        action = "next-line";
+        key = "\Ce";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "previous-line";
+        key = "\Cy";
+        map = ["browser" "pager"];
+      }
+      {
+        action = "next-line";
+        key = "\Ce";
+        map = ["index"];
+      }
+      {
+        action = "previous-line";
+        key = "\Cy";
+        map = ["index"];
+      }
+
+      {
+        action = "noop";
+        key = "d";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-message";
+        key = "dd";
+        map = ["pager" "index"];
+      }
+
+      # Mail & Reply
+      {
+        # Doesn't work currently
+        action = "list-reply";
+        key = "\Cm";
+        map = ["index"];
+      }
+
+      # Threads
+      {
+        action = "search-opposite";
+        key = "N";
+        map = ["browser" "pager" "index"];
+      }
+      {
+        action = "delete-thread";
+        key = "dT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "delete-subthread";
+        key = "dt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "next-thread";
+        key = "gt";
+        map = ["pager" "index"];
+      }
+      {
+        action = "previous-thread";
+        key = "gT";
+        map = ["pager" "index"];
+      }
+      {
+        action = "collapse-thread";
+        key = "za";
+        map = ["index"];
+      }
+      {
+        # Missing: folddisable/foldenable
+        action = "collapse-all";
+        key = "zA";
+        map = ["index"];
+      }
+
       {
         action = "imap-fetch-mail";
         key = "g";