[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/vc.el,v
From: |
André Spiegel |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/vc.el,v |
Date: |
Fri, 23 Jun 2006 17:29:19 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: André Spiegel <spiegel> 06/06/23 17:29:19
Index: vc.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc.el,v
retrieving revision 1.419
retrieving revision 1.420
diff -u -b -r1.419 -r1.420
--- vc.el 5 Jun 2006 15:42:55 -0000 1.419
+++ vc.el 23 Jun 2006 17:29:19 -0000 1.420
@@ -567,6 +567,13 @@
:group 'vc
:version "21.1")
+(defcustom vc-diff-knows-L nil
+ "*Indicates whether diff understands the -L option.
+The value is either `yes', `no', or nil. If it is nil, VC tries
+to use -L and sets this variable to remember whether it worked."
+ :type '(choice (const :tag "Work out" nil) (const yes) (const no))
+ :group 'vc)
+
(defcustom vc-allow-async-revert nil
"Specifies whether the diff during \\[vc-revert-buffer] may be asynchronous.
Enabling this option means that you can confirm a revert operation even
@@ -1837,18 +1844,36 @@
(vc-version-backup-file file rev2)))
(coding-system-for-read (vc-coding-system-for-diff file)))
(if (and file-rev1 file-rev2)
- (apply 'vc-do-command "*vc-diff*" 1 "diff" nil
+ (let ((status
+ (if (eq vc-diff-knows-L 'no)
+ (apply 'vc-do-command "*vc-diff*" 1 "diff"
+ (append (vc-switches nil 'diff)
+ (list (file-relative-name file-rev1)
+ (file-relative-name file-rev2))))
+ (apply 'vc-do-command "*vc-diff*" 2 "diff" nil
(append (vc-switches nil 'diff)
- ;; Provide explicit labels like RCS or CVS would do
- ;; so diff-mode refers to `file' rather than to
- ;; `file-rev1' when trying to find/apply/undo hunks.
+ ;; Provide explicit labels like RCS or
+ ;; CVS would do so diff-mode refers to
+ ;; `file' rather than to `file-rev1'
+ ;; when trying to find/apply/undo
+ ;; hunks.
(list "-L" (vc-diff-label file file-rev1 rev1)
"-L" (vc-diff-label file file-rev2 rev2)
(file-relative-name file-rev1)
- (file-relative-name file-rev2))))
+ (file-relative-name file-rev2)))))))
+ (if (eq status 2)
+ (if (not vc-diff-knows-L)
+ (setq vc-diff-knows-L 'no
+ status (apply 'vc-do-command "*vc-diff*" 1 "diff"
+ (append
+ (vc-switches nil 'diff)
+ (list (file-relative-name file-rev1)
+ (file-relative-name file-rev2)))))
+ (error "diff failed"))
+ (if (not vc-diff-knows-L) (setq vc-diff-knows-L 'yes)))
+ status)
(vc-call diff file rev1 rev2))))
-
(defun vc-switches (backend op)
(let ((switches
(or (if backend
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/vc.el,v,
André Spiegel <=