               (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

    This can be customized with `doom-evil-state-alist'.

    :L cannot be in a :map.

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)
(put ':textobj      'lisp-indent-function 'defun)

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