2 ;;; $Id: tm-rich.el,v 2.1 1994/10/31 05:05:51 morioka Exp $
4 ;;; by MORIOKA Tomohiko <morioka@jaist.ac.jp>
5 ;;; modified by YAMATE Keiichirou <ics9118@sem1.info.osaka-cu.ac.jp>
12 (defvar mime/text/enriched-face-list
13 '("bold" "italic" "fixed" "underline"))
15 (cond ((and (>= (string-to-int emacs-version) 19) window-system)
17 (defun mime/set-face-region (b e face)
18 (let ((sym (intern face)))
22 (if (member sym (face-list))
24 (hilit-unhighlight-region b e)
25 (hilit-region-set-face b e sym)
28 ((and (boundp 'NEMACS) NEMACS)
29 (setq mime/text/enriched-face-list
30 '("bold" "italic" "underline"))
31 (setq mime/text/enriched-face-attribute-alist
32 '(("bold" . inversed-region)
33 ("italic" . underlined-region)
34 ("underline" . underlined-region)
36 (defun mime/set-face-region (beg end sym)
37 (attribute-add-narrow-attribute
38 (cdr (assoc sym mime/text/enriched-face-attribute-alist))
42 (setq mime/text/enriched-face-list
44 (defun mime/set-face-region (beg end sym)
48 (defun mime/decode-text/enriched-region (beg end)
52 (narrow-to-region beg end)
53 (while (search-forward "\n" nil t)
57 (let (cmd str (fb (point)) fe b e)
58 (while (re-search-forward "<[^<>\n\r \t]+>" nil t)
59 (setq b (match-beginning 0))
60 (setq cmd (buffer-substring (+ b 1)
63 (cond ((string= cmd "nl")
70 ((member (downcase cmd) mime/text/enriched-face-list)
74 (if (re-search-forward (concat "</" cmd ">") nil t)
81 (mime/set-face-region b e cmd)
83 (fill-region fb (point-max) t)
84 (goto-char (point-max))
85 (if (not (eq (char-before (point)) ?\n))
90 (defun mime/decode-text/enriched (&optional ctl)
94 (let ((beg (point-min)) (end (point-max)))
95 (goto-char (point-min))
96 (if (search-forward "\n\n" nil t)
97 (setq beg (match-end 0))
99 (mime/decode-text/enriched-region beg end)
103 (set-alist 'mime/content-filter-alist
104 "text/enriched" (function mime/decode-text/enriched))
106 (set-alist 'mime/content-filter-alist
107 "text/richtext" (function mime/decode-text/enriched))