 (defvar doom-localleader-key "\\"
   "The leader prefix key, for global commands.")
 
-(defvar doom--which-key-defs '(nil))
-
 
 (def-package! which-key
-  :defer 1
+  :demand t
   :config
   (setq which-key-sort-order #'which-key-key-order-alpha
         which-key-sort-uppercase-first nil
         which-key-add-column-padding 1
         which-key-max-display-columns nil
-        which-key-min-display-lines 10
+        which-key-min-display-lines 5
         ;; only pop-up for leader/localleader keys
-        which-key-allow-regexps (list (format "^%s" (regexp-quote doom-leader-key))
+        which-key-allow-regexps (list "^C-c"
+                                      "^C-x"
+                                      (format "^%s" (regexp-quote doom-leader-key))
                                       (format "^%s" (regexp-quote doom-localleader-key))))
   ;; embolden local bindings
   (set-face-attribute 'which-key-local-map-description-face nil :weight 'bold)
   (which-key-setup-side-window-bottom)
-  (which-key-mode +1)
-  (when (cdr doom--which-key-defs)
-    (apply #'which-key-add-key-based-replacements (cdr doom--which-key-defs))))
+  (which-key-mode +1))
+
+
+(defun doom-keybind-register (key desc &optional modes)
+  "TODO"
+  (if modes
+      (dolist (mode modes)
+        (which-key-add-major-mode-key-based-replacements mode key desc))
+    (which-key-add-key-based-replacements key desc)))
 
 
 (defun doom-keyword-to-states (keyword &optional ignore)
+  "TODO"
   (let ((states '(("n" . normal)
                   ("v" . visual)
                   ("i" . insert)

(put ':prefix       'lisp-indent-function 'defun)
(put ':map          'lisp-indent-function 'defun)
(put ':map*         'lisp-indent-function 'defun)
(put ':after        'lisp-indent-function 'defun)
(put ':when         'lisp-indent-function 'defun)
(put ':unless       'lisp-indent-function 'defun)

  (let ((keymaps (if (boundp 'keymaps) keymaps))
        (prefix  (if (boundp 'prefix) prefix))
        (defer   (if (boundp 'defer) defer))
        local key def states forms desc modes)
    (while rest
      (setq key (pop rest))
      (cond
