     This can be customized with `doom-evil-state-alist'.
 
     :L cannot be in a :map.
+
+    :textobj is a special state that takes a key and two commands, one for the
+    inner binding, another for the outer.
 
 Flags
     (:mode [MODE(s)] [...])    ; inner keybinds are applied to major MODE(s)

(put ':desc         'lisp-indent-function 'defun)
(put ':leader       'lisp-indent-function 'defun)
(put ':localleader  'lisp-indent-function 'defun)

(defmacro map! (&rest rest)
  "A nightmare of a key-binding macro that will use `evil-define-key*',

              (setq keymaps
                    (mapcar (lambda (m) (intern (format "%s-map" (symbol-name m))))
                            modes))))
          (:textobj
            (let* ((key (pop rest))
                   (inner (pop rest))
                   (outer (pop rest)))
              (push (macroexpand `(map! (:map evil-outer-text-objects-map ,key ,inner)
                                        (:map evil-inner-text-objects-map ,key ,outer)))
                    forms)))
          (:prefix
            (let ((def (pop rest)))
              (setq prefix
