Fix bug #4451.
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:
parent
134a027f69
commit
f253ef6a8e
2 changed files with 23 additions and 1 deletions
|
@ -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
|
||||
|
|
17
lisp/vc.el
17
lisp/vc.el
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue