;;; mime-view.el --- interactive MIME viewer for GNU Emacs
-;; Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Created: 1994/7/13
;; Renamed: 1994/8/31 from tm-body.el
;; Renamed: 1997/02/19 from tm-view.el
-;; Version: $Revision: 0.118 $
;; Keywords: MIME, multimedia, mail, news
-;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
+;; This file is part of SEMI (Sophisticated Emacs MIME Interfaces).
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;;; @ version
;;;
-(defconst mime-view-RCS-ID
- "$Id: mime-view.el,v 0.118 1997-11-24 11:52:06 morioka Exp $")
-
-(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 ")"))
+(defconst mime-view-version-string
+ `,(concat "SEMI MIME-View "
+ (mapconcat #'number-to-string (cdr semi-version) ".")
+ " (" (car semi-version) ")"))
;;; @ variables
;;;
(defvar mime-acting-condition
- '(((type . "text/plain")
- (method "tm-plain" nil 'file 'type 'encoding 'mode 'name)
+ '(((type . text)(subtype . plain)
+ (method "tm-plain" nil 'file "" 'encoding 'mode 'name)
(mode "play" "print")
)
- ((type . "text/html")
- (method "tm-html" nil 'file 'type 'encoding 'mode 'name)
+ ((type . text)(subtype . html)
+ (method "tm-html" nil 'file "" 'encoding 'mode 'name)
(mode . "play")
)
- ((type . "text/x-rot13-47")
- (method . mime-display-caesar)
+ ((type . text)(subtype . x-rot13-47)
+ (method . mime-method-to-display-caesar)
(mode . "play")
)
- ((type . "text/x-rot13-47-48")
- (method . mime-display-caesar)
+ ((type . text)(subtype . x-rot13-47-48)
+ (method . mime-method-to-display-caesar)
(mode . "play")
)
- ((type . "audio/basic")
- (method "tm-au" nil 'file 'type 'encoding 'mode 'name)
+
+ ((type . audio)(subtype . basic)
+ (method "tm-au" nil 'file "" 'encoding 'mode 'name)
(mode . "play")
)
- ((type . "image/jpeg")
- (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
- (mode "play" "print")
- )
- ((type . "image/gif")
- (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")
- )
- ((type . "image/x-tiff")
- (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
- (mode "play" "print")
- )
- ((type . "image/x-xbm")
- (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
- (mode "play" "print")
- )
- ((type . "image/x-pic")
- (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
- (mode "play" "print")
- )
- ((type . "image/x-mag")
- (method "tm-image" nil 'file 'type 'encoding 'mode 'name)
+ ((type . image)
+ (method "tm-image" nil 'file "" 'encoding 'mode 'name)
(mode "play" "print")
)
- ((type . "video/mpeg")
- (method "tm-mpeg" nil 'file 'type 'encoding 'mode 'name)
+ ((type . video)(subtype . mpeg)
+ (method "tm-mpeg" nil 'file "" 'encoding 'mode 'name)
(mode . "play")
)
- ((type . "application/postscript")
- (method "tm-ps" nil 'file 'type 'encoding 'mode 'name)
+ ((type . application)(subtype . postscript)
+ (method "tm-ps" nil 'file "" 'encoding 'mode 'name)
(mode "play" "print")
)
- ((type . "application/octet-stream")
- (method "tm-file" nil 'file 'type 'encoding 'mode 'name)
- (mode "play" "print")
+ ((type . application)(subtype . octet-stream)
+ (method . mime-method-to-save)(mode "play" "print")
)
-
- ;;((type . "message/external-body")
- ;; (method "xterm" nil
- ;; "-e" "showexternal"
- ;; 'file '"access-type" '"name" '"site" '"directory"))
- ((type . "message/external-body")
+
+ ((type . message)(subtype . external-body)
("access-type" . "anon-ftp")
- (method . mime-display-message/external-ftp)
+ (method . mime-method-to-display-message/external-ftp)
)
- ((type . "message/rfc822")
- (method . mime-display-message/rfc822)
+ ((type . message)(subtype . rfc822)
+ (method . mime-method-to-display-message/rfc822)
(mode . "play")
)
- ((type . "message/partial")
- (method . mime-display-message/partial)
+ ((type . message)(subtype . partial)
+ (method . mime-method-to-store-message/partial)
(mode . "play")
)
((method "metamail" t "-m" "tm" "-x" "-d" "-z" "-e" 'file)
(mode . "play")
)
- ((method "tm-file" nil 'file 'type 'encoding 'mode 'name)
- (mode . "extract")
- )
+ ((method . mime-method-to-save)(mode . "extract"))
))
(defvar mime-view-childrens-header-showing-Content-Type-list
"\n\t")
rest)))
)))
- (function mime-view-play-current-entity))
+ (function mime-preview-play-current-entity))
)
(defun mime-view-entity-button-function (rcnum cinfo
;;; @@@ in raw buffer
;;;
-(defvar mime-raw-content-info
+(defvar mime-raw-entity-info
"Information about structure of message.
-Please use reference function `mime::content-info/SLOT-NAME' to
-reference slot of content-info. Their argument is only content-info.
+Please use reference function `mime-entity-info-SLOT' to get value of
+SLOT.
Following is a list of slots of the structure:
rcnum reversed content-number (list)
point-min beginning point of region in raw-buffer
point-max end point of region in raw-buffer
-type media-type/subtype (string or nil)
+type media-type (symbol)
+subtype media-subtype (symbol)
+type/subtype media-type/subtype (string or nil)
parameters parameter of Content-Type field (association list)
encoding Content-Transfer-Encoding (string or nil)
children entities included in this entity (list of content-infos)
-If a entity includes other entities in its body, such as multipart or
-message/rfc822, content-infos of other entities are included in
-`children', so content-info become a tree.")
-(make-variable-buffer-local 'mime-raw-content-info)
+If an entity includes other entities in its body, such as multipart or
+message/rfc822, entity-infos of other entities are included in
+`children', so entity-info become a tree.")
+(make-variable-buffer-local 'mime-raw-entity-info)
(defvar mime-view-buffer nil
"MIME View buffer corresponding with the (raw) buffer.")
(set-buffer ibuf)
))
(or mime-view-redisplay
- (setq mime-raw-content-info (mime-parse-message ctl encoding))
+ (setq mime-raw-entity-info (mime-parse-message ctl encoding))
)
- (let* ((cinfo mime-raw-content-info)
+ (let* ((cinfo mime-raw-entity-info)
(pcl (mime/flatten-content-info cinfo))
(the-buf (current-buffer))
(mode major-mode)
(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))
+ (function mime-preview-play-current-entity))
))
(defun mime-article/get-uu-filename (param &optional encoding)
(defun mime-article/point-content-number (p &optional cinfo)
(or cinfo
- (setq cinfo mime-raw-content-info)
+ (setq cinfo mime-raw-entity-info)
)
(let ((b (mime-entity-info-point-min cinfo))
(e (mime-entity-info-point-max cinfo))
(defun mime-article/cnum-to-cinfo (cn &optional cinfo)
(or cinfo
- (setq cinfo mime-raw-content-info)
+ (setq cinfo mime-raw-entity-info)
)
(if (eq cn t)
cinfo
(defun mime/flatten-content-info (&optional cinfo)
(or cinfo
- (setq cinfo mime-raw-content-info)
+ (setq cinfo mime-raw-entity-info)
)
(let ((dest (list cinfo))
(rcl (mime-entity-info-children cinfo))
(defconst mime-view-menu-title "MIME-View")
(defconst mime-view-menu-list
- '((up "Move to upper content" mime-view-move-to-upper)
- (previous "Move to previous content" mime-view-move-to-previous)
- (next "Move to next content" mime-view-move-to-next)
- (scroll-down "Scroll to previous content" mime-view-scroll-down-entity)
- (scroll-up "Scroll to next content" mime-view-scroll-up-entity)
- (play "Play Content" mime-view-play-current-entity)
+ '((up "Move to upper content" mime-preview-move-to-upper)
+ (previous "Move to previous content" mime-preview-move-to-previous)
+ (next "Move to next content" mime-preview-move-to-next)
+ (scroll-down "Scroll to previous content" mime-preview-scroll-down-entity)
+ (scroll-up "Scroll to next content" mime-preview-scroll-up-entity)
+ (play "Play Content" mime-preview-play-current-entity)
(extract "Extract Content" mime-view-extract-current-entity)
(print "Print" mime-view-print-current-entity)
(x-face "Show X Face" mime-view-display-x-face)
(make-sparse-keymap)
)))
(define-key mime-view-mode-map
- "u" (function mime-view-move-to-upper))
+ "u" (function mime-preview-move-to-upper))
(define-key mime-view-mode-map
- "p" (function mime-view-move-to-previous))
+ "p" (function mime-preview-move-to-previous))
(define-key mime-view-mode-map
- "n" (function mime-view-move-to-next))
+ "n" (function mime-preview-move-to-next))
(define-key mime-view-mode-map
- "\e\t" (function mime-view-move-to-previous))
+ "\e\t" (function mime-preview-move-to-previous))
(define-key mime-view-mode-map
- "\t" (function mime-view-move-to-next))
+ "\t" (function mime-preview-move-to-next))
(define-key mime-view-mode-map
- " " (function mime-view-scroll-up-entity))
+ " " (function mime-preview-scroll-up-entity))
(define-key mime-view-mode-map
- "\M- " (function mime-view-scroll-down-entity))
+ "\M- " (function mime-preview-scroll-down-entity))
(define-key mime-view-mode-map
- "\177" (function mime-view-scroll-down-entity))
+ "\177" (function mime-preview-scroll-down-entity))
(define-key mime-view-mode-map
- "\C-m" (function mime-view-next-line-content))
+ "\C-m" (function mime-preview-next-line-entity))
(define-key mime-view-mode-map
- "\C-\M-m" (function mime-view-previous-line-content))
+ "\C-\M-m" (function mime-preview-previous-line-entity))
(define-key mime-view-mode-map
- "v" (function mime-view-play-current-entity))
+ "v" (function mime-preview-play-current-entity))
(define-key mime-view-mode-map
"e" (function mime-view-extract-current-entity))
(define-key mime-view-mode-map
(define-key mime-view-mode-map
"?" (function describe-mode))
(define-key mime-view-mode-map
- [tab] (function mime-view-move-to-next))
+ [tab] (function mime-preview-move-to-next))
(define-key mime-view-mode-map
- [delete] (function mime-view-scroll-down-entity))
+ [delete] (function mime-preview-scroll-down-entity))
(define-key mime-view-mode-map
- [backspace] (function mime-view-scroll-down-entity))
+ [backspace] (function mime-preview-scroll-down-entity))
(if (functionp default)
(cond (running-xemacs
(set-keymap-default-binding mime-view-mode-map default)
;;; @@ playing
;;;
-(autoload 'mime-view-play-current-entity "mime-play" "Play current entity." t)
+(autoload 'mime-preview-play-current-entity "mime-play"
+ "Play current entity." t)
(defun mime-view-extract-current-entity ()
"Extract current entity into file (maybe).
\"extract\" mode. The method is selected from variable
`mime-acting-condition'."
(interactive)
- (mime-view-play-current-entity "extract")
+ (mime-preview-play-current-entity "extract")
)
(defun mime-view-print-current-entity ()
\"print\" mode. The method is selected from variable
`mime-acting-condition'."
(interactive)
- (mime-view-play-current-entity "print")
+ (mime-preview-play-current-entity "print")
)
;;; @@ moving
;;;
-(defun mime-view-move-to-upper ()
+(defun mime-preview-move-to-upper ()
"Move to upper entity.
If there is no upper entity, call function `mime-view-quit'."
(interactive)
(mime-view-quit)
))))
-(defun mime-view-move-to-previous ()
+(defun mime-preview-move-to-previous ()
"Move to previous entity.
If there is no previous entity, it calls function registered in
variable `mime-view-over-to-previous-method-alist'."
))
)))
-(defun mime-view-move-to-next ()
+(defun mime-preview-move-to-next ()
"Move to next entity.
If there is no previous entity, it calls function registered in
variable `mime-view-over-to-next-method-alist'."
))
)))
-(defun mime-view-scroll-up-entity (&optional h)
+(defun mime-preview-scroll-up-entity (&optional h)
"Scroll up current entity.
If reached to (point-max), it calls function registered in variable
`mime-view-over-to-next-method-alist'."
)
)))
-(defun mime-view-scroll-down-entity (&optional h)
+(defun mime-preview-scroll-down-entity (&optional h)
"Scroll down current entity.
If reached to (point-min), it calls function registered in variable
`mime-view-over-to-previous-method-alist'."
(goto-char point)
))))
-(defun mime-view-next-line-content ()
+(defun mime-preview-next-line-entity ()
(interactive)
- (mime-view-scroll-up-entity 1)
+ (mime-preview-scroll-up-entity 1)
)
-(defun mime-view-previous-line-content ()
+(defun mime-preview-previous-line-entity ()
(interactive)
- (mime-view-scroll-down-entity 1)
+ (mime-preview-scroll-down-entity 1)
)