emacs-devel
[Top][All Lists]
Advanced

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

sort-coding-systems in 21.3 and RC branch (was: New function `emacs-vers


From: Reiner Steib
Subject: sort-coding-systems in 21.3 and RC branch (was: New function `emacs-version>=')
Date: Mon, 05 May 2003 15:47:26 +0200
User-agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.3 (gnu/linux)

On Sat, May 03 2003, Stefan Monnier wrote:

>> Another example (BTW: Is this fixed in the RC branch?):

I've checked it now.  It isn't fixed in RC.  Could someone please
install this patch (see below) in the RC branch?  It's the output of
"diff -u -r1.216 -r1.217 mule-cmds.el" in HEAD.
 
>> Gnus 5.9 bundled with Emacs 21.3 comes with a slightly broken version
>> of the function `sort-coding-systems'.[...]
>
> Have you tried to test something like
>
>  (eq 'mule-utf-16-be (car (sort-coding-systems '(mule-utf-8
>  mule-utf-16-be))))

No, I haven't.  Thanks for the hint.

But your test is not sufficient:

,----[ b0rked `sort-coding-systems' ]
| ELISP> (sort-coding-systems '(mule-utf-8 mule-utf-16-be))
| (mule-utf-8 mule-utf-16-be)
| ELISP> emacs-version
| "21.3.1"
`----

`find-coding-systems-region' returns, e.g.
(mule-utf-16-be mule-utf-16-le mule-utf-8 compound-text ...).

And the b0rked (21.3.1) version of `sort-coding-systems' doesn't
sort the list correctly:

,----[ b0rked `sort-coding-systems' ]
| ELISP> (sort-coding-systems '(mule-utf-16-be mule-utf-16-le mule-utf-8))
| (mule-utf-16-be mule-utf-16-le mule-utf-8)
`----

The fixed version (e.g. in HEAD) gives:

,----[ Fixed `sort-coding-systems' ]
| ELISP> (sort-coding-systems '(mule-utf-16-be mule-utf-16-le mule-utf-8))
| (mule-utf-8 mule-utf-16-be mule-utf-16-le)
`----

So using '(mule-utf-16-be mule-utf-16-le mule-utf-8) in your
suggestion does the trick:

(eq 'mule-utf-8
    (car (sort-coding-systems
          '(mule-utf-16-be mule-utf-16-le mule-utf-8))))

(I don't know if mule-utf-16-le is necessary, at least it doesn't
hurt.)

Thanks for suggestion!

Bye, Reiner.

--8<---------------cut here---------------start------------->8---
--- mule-cmds.el        26 Dec 2002 17:27:20 -0000      1.216
+++ mule-cmds.el        3 Jan 2003 20:16:11 -0000       1.217
@@ -425,9 +425,18 @@
                    (let ((base (coding-system-base x)))
                      (+ (if (eq base most-preferred) 64 0)
                         (let ((mime (coding-system-get base 'mime-charset)))
+                          ;; Prefer coding systems corresponding to a
+                          ;; MIME charset.
                           (if mime
-                              (if (string-match "^x-" (symbol-name mime))
-                                  16 32)
+                              ;; Lower utf-16 priority so that we
+                              ;; normally prefer utf-8 to it, and put
+                              ;; x-ctext below that.
+                              (cond ((or (eq base 'mule-utf-16-le)
+                                         (eq base 'mule-utf-16-be))
+                                     16)
+                                    ((string-match "^x-" (symbol-name mime))
+                                     8)
+                                    (t 32))
                             0))
                         (if (memq base lang-preferred) 8 0)
                         (if (string-match "-with-esc$" (symbol-name base))
--8<---------------cut here---------------end--------------->8---
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo--- PGP key available via WWW   http://rsteib.home.pages.de/





reply via email to

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