Fix up comment convention on the arch-tag lines.
[bpt/emacs.git] / lisp / ediff-vers.el
index 9bbcf99..28f7e12 100644 (file)
@@ -1,7 +1,7 @@
 ;;; ediff-vers.el --- version control interface to Ediff
 
 ;; Copyright (C) 1995, 1996, 1997, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 
@@ -9,7 +9,7 @@
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 
 (and noninteractive
      (eval-when-compile
-       (let ((load-path (cons (expand-file-name ".") load-path)))
-        (load "pcl-cvs" 'noerror)
-        (load "rcs" 'noerror)
-        ;; On 8+3 MS-DOS filesystems, generic-x.el is loaded
-        ;; instead of (the missing) generic-sc.el.  Since the
-        ;; version of Emacs which supports MS-DOS doesn't have
-        ;; generic-sc, we simply avoid loading it.
-        (or (and (fboundp 'msdos-long-file-names)
-                 (not (msdos-long-file-names)))
-            (load "generic-sc" 'noerror))
-        ;; (load "vc" 'noerror) ; this sometimes causes compiler error
-        (or (featurep 'ediff-init)
-            (load "ediff-init.el" nil nil 'nosuffix))
-        )))
+       (condition-case nil
+          ;; for compatibility with current stable version of xemacs
+          (progn
+            ;;(require 'pcvs nil 'noerror)
+            ;;(require 'rcs nil 'noerror)
+            (require 'pcvs)
+            (require 'rcs))
+        (error nil))
+       (require 'vc)
+       (require 'ediff-init)
+       ))
 ;; end pacifier
 
 (defcustom ediff-keep-tmp-versions nil
@@ -59,8 +56,22 @@ comparison or merge operations are being performed."
   :group 'ediff-vers
   )
 
+(defalias 'ediff-vc-revision-other-window
+      (if (fboundp 'vc-revision-other-window)
+         'vc-revision-other-window
+       'vc-version-other-window))
+
+(defalias 'ediff-vc-working-revision
+  (if (fboundp 'vc-working-revision)
+      'vc-working-revision
+    'vc-workfile-version))
+
 ;; VC.el support
 
+(eval-when-compile
+  (require 'vc-hooks)) ;; for vc-call macro
+
+
 (defun ediff-vc-latest-version (file)
   "Return the version level of the latest version of FILE in repository."
   (if (fboundp 'vc-latest-version)
@@ -84,12 +95,12 @@ comparison or merge operations are being performed."
        (setq rev1 (ediff-vc-latest-version (buffer-file-name))))
     (save-window-excursion
       (save-excursion
-       (vc-version-other-window rev1)
+       (ediff-vc-revision-other-window rev1)
        (setq rev1buf (current-buffer)
              file1 (buffer-file-name)))
       (save-excursion
        (or (string= rev2 "")           ; use current buffer
-           (vc-version-other-window rev2))
+           (ediff-vc-revision-other-window rev2))
        (setq rev2buf (current-buffer)
              file2 (buffer-file-name)))
       (setq startup-hooks
@@ -157,32 +168,6 @@ comparison or merge operations are being performed."
     (ediff-buffers rev1buf rev2buf startup-hooks 'ediff-revision)
     ))
 
-
-;; GENERIC-SC.el support
-
-(defun generic-sc-get-latest-rev ()
-  (cond ((eq sc-mode 'CCASE)
-        (eval "main/LATEST"))
-       (t (eval ""))))
-
-(defun ediff-generic-sc-internal (rev1 rev2 &optional startup-hooks)
-;; Run Ediff on versions of the current buffer.
-;; If REV2 is "" then compare current buffer with REV1.
-;; If the current buffer is named `F', the version is named `F.~REV~'.
-;; If `F.~REV~' already exists, it is used instead of being re-created.
-  (let (rev1buf rev2buf)
-    (save-excursion
-      (if (or (not rev1) (string= rev1 ""))
-         (setq rev1 (generic-sc-get-latest-rev)))
-      (sc-visit-previous-revision rev1)
-      (setq rev1buf (current-buffer)))
-    (save-excursion
-      (or (string= rev2 "")            ; use current buffer
-         (sc-visit-previous-revision rev2))
-      (setq rev2buf (current-buffer)))
-    (ediff-buffers rev1buf rev2buf startup-hooks 'ediff-revision)))
-
-
 ;;; Merge with Version Control
 
 (defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev
@@ -191,17 +176,17 @@ comparison or merge operations are being performed."
   (let (buf1 buf2 ancestor-buf)
     (save-window-excursion
       (save-excursion
-       (vc-version-other-window rev1)
+       (ediff-vc-revision-other-window rev1)
        (setq buf1 (current-buffer)))
       (save-excursion
        (or (string= rev2 "")
-           (vc-version-other-window rev2))
+           (ediff-vc-revision-other-window rev2))
        (setq buf2 (current-buffer)))
       (if ancestor-rev
          (save-excursion
            (if (string= ancestor-rev "")
-               (setq ancestor-rev (vc-workfile-version buffer-file-name)))
-           (vc-version-other-window ancestor-rev)
+               (setq ancestor-rev (ediff-vc-working-revision buffer-file-name)))
+           (ediff-vc-revision-other-window ancestor-rev)
            (setq ancestor-buf (current-buffer))))
       (setq startup-hooks
            (cons
@@ -245,76 +230,6 @@ comparison or merge operations are being performed."
       (ediff-merge-buffers
        buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))))
 
-(defun ediff-generic-sc-merge-internal (rev1 rev2 ancestor-rev
-                                            &optional
-                                            startup-hooks merge-buffer-file)
-  ;; If ANCESTOR-REV non-nil, merge with ancestor
-  (let (buf1 buf2 ancestor-buf)
-    (save-excursion
-      (if (string= rev1 "")
-         (setq rev1 (generic-sc-get-latest-rev)))
-      (sc-visit-previous-revision rev1)
-      (setq buf1 (current-buffer)))
-    (save-excursion
-      (or (string= rev2 "")
-         (sc-visit-previous-revision rev2))
-      (setq buf2 (current-buffer)))
-    (if ancestor-rev
-       (save-excursion
-         (or (string= ancestor-rev "")
-             (sc-visit-previous-revision ancestor-rev))
-         (setq ancestor-buf (current-buffer))))
-    (if ancestor-rev
-       (ediff-merge-buffers-with-ancestor
-        buf1 buf2 ancestor-buf
-        startup-hooks 'ediff-merge-revisions-with-ancestor merge-buffer-file)
-      (ediff-merge-buffers
-       buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))))
-
-
-;; PCL-CVS.el support
-
-;; MK: Check. This function doesn't seem to be used any more by pcvs or pcl-cvs
-(defun cvs-run-ediff-on-file-descriptor (tin)
-;; This is a replacement for cvs-emerge-mode
-;; Runs after cvs-update.
-;; Ediff-merge appropriate revisions of the selected file.
-  (let* ((fileinfo (tin-cookie cvs-cookie-handle tin))
-        (type (cvs-fileinfo->type fileinfo))
-        (tmp-file
-         (cvs-retrieve-revision-to-tmpfile fileinfo))
-        (default-directory
-          (file-name-as-directory (cvs-fileinfo->dir fileinfo)))
-        ancestor-file)
-
-    (or (memq type '(MERGED CONFLICT MODIFIED))
-       (error
-        "Can only merge `Modified', `Merged' or `Conflict' files"))
-
-    (cond ((memq type '(MERGED CONFLICT))
-          (setq ancestor-file
-                (cvs-retrieve-revision-to-tmpfile
-                 fileinfo
-                 ;; revision
-                 (cvs-fileinfo->base-revision fileinfo)))
-          (ediff-merge-buffers-with-ancestor
-           (find-file-noselect tmp-file)
-           (find-file-noselect (cvs-fileinfo->backup-file fileinfo))
-           (find-file-noselect ancestor-file)
-           nil ; startup-hooks
-           'ediff-merge-revisions-with-ancestor))
-         ((eq type 'MODIFIED)
-          (ediff-buffers
-           (find-file-noselect tmp-file)
-           (if (featurep 'xemacs)
-               ;; XEmacs doesn't seem to have cvs-fileinfo->full-name
-               (find-file-noselect (cvs-fileinfo->full-path fileinfo))
-             (find-file-noselect (cvs-fileinfo->full-name fileinfo)))
-           nil ; startup-hooks
-           'ediff-revisions)))
-    (if (stringp tmp-file) (ediff-delete-version-file tmp-file))
-    (if (stringp ancestor-file) (ediff-delete-version-file ancestor-file))))
-
 
 ;; delete version file on exit unless ediff-keep-tmp-versions is true
 (defun ediff-delete-version-file (file)
@@ -330,5 +245,5 @@ comparison or merge operations are being performed."
 ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
 ;;; End:
 
-;;; arch-tag: bbb34f0c-2a90-426a-a77a-c75f479ebbbf
+;; arch-tag: bbb34f0c-2a90-426a-a77a-c75f479ebbbf
 ;;; ediff-vers.el ends here