comparison lisp/apel/tinyrich.el @ 177:6075d714658b r20-3b15

Import from CVS: tag r20-3b15
author cvs
date Mon, 13 Aug 2007 09:51:16 +0200
parents
children
comparison
equal deleted inserted replaced
176:6866abce6aaf 177:6075d714658b
1 ;;;
2 ;;; $Id: tinyrich.el,v 1.2 1997/07/26 22:09:38 steve 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-viewer/face-list-for-text/enriched
9 (cond ((and (>= emacs-major-version 19) window-system)
10 '(bold italic fixed underline)
11 )
12 ((and (boundp 'NEMACS) NEMACS)
13 '("bold" "italic" "underline")
14 )))
15
16 (defun enriched-decode (beg end)
17 (interactive "*r")
18 (save-excursion
19 (save-restriction
20 (narrow-to-region beg end)
21 (goto-char beg)
22 (while (re-search-forward "[ \t]*\\(\n+\\)[ \t]*" nil t)
23 (let ((str (buffer-substring (match-beginning 1)
24 (match-end 1))))
25 (if (string= str "\n")
26 (replace-match " ")
27 (replace-match (substring str 1))
28 )))
29 (goto-char beg)
30 (let (cmd sym str (fb (point)) fe b e)
31 (while (re-search-forward "<\\(<\\|[^<>\n\r \t]+>\\)" nil t)
32 (setq b (match-beginning 0))
33 (setq cmd (buffer-substring b (match-end 0)))
34 (if (string= cmd "<<")
35 (replace-match "<")
36 (replace-match "")
37 (setq cmd (downcase (substring cmd 1 (- (length cmd) 1))))
38 )
39 (setq sym (intern cmd))
40 (cond ((eq sym 'param)
41 (setq b (point))
42 (save-excursion
43 (save-restriction
44 (if (search-forward "</param>" nil t)
45 (progn
46 (replace-match "")
47 (setq e (point))
48 )
49 (setq e end)
50 )))
51 (delete-region b e)
52 )
53 ((memq sym mime-viewer/face-list-for-text/enriched)
54 (setq b (point))
55 (save-excursion
56 (save-restriction
57 (if (re-search-forward (concat "</" cmd ">") nil t)
58 (progn
59 (replace-match "")
60 (setq e (point))
61 )
62 (setq e end)
63 )))
64 (tm:set-face-region b e sym)
65 )))
66 (goto-char (point-max))
67 (if (not (eq (preceding-char) ?\n))
68 (insert "\n")
69 )
70 ))))
71
72
73 ;;; @ text/richtext <-> text/enriched converter
74 ;;;
75
76 (defun richtext-to-enriched-region (beg end)
77 "Convert the region of text/richtext style to text/enriched style."
78 (save-excursion
79 (save-restriction
80 (narrow-to-region beg end)
81 (goto-char (point-min))
82 (let (b e i)
83 (while (re-search-forward "[ \t]*<comment>" nil t)
84 (setq b (match-beginning 0))
85 (delete-region b
86 (if (re-search-forward "</comment>[ \t]*" nil t)
87 (match-end 0)
88 (point-max)
89 ))
90 )
91 (goto-char (point-min))
92 (while (re-search-forward "\n\n+" nil t)
93 (replace-match "\n")
94 )
95 (goto-char (point-min))
96 (while (re-search-forward "[ \t\n]*<nl>[ \t\n]*" nil t)
97 (setq b (match-beginning 0))
98 (setq e (match-end 0))
99 (setq i 1)
100 (while (looking-at "[ \t\n]*<nl>[ \t\n]*")
101 (setq e (match-end 0))
102 (setq i (1+ i))
103 (goto-char e)
104 )
105 (delete-region b e)
106 (while (>= i 0)
107 (insert "\n")
108 (setq i (1- i))
109 ))
110 (goto-char (point-min))
111 (while (search-forward "<lt>" nil t)
112 (replace-match "<<")
113 )
114 ))))
115
116 (defun enriched-to-richtext-region (beg end)
117 "Convert the region of text/enriched style to text/richtext style."
118 (save-excursion
119 (save-restriction
120 (goto-char beg)
121 (and (search-forward "text/enriched")
122 (replace-match "text/richtext"))
123 (search-forward "\n\n")
124 (narrow-to-region (match-end 0) end)
125 (let (str n)
126 (goto-char (point-min))
127 (while (re-search-forward "\n\n+" nil t)
128 (setq str (buffer-substring (match-beginning 0)
129 (match-end 0)))
130 (setq n (1- (length str)))
131 (setq str "")
132 (while (> n 0)
133 (setq str (concat str "<nl>\n"))
134 (setq n (1- n))
135 )
136 (replace-match str)
137 )
138 (goto-char (point-min))
139 (while (search-forward "<<" nil t)
140 (replace-match "<lt>")
141 )
142 ))))
143
144
145 ;;; @ encoder and decoder
146 ;;;
147
148 (defun richtext-decode (beg end)
149 (save-restriction
150 (narrow-to-region beg end)
151 (richtext-to-enriched-region beg (point-max))
152 (enriched-decode beg (point-max))
153 ))
154
155 ;; (defun richtext-encode (beg end)
156 ;; (save-restriction
157 ;; (narrow-to-region beg end)
158 ;; (enriched-encode beg (point-max))
159 ;; (enriched-to-richtext-region beg (point-max))
160 ;; ))
161
162
163 ;;; @ end
164 ;;;
165
166 (provide 'tinyrich)