]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #4451.
authorReiner Steib <Reiner.Steib@gmx.de>
Fri, 16 Jul 2010 10:17:13 +0000 (13:17 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 16 Jul 2010 10:17:13 +0000 (13:17 +0300)
 vc.el (vc-coding-system-inherit-eol): New defvar.
 (vc-coding-system-for-diff): Use it to decide whether to inherit
 from the file the EOL format for reading the diffs of that file.

lisp/ChangeLog
lisp/vc.el

index bdbc96a5afe029ae63450b9a8ce9daf635aad8e6..0ce0e8e30737cd11f9d7c3d9f21f24f944ed4ebd 100644 (file)
@@ -1,3 +1,10 @@
+2010-07-16  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * vc.el (vc-coding-system-inherit-eol): New defvar.
+       (vc-coding-system-for-diff): Use it to decide whether to inherit
+       from the file the EOL format for reading the diffs of that file.
+       (Bug#4451)
+
 2010-07-16  Eli Zaretskii  <eliz@gnu.org>
 
        * mail/rmailmm.el (rmail-mime-save): Make the temp buffer
index 194c2a0898351be0ec234e3a5d50378beb5253c1..a7d4ec663917963fb290d34feafed37f007aac11 100644 (file)
@@ -1398,6 +1398,16 @@ Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
 ;;          (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
@@ -1405,7 +1415,12 @@ Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
       ;; 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