mm-charset-after in non-MULE case.
authorShengHuo ZHU <zsh@cs.rochester.edu>
Sat, 18 Dec 1999 21:52:23 +0000 (21:52 +0000)
committerShengHuo ZHU <zsh@cs.rochester.edu>
Sat, 18 Dec 1999 21:52:23 +0000 (21:52 +0000)
lisp/ChangeLog
lisp/mail-prsvr.el
lisp/mm-util.el
lisp/rfc2047.el

index d488d46..14f0353 100644 (file)
@@ -1,3 +1,9 @@
+1999-12-18 16:43:37  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-charset-after): Non-MULE case.
+       * mail-prsvr.el (mail-parse-mule-charset): New variable.
+       * rfc2047.el (rfc2047-dissect-region): Bind it.
+
 1999-12-18  Florian Weimer  <fw@s.netic.de>
 
        * mml.el (mml-generate-multipart-alist): Correct default value. 
index 82187fc..de43787 100644 (file)
@@ -29,6 +29,10 @@ This variable should never be set.  Instead, it should be bound by
 functions that wish to call mail-parse functions and let them know
 what the desired charset is to be.")
 
+(defvar mail-parse-mule-charset nil
+  "Default MULE charset used by low-level libraries.
+This variable should never be set.")
+
 (defvar mail-parse-ignored-charsets nil
   "Ignored charsets used by low-level libraries.
 This variable should never be set.  Instead, it should be bound by
index 69861e9..bf94df4 100644 (file)
@@ -24,6 +24,8 @@
 
 ;;; Code:
 
+(require 'mail-prsvr)
+
 (defvar mm-mime-mule-charset-alist
   '((us-ascii ascii)
     (iso-8859-1 latin-iso8859-1)
@@ -65,7 +67,6 @@
                    chinese-cns11643-7))
   "Alist of MIME-charset/MULE-charsets.")
 
-
 (eval-and-compile
   (mapcar
    (lambda (elem)
@@ -213,9 +214,26 @@ used as the line break code type of the coding system."
 If POS is nil, it defauls to the current point.
 If POS is out of range, the value is nil.
 If the charset is `composition', return the actual one."
-  (let ((charset (if (fboundp 'charset-after)
-                    (charset-after pos)
-                  (char-charset (char-after pos)))))
+  (let ((charset (cond 
+                 ((fboundp 'charset-after)
+                  (charset-after pos))
+                 ((fboundp 'char-charset)
+                  (char-charset (char-after pos)))
+                 ((< (mm-char-int (char-after pos)) 128)
+                  'ascii)
+                 (mail-parse-mule-charset ;; cached mule-charset
+                  mail-parse-mule-charset)
+                 ((boundp 'current-language-environment)
+                  (let ((entry (assoc current-language-environment 
+                                      language-info-alist)))
+                    (setq mail-parse-mule-charset
+                          (or (car (last (assq 'charset entry)))
+                              'latin-iso8859-1))))
+                 (t                       ;; figure out the charset
+                  (setq mail-parse-mule-charset
+                        (or (car (last (assq mail-parse-charset
+                                             mm-mime-mule-charset-alist)))
+                            'latin-iso8859-1))))))
     (if (eq charset 'composition)
        (let ((p (or pos (point))))
          (cadr (find-charset-region p (1+ p))))
index 3e377a7..2c0d275 100644 (file)
@@ -157,7 +157,7 @@ permitted unencoded charset is us-ascii."
   (let ((all-specials (concat ietf-drums-tspecials " \t\n\r"))
        (special-list (mapcar 'identity ietf-drums-tspecials))
        (blank-list '(?  ?\t ?\n ?\r))
-       words current cs state)
+       words current cs state mail-parse-mule-charset)
     (save-restriction
       (narrow-to-region b e)
       (goto-char (point-min))