(require 'mcs-20)
-(defun encode-mime-charset-region (start end charset)
+(defun encode-mime-charset-region (start end charset &optional lbt)
"Encode the text between START and END as MIME CHARSET."
- (let ((cs (mime-charset-to-coding-system charset)))
+ (let ((cs (mime-charset-to-coding-system charset lbt)))
(if cs
(encode-coding-region start end cs)
)))
)))
(defcustom mime-iso646-character-unification-alist
- `,(let (dest
+ (eval-when-compile
+ (let (dest
(i 33))
(while (< i 92)
(setq dest
(format "%c" i))
dest))
(setq i (1+ i)))
- (nreverse dest))
+ (nreverse dest)))
"Alist unified string vs. canonical string."
:group 'i18n
:type '(repeat (cons string string)))
(let ((rest mime-iso646-character-unification-alist))
(while rest
(let ((pair (car rest)))
- (goto-char (point-min))
- (while (search-forward (car pair) nil t)
+ (goto-char start)
+ (while (search-forward (car pair) end t)
(let ((str (cdr pair)))
(put-text-property 0 (length str)
'face mime-unified-character-face str)
(assq t mime-charset-decoder-alist)))))
(funcall func start end charset lbt)))
-(defsubst encode-mime-charset-string (string charset)
+(defsubst encode-mime-charset-string (string charset &optional lbt)
"Encode the STRING as MIME CHARSET."
- (let ((cs (mime-charset-to-coding-system charset)))
+ (let ((cs (mime-charset-to-coding-system charset lbt)))
(if cs
(encode-coding-string string cs)
string)))
((ascii latin-jisx0201
katakana-jisx0201 japanese-jisx0208) . shift_jis)
((ascii korean-ksc5601) . euc-kr)
- ((ascii chinese-gb2312) . cn-gb-2312)
- ((ascii chinese-big5-1 chinese-big5-2) . cn-big5)
+ ((ascii chinese-gb2312) . gb2312)
+ ((ascii chinese-big5-1 chinese-big5-2) . big5)
((ascii latin-iso8859-1 greek-iso8859-7
latin-jisx0201 japanese-jisx0208-1978
chinese-gb2312 japanese-jisx0208
korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2)
- ((ascii latin-iso8859-1 greek-iso8859-7
- latin-jisx0201 japanese-jisx0208-1978
- chinese-gb2312 japanese-jisx0208
- korean-ksc5601 japanese-jisx0212
- chinese-cns11643-1 chinese-cns11643-2) . iso-2022-int-1)
- ;; ((ascii latin-iso8859-1 latin-iso8859-2
- ;; cyrillic-iso8859-5 greek-iso8859-7
+ ;; ((ascii latin-iso8859-1 greek-iso8859-7
;; latin-jisx0201 japanese-jisx0208-1978
;; chinese-gb2312 japanese-jisx0208
;; korean-ksc5601 japanese-jisx0212
- ;; chinese-cns11643-1 chinese-cns11643-2
- ;; chinese-cns11643-3 chinese-cns11643-4
- ;; chinese-cns11643-5 chinese-cns11643-6
- ;; chinese-cns11643-7) . iso-2022-int-1)
+ ;; chinese-cns11643-1 chinese-cns11643-2) . iso-2022-int-1)
))
+(defun coding-system-to-mime-charset (coding-system)
+ "Convert CODING-SYSTEM to a MIME-charset.
+Return nil if corresponding MIME-charset is not found."
+ (setq coding-system
+ (coding-system-name (coding-system-base coding-system)))
+ (or (car (rassq coding-system mime-charset-coding-system-alist))
+ coding-system))
+
+(defun mime-charset-list ()
+ "Return a list of all existing MIME-charset."
+ (let ((dest (mapcar (function car) mime-charset-coding-system-alist))
+ (rest (coding-system-list))
+ cs)
+ (while rest
+ (setq cs (coding-system-name (coding-system-base (car rest))))
+ (or (rassq cs mime-charset-coding-system-alist)
+ (memq cs dest)
+ (setq dest (cons cs dest)))
+ (setq rest (cdr rest)))
+ dest))
+
+
;;; @ end
;;;