;;;
-;;; $Id: tinyrich.el,v 1.1 1995/07/05 16:21:36 morioka Exp $
+;;; $Id: tinyrich.el,v 5.0 1995/09/20 14:45:56 morioka Exp $
;;;
;;; by MORIOKA Tomohiko <morioka@jaist.ac.jp>
;;; modified by YAMATE Keiichirou <ics9118@sem1.info.osaka-cu.ac.jp>
;;;
-(defvar mime/text/enriched-face-list
- '("bold" "italic" "fixed" "underline"))
-
-(cond ((and (>= emacs-major-version 19) window-system)
- (defun mime/set-face-region (b e face)
- (let ((sym (intern face)))
- (if (member sym (face-list))
- (let ((overlay (make-overlay b e)))
- (overlay-put overlay 'face 'bold)
- ))))
- )
- ((and (boundp 'NEMACS) NEMACS)
- (setq mime/available-face-list
- '("bold" "italic" "underline"))
- (setq mime/available-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/available-face-attribute-alist))
- beg end))
- )
- (t
- (setq mime/text/richtext-face-list nil)
- (defun mime/set-face-region (beg end sym)
+(defvar mime-viewer/face-list-for-text/enriched
+ (cond ((and (>= emacs-major-version 19) window-system)
+ '(bold italic fixed underline)
)
- ))
+ ((and (boundp 'NEMACS) NEMACS)
+ '("bold" "italic" "underline")
+ )))
(defun enriched-decode (beg end)
(interactive "*r")
(replace-match (substring str 1))
)))
(goto-char beg)
- (let (cmd str (fb (point)) fe b e)
+ (let (cmd sym 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 (match-end 0)))
(replace-match "")
(setq cmd (downcase (substring cmd 1 (- (length cmd) 1))))
)
- (cond ((string= cmd "param")
+ (setq sym (intern cmd))
+ (cond ((eq sym 'param)
(setq b (point))
(save-excursion
(save-restriction
)))
(delete-region b e)
)
- ((member cmd mime/text/enriched-face-list)
+ ((memq sym mime-viewer/face-list-for-text/enriched)
(setq b (point))
(save-excursion
(save-restriction
)
(setq e end)
)))
- (mime/set-face-region b e cmd)
+ (tm:set-face-region b e sym)
)))
(goto-char (point-max))
(if (not (eq (preceding-char) ?\n))
)
))))
+
+;;; @ text/richtext <-> text/enriched converter
+;;;
+
+(defun richtext-to-enriched-region (beg end)
+ "Convert the region of text/richtext style to text/enriched style."
+ (save-excursion
+ (save-restriction
+ (narrow-to-region beg end)
+ (goto-char (point-min))
+ (let (b e i)
+ (while (re-search-forward "[ \t]*<comment>" nil t)
+ (setq b (match-beginning 0))
+ (delete-region b
+ (if (re-search-forward "</comment>[ \t]*" nil t)
+ (match-end 0)
+ (point-max)
+ ))
+ )
+ (goto-char (point-min))
+ (while (re-search-forward "\n\n+" nil t)
+ (replace-match "\n")
+ )
+ (goto-char (point-min))
+ (while (re-search-forward "[ \t\n]*<nl>[ \t\n]*" nil t)
+ (setq b (match-beginning 0))
+ (setq e (match-end 0))
+ (setq i 1)
+ (while (looking-at "[ \t\n]*<nl>[ \t\n]*")
+ (setq e (match-end 0))
+ (setq i (1+ i))
+ (goto-char e)
+ )
+ (delete-region b e)
+ (while (>= i 0)
+ (insert "\n")
+ (setq i (1- i))
+ ))
+ (goto-char (point-min))
+ (while (search-forward "<lt>" nil t)
+ (replace-match "<<")
+ )
+ ))))
+
+(defun enriched-to-richtext-region (beg end)
+ "Convert the region of text/enriched style to text/richtext style."
+ (save-excursion
+ (save-restriction
+ (goto-char beg)
+ (and (search-forward "text/enriched")
+ (replace-match "text/richtext"))
+ (search-forward "\n\n")
+ (narrow-to-region (match-end 0) end)
+ (let (str n)
+ (goto-char (point-min))
+ (while (re-search-forward "\n\n+" nil t)
+ (setq str (buffer-substring (match-beginning 0)
+ (match-end 0)))
+ (setq n (1- (length str)))
+ (setq str "")
+ (while (> n 0)
+ (setq str (concat str "<nl>\n"))
+ (setq n (1- n))
+ )
+ (replace-match str)
+ )
+ (goto-char (point-min))
+ (while (search-forward "<<" nil t)
+ (replace-match "<lt>")
+ )
+ ))))
+
+
+;;; @ encoder and decoder
+;;;
+
+(defun richtext-decode (beg end)
+ (save-restriction
+ (narrow-to-region beg end)
+ (richtext-to-enriched-region beg (point-max))
+ (enriched-decode beg (point-max))
+ ))
+
+;; (defun richtext-encode (beg end)
+;; (save-restriction
+;; (narrow-to-region beg end)
+;; (enriched-encode beg (point-max))
+;; (enriched-to-richtext-region beg (point-max))
+;; ))
+
+
+;;; @ end
+;;;
+
(provide 'tinyrich)