            (error "Autoload of `%S' failed to define `%S'"
                   feature function-name)
          (require ',feature)
-         (apply ',function-name args)))))
+         (apply ,(if (equal defun 'defmacro)
+                     ;; Sneaky way to call a macro as a function.
+                     `(cdr (symbol-function ',function-name))
+                   ;; Alternatively: (list 'quote function-name)
+                   `',function-name)
+                args)))))
 
 (defun el-patch--definition (patch-definition)
   "Activate a PATCH-DEFINITION.

        (error "You must specify an `el-patch-feature' directive for `%S'"
               function-name))
      (eval
       (el-patch--autoload-function function-name el-patch--feature)))
    (advice-add function-name :override advice-name)))

;;;###autoload

  "Patch an inline function. The ARGS are the same as for `defsubst'."
  (declare (indent defun))
  `(el-patch--definition ',(cons 'defsubst args)))

;;;###autoload
(defmacro el-patch-define-minor-mode (&rest args)
  "Patch a minor mode. The ARGS are the same as for `define-minor-mode'."
  (declare (doc-string 2)
           (indent defun))
  `(el-patch--definition ',(cons 'define-minor-mode args)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Patch directives
