2 ;;; $Id: tm-rich.el,v 1.2 1994/10/26 15:57:51 morioka Exp $
9 (if (and (>= (string-to-int emacs-version) 19) window-system)
13 (defun mime/set-face-region (b e face)
14 (let ((sym (intern face)))
18 (if (member sym (face-list))
20 (hilit-unhighlight-region b e)
21 (hilit-region-set-face b e sym)
25 (defun mime/set-face-region (beg end sym)
29 (defvar mime/text/enriched-face-list
30 '("bold" "italic" "fixed" "underline"))
32 (defun mime/decode-text/enriched-region (beg end)
36 (narrow-to-region beg end)
38 (let (cmd (fb (point)) fe b e)
39 (while (re-search-forward
40 "[ \t\n\r]*<[^<>\n\r \t]+>[ \t\n\r]*" nil t)
41 (setq cmd (buffer-substring (match-beginning 0) (match-end 0)))
43 (string-match "^[ \t\n\r]*<" cmd)
44 (setq cmd (substring cmd (match-end 0)))
45 (string-match ">[ \t\n\r]*$" cmd)
46 (setq cmd (substring cmd 0 (match-beginning 0)))
47 (cond ((string= cmd "nl")
48 (fill-region fb (point) t)
52 ((member (downcase cmd) mime/text/enriched-face-list)
59 (if (re-search-forward (concat "[ \t\n\r]*</"
64 (setq e (- (point) 1))
68 (mime/set-face-region b e cmd)
70 (fill-region fb (point) t)
73 (defun mime/decode-text/enriched (ctl)
77 (let ((beg (point-min)) (end (point-max)))
78 (goto-char (point-min))
79 (if (search-forward "\n\n" nil t)
80 (setq beg (match-end 0))
82 (mime/decode-text/enriched-region beg end)
86 (set-alist 'mime/content-filter-alist
87 "text/enriched" (function mime/decode-text/enriched))
89 (set-alist 'mime/content-filter-alist
90 "text/richtext" (function mime/decode-text/enriched))