bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#20892: 25.0.50; Applying vc-diff hunks on CRLF tracked files


From: Eli Zaretskii
Subject: bug#20892: 25.0.50; Applying vc-diff hunks on CRLF tracked files
Date: Fri, 01 Apr 2016 23:35:21 +0300

> From: address@hidden (João Távora)
> Cc: address@hidden,  address@hidden
> Date: Fri, 01 Apr 2016 11:22:50 +0100
> 
> In lisp/vc/vc.el, in vc-diff-internal, dynamically binding
> `coding-system-for-read' seems to be defeated by a call to
> `vc-setup-buffer', which in turn kills all local variables. 
> 
> I don't fully understand the interaction between buffer-local and
> lexically/dinamically bound variables but this seems wrong, right?

How come kill-all-local-variables can have any effect on the binding
of coding-system-for-read.  Can you explain, or show the evidence that
vc-setup-buffer is the culprit here?

> If, to this, we add a fix in lisp/vc/vc-git.el and don't let it override
> an existing `coding-system-for-read'...
> 
>     diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
>     index 8498cc8..c60125c 100644
>     --- a/lisp/vc/vc-git.el
>     +++ b/lisp/vc/vc-git.el
>     @@ -1387,8 +1387,10 @@ This command shares argument histories with 
> \\[rgrep] and \\[grep]."
>        "A wrapper around `vc-do-command' for use in vc-git.el.
>      The difference to vc-do-command is that this function always invokes
>      `vc-git-program'."
>     -  (let ((coding-system-for-read vc-git-commits-coding-system)
>     -       (coding-system-for-write vc-git-commits-coding-system))
>     +  (let ((coding-system-for-read (or coding-system-for-read
>     +                                    vc-git-commits-coding-system))
>     +       (coding-system-for-write (or coding-system-for-write
>     +                                     vc-git-commits-coding-system)))
>          (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program
>                ;; http://debbugs.gnu.org/16897
>                (unless (and (not (cdr-safe file-or-list))
> 
> the system seems to do the right thing and honour the intention of
> 
>    commit 0e2c793ffefa72c40c7731847d8210c2d7d0e515
>    Author: Eli Zaretskii <address@hidden>
>    Date:   Tue Nov 26 21:17:55 2013 +0200
>     
>        Fix ugly ^M characters in Diff output shown by "C-x v u".
> 
> What do you think? 

I think that fixing EOL decoding shouldn't touch the value of
coding-system-for-read, only its EOL decoding part, if at all.  And I
also don't see how does binding in vc-git interfere with the EOL
format of the diffs.  Can you tell the details, i.e. how did you
arrive at the conclusion that the above binding is the culprit?

Thanks.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]