X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=tm-mule.el;h=61d81e2b338f6a690191645ad9af0eb8f673635d;hb=8e18eb1fd95180a6ea115a00ce2f045815809b49;hp=9f3b17749051cd728d76375a72c9e13613b17aec;hpb=301f851471e283c37a4098d9eefd28cb454193a5;p=elisp%2Ftm.git diff --git a/tm-mule.el b/tm-mule.el index 9f3b177..61d81e2 100644 --- a/tm-mule.el +++ b/tm-mule.el @@ -1,39 +1,39 @@ ;;; -;;; $Id: tm-mule.el,v 5.0 1994/10/19 23:47:58 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 +;;; 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: -(provide 'tm-mule) - +(require 'emu) (require 'tl-list) -(require 'tl-mule) -(if (not (fboundp 'member)) - (require 'tl-18) - ) -;;; @ variables +;;; @ coding-system ;;; -(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 '("ISO-2022-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*) @@ -41,100 +41,85 @@ ("ISO-2022-CN" . *iso-2022-ss2-7*) ("ISO-2022-KR" . *iso-2022-kr*) ("EUC-KR" . *euc-kr*) + ("ISO-8859-1" . *ctext*) + ("ISO-8859-2" . *iso-8859-2*) + ("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) + (progn + (setq charset (upcase charset)) + (let ((ct (cdr (assoc charset mime/charset-coding-system-alist)))) + (if ct + (code-convert beg end ct *internal*) + ))) + (if mime/default-coding-system + (code-convert beg end mime/default-coding-system *internal*) + ))) + + +;;; @ end +;;; + +(provide 'tm-mule) + +(run-hooks 'tm-mule-load-hook) + +;;; tm-mule.el ends here