From f82400798ee4f7b0945c7b14e15c806108a504cb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 5 Jan 2018 11:22:27 +0200 Subject: [PATCH] Fix failures in smerge-mode on MS-Windows * lisp/vc/smerge-mode.el (smerge--refine-chopup-region): Use utf-8-emacs-unix, not emacs-internal, to make the forced EOL convention explicit. (smerge-refine-regions): Use utf-8-emacs instead of emacs-internal, to allow decoding of non-Unix EOL conventions. (Bug#29916) --- lisp/vc/smerge-mode.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el index 761536745f4..ea99d31e898 100644 --- a/lisp/vc/smerge-mode.el +++ b/lisp/vc/smerge-mode.el @@ -1019,7 +1019,7 @@ chars to try and eliminate some spurious differences." (setq s short))) (dotimes (_i (1- len)) (insert s))))))) (unless (bolp) (error "Smerge refine internal error")) - (let ((coding-system-for-write 'emacs-internal)) + (let ((coding-system-for-write 'utf-8-emacs-unix)) (write-region (point-min) (point-max) file nil 'nomessage)))) (defun smerge--refine-highlight-change (beg match-num1 match-num2 props) @@ -1084,7 +1084,9 @@ used to replace chars to try and eliminate some spurious differences." ;; Call diff on those files. (unwind-protect (with-temp-buffer - (let ((coding-system-for-read 'emacs-internal)) + ;; Allow decoding the EOL format, as on MS-Windows the Diff + ;; utility might produce CR-LF EOLs. + (let ((coding-system-for-read 'utf-8-emacs)) (call-process diff-command nil t nil (if (and smerge-refine-ignore-whitespace (not smerge-refine-weight-hack)) -- 2.39.5