[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 メーリングリストの案内