[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33567: Syntactic fontification of diff hunks
From: |
Juri Linkov |
Subject: |
bug#33567: Syntactic fontification of diff hunks |
Date: |
Wed, 12 Dec 2018 02:28:08 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) |
> . it doesn't use the following facilities for determining the right
> encoding, where you use buffer-file-coding-system:
> - auto-coding-function, which is where we detect the 'coding:'
> cookies in the first line and in the local vars, and use the
> data in auto-coding-alist and auto-coding-regexp-alist, and also
> call auto-coding-functions if needed
> - find-operation-coding-system by file name, which uses the data
> in file-coding-system-alist to determine the appropriate
> encoding given the file's name
>
> The hard problem here is to determine what coding-system to use for
> decoding a region that was inserted without any conversions; once the
> encoding is determined, the rest boils down to calling
> decode-coding-region with that encoding. The method used by
> archive-set-buffer-as-visiting-file solves that very problem, whereas
> recode-region does not, because it is a command that relies on the
> caller to specify the encoding, and is otherwise nothing more than a
> thin wrapper around decode-coding-region.
Thanks for the explanation. I explored more on this subject, and found
the most suitable existing function: `decode-coding-inserted-region'.
I tested it with different codings and everything works well:
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 5ff9f4d5be..127661a039 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2042,6 +2042,8 @@ vc-find-revision-no-save
(if backend
(vc-call-backend backend 'find-revision file revision
outbuf)
(vc-call find-revision file revision outbuf))))
+ (decode-coding-inserted-region (point-min) (point-max) file)
+ (after-insert-file-set-coding (- (point-max) (point-min)))
(goto-char (point-min))
(if buffer (let ((buffer-file-name file)) (normal-mode))
(normal-mode))
(set-buffer-modified-p nil)
- bug#33567: Syntactic fontification of diff hunks, (continued)
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/02
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/03
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/03
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/04
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/04
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/05
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/05
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/06
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/10
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/11
- bug#33567: Syntactic fontification of diff hunks,
Juri Linkov <=
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/12
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/03
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/04
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/04
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/05
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/05
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/12
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/14
- bug#33567: Syntactic fontification of diff hunks, Juri Linkov, 2018/12/16
- bug#33567: Syntactic fontification of diff hunks, Eli Zaretskii, 2018/12/17