[Mew-dist 16008] patch for mew-pop.el

NINOMIYA Hideyuki nin at example.com
2001年 1月 21日 (日) 17:33:58 JST


mew-pop.el に対するパッチです
複数の変更を含んじゃってます。ごめんなさい
# ほんとは 1個ずつ出すべきなんでしょうけどっ...

1) pop-biff の機能をインタラクティブに1回こっきり実行する
   mew-pop-check というのを追加しました。キーバインドはして
   いませんが 'M-x mew-pop-check' で実行し mew-pop-biff と同じ
   表示をします。

この事での恩恵
(自分のような)ダイアルアップユーザ
    inc する前に mail box の Mail 数を確認できる
(setq mew-use-biff t)してらっしゃる常時接続なユーザ
    パスワードのキャッシュがクリアされて biff が止まっちゃてる
    時に使用し、biff を復活させることができる

これを実現するために pop の diredtive に 'check というのを追加して
います。'biff とほとんどいっしょなんですけど、'check は
インタラクティブに実行されるので、パスワードキャッシュがクリア
されてた時にはパスワード入力する事だけが違います。
# 違いがそれだけだから directive 追加せずになんとかしようとも
# 考えたんですけど思いつかなかった。。。

2) mew-pop-sentinel-hook になんかセットしてた場合 pop の directive が
   'biff (や自分が追加した 'check)の時にもこれが実行されてたのを、
   そういう場合には実行されないようにした。

3) mew-use-biff を nil -> t に変更した場合 'Z' status update する
   事で biff を on にする事ができるが、逆に t -> nil に変更した
   場合 簡単に biff を off にする方法が無いので、'Z' で biff を
   停止させられるようにした。
   # mew-pop-biff-setup で mew-use-biff が nil だった時なんもして
   # なかったとこで mew-pop-biff-clean-up 呼ぶようにしただけっ...

1 については皆さんのご意見を伺いたいです。お願いします m(__)m
# 加えて何処にキーバインドするかの意見も募集中

2, 3 はぜひお願いします。> かず 様

以下 『M 6k│01/20│山本 和彦 様│[Mew-dist 16001] a patch for b99』
当てた後に対するパッチです。
--─
ICQ UIN:57442553                          二宮 秀幸@愛媛 鬼北 広見町
PGP-Fingerprint:  6C59 EC08 5B23 6490 44D0  7CD3 DA40 219F 7114 8553
PGP-Public-Key:    http://user.shikoku.ne.jp/~nin/pgp/public-key.txt
mailto:nin at example.com   http://user.shikoku.ne.jp/~nin/index.html
mailto:nin at example.com http://home.jp.freebsd.org/~nin/index.html

