tm 6.67
[elisp/tm.git] / tinyrich.el
1 ;;;
2 ;;; $Id: tinyrich.el,v 1.1 1995/07/05 16:21:36 morioka Exp $
3 ;;;
4 ;;;          by MORIOKA Tomohiko  <morioka@jaist.ac.jp>
5 ;;; modified by YAMATE Keiichirou <ics9118@sem1.info.osaka-cu.ac.jp>
6 ;;;
7
8 (defvar mime/text/enriched-face-list
9   '("bold" "italic" "fixed" "underline"))
10
11 (cond ((and (>= emacs-major-version 19) window-system)
12        (defun mime/set-face-region (b e face)
13          (let ((sym (intern face)))
14            (if (member sym (face-list))
15                (let ((overlay (make-overlay b e)))
16                  (overlay-put overlay 'face 'bold)
17                  ))))
18        )
19       ((and (boundp 'NEMACS) NEMACS)
20        (setq mime/available-face-list
21              '("bold" "italic" "underline"))
22        (setq mime/available-face-attribute-alist
23              '(("bold"      . inversed-region)
24                ("italic"    . underlined-region)
25                ("underline" . underlined-region)
26                ))
27        (defun mime/set-face-region (beg end sym)
28          (attribute-add-narrow-attribute
29           (cdr (assoc sym mime/available-face-attribute-alist))
30           beg end))
31        )
32       (t
33        (setq mime/text/richtext-face-list nil)
34        (defun mime/set-face-region (beg end sym)
35          )
36        ))
37
38 (defun enriched-decode (beg end)
39   (interactive "*r")
40   (save-excursion
41     (save-restriction
42       (narrow-to-region beg end)
43       (goto-char beg)
44       (while (re-search-forward "[ \t]*\\(\n+\\)[ \t]*" nil t)
45         (let ((str (buffer-substring (match-beginning 1)
46                                      (match-end 1))))
47           (if (string= str "\n")
48               (replace-match " ")
49             (replace-match (substring str 1))
50             )))
51       (goto-char beg)
52       (let (cmd str (fb (point)) fe b e)
53         (while (re-search-forward "<\\(<\\|[^<>\n\r \t]+>\\)" nil t)
54           (setq b (match-beginning 0))
55           (setq cmd (buffer-substring b (match-end 0)))
56           (if (string= cmd "<<")
57               (replace-match "<")
58             (replace-match "")
59             (setq cmd (downcase (substring cmd 1 (- (length cmd) 1))))
60             )
61           (cond ((string= cmd "param")
62                  (setq b (point))
63                  (save-excursion
64                    (save-restriction
65                      (if (search-forward "</param>" nil t)
66                          (progn
67                            (replace-match "")
68                            (setq e (point))
69                            )
70                        (setq e end)
71                        )))
72                  (delete-region b e)
73                  )
74                 ((member cmd mime/text/enriched-face-list)
75                  (setq b (point))
76                  (save-excursion
77                    (save-restriction
78                      (if (re-search-forward (concat "</" cmd ">") nil t)
79                          (progn
80                            (replace-match "")
81                            (setq e (point))
82                            )
83                        (setq e end)
84                        )))
85                  (mime/set-face-region b e cmd)
86                  )))
87         (goto-char (point-max))
88         (if (not (eq (preceding-char) ?\n))
89             (insert "\n")
90           )
91         ))))
92
93 (provide 'tinyrich)