tm 7.27.
[elisp/tm.git] / tm-vm.el
index 223abcf..10eba2e 100644 (file)
--- a/tm-vm.el
+++ b/tm-vm.el
@@ -8,8 +8,7 @@
 ;;;           MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;;           Shuhei KOBAYASHI <shuhei@cmpt01.phys.tohoku.ac.jp>
 ;;;           Oscar Figueiredo <figueire@lspsun2.epfl.ch>
-;;; modified by SHIONO Jun'ichi <jun@p5.nm.fujitsu.co.jp>,
-;;;         and Steinar Bang <steinarb@falch.no>,
+;;; modified by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
 ;;;
 ;;; Keywords: news, MIME, multimedia, multilingual, encoded-word
 ;;;
@@ -22,7 +21,7 @@
 (require 'vm)
 
 (defconst tm-vm/RCS-ID
-  "$Id: tm-vm.el,v 7.10 1995/11/16 17:07:02 morioka Exp $")
+  "$Id: tm-vm.el,v 7.18 1995/11/20 02:48:34 morioka Exp $")
 (defconst tm-vm/version (get-version-string tm-vm/RCS-ID))
 
 (define-key vm-mode-map "Z" 'tm-vm/view-message)
@@ -41,9 +40,6 @@ If you use tiny-mime patch for VM (by RIKITAKE Kenji
 (or tm-vm/use-tm-patch
     (progn
 ;;;
-;; by Steinar Bang <steinarb@falch.no>
-(setq vm-summary-format "%n %*%a %-17.17F %-3.3m %2d %4l/%-5c, %I\"%UA\"\n")
-
 (defvar tm-vm/chop-full-name-function 'tm-vm/default-chop-full-name)
 (setq vm-chop-full-name-function tm-vm/chop-full-name-function)
 
@@ -56,9 +52,12 @@ If you use tiny-mime patch for VM (by RIKITAKE Kenji
              (cdr ret))
       ret)))
 
-;; by Steinar Bang <steinarb@falch.no>
-(defun vm-summary-function-A (m)
-  (mime-eword/decode-string (vm-su-subject m))
+(require 'vm-summary)
+(or (fboundp 'tm:vm-su-subject)
+    (fset 'tm:vm-su-subject (symbol-function 'vm-su-subject))
+    )
+(defun vm-su-subject (m)
+  (mime-eword/decode-string (tm:vm-su-subject m))
   )
 ;;;
 ))
@@ -123,14 +122,16 @@ all marked messages are affected, other messages are ignored."
 
 (defun tm-vm/preview-current-message ()
   ;;; suggested by Simon Rowe <smr@robots.oxford.ac.uk>
-  ;;;  (c.f. [tm-eng:163])
+  ;;;  (cf. [tm-eng:163])
   ;; Selecting a new mail message, but we're already displaying a mime
   ;; on in the window, make sure that the mail buffer is displayed.
   (if (get-buffer-window "*MIME-out*")
       (delete-window (get-buffer-window (get-buffer "*MIME-out*")))
     )
-  (display-buffer (current-buffer))
   (if (and tm-vm/automatic-mime-preview
+          ;; fixed by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
+          ;;   1995/11/17 (cf.[tm-ja:1120])
+          (display-buffer (current-buffer))
           (let* ((mp (car vm-message-pointer))
                  (ct  (vm-get-header-contents mp "Content-Type:"))
                  (cte (vm-get-header-contents
@@ -145,23 +146,55 @@ all marked messages are affected, other messages are ignored."
                            ))))
           )
       (let ((win (selected-window)))
+       (let ((pwin (and mime::article/preview-buffer
+                        (get-buffer mime::article/preview-buffer)
+                        (get-buffer-window mime::article/preview-buffer))))
+         (if pwin
+             (delete-window pwin)
+           ))
+       (vm-select-folder-buffer)
        (vm-display (current-buffer) t
                    '(tm-vm/preview-current-message
                      vm-preview-current-message)
-                   '(tm-vm/preview-current-message reading-message))
+                   (list this-command 'reading-message))
        (mime/viewer-mode)
+       (run-hooks 'tm-vm/vm-select-message-hook)
+       (vm-display (current-buffer) t
+                   '(tm-vm/preview-current-message
+                     vm-preview-current-message)
+                   (list this-command 'reading-message))
        (select-window win)
-       )))
+       (vm-display-buffer (current-buffer))
+        ;; (vm-display (current-buffer) t
+        ;;             '(tm-vm/preview-current-message
+        ;;               vm-preview-current-message)
+        ;;             '(vm-summarize reading-message))
+       )
+    ;; fixed by Oscar Figueiredo <figueire@lspsun2.epfl.ch>
+    ;; 1995/11/17
+    (if (and mime::article/preview-buffer
+            (get-buffer mime::article/preview-buffer))
+       (kill-buffer mime::article/preview-buffer))
+    (if tm-vm/automatic-mime-preview
+       (let (buffer-read-only)
+         (mime/decode-message-header)
+         (run-hooks 'tm-vm/vm-select-message-hook)
+         ))
+    ))
 
 (add-hook 'vm-select-message-hook 'tm-vm/preview-current-message)
 (add-hook 'vm-visit-folder-hook 'tm-vm/preview-current-message)
 
 ;; fixed by Oscar Figueiredo <figueire@lspsun2.epfl.ch>
-;;     1995/11/14 (c.f. [tm-eng:162])
+;;     1995/11/14 (cf.[tm-eng:162])
 (defun tm-vm/scroll-forward ()
   (interactive)
   (if (not tm-vm/automatic-mime-preview)
-      (vm-scroll-forward)
+      ;; fixed by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
+      ;;       1995/11/17 (cf.[tm-ja:1119])
+      (progn
+       (setq this-command 'vm-scroll-forward)
+       (vm-scroll-forward))
     (let* ((summary-buffer (or vm-summary-buffer
                               (and (eq major-mode 'vm-summary-mode)
                                    (current-buffer))))
@@ -170,10 +203,11 @@ all marked messages are affected, other messages are ignored."
                          (set-buffer summary-buffer)
                          vm-mail-buffer))
           (mail-win (get-buffer-window mail-buffer))
-          (preview-win (get-buffer-window
-                        (save-excursion
-                          (set-buffer mail-buffer)
-                          mime::article/preview-buffer))))                     
+          (preview-buf (save-excursion
+                         (set-buffer mail-buffer)
+                         mime::article/preview-buffer))
+          (preview-win (and preview-buf (get-buffer-window preview-buf)))
+          )
       (if preview-win
          (progn
            (select-window preview-win)
@@ -185,11 +219,18 @@ all marked messages are affected, other messages are ignored."
              (scroll-up)       
              (switch-to-buffer mail-buffer)
              (select-window summary-win))))
+      ;; fixed by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
+      ;;       1995/11/17 (cf.[tm-ja:1119])
+      (setq this-command 'vm-scroll-forward)
       (vm-scroll-forward)
       (save-excursion
        (set-buffer summary-buffer)
        (setq mail-win (get-buffer-window vm-mail-buffer)))
-      (if mail-win
+      ;; fixed by Oscar Figueiredo <figueire@lspsun2.epfl.ch>
+      ;;       1995/11/17
+      (if (and mail-win
+              mime::article/preview-buffer
+              (get-buffer mime::article/preview-buffer))
          (progn
            (select-window mail-win)
            (switch-to-buffer mime::article/preview-buffer)
@@ -199,7 +240,11 @@ all marked messages are affected, other messages are ignored."
 (defun tm-vm/scroll-backward ()
   (interactive)
   (if (not tm-vm/automatic-mime-preview)
-      (vm-scroll-backward nil)
+      ;; fixed by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
+      ;;       1995/11/17 (cf.[tm-ja:1119])
+      (progn
+       (setq this-command 'vm-scroll-backward)
+       (vm-scroll-backward nil))
     (let* ((summary-buffer (or vm-summary-buffer
                               (and (eq major-mode 'vm-summary-mode)
                                    (current-buffer))))
@@ -208,10 +253,11 @@ all marked messages are affected, other messages are ignored."
                          (set-buffer summary-buffer)
                          vm-mail-buffer))
           (mail-win (get-buffer-window mail-buffer))
-          (preview-win (get-buffer-window
-                        (save-excursion
-                          (set-buffer mail-buffer)
-                          mime::article/preview-buffer))))                     
+          (preview-buf (save-excursion
+                         (set-buffer mail-buffer)
+                         mime::article/preview-buffer))
+          (preview-win (and preview-buf (get-buffer-window preview-buf)))
+          )
       (if preview-win
          (progn
            (select-window preview-win)
@@ -223,13 +269,19 @@ all marked messages are affected, other messages are ignored."
              (scroll-down)             
              (switch-to-buffer mail-buffer)
              (select-window summary-win))))
+      ;; fixed by SHIONO Jun'ichi <jun@case.nm.fujitsu.co.jp>
+      ;;       1995/11/17 (cf.[tm-ja:1119])
+      (setq this-command 'vm-scroll-backward)
       (vm-scroll-backward nil)
       (save-excursion
        (set-buffer summary-buffer)
        (setq mail-win (get-buffer-window vm-mail-buffer)))
-      (if mail-win
+      (if (and mail-win
+              mime::article/preview-buffer
+              (get-buffer mime::article/preview-buffer))
          (progn
            (select-window mail-win)
+           (goto-char (point-max))
            (switch-to-buffer mime::article/preview-buffer)
            (select-window summary-win)))
       )))
@@ -259,7 +311,7 @@ all marked messages are affected, other messages are ignored."
     ))
 
 ;; fixed by Oscar Figueiredo <figueire@lspsun2.epfl.ch>
-;;     1995/11/14 (c.f. [tm-eng:162])
+;;     1995/11/14 (cf. [tm-eng:162])
 (defun tm-vm/quit ()
   (interactive)
   (save-excursion
@@ -383,7 +435,7 @@ This function is called by `mime-viewer/quit' command via
 ;;;
 
 ;; 1995/11/9 by Shuhei KOBAYASHI <shuhei@cmpt01.phys.tohoku.ac.jp>
-;;     (c.f. [tm ML:1075])
+;;     (cf. [tm ML:1075])
 (defun tm-vm/insert-message (&optional message)
   (interactive)
   (let* (mail-yank-hooks
@@ -535,13 +587,55 @@ only marked messages will be put into the digest."
  'mime-setup
  (function
   (lambda ()
-    (remove-hook 'mail-mode-hook 'mime/editor-mode)
-    (add-hook 'vm-mail-mode-hook 'mime/editor-mode)
+    ;;(remove-hook 'mail-mode-hook 'mime/editor-mode)
+    ;;(add-hook 'vm-mail-mode-hook 'mime/editor-mode)
     (setq vm-forwarding-digest-type "rfc1521")
     (setq vm-digest-send-type "rfc1521")
     )))
 
 
+;;; @ for BBDB
+;;;
+
+(call-after-loaded
+ 'bbdb-vm
+ (function
+  (lambda ()
+    (or (fboundp 'tm:bbdb/vm-update-record)
+       (fset 'tm:bbdb/vm-update-record
+             (symbol-function 'bbdb/vm-update-record))
+       )
+    (defun bbdb/vm-update-record (&optional offer-to-create)
+      (vm-select-folder-buffer)
+      (let ((vm-mail-buffer
+            (if (and mime::article/preview-buffer
+                     (get-buffer mime::article/preview-buffer))
+                mime::article/preview-buffer
+              (current-buffer)
+              ))
+           (bbdb/vm-update-record-recursive
+            (boundp 'bbdb/vm-update-record-recursive))
+           bbdb/vm-update-record-recursive ret)
+       (let ((bbdb/vm-update-record-answer
+              (if (boundp 'bbdb/vm-update-record-answer)
+                  (setq bbdb/vm-update-record-answer
+                        (or bbdb/vm-update-record-answer
+                            (tm:bbdb/vm-update-record)
+                            ))
+                (setq ret (tm:bbdb/vm-update-record))
+                nil)))
+         (or bbdb/vm-update-record-answer ret)
+         )))
+    (defun tm-vm/bbdb-update-record (&optional offer-to-create)
+      (let ((vm-mail-buffer (current-buffer)))
+       (tm:bbdb/vm-update-record offer-to-create)
+       ))
+    (remove-hook 'vm-select-message-hook 'bbdb/vm-update-record)
+    (remove-hook 'vm-show-message-hook 'bbdb/vm-update-record)
+    (add-hook 'tm-vm/select-message-hook 'tm-vm/update-record)
+    )))
+
+
 ;;; @ end
 ;;;