              (read defun-buffer))))))
 
 ;;;###autoload
-(defun el-patch-validate-patches ()
+(defun el-patch-validate (name)
+  "Validate the patch for the function NAME.
+This means el-patch will attempt to find the original definition
+for the function, and verify that it is the same as the original
+function assumed by the patch. A warning will be signaled if the
+original definition for a patched function cannot be found, or if
+there is a difference between the actual and expected original
+definitions.
+
+Returns nil if the patch is not valid, and otherwise returns t.
+
+See also `el-patch-validate-all'."
+  (interactive (list (cadr (el-patch--select-patch))))
+  (let* ((patch-definition (gethash name el-patch--patches))
+         (old-definition (el-patch--resolve-definition
+                          patch-definition nil))
+         (actual-definition (el-patch--find-function name)))
+    (cond
+     ((not actual-definition)
+      (display-warning
+       'el-patch
+       (format "Could not find definition of `%S'" name))
+      nil)
+     ((not (equal old-definition actual-definition))
+
+      (display-warning
+       'el-patch
+       (format (concat "Definition of `%S' differs from what "
+                       "is assumed by its patch")
+               name)
+       nil)))))
+
+;;;###autoload
+(defun el-patch-validate-all ()
   "Validate all currently defined patches.
-This means el-patch will attempt to find the original definition
-for each patched function, and verify that it is the same as the
-original function assumed by the patch. A warning will be
-signaled if the original definition for a patched function cannot
-be found, or if there is a different between the actual and
-expected original definitions."
+See `el-patch-validate'."
   (interactive)
   (let ((patch-count 0)
         (warning-count 0))
     (maphash (lambda (name patch-definition)
                (setq patch-count (1+ patch-count))
-               (let ((old-definition (el-patch--resolve-definition
-                                      patch-definition nil))
-                     (actual-definition (el-patch--find-function name)))
-                 (cond
-                  ((not actual-definition)
-                   (setq warning-count (1+ warning-count))
-                   (display-warning
-                    'el-patch
-                    (format "Could not find definition of `%S'" name)))
-                  ((not (equal old-definition actual-definition))
-                   (setq warning-count (1+ warning-count))
-                   (display-warning
-                    'el-patch
-                    (format (concat "Definition of `%S' differs from what "
-                                    "is assumed by its patch")
-                            name))))))
+               (unless (el-patch-validate name)
+                 (setq warning-count (1+ warning-count))))
              el-patch--patches)
     (cond
      ((zerop patch-count)

     (t
      (message "%d patches are valid, %d patches are invalid"
               (- patch-count warning-count) warning-count)))))

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

             patch-definition))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Validating patches

(defun el-patch--find-function (name)
