;; Created: 1994/7/13
;; Renamed: 1994/8/31 from tm-body.el
;; Renamed: 1997/02/19 from tm-view.el
-;; Version: $Revision: 0.85 $
+;; Version: $Revision: 0.96 $
;; Keywords: MIME, multimedia, mail, news
;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
;;;
(defconst mime-view-RCS-ID
- "$Id: mime-view.el,v 0.85 1997-05-07 09:33:48 morioka Exp $")
+ "$Id: mime-view.el,v 0.96 1997-07-03 11:58:50 morioka Exp $")
-(defconst mime-view-version (get-version-string mime-view-RCS-ID))
+(defconst mime-view-version
+ `,(get-version-string mime-view-RCS-ID))
+
+(defconst mime-view-version-name
+ `,(concat "SEMI MIME-View " mime-view-version
+ " (" semi-version-name ")"))
;;; @ variables
;;;
-(defvar mime/content-decoding-condition
+(defvar mime-acting-condition
'(((type . "text/plain")
(method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
(mode "play" "print")
(method . mime-display-caesar)
(mode . "play")
)
+ ((type . "text/x-rot13-47-48")
+ (method . mime-display-caesar)
+ (mode . "play")
+ )
((type . "audio/basic")
(method "tm-au" nil 'file 'type 'encoding 'mode 'name)
(mode . "play")
(method "tm-image" nil 'file 'type 'encoding 'mode 'name)
(mode "play" "print")
)
+ ((type . "image/png")
+ (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
+ (mode "play" "print")
+ )
((type . "image/tiff")
(method "tm-image" nil 'file 'type 'encoding 'mode 'name)
(mode "play" "print")
;; 'file '"access-type" '"name" '"site" '"directory"))
((type . "message/external-body")
("access-type" . "anon-ftp")
- (method . mime-article/decode-message/external-ftp)
+ (method . mime-display-message/external-ftp)
)
((type . "message/rfc822")
(method . mime-article/view-message/rfc822)
(mode . "play")
)
((type . "message/partial")
- (method . mime-article/decode-message/partial)
+ (method . mime-display-message/partial)
(mode . "play")
)
(defun mime-view-insert-entity-button (rcnum cinfo ctype params subj encoding)
"Insert entity-button."
- (save-restriction
- (narrow-to-region (point)(point))
- (let ((access-type (assoc "access-type" params))
- (num (or (cdr (assoc "x-part-number" params))
- (if (consp rcnum)
- (mapconcat (function
- (lambda (num)
- (format "%s" (1+ num))
- ))
- (reverse rcnum) ".")
- "0"))
- ))
- (cond (access-type
- (let ((server (assoc "server" params)))
- (setq access-type (cdr access-type))
- (if server
- (insert (format "[%s %s ([%s] %s)]\n" num subj
- access-type (cdr server)))
- (let ((site (cdr (assoc "site" params)))
- (dir (cdr (assoc "directory" params)))
- )
- (insert (format "[%s %s ([%s] %s:%s)]\n" num subj
- access-type site dir))
- )))
- )
- (t
- (let ((charset (cdr (assoc "charset" params))))
- (insert (concat "[" num " " subj))
+ (mime-insert-button
+ (let ((access-type (assoc "access-type" params))
+ (num (or (cdr (assoc "x-part-number" params))
+ (if (consp rcnum)
+ (mapconcat (function
+ (lambda (num)
+ (format "%s" (1+ num))
+ ))
+ (reverse rcnum) ".")
+ "0"))
+ ))
+ (cond (access-type
+ (let ((server (assoc "server" params)))
+ (setq access-type (cdr access-type))
+ (if server
+ (format "%s %s ([%s] %s)"
+ num subj access-type (cdr server))
+ (let ((site (cdr (assoc "site" params)))
+ (dir (cdr (assoc "directory" params)))
+ )
+ (format "%s %s ([%s] %s:%s)"
+ num subj access-type site dir)
+ )))
+ )
+ (t
+ (let ((charset (cdr (assoc "charset" params))))
+ (concat
+ num " " subj
(let ((rest
(concat " <" ctype
(if charset
(concat "; " charset)
(if encoding (concat " (" encoding ")"))
)
- ">]\n")))
+ ">")))
(if (>= (+ (current-column)(length rest))(window-width))
- (insert "\n\t")
- )
- (insert rest)
- ))))
- )
- (mime-add-button (point-min)(1- (point-max))
- (function mime-view-play-current-entity))
- ))
+ "\n\t")
+ rest)))
+ )))
+ (function mime-view-play-current-entity))
+ )
(defun mime-view-entity-button-function
(rcnum cinfo ctype params subj encoding)
(or obuf
(setq obuf (concat "*Preview-" (buffer-name the-buf) "*")))
(set-buffer (get-buffer-create obuf))
- (setq buffer-read-only nil)
- (widen)
- (erase-buffer)
- (setq mime-raw-buffer the-buf)
- (setq mime-view-original-major-mode mode)
- (setq major-mode 'mime-view-mode)
- (setq mode-name "MIME-View")
- (while pcl
- (mime-view-display-entity (car pcl) cinfo the-buf obuf)
- (setq pcl (cdr pcl))
+ (let ((inhibit-read-only t))
+ ;;(setq buffer-read-only nil)
+ (widen)
+ (erase-buffer)
+ (setq mime-raw-buffer the-buf)
+ (setq mime-view-original-major-mode mode)
+ (setq major-mode 'mime-view-mode)
+ (setq mode-name "MIME-View")
+ (while pcl
+ (mime-view-display-entity (car pcl) cinfo the-buf obuf)
+ (setq pcl (cdr pcl))
+ )
+ (set-buffer-modified-p nil)
)
- (set-buffer-modified-p nil)
(setq buffer-read-only t)
(set-buffer the-buf)
)
rcnum cinfo ctype params subj encoding)
)
((equal ctype "message/partial")
- (mime-preview/display-message/partial)
+ (mime-view-insert-message/partial-button)
)
((and (null rcnum)
(null (mime::content-info/children cinfo))
)
)))
-(defun mime-preview/display-message/partial ()
+(defun mime-view-insert-message/partial-button ()
(save-restriction
(goto-char (point-max))
(if (not (search-backward "\n\n" nil t))
(insert "\n")
)
- (let ((be (point-max)))
- (narrow-to-region be be)
- (insert mime-view-announcement-for-message/partial)
- (mime-add-button (point-min)(point-max)
- (function mime-view-play-current-entity))
- )))
+ (goto-char (point-max))
+ (narrow-to-region (point-max)(point-max))
+ (insert mime-view-announcement-for-message/partial)
+ (mime-add-button (point-min)(point-max)
+ (function mime-view-play-current-entity))
+ ))
(defun mime-article/get-uu-filename (param &optional encoding)
(if (member (or encoding
"h" (function mime-view-show-summary))
(define-key mime-view-mode-map
"\C-c\C-x" (function mime-view-kill-buffer))
+ ;; (define-key mime-view-mode-map
+ ;; "<" (function beginning-of-buffer))
+ ;; (define-key mime-view-mode-map
+ ;; ">" (function end-of-buffer))
+ (define-key mime-view-mode-map
+ "?" (function describe-mode))
(define-key mime-view-mode-map
- "<" (function beginning-of-buffer))
+ [tab] (function mime-view-move-to-next))
(define-key mime-view-mode-map
- ">" (function end-of-buffer))
+ [delete] (function mime-view-scroll-down-entity))
(define-key mime-view-mode-map
- "?" (function describe-mode))
+ [backspace] (function mime-view-scroll-down-entity))
(if (functionp default)
- (setq mime-view-mode-map
- (append mime-view-mode-map (list (cons t default)))
- ))
+ (cond (running-xemacs
+ (set-keymap-default-binding mime-view-mode-map default)
+ )
+ (t
+ (setq mime-view-mode-map
+ (append mime-view-mode-map (list (cons t default))))
+ )))
(if mouse-button-2
(define-key mime-view-mode-map
mouse-button-2 (function mime-button-dispatcher))
"Extract current entity into file (maybe).
It decodes current entity to call internal or external method as
\"extract\" mode. The method is selected from variable
-`mime/content-decoding-condition'."
+`mime-acting-condition'."
(interactive)
(mime-view-play-current-entity "extract")
)
"Print current entity (maybe).
It decodes current entity to call internal or external method as
\"print\" mode. The method is selected from variable
-`mime/content-decoding-condition'."
+`mime-acting-condition'."
(interactive)
(mime-view-play-current-entity "print")
)