diff lisp/tm/tm-play.el @ 20:859a2309aef8 r19-15b93

Import from CVS: tag r19-15b93
author cvs
date Mon, 13 Aug 2007 08:50:05 +0200
parents d95e72db5c07
children ec9a17fef872
line wrap: on
line diff
--- a/lisp/tm/tm-play.el	Mon Aug 13 08:49:44 2007 +0200
+++ b/lisp/tm/tm-play.el	Mon Aug 13 08:50:05 2007 +0200
@@ -4,7 +4,7 @@
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/9/26 (separated from tm-view.el)
-;; Version: $Id: tm-play.el,v 1.3 1997/02/04 02:36:07 steve Exp $
+;; Version: $Id: tm-play.el,v 1.4 1997/02/09 23:51:47 steve Exp $
 ;; Keywords: mail, news, MIME, multimedia
 
 ;; This file is part of tm (Tools for MIME).
@@ -355,10 +355,11 @@
 		  (progn
 		    (or (file-exists-p total-file)
 			(save-excursion
-			  (set-buffer (find-file-noselect total-file))
+			  (set-buffer
+			   (get-buffer-create mime/temp-buffer-name))
 			  (erase-buffer)
 			  (insert total)
-			  (save-buffer)
+			  (write-file total-file)
 			  (kill-buffer (current-buffer))
 			  ))
 		    (string-to-number total)
@@ -366,13 +367,14 @@
 		(and (file-exists-p total-file)
 		     (save-excursion
 		       (set-buffer (find-file-noselect total-file))
-		       (and (re-search-forward "[0-9]+" nil t)
-			    (string-to-number
-			     (buffer-substring (match-beginning 0)
-					       (match-end 0)))
-			    )
-		       (kill-buffer (current-buffer))
-		       ))
+		       (prog1
+			   (and (re-search-forward "[0-9]+" nil t)
+				(string-to-number
+				 (buffer-substring (match-beginning 0)
+						   (match-end 0)))
+				)
+			 (kill-buffer (current-buffer))
+			 )))
 		)))
       (if (and total (> total 0))
 	  (catch 'tag
@@ -383,9 +385,9 @@
 		(let ((i 1))
 		  (while (<= i total)
 		    (setq file (concat root-dir "/" (int-to-string i)))
-		    (if (not (file-exists-p file))
+		    (or (file-exists-p file)
 			(throw 'tag nil)
-		      )
+			)
 		    (as-binary-input-file (insert-file-contents file))
 		    (goto-char (point-max))
 		    (setq i (1+ i))
@@ -422,6 +424,25 @@
 ;;; @ rot13-47
 ;;;
 
+(require 'view)
+
+(defconst mime-view-text/plain-mode-map (copy-keymap view-mode-map))
+(define-key mime-view-text/plain-mode-map
+  "q" (function mime-view-text/plain-exit))
+
+(defun mime-view-text/plain-mode ()
+  "\\{mime-view-text/plain-mode-map}"
+  (setq buffer-read-only t)
+  (setq major-mode 'mime-view-text/plain-mode)
+  (setq mode-name "MIME-View text/plain")
+  (use-local-map mime-view-text/plain-mode-map)
+  )
+
+(defun mime-view-text/plain-exit ()
+  (interactive)
+  (kill-buffer (current-buffer))
+  )
+
 (defun mime-article/decode-caesar (beg end cal)
   (let* ((cnum (mime-article/point-content-number beg))
 	 (cur-buf (current-buffer))
@@ -432,7 +453,14 @@
 	 (mode major-mode)
 	 str)
     (setq str (buffer-substring beg end))
-    (switch-to-buffer new-name)
+    (let ((pwin (or (get-buffer-window mother)
+		    (get-largest-window)))
+	  (buf (get-buffer-create new-name))
+	  )
+      (set-window-buffer pwin buf)
+      (set-buffer buf)
+      (select-window pwin)
+      )
     (setq buffer-read-only nil)
     (erase-buffer)
     (insert str)
@@ -450,7 +478,8 @@
       (goto-char (point-max))
       (tm:caesar-region)
       )
-    (view-mode)
+    (set-buffer-modified-p nil)
+    (mime-view-text/plain-mode)
     ))