;;; gnus-offline.el --- To process mail & news at offline environment.
-;;; $Id: gnus-offline.el,v 1.1.2.5.2.22 1998-12-16 13:21:50 ichikawa Exp $
+;;; $Id: gnus-offline.el,v 1.1.2.5.2.35.2.1 1999-07-20 15:01:17 czkmt Exp $
;;; Copyright (C) 1998 Tatsuya Ichikawa
;;; Yukihiro Ito
;;; Author: Tatsuya Ichikawa <t-ichi@po.shiojiri.ne.jp>
;;; Yukihiro Ito <ito@rs.civil.tohoku.ac.jp>
;;; Hidekazu Nakamura <u90121@uis-inf.co.jp>
+;;; Tsukamoto Tetsuo <czkmt@remus.dti.ne.jp>
-;;; Version: 2.01
+;;; Version: 2.10
;;; Keywords: news , mail , offline , gnus
;;;
;;; SPECIAL THANKS
(require 'cl)
(require 'custom)
-(require 'pop3-fma)
(require 'easymenu)
+(provide 'gnus-offline)
(unless (and (condition-case ()
(require 'custom)
:group 'mail
:group 'news)
-(defconst gnus-offline-version-number "2.02")
+(defconst gnus-offline-version-number "2.20")
(defconst gnus-offline-codename
;; "Beta5" ; Beta
;; "This is the time" ; 2.00
;; "A matter of trust"
- "Modern Woman"
+;; "Modern Woman"
+;; "Ahhhhhhh!!" ; 2.10b1
+ "Cup of life" ; 2.20
;; "Code of silence"
)
(defvar gnus-offline-movemail-arguments nil
"*All command line arguments of exec-directory/movemail.")
+(defvar gnus-offline-mail-source nil
+ "*nnmail-spool-file save variable.")
+
;;; Temporary variable:
(defvar string)
(defvar hdr)
(defun gnus-offline-enable-fetch-mail ()
"*Set to fetch mail."
(setq gnus-offline-mail-fetch-method 'nnmail)
- (setq nnmail-movemail-program 'pop3-fma-movemail)
- (setq nnmail-spool-file (append
- pop3-fma-local-spool-file-alist
- (mapcar
- (lambda (spool)
- (car spool))
- pop3-fma-spool-file-alist))))
+ (if (not (featurep 'running-pterodactyl-gnus-0_73-or-later))
+ (progn
+ (setq nnmail-movemail-program 'pop3-fma-movemail)
+ (setq nnmail-spool-file (append
+ pop3-fma-local-spool-file-alist
+ (mapcar
+ (lambda (spool)
+ (car spool))
+ pop3-fma-spool-file-alist))))
+ (setq nnmail-spool-file gnus-offline-mail-source)))
;;
;; Enable fetch news
;;
(if (eq gnus-offline-articles-to-fetch 'mail)
(gnus-offline-restore-mail-group-level))
(if (eq gnus-offline-news-fetch-method 'nnagent)
- (or (featurep 'xemacs)
+ (or gnus-agent-expire-all
(gnus-offline-agent-expire)))
(if (and (featurep 'xemacs)
(fboundp 'play-sound-file))
(add-hook 'gnus-group-mode-hook
'(lambda ()
(local-set-key "\C-coh" 'gnus-offline-set-unplugged-state)
- (local-set-key "\C-com" 'gnus-offline-toggle-movemail-program)
+ (if (not (featurep 'running-pterodactyl-gnus-0_73-or-later))
+ (local-set-key "\C-com" 'gnus-offline-toggle-movemail-program))
(local-set-key "\C-cof" 'gnus-offline-toggle-articles-to-fetch)
(local-set-key "\C-coo" 'gnus-offline-toggle-on/off-send-mail)
(local-set-key "\C-cox" 'gnus-offline-toggle-auto-hangup)
(substitute-key-definition
'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged
gnus-agent-group-mode-map)
- (local-set-key "\C-coe" 'gnus-offline-agent-expire)))))
+ (local-set-key "\C-coe" 'gnus-offline-agent-expire)))
+ (or (featurep 'xemacs)
+ (define-key gnus-group-mode-map
+ (if (eq system-type 'windows-nt) [S-mouse-2] [mouse-3])
+ 'gnus-offline-popup-menu))))
(if (eq gnus-offline-news-fetch-method 'nnagent)
(add-hook 'gnus-summary-mode-hook
'(lambda ()
;; Overwrite the toolbar spec for gnus-group-mode.
(add-hook 'gnus-startup-hook
(lambda ()
- (let ((i 0) (stat t) but)
- (while (and stat (setq but (nth i gnus-group-toolbar)))
- (and (equal 'gnus-group-get-new-news (aref but 1))
- (aset but 1 'gnus-offline-gnus-get-new-news)
- (setq stat nil))
- (setq i (1+ i))))))))
+ (catch 'tag
+ (mapcar (lambda (but)
+ (when (eq 'gnus-group-get-new-news (aref but 1))
+ (aset but 1 'gnus-offline-gnus-get-new-news)
+ (throw 'tag nil)))
+ gnus-group-toolbar))))))
;;
;;
(defun gnus-offline-define-menu-on-miee ()
"*Set and change menu bar on MIEE menu."
+ (let ((menu
(if (featurep 'meadow)
(easy-menu-change
nil
["Online \e$B>uBV$X\e(B" message-online-state message-offline-state]
"----"
("Gnus Offline"
- ["movemail \e$B$N@ZBX$(\e(B" gnus-offline-toggle-movemail-program t]
+ ["movemail \e$B$N@ZBX$(\e(B" gnus-offline-toggle-movemail-program
+ (not (featurep 'running-pterodactyl-gnus-0_73-or-later))]
["\e$B<hF@5-;v<oN`$NJQ99\e(B" gnus-offline-toggle-articles-to-fetch t]
["Mail \e$BAw?.J}K!\e(B(On/Off)\e$B$N@ZBX$(\e(B" gnus-offline-toggle-on/off-send-mail t]
["\e$B<+F0@ZCG$N@ZBX$(\e(B" gnus-offline-toggle-auto-hangup t]
["\e$B<hF@:Q5-;v$r>C$9\e(B" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)]
["\e$B5-;v<hF@4V3V;~4V$N@_Dj\e(B" gnus-offline-set-interval-time t]
"----"
- ["\e$B2s@~$N@ZCG\e(B" gnus-offline-set-unplugged-state gnus-offline-connected])
+ ["\e$B2s@~$N@ZCG\e(B" gnus-offline-set-unplugged-state gnus-offline-connected]
+ "----"
+ ["\e$B%W%m%Q%F%#\e(B..." gnus-ofsetup-customize t])
))
(easy-menu-change
nil
["Message Online" message-online-state message-offline-state]
"----"
("Gnus Offline"
- ["Toggle movemail program" gnus-offline-toggle-movemail-program t]
+ ["Toggle movemail program" gnus-offline-toggle-movemail-program
+ (not (featurep 'running-pterodactyl-gnus-0_73-or-later))]
["Toggle articles to fetch" gnus-offline-toggle-articles-to-fetch t]
["Toggle online/offline send mail" gnus-offline-toggle-on/off-send-mail t]
["Toggle auto hangup" gnus-offline-toggle-auto-hangup t]
["Set interval time" gnus-offline-set-interval-time t]
"----"
["Hang up Line." gnus-offline-set-unplugged-state gnus-offline-connected]
- )))))
+ "----"
+ ["Customize options..." gnus-ofsetup-customize t]
+ ))))))
+ (and (featurep 'xemacs)
+ (easy-menu-add menu))))
;;
;; define menu without miee.
;;
"Gnus offline Menu"
(if (featurep 'meadow)
'("Offline"
- ["movemail \e$B$N@ZBX$(\e(B" gnus-offline-toggle-movemail-program t]
+ ["movemail \e$B$N@ZBX$(\e(B" gnus-offline-toggle-movemail-program
+ (not (featurep 'running-pterodactyl-gnus-0_73-or-later))]
["\e$B<hF@5-;v<oN`$NJQ99\e(B" gnus-offline-toggle-articles-to-fetch t]
["Mail \e$BAw?.J}K!\e(B(On/Off)\e$B$N@ZBX$(\e(B" gnus-offline-toggle-on/off-send-mail t]
["\e$B<+F0@ZCG$N@ZBX$(\e(B" gnus-offline-toggle-auto-hangup t]
["\e$B<hF@:Q5-;v$r>C$9\e(B" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)]
["\e$B5-;v<hF@4V3V;~4V$N@_Dj\e(B" gnus-offline-set-interval-time t]
"----"
- ["\e$B2s@~$N@ZCG\e(B" gnus-offline-set-unplugged-state gnus-offline-connected])
+ ["\e$B2s@~$N@ZCG\e(B" gnus-offline-set-unplugged-state gnus-offline-connected]
+ "----"
+ ["\e$B%W%m%Q%F%#\e(B..." gnus-ofsetup-customize t])
'("Offline"
- ["Toggle movemail program" gnus-offline-toggle-movemail-program t]
+ ["Toggle movemail program" gnus-offline-toggle-movemail-program
+ (not (featurep 'running-pterodactyl-gnus-0_73-or-later))]
["Toggle articles to fetch" gnus-offline-toggle-articles-to-fetch t]
["Toggle online/offline send mail" gnus-offline-toggle-on/off-send-mail t]
["Toggle auto hangup" gnus-offline-toggle-auto-hangup t]
["Expire articles" gnus-offline-agent-expire (eq gnus-offline-news-fetch-method 'nnagent)]
["Set interval time" gnus-offline-set-interval-time t]
"----"
- ["Hang up Line." gnus-offline-set-unplugged-state gnus-offline-connected])))
+ ["Hang up Line." gnus-offline-set-unplugged-state gnus-offline-connected]
+ "----"
+ ["Customize options..." gnus-ofsetup-customize t])))
(and (featurep 'xemacs)
(easy-menu-add gnus-offline-menu-on-agent)))
+;;
+;; Popup menu within the group buffer (under Emacs).
+;;
+(defvar gnus-offline-popup-menu nil)
+(defun gnus-offline-popup-menu (event)
+ "Popup menu for Gnus offline."
+ (interactive "e")
+ (unless gnus-offline-popup-menu
+ (setq gnus-offline-popup-menu
+ (let ((menu
+ (if (boundp 'miee-popup-menu)
+ (or (assoc 'keymap
+ (assoc 'Miee (assoc 'menu-bar global-map)))
+ miee-popup-menu)
+ gnus-offline-menu-on-agent)))
+ (if (string< emacs-version "20")
+ (append (list 'keymap
+ (if (boundp 'miee-popup-menu)
+ '(nil "Miee")
+ '(nil "Offline"))
+ '(nil "")
+ '(nil ""))
+ (cdr menu))
+ menu))))
+ (let* ((pop (x-popup-menu t gnus-offline-popup-menu))
+ (func (and pop (lookup-key gnus-offline-popup-menu
+ (apply 'vector pop)))))
+ (and pop func (funcall func))))
\f
;;
;; Timer Function
(gnus-demon-remove-handler 'gnus-offline-gnus-get-new-news t)))
;;
;;
-(provide 'gnus-offline)
;;; gnus-offline.el ends here