Index: mew-pop.el
===================================================================
RCS file: /tmp/am/da/cvs/mew/mew-pop.el,v
retrieving revision 1.2
diff -c -F(def -r1.2 mew-pop.el
*** mew-pop.el	2001/01/21 06:40:05	1.2
--- mew-pop.el	2001/01/21 07:08:09
*************** (defsubst mew-pop-fsm-reply (status)
*** 74,79 ****
--- 74,82 ----
  (defsubst mew-pop-message (pnm &rest args)
    (if (mew-pop-get-diag pnm) (apply (function message) args)))
  
+ (defsubst mew-pop-directive-biff-or-check-p (directive)
+   (or (eq directive 'biff) (eq directive 'check)))
+ 
  (defun mew-pop-retrieve (case &optional sul rev-del fld directive passwd)
    ;; in +inbox
    (let* ((server (mew-pop-server case))
*************** (defun mew-pop-retrieve (case &optional 
*** 85,91 ****
  	 (buf (get-buffer-create (mew-pop-buffer-name pnm)))
  	 sshpro sshname lport)
      (mew-info-clean-up pnm)
!     (mew-pop-set-diag pnm (not (eq directive 'biff)))
      (if (null sshsrv)
  	(progn
  	  (mew-pop-set-port pnm port)
--- 88,94 ----
  	 (buf (get-buffer-create (mew-pop-buffer-name pnm)))
  	 sshpro sshname lport)
      (mew-info-clean-up pnm)
!     (mew-pop-set-diag pnm (not (mew-pop-directive-biff-or-check-p directive)))
      (if (null sshsrv)
  	(progn
  	  (mew-pop-set-port pnm port)
*************** (defun mew-pop-retrieve (case &optional 
*** 133,145 ****
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
! ;;; Biff
  ;;;
  
  (defvar mew-biff-string nil)
  (defvar mew-pop-biff-timer-id nil)
  
! (defun mew-pop-biff (&optional arg) ;; for XEmacs
    (let* ((case mew-config-input)
  	 (inbox (mew-inbox-folder case))
  	 (tag (mew-pop-passtag2 case))
--- 136,155 ----
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
! ;;; Biff and check
  ;;;
  
  (defvar mew-biff-string nil)
  (defvar mew-pop-biff-timer-id nil)
+ 
+ (defun mew-pop-check ()
+   (interactive)
+   (mew-pop-biff-sub 'check))
+ 
+ (defun mew-pop-biff (&optional arg);; for XEmacs
+   (mew-pop-biff-sub 'biff))
  
! (defun mew-pop-biff-sub (directive)
    (let* ((case mew-config-input)
  	 (inbox (mew-inbox-folder case))
  	 (tag (mew-pop-passtag2 case))
*************** (defun mew-pop-biff (&optional arg) ;; f
*** 147,169 ****
      (save-excursion
        (set-buffer inbox)
        (if (and (mew-summary-exclusive-p)
! 	       (and mew-use-cached-passwd
! 		    (setq passwd (mew-passwd-get-passwd tag))))
! 	  (mew-pop-retrieve case nil nil nil 'biff passwd)))))
  
  (defun mew-pop-biff-setup ()
    (if (not mew-use-biff)
!       ()
      (if mew-pop-biff-timer-id (mew-timer-reset mew-pop-biff-timer-id))
      (setq mew-pop-biff-timer-id
! 	  (mew-timer (* 60 mew-pop-biff-interval) (function mew-pop-biff)))
!     (let ((ent '(mew-biff-string mew-biff-string)))
!       (if (member ent global-mode-string)
! 	  ()
! 	(if global-mode-string
! 	    (setq global-mode-string
! 		  (append global-mode-string (list " " ent)))
! 	  (setq global-mode-string (list ent)))))))
  
  (defun mew-pop-biff-clean-up ()
    (if mew-pop-biff-timer-id (mew-timer-reset mew-pop-biff-timer-id))
--- 157,180 ----
      (save-excursion
        (set-buffer inbox)
        (if (and (mew-summary-exclusive-p)
! 	       (or (eq directive 'check)
! 		   (and mew-use-cached-passwd
! 			(setq passwd (mew-passwd-get-passwd tag)))))
! 	  (mew-pop-retrieve case nil nil nil directive passwd)))))
  
  (defun mew-pop-biff-setup ()
    (if (not mew-use-biff)
!       (mew-pop-biff-clean-up)
      (if mew-pop-biff-timer-id (mew-timer-reset mew-pop-biff-timer-id))
      (setq mew-pop-biff-timer-id
! 	  (mew-timer (* 60 mew-pop-biff-interval) (function mew-pop-biff))))
!   (let ((ent '(mew-biff-string mew-biff-string)))
!     (if (member ent global-mode-string)
! 	()
!       (if global-mode-string
! 	  (setq global-mode-string
! 		(append global-mode-string (list " " ent)))
! 	(setq global-mode-string (list ent))))))
  
  (defun mew-pop-biff-clean-up ()
    (if mew-pop-biff-timer-id (mew-timer-reset mew-pop-biff-timer-id))
*************** (defun mew-pop-sentinel (process event)
*** 320,326 ****
       (cond
  ;;      ((and (stringp event) (string-match "exited abnormally" event))
  ;;       (mew-pop-message pnm "Connection is terminated."))
!       ((eq directive 'biff)
         ()) ;; do nothing
        ((eq cnt nil)
         ) ;; passwd is wrong
--- 331,337 ----
       (cond
  ;;      ((and (stringp event) (string-match "exited abnormally" event))
  ;;       (mew-pop-message pnm "Connection is terminated."))
!       ((mew-pop-directive-biff-or-check-p directive)
         ()) ;; do nothing
        ((eq cnt nil)
         ) ;; passwd is wrong
*************** (defun mew-pop-sentinel (process event)
*** 336,344 ****
       (if savep (mew-summary-folder-cache-save))
       (set-buffer-modified-p nil)
       (mew-pop-tear-down pnm)
!      (run-hooks 'mew-pop-sentinel-hook)
       (if (and mew-auto-flush-queue
! 	      (not (or (eq directive 'biff) (eq directive 'no-flush))))
  	 (let ((mew-ask-flush-queue nil))
  	   (mew-summary-flush-queue))))))
  
--- 347,357 ----
       (if savep (mew-summary-folder-cache-save))
       (set-buffer-modified-p nil)
       (mew-pop-tear-down pnm)
!      (if (not (mew-pop-directive-biff-or-check-p directive))
! 	 (run-hooks 'mew-pop-sentinel-hook))
       (if (and mew-auto-flush-queue
! 	      (not (or (mew-pop-directive-biff-or-check-p directive)
! 		       (eq directive 'no-flush))))
  	 (let ((mew-ask-flush-queue nil))
  	   (mew-summary-flush-queue))))))
  
*************** (defun mew-pop-command-uidl (pro pnm)
*** 530,536 ****
        (setq msgs (cons (list num siz) msgs)))
      (if (null msgs)
  	(progn
! 	  (if (eq directive 'biff)
  	      (setq mew-biff-string nil))
  	  (mew-pop-set-status pnm "quit")
  	  (mew-pop-command-quit pro pnm))
--- 543,549 ----
        (setq msgs (cons (list num siz) msgs)))
      (if (null msgs)
  	(progn
! 	  (if (mew-pop-directive-biff-or-check-p directive)
  	      (setq mew-biff-string nil))
  	  (mew-pop-set-status pnm "quit")
  	  (mew-pop-command-quit pro pnm))
*************** (defun mew-pop-command-umsg (pro pnm)
*** 561,567 ****
      (setq msgs (nreverse msgs))
      (mew-pop-set-messages pnm msgs)
      (setq n (length msgs))
!     (if (eq directive 'biff)
  	(if (= n 0)
  	    (setq mew-biff-string nil)
  	  (if (and mew-use-biff-bell (eq mew-biff-string nil))
--- 574,580 ----
      (setq msgs (nreverse msgs))
      (mew-pop-set-messages pnm msgs)
      (setq n (length msgs))
!     (if (mew-pop-directive-biff-or-check-p directive)
  	(if (= n 0)
  	    (setq mew-biff-string nil)
  	  (if (and mew-use-biff-bell (eq mew-biff-string nil))
*************** (defun mew-pop-command-umsg (pro pnm)
*** 576,582 ****
       (t
        (mew-pop-message pnm "Receiving %d messages in background ... " n)))
      (cond
!      ((eq directive 'biff)
        (mew-pop-set-status pnm "quit")
        (mew-pop-command-quit pro pnm))
       (t
--- 589,595 ----
       (t
        (mew-pop-message pnm "Receiving %d messages in background ... " n)))
      (cond
!      ((mew-pop-directive-biff-or-check-p directive)
        (mew-pop-set-status pnm "quit")
        (mew-pop-command-quit pro pnm))
       (t



Mew-dist メーリングリストの案内