;;; Code:
+(require 'gnus-load)
+(require 'gnus-int)
+(require 'nnheader)
(require 'gnus)
-
-(eval-when-compile (require 'cl))
+(eval-and-compile
+ (if (string-match "XEmacs" (emacs-version))
+ (require 'itimer)
+ (require 'timer)))
(defvar gnus-demon-handlers nil
"Alist of daemonic handlers to be run at intervals.
(interactive)
(gnus-demon-cancel)
(if (null gnus-demon-handlers)
- () ; Nothing to do.
+ () ; Nothing to do.
;; Set up timer.
(setq gnus-demon-timer
(nnheader-run-at-time
(and gnus-demon-timer
(nnheader-cancel-timer gnus-demon-timer))
(setq gnus-demon-timer nil
- gnus-use-demon nil))
+ gnus-use-demon nil)
+ (condition-case ()
+ (nnheader-cancel-function-timers 'gnus-demon)
+ (error t)))
(defun gnus-demon-is-idle-p ()
"Whether Emacs is idle or not."
(defun gnus-demon-scan-mail ()
(let ((servers gnus-opened-servers)
server)
- (while servers
- (setq server (car (pop servers)))
+ (while (setq server (car (pop servers)))
(and (gnus-check-backend-function 'request-scan (car server))
+ (or (gnus-server-opened server)
+ (gnus-open-server server))
(gnus-request-scan nil server)))))
+(defun gnus-demon-add-rescan ()
+ "Add daemonic scanning of new articles from all backends."
+ (gnus-demon-add-handler 'gnus-demon-scan-news 120 60))
+
+(defun gnus-demon-scan-news ()
+ (when (gnus-alive-p)
+ (save-excursion
+ (set-buffer gnus-group-buffer)
+ (gnus-group-get-new-news))))
+
(provide 'gnus-demon)
;;; gnus-demon.el ends here