emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/gnus/mm-util.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/gnus/mm-util.el
Date: Sun, 10 Apr 2005 15:04:10 -0400

Index: emacs/lisp/gnus/mm-util.el
diff -c emacs/lisp/gnus/mm-util.el:1.38 emacs/lisp/gnus/mm-util.el:1.39
*** emacs/lisp/gnus/mm-util.el:1.38     Sun Apr 10 04:20:13 2005
--- emacs/lisp/gnus/mm-util.el  Sun Apr 10 19:04:09 2005
***************
*** 72,78 ****
--- 72,97 ----
            string)))
       (string-as-unibyte . identity)
       (string-make-unibyte . identity)
+      ;; string-as-multibyte often doesn't really do what you think it does.
+      ;; Example:
+      ;;    (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201)
+      ;;    (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300)
+      ;;    (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300)
+      ;;    (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201)
+      ;; but
+      ;;    (aref (string-as-multibyte "\201\300") 0) -> 2240
+      ;;    (aref (string-as-multibyte "\201\300") 1) -> <error>
+      ;; Better use string-to-multibyte or encode-coding-string.
+      ;; If you really need string-as-multibyte somewhere it's usually
+      ;; because you're using the internal emacs-mule representation (maybe
+      ;; because you're using string-as-unibyte somewhere), which is
+      ;; generally a problem in itself.
+      ;; Here is an approximate equivalence table to help think about it:
+      ;; (string-as-multibyte s)   ~= (decode-coding-string s 'emacs-mule)
+      ;; (string-to-multibyte s)   ~= (decode-coding-string s 'binary)
+      ;; (string-make-multibyte s) ~= (decode-coding-string s 
locale-coding-system)
       (string-as-multibyte . identity)
+      (string-to-multibyte . mm-string-as-multibyte)
       (multibyte-string-p . ignore)
       ;; It is not a MIME function, but some MIME functions use it.
       (make-temp-file . (lambda (prefix &optional dir-flag)
***************
*** 938,944 ****
      (defun mm-detect-coding-region (start end)
        "Like `detect-coding-region' except returning the best one."
        (let ((coding-systems
!            (detect-coding-region (point) (point-max))))
        (or (car-safe coding-systems)
            coding-systems)))
    (defun mm-detect-coding-region (start end)
--- 957,963 ----
      (defun mm-detect-coding-region (start end)
        "Like `detect-coding-region' except returning the best one."
        (let ((coding-systems
!            (detect-coding-region start end)))
        (or (car-safe coding-systems)
            coding-systems)))
    (defun mm-detect-coding-region (start end)
***************
*** 962,966 ****
  
  (provide 'mm-util)
  
! ;;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238
  ;;; mm-util.el ends here
--- 981,985 ----
  
  (provide 'mm-util)
  
! ;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238
  ;;; mm-util.el ends here




reply via email to

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