2 ;;; $Id: tm-rich.el,v 2.2 1994/10/31 07:44: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 (re-search-forward "[\n]+" nil t)
54 (let ((str (buffer-substring (match-beginning 0)
56 (if (string= str "\n")
58 (replace-match (substring str 1))
61 (let (cmd str (fb (point)) fe b e)
62 (while (re-search-forward "<\\(<\\|[^<>\n\r \t]+>\\)" nil t)
63 (setq b (match-beginning 0))
64 (setq cmd (buffer-substring b (match-end 0)))
65 (if (string= cmd "<<")
68 (setq cmd (downcase (substring cmd 1 (- (length cmd) 1))))
70 (cond ((string= cmd "param")
74 (if (search-forward "</param>" nil t)
83 ((member cmd mime/text/enriched-face-list)
87 (if (re-search-forward (concat "</" cmd ">") nil t)
94 (mime/set-face-region b e cmd)
96 (goto-char (point-max))
97 (if (not (eq (preceding-char) ?\n))
102 (defun mime/decode-text/enriched (&optional ctl)
106 (let ((beg (point-min)) (end (point-max)))
107 (goto-char (point-min))
108 (if (search-forward "\n\n" nil t)
109 (setq beg (match-end 0))
111 (mime/decode-text/enriched-region beg end)
115 (set-alist 'mime/content-filter-alist
116 "text/enriched" (function mime/decode-text/enriched))
118 (set-alist 'mime/content-filter-alist
119 "text/richtext" (function mime/decode-text/enriched))