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.
This commit is contained in:
Reiner Steib 2010-07-16 13:17:13 +03:00 committed by Eli Zaretskii
parent 134a027f69
commit f253ef6a8e
2 changed files with 23 additions and 1 deletions

View 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

View 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