/[emacs]/emacs/lisp/ediff-vers.el
ViewVC logotype

Diff of /emacs/lisp/ediff-vers.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by kifer, Tue Jan 8 04:36:01 2002 UTC revision 1.16.4.1 by miles, Fri Apr 4 06:20:04 2003 UTC
# Line 50  Line 50 
50               (load "ediff-init.el" nil nil 'nosuffix))               (load "ediff-init.el" nil nil 'nosuffix))
51           )))           )))
52  ;; end pacifier  ;; end pacifier
53          
54  ;; VC.el support  ;; VC.el support
55    
56    (defun ediff-vc-latest-version (file)
57      "Return the version level of the latest version of FILE in repository."
58      (if (fboundp 'vc-latest-version)
59          (vc-latest-version file)
60        (or (vc-file-getprop file 'vc-latest-version)
61            (cond ((vc-backend file)
62                   (vc-call state file)
63                   (vc-file-getprop file 'vc-latest-version))
64                  (t (error "File %s is not under version control" file))))
65        ))
66    
67    
68  (defun ediff-vc-internal (rev1 rev2 &optional startup-hooks)  (defun ediff-vc-internal (rev1 rev2 &optional startup-hooks)
69  ;; Run Ediff on versions of the current buffer.    ;; Run Ediff on versions of the current buffer.
70  ;; If REV2 is "" then compare current buffer with REV1.    ;; If REV1 is "", use the latest version of the current buffer's file.
71  ;; If the current buffer is named `F', the version is named `F.~REV~'.    ;; If REV2 is "" then compare current buffer with REV1.
72  ;; If `F.~REV~' already exists, it is used instead of being re-created.    ;; If the current buffer is named `F', the version is named `F.~REV~'.
73      ;; If `F.~REV~' already exists, it is used instead of being re-created.
74    (let (file1 file2 rev1buf rev2buf)    (let (file1 file2 rev1buf rev2buf)
75        (if (string= rev1 "")
76            (setq rev1 (ediff-vc-latest-version (buffer-file-name))))
77      (save-window-excursion      (save-window-excursion
78        (save-excursion        (save-excursion
79          (vc-version-other-window rev1)          (vc-version-other-window rev1)
# Line 77  Line 93 
93       rev1buf rev2buf       rev1buf rev2buf
94       startup-hooks       startup-hooks
95       'ediff-revision)))       'ediff-revision)))
96        
97  ;; RCS.el support  ;; RCS.el support
98  (defun rcs-ediff-view-revision (&optional rev)  (defun rcs-ediff-view-revision (&optional rev)
99  ;; View previous RCS revision of current file.  ;; View previous RCS revision of current file.
100  ;; With prefix argument, prompts for a revision name.  ;; With prefix argument, prompts for a revision name.
101    (interactive (list (if current-prefix-arg    (interactive (list (if current-prefix-arg
102                           (read-string "Revision: "))))                           (read-string "Revision: "))))
103    (let* ((filename (buffer-file-name (current-buffer)))    (let* ((filename (buffer-file-name (current-buffer)))
104           (switches (append '("-p")           (switches (append '("-p")
# Line 100  Line 116 
116            (apply 'call-process "co" nil t nil            (apply 'call-process "co" nil t nil
117                   ;; -q: quiet (no diagnostics)                   ;; -q: quiet (no diagnostics)
118                   (append switches rcs-default-co-switches                   (append switches rcs-default-co-switches
119                           (list "-q" filename)))))                           (list "-q" filename)))))
120        (message "")        (message "")
121        buff)))            buff)))
122          
123  (defun ediff-rcs-get-output-buffer (file name)  (defun ediff-rcs-get-output-buffer (file name)
124    ;; Get a buffer for RCS output for FILE, make it writable and clean it up.    ;; Get a buffer for RCS output for FILE, make it writable and clean it up.
125    ;; Optional NAME is name to use instead of `*RCS-output*'.    ;; Optional NAME is name to use instead of `*RCS-output*'.
# Line 127  Line 143 
143                          (current-buffer)                          (current-buffer)
144                        (rcs-ediff-view-revision rev2))                        (rcs-ediff-view-revision rev2))
145              rev1buf (rcs-ediff-view-revision rev1)))              rev1buf (rcs-ediff-view-revision rev1)))
146            
147      ;; rcs.el doesn't create temp version files, so we don't have to delete      ;; rcs.el doesn't create temp version files, so we don't have to delete
148      ;; anything in startup hooks to ediff-buffers      ;; anything in startup hooks to ediff-buffers
149      (ediff-buffers rev1buf rev2buf startup-hooks 'ediff-revision)      (ediff-buffers rev1buf rev2buf startup-hooks 'ediff-revision)
# Line 161  Line 177 
177    
178  ;;; Merge with Version Control  ;;; Merge with Version Control
179    
180  (defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev  (defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev
181                                       &optional startup-hooks merge-buffer-file)                                       &optional startup-hooks merge-buffer-file)
182  ;; If ANCESTOR-REV non-nil, merge with ancestor  ;; If ANCESTOR-REV non-nil, merge with ancestor
183    (let (buf1 buf2 ancestor-buf)    (let (buf1 buf2 ancestor-buf)
# Line 179  Line 195 
195                  (setq ancestor-rev (vc-workfile-version buffer-file-name)))                  (setq ancestor-rev (vc-workfile-version buffer-file-name)))
196              (vc-version-other-window ancestor-rev)              (vc-version-other-window ancestor-rev)
197              (setq ancestor-buf (current-buffer))))              (setq ancestor-buf (current-buffer))))
198        (setq startup-hooks        (setq startup-hooks
199              (cons              (cons
200               `(lambda ()               `(lambda ()
201                  (delete-file ,(buffer-file-name buf1))                  (delete-file ,(buffer-file-name buf1))
202                  (or ,(string= rev2 "")                  (or ,(string= rev2 "")
203                      (delete-file ,(buffer-file-name buf2)))                      (delete-file ,(buffer-file-name buf2)))
# Line 262  Line 278 
278           (default-directory           (default-directory
279             (file-name-as-directory (cvs-fileinfo->dir fileinfo)))             (file-name-as-directory (cvs-fileinfo->dir fileinfo)))
280           ancestor-file)           ancestor-file)
281        
282      (or (memq type '(MERGED CONFLICT MODIFIED))      (or (memq type '(MERGED CONFLICT MODIFIED))
283          (error          (error
284           "Can only merge `Modified', `Merged' or `Conflict' files"))           "Can only merge `Modified', `Merged' or `Conflict' files"))
285        
286      (cond ((memq type '(MERGED CONFLICT))      (cond ((memq type '(MERGED CONFLICT))
287             (setq ancestor-file             (setq ancestor-file
288                   (cvs-retrieve-revision-to-tmpfile                   (cvs-retrieve-revision-to-tmpfile

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.16.4.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26