From: Dmitry Gutov Date: Sun, 19 Jun 2016 19:08:21 +0000 (+0300) Subject: ASCII-fy coding-system-for-read used for Git commands X-Git-Tag: emacs-26.0.90~1840^2~204 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dd39c6fbeb299f0b203f01388e83f5e02767b8ff;p=emacs.git ASCII-fy coding-system-for-read used for Git commands * lisp/vc/vc-git.el (vc-git--asciify-coding-system): New function. (vc-git-diff, vc-git-annotate-command): Use it. --- diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 16cbeef57ea..783ea89c6ce 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -1084,6 +1084,13 @@ or BRANCH^ (where \"^\" can be repeated)." (cons 'vc-git-region-history-font-lock-keywords (cdr font-lock-defaults)))) +(defun vc-git--asciify-coding-system () + ;; Try to reconcile the content encoding with the encoding of Git's + ;; auxiliary output (which is ASCII or ASCII-compatible), bug#23595. + (unless (let ((samp "Binary files differ")) + (string-equal samp (decode-coding-string + samp coding-system-for-read t))) + (setq coding-system-for-read 'undecided))) (autoload 'vc-switches "vc") @@ -1091,6 +1098,7 @@ or BRANCH^ (where \"^\" can be repeated)." "Get a difference report using Git between two revisions of FILES." (let (process-file-side-effects (command "diff-tree")) + (vc-git--asciify-coding-system) (if rev2 ;; Diffing against the empty tree. (unless rev1 (setq rev1 "4b825dc642cb6eb9a060e54bf8d69288fbee4904")) @@ -1129,6 +1137,7 @@ or BRANCH^ (where \"^\" can be repeated)." table)) (defun vc-git-annotate-command (file buf &optional rev) + (vc-git--asciify-coding-system) (let ((name (file-relative-name file))) (apply #'vc-git-command buf 'async nil "blame" "--date=short" (append (vc-switches 'git 'annotate)