;;;
-;;; $Id: tm-mule.el,v 6.2 1995/06/19 18:54:53 morioka Exp $
+;;; tm-mule.el --- tm definitions depended on Mule
;;;
+;;; Copyright (C) 1995 Free Software Foundation, Inc.
+;;; Copyright (C) 1994 .. 1996 MORIOKA Tomohiko
+;;;
+;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;;; Version:
+;;; $Id: tm-mule.el,v 7.9 1996/04/16 13:42:44 morioka Exp $
+;;; Keywords: mail, news, MIME, multimedia, multilingual, encoded-word
+;;;
+;;; This file is part of tm (Tools for MIME).
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 2, or
+;;; (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with This program. If not, write to the Free Software
+;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;;;
+;;; Code:
+(require 'emu)
(require 'tl-list)
-(require 'tl-mule)
-(if (not (fboundp 'member))
- (require 'tl-18)
- )
-;;; @ variables
+;;; @ coding-system
;;;
-(defvar mime/default-coding-system *ctext*)
-
-(defvar mime/lc-charset-and-encoding-alist
- (list
- (cons lc-ascii nil)
- (cons lc-jp '("ISO-2022-JP" . "B"))
- (cons lc-cn '("ISO-2022-CN" . "B"))
- (cons lc-kr '("EUC-KR" . "B"))
- (cons lc-ltn1 '("ISO-8859-1" . "Q"))
- (cons lc-ltn2 '("ISO-8859-2" . "Q"))
- (cons lc-ltn3 '("ISO-8859-3" . "Q"))
- (cons lc-ltn4 '("ISO-8859-4" . "Q"))
- (cons lc-crl '("ISO-8859-5" . "B"))
-;;;(cons lc-arb '("ISO-8859-6" . "B"))
- (cons lc-grk '("ISO-8859-7" . "B"))
- (cons lc-hbw '("ISO-8859-8" . "B"))
- (cons lc-ltn5 '("ISO-8859-9" . "Q"))
- ))
-
-(defvar mime/latin-lc-list
- (list lc-ascii lc-ltn1 lc-ltn2 lc-ltn3 lc-ltn4 lc-ltn5))
-
(defvar mime/charset-coding-system-alist
'(("ISO-2022-JP" . *iso-2022-ss2-7*)
("ISO-2022-JP-2" . *iso-2022-ss2-7*)
("ISO-8859-3" . *iso-8859-3*)
("ISO-8859-4" . *iso-8859-4*)
("ISO-8859-5" . *iso-8859-5*)
+ ("KOI8-R" . *koi8*)
("ISO-8859-7" . *iso-8859-7*)
("ISO-8859-8" . *iso-8859-8*)
("ISO-8859-9" . *iso-8859-9*)
("ISO-2022-INT-1" . *iso-2022-int-1*)
+ ("SHIFT_JIS" . *sjis*)
+ ("X-SHIFTJIS" . *sjis*)
))
-(defvar mime/charset-lc-alist
+
+;;; @ leading-character and charset
+;;;
+
+(defvar mime/lc-charset-alist
(list
- (cons "ISO-8859-1" lc-ltn1) ; Latin-1
- (cons "ISO-8859-2" lc-ltn2) ; Latin-2
- (cons "ISO-8859-3" lc-ltn3) ; Latin-3
- (cons "ISO-8859-4" lc-ltn4) ; Latin-4
- (cons "ISO-8859-5" lc-crl ) ; Cyrillic
-;;;(cons "ISO-8859-6" lc-arb ) ; Arabic
- (cons "ISO-8859-7" lc-grk ) ; Greek
- (cons "ISO-8859-8" lc-hbw ) ; Hebrew
- (cons "ISO-8859-9" lc-ltn5) ; Latin-5
+ (cons (list lc-ascii) "US-ASCII")
+ (cons (list lc-ascii lc-ltn1) "ISO-8859-1")
+ (cons (list lc-ascii lc-ltn2) "ISO-8859-2")
+ (cons (list lc-ascii lc-ltn3) "ISO-8859-3")
+ (cons (list lc-ascii lc-ltn4) "ISO-8859-4")
+;;;(cons (list lc-ascii lc-crl) "ISO-8859-5")
+ (cons (list lc-ascii lc-crl) "KOI8-R")
+ (cons (list lc-ascii lc-grk) "ISO-8859-7")
+ (cons (list lc-ascii lc-hbw) "ISO-8859-8")
+ (cons (list lc-ascii lc-ltn5) "ISO-8859-9")
+ (cons (list lc-ascii lc-jp) "ISO-2022-JP")
+ (cons (list lc-ascii lc-kr) "EUC-KR")
+ (cons (list lc-ascii
+ lc-jp lc-cn
+ lc-kr lc-jp2
+ lc-ltn1 lc-grk) "ISO-2022-JP-2")
+ (cons (list lc-ascii
+ lc-jp lc-cn
+ lc-kr lc-jp2
+ lc-cns1 lc-cns2
+ lc-ltn1 lc-grk) "ISO-2022-INT-1")
))
+(defvar mime/unknown-charset "ISO-2022-INT-1")
-;;; @ define charset and encoding
-;;;
-(defun mime/set-charset-and-encoding (lc cs charset encoding)
- (setq mime/lc-charset-and-encoding-alist
- (put-alist lc (cons charset encoding)
- mime/lc-charset-and-encoding-alist))
- (if cs
- (setq mime/charset-coding-system-alist
- (put-alist charset cs mime/charset-coding-system-alist))
- (setq mime/charset-lc-alist
- (put-alist charset lc mime/charset-lc-alist))
- ))
-;;; example
+
+;;; @ functions
;;;
-;;; (mime/set-charset-and-encoding lc-kr *euc-kr* "EUC-KR" "B")
-;;; (mime/set-charset-and-encoding lc-koi8 nil "KOI8" "B")
-
-
-(defun mime/remove-leading-character (str)
- (let ((dest "") (i 0) (len (length str)) chr)
- (while (< i len)
- (setq chr (elt str i))
- (if (< chr 128)
- (progn
- (setq dest (concat dest (char-to-string chr)))
- (setq i (+ i 1))
- )
- (progn
- (setq dest (concat dest (char-to-string (elt str (+ i 1)))))
- (setq i (+ i 2))
- ))
- )
- dest))
-
-(defun mime/insert-leading-character (str lc)
- (let ((lc-str (char-to-string lc))
- (dest "")
- (i 0) (len (length str))
- chr chr-str)
- (while (< i len)
- (setq chr (elt str i))
- (setq chr-str (char-to-string chr))
- (setq dest (concat dest
- (if (< chr 128)
- chr-str
- (concat lc-str chr-str)
- )))
- (setq i (+ i 1))
- )
- dest))
(defun mime/convert-string-to-emacs (charset str)
(let ((cs (cdr (assoc charset mime/charset-coding-system-alist))))
- (cond (cs
- (code-convert-string str cs *internal*)
- )
- (t
- (let ((lc (cdr (assoc charset mime/charset-lc-alist))))
- (if lc
- (mime/insert-leading-character str lc)
- str)
- )))))
+ (if cs
+ (code-convert-string str cs *internal*)
+ )))
(defun mime/convert-string-from-emacs (str charset)
(let ((cs (cdr (assoc charset mime/charset-coding-system-alist))))
- (cond (cs
- (code-convert-string str *internal* cs)
- )
- (t
- (if (assoc charset mime/charset-lc-alist)
- (mime/remove-leading-character str)
- str)))))
-
-;; by mol. 1993/10/4
-(defun mime/decode-encoded-text (charset encoding str)
- (mime/convert-string-to-emacs
- charset
- (cond ((string-match "^B$" encoding)
- (mime/base64-decode-string str))
- ((string-match "^Q$" encoding)
- (mime/Quoted-Printable-decode-string str))
- (t (message "unknown encoding %s" encoding) str)
- )))
-
+ (if cs
+ (code-convert-string str *internal* cs)
+ )))
(defun mime/code-convert-region-to-emacs (beg end charset &optional encoding)
(if (stringp charset)
)))
-(run-hooks 'tm-mule-load-hook)
+;;; @ end
+;;;
(provide 'tm-mule)
+
+(run-hooks 'tm-mule-load-hook)
+
+;;; tm-mule.el ends here