diff lisp/vc/vc.el @ 109445:051595eb9b58

Merge changes from emacs-23 branch.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 16 Jul 2010 11:42:15 -0400
parents 60516122d066
children d92d0e17a7ce 2bd8f25ebb95 3226ac2da7f7 d90a3bc6b730
line wrap: on
line diff
--- a/lisp/vc/vc.el	Fri Jul 16 14:09:55 2010 +0200
+++ b/lisp/vc/vc.el	Fri Jul 16 11:42:15 2010 -0400
@@ -1437,6 +1437,16 @@
 ;;          (vc-call-backend ',(vc-backend f)
 ;;                           'diff (list ',f) ',rev1 ',rev2))))))
 
+(defvar vc-coding-system-inherit-eol t
+  "When non-nil, inherit the EOL format for reading Diff output from the file.
+
+Used in `vc-coding-system-for-diff' to determine the EOL format to use
+for reading Diff output for a file.  If non-nil, the EOL format is
+inherited from the file itself.
+Set this variable to nil if your Diff tool might use a different
+EOL.  Then Emacs will auto-detect the EOL format in Diff output, which
+gives better results.") ;; Cf. bug#4451.
+
 (defun vc-coding-system-for-diff (file)
   "Return the coding system for reading diff output for FILE."
   (or coding-system-for-read
@@ -1444,7 +1454,12 @@
       ;; use the buffer's coding system
       (let ((buf (find-buffer-visiting file)))
         (when buf (with-current-buffer buf
-		    buffer-file-coding-system)))
+		    (if vc-coding-system-inherit-eol
+			buffer-file-coding-system
+		      ;; Don't inherit the EOL part of the coding-system,
+		      ;; because some Diff tools may choose to use
+		      ;; a different one.  bug#4451.
+		      (coding-system-base buffer-file-coding-system)))))
       ;; otherwise, try to find one based on the file name
       (car (find-operation-coding-system 'insert-file-contents file))
       ;; and a final fallback