2 ;;; tm-mule.el --- tm definitions depended on Mule
4 ;;; Copyright (C) 1995 Free Software Foundation, Inc.
5 ;;; Copyright (C) 1994,1995 MORIOKA Tomohiko
7 ;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
9 ;;; $Id: tm-mule.el,v 7.1 1995/10/03 04:49:53 morioka Exp $
10 ;;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
12 ;;; This file is part of tm (Tools for MIME).
22 (defvar mime/default-coding-system *ctext*)
24 (defvar mime/charset-coding-system-alist
25 '(("ISO-2022-JP" . *iso-2022-ss2-7*)
26 ("ISO-2022-JP-2" . *iso-2022-ss2-7*)
27 ("X-ISO-2022-JP-2" . *iso-2022-ss2-7*)
28 ("ISO-2022-CN" . *iso-2022-ss2-7*)
29 ("ISO-2022-KR" . *iso-2022-kr*)
31 ("ISO-8859-1" . *ctext*)
32 ("ISO-8859-2" . *iso-8859-2*)
33 ("ISO-8859-3" . *iso-8859-3*)
34 ("ISO-8859-4" . *iso-8859-4*)
35 ("ISO-8859-5" . *iso-8859-5*)
36 ("ISO-8859-7" . *iso-8859-7*)
37 ("ISO-8859-8" . *iso-8859-8*)
38 ("ISO-8859-9" . *iso-8859-9*)
39 ("ISO-2022-INT-1" . *iso-2022-int-1*)
43 ;;; @ charset and encoding
46 (defvar mime/lc-charset-rule-list
48 (list (list lc-ascii) "US-ASCII" nil)
49 (list (list lc-ascii lc-ltn1) "ISO-8859-1" "Q")
50 (list (list lc-ascii lc-ltn2) "ISO-8859-2" "Q")
51 (list (list lc-ascii lc-ltn3) "ISO-8859-3" "Q")
52 (list (list lc-ascii lc-ltn4) "ISO-8859-4" "Q")
53 ;;;(list (list lc-ascii lc-crl) "ISO-8859-5" "Q")
54 (list (list lc-ascii lc-crl) "KOI8-R" "Q")
55 (list (list lc-ascii lc-grk) "ISO-8859-7" "Q")
56 (list (list lc-ascii lc-hbw) "ISO-8859-8" "Q")
57 (list (list lc-ascii lc-ltn5) "ISO-8859-9" "Q")
58 (list (list lc-ascii lc-jp) "ISO-2022-JP" "B")
59 (list (list lc-ascii lc-kr) "EUC-KR" "B")
63 lc-ltn1 lc-grk) "ISO-2022-JP-2" "B")
68 lc-ltn1 lc-grk) "ISO-2022-INT-1" "B")
71 (defvar mime/unknown-charset-rule '("ISO-2022-INT-1" "B"))
77 (defvar mime/lc-charset-and-encoding-alist
80 (cons lc-jp '("ISO-2022-JP" . "B"))
81 (cons lc-cn '("ISO-2022-CN" . "B"))
82 (cons lc-kr '("EUC-KR" . "B"))
83 (cons lc-ltn1 '("ISO-8859-1" . "Q"))
84 (cons lc-ltn2 '("ISO-8859-2" . "Q"))
85 (cons lc-ltn3 '("ISO-8859-3" . "Q"))
86 (cons lc-ltn4 '("ISO-8859-4" . "Q"))
87 (cons lc-crl '("ISO-8859-5" . "B"))
88 ;;;(cons lc-arb '("ISO-8859-6" . "B"))
89 (cons lc-grk '("ISO-8859-7" . "B"))
90 (cons lc-hbw '("ISO-8859-8" . "B"))
91 (cons lc-ltn5 '("ISO-8859-9" . "Q"))
94 (defvar mime/latin-lc-list
95 (list lc-ascii lc-ltn1 lc-ltn2 lc-ltn3 lc-ltn4 lc-ltn5))
97 (defvar mime/charset-lc-alist
99 (cons "ISO-8859-1" lc-ltn1) ; Latin-1
100 (cons "ISO-8859-2" lc-ltn2) ; Latin-2
101 (cons "ISO-8859-3" lc-ltn3) ; Latin-3
102 (cons "ISO-8859-4" lc-ltn4) ; Latin-4
103 (cons "ISO-8859-5" lc-crl ) ; Cyrillic
104 ;;;(cons "ISO-8859-6" lc-arb ) ; Arabic
105 (cons "ISO-8859-7" lc-grk ) ; Greek
106 (cons "ISO-8859-8" lc-hbw ) ; Hebrew
107 (cons "ISO-8859-9" lc-ltn5) ; Latin-5
110 (defun mime/set-charset-and-encoding (lc cs charset encoding)
111 (setq mime/lc-charset-and-encoding-alist
112 (put-alist lc (cons charset encoding)
113 mime/lc-charset-and-encoding-alist))
115 (setq mime/charset-coding-system-alist
116 (put-alist charset cs mime/charset-coding-system-alist))
117 (setq mime/charset-lc-alist
118 (put-alist charset lc mime/charset-lc-alist))
122 ;;; (mime/set-charset-and-encoding lc-kr *euc-kr* "EUC-KR" "B")
123 ;;; (mime/set-charset-and-encoding lc-koi8 nil "KOI8" "B")
126 (defun mime/remove-leading-character (str)
127 (let ((dest "") (i 0) (len (length str)) chr)
129 (setq chr (elt str i))
132 (setq dest (concat dest (char-to-string chr)))
136 (setq dest (concat dest (char-to-string (elt str (+ i 1)))))
142 (defun mime/insert-leading-character (str lc)
143 (let ((lc-str (char-to-string lc))
145 (i 0) (len (length str))
148 (setq chr (elt str i))
149 (setq chr-str (char-to-string chr))
150 (setq dest (concat dest
153 (concat lc-str chr-str)
163 (defun mime/convert-string-to-emacs (charset str)
164 (let ((cs (cdr (assoc charset mime/charset-coding-system-alist))))
166 (code-convert-string str cs *internal*)
169 (let ((lc (cdr (assoc charset mime/charset-lc-alist))))
171 (mime/insert-leading-character str lc)
175 (defun mime/convert-string-from-emacs (str charset)
176 (let ((cs (cdr (assoc charset mime/charset-coding-system-alist))))
178 (code-convert-string str *internal* cs)
181 (if (assoc charset mime/charset-lc-alist)
182 (mime/remove-leading-character str)
186 (defun mime/code-convert-region-to-emacs (beg end charset &optional encoding)
187 (if (stringp charset)
189 (setq charset (upcase charset))
190 (let ((ct (cdr (assoc charset mime/charset-coding-system-alist))))
192 (code-convert beg end ct *internal*)
194 (if mime/default-coding-system
195 (code-convert beg end mime/default-coding-system *internal*)
204 (run-hooks 'tm-mule-load-hook)