;;; Code:
+(defvar mm-default-coding-system nil
+ "The default coding system to use.")
+
(defvar mm-known-charsets '(iso-8859-1)
"List of known charsets.")
'((decode-coding-string . (lambda (s a) s))
(encode-coding-string . (lambda (s a) s))
(encode-coding-region . ignore)
- (decode-coding-region . ignore)
(coding-system-list . ignore)
+ (decode-coding-region . ignore)
(char-int . identity)
(device-type . ignore)
(coding-system-equal . equal)
(annotationp . ignore)
+ (set-buffer-file-coding-system . ignore)
(make-char
. (lambda (charset int)
(int-to-char int)))
prompt (mapcar (lambda (s) (list (symbol-name (car s))))
mm-mime-mule-charset-alist)))))))
+(defvar mm-coding-system-list nil)
+(defun mm-get-coding-system-list ()
+ "Get the coding system list."
+ (or mm-coding-system-list
+ (setq mm-coding-system-list (mm-coding-system-list))))
+
(defvar mm-charset-coding-system-alist
(let ((rest
- '((us-ascii . iso-8859-1)
- (gb2312 . cn-gb-2312)
+ '((gb2312 . cn-gb-2312)
(iso-2022-jp-2 . iso-2022-7bit-ss2)
(x-ctext . ctext)))
- (systems (mm-coding-system-list))
+ (systems (mm-get-coding-system-list))
dest)
(while rest
(let ((pair (car rest)))
dest)
"Charset/coding system alist.")
-
(defun mm-mule-charset-to-mime-charset (charset)
"Return the MIME charset corresponding to MULE CHARSET."
(let ((alist mm-mime-mule-charset-alist)
(setq charset (intern (format "%s-%s" charset lbt))))
(cond
;; Running in a non-MULE environment.
- ((and (null (mm-coding-system-list))
+ ((and (null (mm-get-coding-system-list))
(memq charset mm-known-charsets))
charset)
+ ;; ascii
+ ((eq charset 'us-ascii)
+ 'ascii)
;; Check to see whether we can handle this charset.
- ((memq charset (mm-coding-system-list))
+ ((memq charset (mm-get-coding-system-list))
charset)
;; Nope.
(t
(when (fboundp 'set-buffer-multibyte)
(set-buffer-multibyte t)))
-(defun mm-insert-rfc822-headers (charset encoding)
- "Insert text/plain headers with CHARSET and ENCODING."
- (insert "MIME-Version: 1.0\n")
- (insert "Content-Type: text/plain; charset=\""
- (downcase (symbol-name charset)) "\"\n")
- (insert "Content-Transfer-Encoding: "
- (downcase (symbol-name encoding)) "\n"))
-
(defun mm-mime-charset (charset b e)
(if (fboundp 'coding-system-get)
(or
+ (and
+ mm-default-coding-system
+ (let ((safe (coding-system-get mm-default-coding-system
+ 'safe-charsets)))
+ (or (eq safe t) (memq charset safe)))
+ (coding-system-get mm-default-coding-system 'mime-charset))
(coding-system-get
(get-charset-property charset 'prefered-coding-system)
'mime-charset)