       (message "No patch"))))
 
 ;;;###autoload
-(defun el-patch-ediff-conflict (patch-definition)
+(defun el-patch-ediff-conflict (name type)
   "Show a patch conflict in Ediff.
 This is a diff between the expected and actual values of a
-patch's original definition. PATCH-DEFINITION is as returned by
-`el-patch--select-patch'."
-  (interactive (list (el-patch--select-patch)))
-  (let* ((expected-definition (el-patch--resolve-definition
+patch's original definition. NAME and TYPE are as returned by
+`el-patch-get'."
+  (interactive (el-patch--select-patch))
+  (let* ((patch-definition (el-patch-get name type))
+         (expected-definition (el-patch--resolve-definition
                                patch-definition nil))
          (name (cadr expected-definition))
          (actual-definition (el-patch--find-function name)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Viewing patches

(defun el-patch--select-patch ()
  "Use `completing-read' to select a patched function.
Return the patch definition, a list beginning with `defun',
`defmacro', etc."
  (let ((options (mapcar #'symbol-name (hash-table-keys el-patch--patches))))
    (unless options
      (user-error "No patches defined"))
    (let* ((patch-hash (gethash (intern (completing-read
                                         "Which patch? "
                                         options
                                         (lambda (elt) t)
                                         'require-match))
                                el-patch--patches))
           (options (mapcar #'symbol-name
                            (hash-table-keys el-patch--patches))))
      (gethash (intern (pcase (length options)
                         (0 (error "Internal `el-patch' error"))
                         (1 (car options))
                         (_ (completing-read
                             "Which version? "
                             options
                             (lambda (elt) t)
                             'require-match))))
               patch-hash))))

(defun el-patch--ediff-forms (name1 form1 name2 form2)
  "Ediff two forms.

;;;; Removing patches

;;;###autoload
(defun el-patch-unpatch (name type)
  "Remove the patch given by the PATCH-DEFINITION.
This restores the original functionality of the object being
patched. NAME and TYPE are as returned by `el-patch-get'."
  (interactive (el-patch--select-patch))
  (eval (el-patch--resolve-definition
         (el-patch-get name type) nil)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Closing remarks
