]> code.delx.au - gnu-emacs/commitdiff
(vc-arg-list): Function removed.
authorAndré Spiegel <spiegel@gnu.org>
Sun, 11 Apr 2004 15:03:21 +0000 (15:03 +0000)
committerAndré Spiegel <spiegel@gnu.org>
Sun, 11 Apr 2004 15:03:21 +0000 (15:03 +0000)
(vc-default-workfile-unchanged-p): Use condition-case to check for
backward compatibility.

lisp/vc-hooks.el

index f08c5fc1dfa8533a0d0bada53c16a173200e0c4e..80b9766caa08d803cadf91dae3cc46c8f462ac92 100644 (file)
@@ -6,7 +6,7 @@
 ;; Author:     FSF (see vc.el for full credits)
 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
 
-;; $Id: vc-hooks.el,v 1.164 2004/03/26 06:06:39 spiegel Exp $
+;; $Id: vc-hooks.el,v 1.165 2004/03/28 17:38:03 monnier Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -266,16 +266,6 @@ It is usually called via the `vc-call' macro."
 (defmacro vc-call (fun file &rest args)
   ;; BEWARE!! `file' is evaluated twice!!
   `(vc-call-backend (vc-backend ,file) ',fun ,file ,@args))
-
-(defun vc-arg-list (backend fun)
-  "Return the argument list of BACKEND function FUN."
-  (let ((f (symbol-function (vc-find-backend-function backend fun))))
-    (if (listp f)
-        ;; loaded from .el file
-        (cadr f)
-      ;; loaded from .elc file
-      (aref f 0))))
-
 \f
 (defsubst vc-parse-buffer (pattern i)
   "Find PATTERN in the current buffer and return its Ith submatch."
@@ -472,12 +462,21 @@ and does not employ any heuristic at all."
 (defun vc-default-workfile-unchanged-p (backend file)
   "Check if FILE is unchanged by diffing against the master version.
 Return non-nil if FILE is unchanged."
-  (zerop (if (> (length (vc-arg-list backend 'diff)) 4)
+  (zerop (condition-case err
              ;; If the implementation supports it, let the output
              ;; go to *vc*, not *vc-diff*, since this is an internal call.
              (vc-call diff file nil nil "*vc*")
-           ;; for backward compatibility
-           (vc-call diff file))))
+           (wrong-number-of-arguments
+            ;; If this error came from the above call to vc-BACKEND-diff,
+            ;; try again without the optional buffer argument (for
+            ;; backward compatibility).  Otherwise, resignal.
+            (if (or (not (eq (cadr err)
+                             (indirect-function
+                              (vc-find-backend-function (vc-backend file)
+                                                        'diff))))
+                    (not (eq (caddr err) 5)))
+                (signal wrong-number-of-arguments err)
+              (vc-call diff file))))))
 
 (defun vc-workfile-version (file)
   "Return the version level of the current workfile FILE.