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

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

[debbugs-tracker] bug#20892: closed (25.0.50; Applying vc-diff hunks on


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#20892: closed (25.0.50; Applying vc-diff hunks on CRLF tracked files)
Date: Sat, 02 Apr 2016 14:29:01 +0000

Your message dated Sat, 02 Apr 2016 17:27:20 +0300
with message-id <address@hidden>
and subject line Re: bug#20892: 25.0.50; Applying vc-diff hunks on CRLF tracked 
files
has caused the debbugs.gnu.org bug report #20892,
regarding 25.0.50; Applying vc-diff hunks on CRLF tracked files
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
20892: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20892
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 25.0.50; Applying vc-diff hunks on CRLF tracked files Date: Wed, 24 Jun 2015 12:29:05 +0100 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (windows-nt)
Hello maintainers,

1. Navigate to a repository where files are tracked with CRLF line
   endings.
   
2. Modify one of those files.

3. Use M-x vc-root-diff. Observe how, in the latest trunk, the carriage
   return (represented as ^M) are visible as a part of the diff hunk's
   content. This is correct, in my opinion, if a little visually
   distracting.

4. Undo of of those diffs with C-c C-a

5. Redo the same hunk with C-c C-a again

6. Notive how diff-apply-hunk incorrectly applies the carriage return
   characters themselves.

Here's a trivial patch to lisp/vc/diff-mode.el, or simply cherry-pick
the commit 

  7ed2b6299425c4b2ea6bd8d8e8eb5eaa5e5ddf7e

which is available in this url

   https://github.com/capitaomorte/emacs.git

 @@ -1799,7 +1799,8 @@ 
       (with-current-buffer buf
        (goto-char (car pos))
        (delete-region (car pos) (cdr pos))
-       (insert (car new)))
+       (insert (decode-coding-string (car new)
+                                     buffer-file-coding-system)))
       ;; Display BUF in a window
       (set-window-point (display-buffer buf) (+ (car pos) (cdr new)))
       (diff-hunk-status-msg line-offset (diff-xor switched reverse) nil)


The commit message is

    Consider coding system when applying diff-mode hunks.
     
    Without this, applying hunks may garble line endings in the
    destination buffer.
     
    * lisp/vc/diff-mode.el (diff-apply-hunk): Use decode-coding-string and
      buffer-file-coding-system.
      
Sorry I couldn't properly inline a patch,

Thanks,
João



--- End Message ---
--- Begin Message --- Subject: Re: bug#20892: 25.0.50; Applying vc-diff hunks on CRLF tracked files Date: Sat, 02 Apr 2016 17:27:20 +0300
> From: João Távora <address@hidden>
> Date: Sat, 2 Apr 2016 14:42:48 +0100
> Cc: Stefan Monnier <address@hidden>, address@hidden
> 
> 1. Sometime in June 2015, upgrade my emacs. vc-diff some CRLF file
> 
> 2. "Cool, a new feature now makes it show precisely which chars were
>    added and deleted even the CRs"
> 
> 3. "Oh, but vc-apply-hunk stopped working, let's open bug 20892"
> 
> 4. Discuss bug, argue that showing ^M is cool for when you really want
>    to apply patches that add and remove just one or two of those.
> 
> 5. Apply some reasonable fix to my config. Be side-tracked by
>    dayjob. Lose interest in discussing the bug,
> 
> 6. Eventually, realize 4 is silly and if you're mixing CRLF and
>    non-CRLF line endings you've already lost.
> 
> 7. Recently, March 2016, also realize that diacritics are also wrong
>    in latin-1 files.
> 
> 8. Decide to reevaluate situation, read some code and commit messages,
>    and propose a new fix that makes the vc-diff buffer have the same
>    encoding as the originating file, as apparently was intended.
>    vc-apply-hunk is fixed, if I ever need to do something like 4
>    I'll do it outside of emacs.
> 
> I think you can close the bug.

Thanks, closing.


--- End Message ---

reply via email to

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