;;; gnus-offline.el --- To process mail & news at offline environment.
+;;; $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: 1.52
+;;; Version: 2.10
;;; Keywords: news , mail , offline , gnus
;;;
;;; SPECIAL THANKS
;;; You must use Semi-gnus 6.X.X.
;;;
;;; How to use.
-;;; put following code in you .emacs , after the setting of Gnus.
;;;
-;;; (setq gnus-offline-connect-program "/dir/program.exe")
-;;; (setq gnus-offline-connect-program-arguments '("-a" "-b"))
-;;; (setq gnus-offline-hangup-program "/dir/program")
-;;; (setq gnus-offline-hangup-program-arguments '("-c" "-d"))
-;;; (setq gnus-offline-mail-spool-directory "your-send-mail-spool-directory")
-;;; (setq gnus-offline-news-spool-directory "your-send-news-spool-directory")
-;;; (autoload 'gnus-offline-setup "gnus-offline")
-;;; (add-hook 'gnus-load-hook 'gnus-offline-setup)
+;;; Add following code at the end in your .emacs
+;;;
+;;; (load "gnus-ofsetup")
+;;; (gnus-setup-for-offline)
+;;; (load gnus-offline-setting-file)
;;;
;;; If you use gnus-agent as souper , put gnus-agent setup code in you .gnus.el
;;;
;;; If you use nnspool as souper , put following code in your .emacs before
;;; gnus-offline setting.
;;;
-;;; (load "miee")
-;;; (message-offline-state)
-;;;
;;; Then , put hang.exe in exec-path directory.
;;;
;;; In Gnus group buffer , type g to get all news and mail.
;;; Then send mail and news in spool directory.
;;;
;;; Variables.
-;;; gnus-offline-connect-program ... Dialup program name.
-;;; gnus-offline-connect-program-arguments
+;;; gnus-offline-dialup-program-arguments
;;; ... List of dialup program arguments.
-;;; gnus-offline-hangup-program ... Program name that used hanup line.
;;; gnus-offline-hangup-program-arguments
;;; ... List of hangup program arguments.
-;;; gnus-offline-mail-spool-directory... spool directory sending mail.
-;;; gnus-offline-news-spool-directory... spool directory sending news.
;;; gnus-offline-mail-treat-environ ... toggle sending mail online/offline.
;;; gnus-offline-articles-to-fetch ... toggle fetch articles.
;;; both->mail->news->both...
;;; gnus-offline-after-online-hook ... hook after all online jobs.
;;; gnus-offline-interval-time ... Interval time to do all online jobs.
;;; (minutes)
-;;; gnus-offline-MTA-type ... Type of MTA.
-;;; 'smtp ... Use smtp.el.
-;;; 'sendmail ... Use sendmail.el.
-;;; gnus-offline-drafts-queue-type ... Method type queuing message to spool.
-;;; 'miee means queue message to spool
-;;; using miee.el.
-;;; 'agent means queue message to spool
-;;; using gnus-agent.el.
+;;; gnus-offline-dialup-function ... Function to diualup.
+;;; gnus-offline-hangup-function ... Function to hangup.
;;; Code:
(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 "1.52")
+(defconst gnus-offline-version-number "2.20")
(defconst gnus-offline-codename
-;; "You may be right" ; 1.40
-;; "Chilstie Lee" ; 1.45
-;; "Uptown Girl" ; 1.46
-;; "Easy money" ; 1.47
-;; "An Innocent man" ; 1.48
-;; "Tell her about it" ; 1.50
-;; "This night" ; 1.51
- "Movin'out" ; 1.52
-;; "Longest night"
-;; "Leave a tender moment alone"
-;; "Back in the U.S.S.R"
-;; "Running on ice"
-;; "This is the time"
+;; "Beta5" ; Beta
+;; "This is the time" ; 2.00
;; "A matter of trust"
;; "Modern Woman"
+;; "Ahhhhhhh!!" ; 2.10b1
+ "Cup of life" ; 2.20
;; "Code of silence"
)
(defconst gnus-offline-version (format "Gnus offline backend utiliy v%s"
gnus-offline-version-number))
-(defcustom gnus-offline-connect-program nil
- "*Program name to dial-up dialup network.
-If nil , use auto-dialup if required to connect the Internet."
- :group 'gnus-offline
- :type 'string)
-
-(defcustom gnus-offline-connect-program-arguments nil
- "*Program arguments of gnus-offline-connect-program."
+(defcustom gnus-offline-dialup-program-arguments nil
+ "*Program arguments of gnus-offline-dialup-program."
:group 'gnus-offline
:type '(repeat (string :tag "Argument")))
-(defcustom gnus-offline-hangup-program nil
- "*Program name to hang-up dialup network."
- :group 'gnus-offline
- :type 'string)
-
(defcustom gnus-offline-hangup-program-arguments nil
"*Program arguments of gnus-offline-hangup-program."
:group 'gnus-offline
:group 'gnus-offline
:type 'boolean)
-(defcustom gnus-offline-mail-spool-directory "~/News/mail.out"
- "*Spool directory sending mail."
- :group 'gnus-offline
- :type 'directory)
-
-(defcustom gnus-offline-news-spool-directory "~/News/news.out"
- "*Spool directory sending news."
- :group 'gnus-offline
- :type 'directory)
-
(defcustom gnus-offline-load-hook nil
"*Hook to be run after the gnus-offline package has been loaded."
:group 'gnus-offline
:type 'hook)
+
(defcustom gnus-offline-before-online-hook nil
"*Hook to be run before all online jobs."
:group 'gnus-offline
:group 'gnus-offline
:type 'integer)
-(defcustom gnus-offline-MTA-type 'smtp
- "*Type of MTA program.
-smtp means use smtp.el.
- sendmail means use sendmail.el."
- :group 'gnus-offline
- :type '(choice (const smtp)
- (const sendmail)))
-
-(defcustom gnus-offline-drafts-queue-type 'agent
- "*Type of to queue drafts method.
-'miee means drafts are queued and sent by miee.el.
-'agent means drafts are queued and sent by gnus-agent.el"
- :group 'gnus-offline
- :type '(choice (const miee)
- (const agent)))
-
(defcustom gnus-offline-after-empting-spool-hook nil
"*Hook to be run before empting spool."
:group 'gnus-offline
gnus-offline-codename)
"*Header string for gnus-offline.")
-(defvar gnus-offline-auto-hangup-indicator "Hup"
- "*Indicator whether auto hang up is enabled.")
-
(defvar gnus-offline-stored-group-level nil
"*Mail Group level before changing.")
(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)
(defvar str)
+(defvar ver)
(defvar passwd)
(defvar num)
+(defvar gnus-offline-error-buffer " *Error*")
(defvar gnus-offline-map (make-sparse-keymap))
-(autoload 'message-offline-state "miee"
- "Set current status to offline state" t)
-;;
-;; mode-line control
-(if (not (member 'gnus-offline-auto-hangup-indicator mode-line-format))
- (progn
- (delete "-%-" mode-line-format)
- (setq-default mode-line-format
- (append mode-line-format
- (list "--" 'gnus-offline-auto-hangup-indicator
- "-%-")))))
+;;; To silence byte compiler
+(and
+ (fboundp 'eval-when-compile)
+ (eval-when-compile
+ (save-excursion
+ (beginning-of-defun)
+ (eval-region (point-min) (point)))
+ (let (case-fold-search)
+ (mapcar
+ (function
+ (lambda (symbol)
+ (unless (boundp symbol)
+ (make-local-variable symbol)
+ (eval (list 'setq symbol nil)))))
+ '(:group
+ :prefix :type
+ sendmail-to-spool-directory
+ news-spool-request-post-directory
+ nnspool-version
+ nnagent-version
+ msspool-news-server
+ msspool-news-service
+ gnspool-get-news
+ mail-spool-send
+ news-spool-post
+ gnus-agent-handle-level
+ ))
+ (make-local-variable 'byte-compile-warnings)
+ (setq byte-compile-warnings nil))))
+
(put 'gnus-offline-set-unplugged-state 'menu-enable 'gnus-offline-connected)
-(add-hook 'gnus-startup-hook 'gnus-offline-setup)
+(if (eq system-type 'windows-nt)
+ (define-process-argument-editing "/hang\\.exe\\'"
+ (lambda (x) (general-process-argument-editing-function
+ x nil t t nil t t))))
;;; Functions
;;
;; Setting up...
;;
(defun gnus-offline-setup ()
"*Initialize gnus-offline function"
- (if (eq system-type 'windows-nt)
- (define-process-argument-editing "/hang\\.exe\\'"
- (lambda (x) (general-process-argument-editing-function
- x nil t t nil t t))))
- ;; Initialize Internal Variable
- (gnus-offline-initialize-variables)
-
- ;; Disable fetch mail when startup.
- (gnus-offline-disable-fetch-mail)
+
+ ;; Load setting file - required.
+ (load gnus-offline-setting-file)
+
+ ;; Menu and keymap
+ (gnus-offline-define-menu-and-key)
;; To transfer Mail/News function.
(cond ((eq gnus-offline-mail-treat-environ 'offline)
- ;; send mail under online environ.
+ ;; send mail under offline environ.
(gnus-offline-set-offline-sendmail-function))
((eq gnus-offline-mail-treat-environ 'online)
;; send mail under offline environ.
- (gnus-offline-set-online-sendmail-function)))
-
- ;; always treat news under offline environ.
- (gnus-offline-set-offline-post-news-function)
-
- ;; Spool directory setting - Miee
- (if (eq gnus-offline-drafts-queue-type 'miee)
- (progn
- (if (not (file-exists-p gnus-offline-mail-spool-directory))
- (make-directory gnus-offline-mail-spool-directory t))
- (setq sendmail-to-spool-directory gnus-offline-news-spool-directory)
- (if (not (file-exists-p gnus-offline-news-spool-directory))
- (make-directory gnus-offline-news-spool-directory t))
- (setq sendmail-to-spool-directory gnus-offline-mail-spool-directory
- news-spool-request-post-directory gnus-offline-news-spool-directory)))
-
- ;; When startup ... state is offline.
- (setq gnus-nntp-service nil
- gnus-nntp-server nil)
-
- ;; Setup needed Hooks
- (gnus-offline-setup-needed-hooks))
-;;
-;;
-(defun gnus-offline-initialize-variables ()
- "*Initialize gnus-offline internal variable."
- (if (featurep 'nnmail)
- (setq gnus-offline-mail-fetch-method 'nnmail))
- (if (featurep 'gnus-agent)
- (setq gnus-offline-news-fetch-method 'nnagent))
- (if (featurep 'nnspool)
- (setq gnus-offline-news-fetch-method 'nnspool))
- (if (eq gnus-offline-drafts-queue-type 'miee)
- (load "miee"))
- (gnus-offline-define-menu-and-key))
+ (gnus-offline-set-online-sendmail-function))))
+;; (add-hook 'gnus-group-mode-hook 'gnus-offline-setup))
+
+;;
+;; Setting Error check.
+(defun gnus-offline-error-check ()
+ ;; Check gnus-agent and nnspool setting.
+ (cond ((eq gnus-offline-news-fetch-method 'nnagent)
+ ;; nnagent and gnus-agent loaded ??
+ (if (not (and (featurep 'gnus-agent)
+ (featurep 'nnagent)))
+ (progn
+ (get-buffer-create gnus-offline-error-buffer)
+ (set-buffer gnus-offline-error-buffer)
+ (erase-buffer)
+ (insert "WARNING!!: gnus-agent.el or nnagent.el is not loaded.\n")
+ (insert "Please check your .emacs or .gnus.el to work gnus-agent fine.")
+ (pop-to-buffer gnus-offline-error-buffer))))
+
+ ((eq gnus-offline-news-fetch-method 'nnspool)
+ (if (not (featurep 'nnspool))
+ (progn
+ (get-buffer-create gnus-offline-error-buffer)
+ (set-buffer gnus-offline-error-buffer)
+ (erase-buffer)
+ (insert "WARNING!!: nnspool.el is not loaded.\n")
+ (insert "Please check your .emacs or .gnus.el to work nnspool fine.")
+ (pop-to-buffer gnus-offline-error-buffer))))))
;;
;;
(defun gnus-offline-set-offline-sendmail-function ()
"*Initialize sendmail-function when unplugged status."
(if (eq gnus-offline-drafts-queue-type 'miee)
- (setq message-send-mail-function 'sendmail-to-spool-in-gnspool-format)
- (setq message-send-mail-function 'gnus-agent-send-mail)))
+ (progn
+ (if (eq gnus-offline-news-fetch-method 'nnagent)
+ (setq gnus-agent-send-mail-function 'sendmail-to-spool-in-gnspool-format))
+ (setq message-send-mail-function 'sendmail-to-spool-in-gnspool-format))
+ (setq gnus-agent-send-mail-function (gnus-offline-set-online-sendmail-function)
+ message-send-mail-function 'gnus-agent-send-mail)))
;;
(defun gnus-offline-set-online-sendmail-function ()
"*Initialize sendmail-function when plugged status."
"*Initialize sendnews-function when plugged status."
(setq message-send-news-function 'message-send-news-with-gnus))
;;
-(defun gnus-offline-setup-needed-hooks ()
- "*Initialize needed hooks for gnus-offline."
- (add-hook 'gnus-group-mode-hook 'gnus-offline-processed-by-timer)
- (add-hook 'gnus-after-getting-new-news-hook 'gnus-offline-after-get-new-news)
- (add-hook 'gnus-after-getting-news-hook 'gnus-offline-after-get-new-news)
- (if (eq gnus-offline-news-fetch-method 'nnspool)
- (add-hook 'after-getting-news-hook 'gnus-offline-nnspool-hangup-line))
- (add-hook 'message-send-hook 'gnus-offline-message-add-header)
- (if (featurep 'pop3-fma)
- (add-hook 'message-send-hook 'pop3-fma-message-add-header)))
-;;
;; Get new news jobs. (gnus-agent and nnspool)
;;
(defun gnus-offline-gnus-get-new-news (&optional arg)
- "*Override function \"gnus-grou-get-new-news\"."
+ "*Override function \"gnus-group-get-new-news\"."
(interactive "P")
(run-hooks 'gnus-offline-before-online-hook)
(if (functionp gnus-offline-dialup-function)
;;
(defun gnus-offline-connect-server ()
"*Dialup function."
- ;; Dialup if gnus-offline-connect-program is specified
- (if (stringp gnus-offline-connect-program)
+ ;; Dialup if gnus-offline-dialup-program is specified
+ (if (stringp gnus-offline-dialup-program)
(progn
(message "Dialing ...")
- (apply 'call-process gnus-offline-connect-program nil nil nil
- gnus-offline-connect-program-arguments)
+ (apply 'call-process gnus-offline-dialup-program nil nil nil
+ gnus-offline-dialup-program-arguments)
(sleep-for 1)
(message "Dialing ... done."))))
(if (eq gnus-offline-articles-to-fetch 'mail)
(gnus-offline-set-mail-group-level gnus-offline-mail-group-level))
- ;; Re initialize internal variable...if failed.
- (if (or (not gnus-offline-mail-fetch-method)
- (not gnus-offline-news-fetch-method))
- (gnus-offline-initialize-variables))
-
;; Set to online environ.
(setq gnus-offline-connected t)
(gnus-offline-enable-fetch-mail))
;; fetch only mail for gnus-agent
- (if (eq gnus-offline-news-fetch-method 'nnagent)
- (if (eq gnus-offline-articles-to-fetch 'mail)
- (setq gnus-agent-handle-level gnus-offline-mail-group-level))))
+ (if (and (eq gnus-offline-news-fetch-method 'nnagent)
+ (eq gnus-offline-articles-to-fetch 'mail))
+ (setq gnus-agent-handle-level gnus-offline-mail-group-level)))
;;
;; Change mail group level to handle only mail.
(if (memq gnus-offline-articles-to-fetch '(both news))
(progn
(if gnus-offline-connected
- (progn
- (if (eq gnus-offline-news-fetch-method 'nnagent)
- (progn
- ;; Get New News (gnus-agent)
- (gnus-agent-toggle-plugged t)
-
- ;; fetch articles
- (gnus-agent-fetch-session)
-
- ;; Hang Up line. then set to offline status.
- (if (and gnus-offline-connected
- gnus-offline-auto-hangup)
- (gnus-offline-set-unplugged-state))
-
- ;; All online jobs has done.
- (gnus-offline-after-jobs-done)))
- (if (eq gnus-offline-news-fetch-method 'nnspool)
- ;; Get New News (nnspool)
- (gnspool-get-news)))))))
+ (cond ((eq gnus-offline-news-fetch-method 'nnagent)
+ ;; Get New News (gnus-agent)
+ (gnus-agent-toggle-plugged t)
+
+ ;; fetch articles
+ (gnus-agent-fetch-session)
+
+ ;; Hang Up line. then set to offline status.
+ (if (and gnus-offline-connected
+ gnus-offline-auto-hangup)
+ (gnus-offline-set-unplugged-state))
+
+ ;; All online jobs has done.
+ (gnus-offline-after-jobs-done))
+ (t
+ (if (eq gnus-offline-news-fetch-method 'nnspool)
+ ;; Get New News (nnspool)
+ (gnspool-get-news))))))))
;;
;; Disable fetch mail
;;
(defun gnus-offline-disable-fetch-mail ()
"*Set do not fetch mail."
- (if (eq gnus-offline-mail-fetch-method 'nnmail)
- (setq nnmail-spool-file nil)))
+ (setq nnmail-spool-file nil))
;;
;; Enable fetch mail
;;
(defun gnus-offline-enable-fetch-mail ()
"*Set to fetch mail."
- (if (eq gnus-offline-mail-fetch-method 'nnmail)
+ (setq gnus-offline-mail-fetch-method 'nnmail)
+ (if (not (featurep 'running-pterodactyl-gnus-0_73-or-later))
(progn
- (setq gnus-offline-mail-fetch-method 'nnmail)
(setq nnmail-movemail-program 'pop3-fma-movemail)
- (setq nnmail-spool-file pop3-fma-spool-file-alist))))
+ (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-mail-treat-environ 'offline)
(progn
(if (eq gnus-offline-news-fetch-method 'nnagent)
- (setq str (format "\n with %s" nnagent-version)
- string (concat gnus-offline-header-string str))
- (setq str (format "\n with %s" nnspool-version)
- string (concat gnus-offline-header-string str)))
+ (setq ver nnagent-version)
+ (setq ver nnspool-version))
+ (setq str (format "\n with %s" ver)
+ string (concat gnus-offline-header-string str))
(gnus-offline-add-custom-header "X-Gnus-Offline-Backend:" string))))
\f
(if (functionp gnus-offline-hangup-function)
(funcall gnus-offline-hangup-function))
(setq gnus-offline-connected nil)
- (gnus-agent-toggle-plugged nil)
+ (if (eq gnus-offline-news-fetch-method 'nnagent)
+ (gnus-agent-toggle-plugged nil))
;; Set send mail/news function to offline functions.
(gnus-offline-set-offline-sendmail-function)
(if (eq gnus-offline-articles-to-fetch 'mail)
(gnus-offline-restore-mail-group-level))
(if (eq gnus-offline-news-fetch-method 'nnagent)
- (gnus-offline-agent-expire))
- (ding)
- (message "All online jobs have done."))
+ (or gnus-agent-expire-all
+ (gnus-offline-agent-expire)))
+ (if (and (featurep 'xemacs)
+ (fboundp 'play-sound-file))
+ (ding nil 'drum)
+ (ding))
+ (gnus-group-save-newsrc)
+ (message "All online jobs has done."))
\f
;;
(if gnus-offline-auto-hangup
(progn
(setq gnus-offline-auto-hangup nil
- gnus-offline-auto-hangup-indicator "Con"
str "disabled."))
(setq gnus-offline-auto-hangup t
- gnus-offline-auto-hangup-indicator "Hup"
str "enabled."))
(message (format "%s %s" string str)))
;;
(defun gnus-offline-define-menu-and-key ()
"*Set key and menu."
(if (eq gnus-offline-drafts-queue-type 'miee)
- (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-miee)
+ (if (featurep 'xemacs)
+ (add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-miee)
+ (gnus-offline-define-menu-on-miee))
(add-hook 'gnus-group-mode-hook 'gnus-offline-define-menu-on-agent))
(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 ()
(substitute-key-definition
'gnus-agent-toggle-plugged 'gnus-offline-toggle-plugged
- gnus-agent-summary-mode-map)))))
-
+ gnus-agent-summary-mode-map))))
+ (if (featurep 'xemacs)
+ ;; Overwrite the toolbar spec for gnus-group-mode.
+ (add-hook 'gnus-startup-hook
+ (lambda ()
+ (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 menu bar on MIEE menu."
- (global-set-key
- [menu-bar
- miee
- gnus-offline-hup-separator]
- '("--"))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline]
- (cons "Gnus Offline Utility"
- (make-sparse-keymap "Gnus Offline Utiliry")))
-
- (if (featurep 'pop3-fma)
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-toggle-movemail-program]
- '("Toggle movemail program" .
- gnus-offline-toggle-movemail-program)))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-toggle-articles-to-fetch]
- '("Toggle articles to fetch" .
- gnus-offline-toggle-articles-to-fetch))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-toggle-on/off-send-mail]
- '("Toggle online/offline send mail" .
- gnus-offline-toggle-on/off-send-mail))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-toggle-auto-hangup]
- '("Toggle auto hang up" . gnus-offline-toggle-auto-hangup))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-expire-separator]
- '("--"))
-
- (if (eq gnus-offline-news-fetch-method 'nnagent)
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-agent-expire]
- '("Expire articles" . gnus-offline-agent-expire)))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-set-interval-time]
- '("Set interval time." . gnus-offline-set-interval-time))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-hup-separator]
- '("--"))
-
- (global-set-key
- [menu-bar
- miee
- gnus-offline
- gnus-offline-set-unplugged-state]
- '("Hang Up Line." . gnus-offline-set-unplugged-state)))
+ "*Set and change menu bar on MIEE menu."
+ (let ((menu
+ (if (featurep 'meadow)
+ (easy-menu-change
+ nil
+ "Miee"
+ '(
+ ["Spool \e$B$K$"$k5-;v$NAw?.\e(B" news-spool-post t]
+ ["Spool \e$B$K$"$k\e(B Mail \e$B$NAw?.\e(B" mail-spool-send t]
+ "----"
+ ["Offline \e$B>uBV$X\e(B" message-offline-state (not message-offline-state)]
+ ["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
+ (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$B%W%m%Q%F%#\e(B..." gnus-ofsetup-customize t])
+ ))
+ (easy-menu-change
+ nil
+ "Miee"
+ '(
+ ["Post news in spool" news-spool-post t]
+ ["Send mails in spool" mail-spool-send t]
+ "----"
+ ["Message Offline" message-offline-state (not message-offline-state)]
+ ["Message Online" message-online-state message-offline-state]
+ "----"
+ ("Gnus Offline"
+ ["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]
+ "----"
+ ["Customize options..." gnus-ofsetup-customize t]
+ ))))))
+ (and (featurep 'xemacs)
+ (easy-menu-add menu))))
;;
;; define menu without miee.
;;
(defun gnus-offline-define-menu-on-agent ()
"*Set menu bar on OFFLINE menu."
- (define-key-after
- (lookup-key global-map [menu-bar])
- [offline]
- (cons "Offline" (make-sparse-keymap "Offline"))
- 'help) ;; Actually this adds before "Help".
-
- (if (featurep 'pop3-fma)
- (global-set-key
- [menu-bar
- offline
- gnus-offline-toggle-movemail-program]
- '("Toggle movemail program" . gnus-offline-toggle-movemail-program)))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-toggle-articles-to-fetch]
- '("Toggle articles to fetch" . gnus-offline-toggle-articles-to-fetch))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-toggle-on/off-send-mail]
- '("Toggle online/offline send mail" . gnus-offline-toggle-on/off-send-mail))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-toggle-auto-hangup]
- '("Toggle auto hang up" . gnus-offline-toggle-auto-hangup))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-separator]
- '("--"))
-
- (if (eq gnus-offline-news-fetch-method 'nnagent)
- (progn
- (global-set-key
- [menu-bar
- offline
- gnus-offline-agent-expire]
- '("Expire articles" . gnus-offline-agent-expire))))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-set-interval-time]
- '("Set interval time." . gnus-offline-set-interval-time))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-hup-separator]
- '("--"))
-
- (global-set-key
- [menu-bar
- offline
- gnus-offline-set-unplugged-state]
- '("Hang Up Line." . gnus-offline-set-unplugged-state)))
+ (easy-menu-define
+ gnus-offline-menu-on-agent
+ gnus-group-mode-map
+ "Gnus offline Menu"
+ (if (featurep 'meadow)
+ '("Offline"
+ ["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$B%W%m%Q%F%#\e(B..." gnus-ofsetup-customize t])
+ '("Offline"
+ ["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]
+ "----"
+ ["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