;;; ;;; $Id: tm-rich.el,v 2.1 1994/10/31 05:05:51 morioka Exp $ ;;; ;;; by MORIOKA Tomohiko ;;; modified by YAMATE Keiichirou ;;; (provide 'tm-rich) (require 'tm-view) (defvar mime/text/enriched-face-list '("bold" "italic" "fixed" "underline")) (cond ((and (>= (string-to-int emacs-version) 19) window-system) (require 'hilit19) (defun mime/set-face-region (b e face) (let ((sym (intern face))) (if (eq sym 'italic) (setq sym 'modeline) ) (if (member sym (face-list)) (progn (hilit-unhighlight-region b e) (hilit-region-set-face b e sym) )))) ) ((and (boundp 'NEMACS) NEMACS) (setq mime/text/enriched-face-list '("bold" "italic" "underline")) (setq mime/text/enriched-face-attribute-alist '(("bold" . inversed-region) ("italic" . underlined-region) ("underline" . underlined-region) )) (defun mime/set-face-region (beg end sym) (attribute-add-narrow-attribute (cdr (assoc sym mime/text/enriched-face-attribute-alist)) beg end)) ) (t (setq mime/text/enriched-face-list nil) (defun mime/set-face-region (beg end sym) ) )) (defun mime/decode-text/enriched-region (beg end) (interactive "*r") (save-excursion (save-restriction (narrow-to-region beg end) (while (search-forward "\n" nil t) (replace-match "") ) (goto-char beg) (let (cmd str (fb (point)) fe b e) (while (re-search-forward "<[^<>\n\r \t]+>" nil t) (setq b (match-beginning 0)) (setq cmd (buffer-substring (+ b 1) (- (match-end 0) 1))) (replace-match "") (cond ((string= cmd "nl") (if (= fb b) (insert "\n") (fill-region fb b t) ) (setq fb (point)) ) ((member (downcase cmd) mime/text/enriched-face-list) (setq b (point)) (save-excursion (save-restriction (if (re-search-forward (concat "") nil t) (progn (replace-match "") (setq e (point)) ) (setq e end) ))) (mime/set-face-region b e cmd) ))) (fill-region fb (point-max) t) (goto-char (point-max)) (if (not (eq (char-before (point)) ?\n)) (insert "\n") ) )))) (defun mime/decode-text/enriched (&optional ctl) (interactive) (save-excursion (save-restriction (let ((beg (point-min)) (end (point-max))) (goto-char (point-min)) (if (search-forward "\n\n" nil t) (setq beg (match-end 0)) ) (mime/decode-text/enriched-region beg end) )))) (set-alist 'mime/content-filter-alist "text/enriched" (function mime/decode-text/enriched)) (set-alist 'mime/content-filter-alist "text/richtext" (function mime/decode-text/enriched))