Revision: miles@gnu.org--gnu-2004/gnus--devo--0--patch-5
[gnus] / lisp / gnus-demon.el
index 75b8765..f584b2d 100644 (file)
@@ -1,5 +1,7 @@
 ;;; gnus-demon.el --- daemonic Gnus behaviour
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2003
+;;      Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
@@ -34,7 +36,7 @@
 (require 'nnmail)
 (require 'gnus-util)
 (eval-and-compile
-  (if (string-match "XEmacs" (emacs-version))
+  (if (featurep 'xemacs)
       (require 'itimer)
     (require 'timer)))
 
@@ -105,7 +107,7 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
   (when gnus-demon-handlers
     ;; Set up the timer.
     (setq gnus-demon-timer
-         (nnheader-run-at-time
+         (run-at-time
           gnus-demon-timestep gnus-demon-timestep 'gnus-demon))
     ;; Reset control variables.
     (setq gnus-demon-handler-state
@@ -148,32 +150,32 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
   (if (not (stringp time))
       time
     (let* ((now (current-time))
-           ;; obtain NOW as discrete components -- make a vector for speed
-           (nowParts (decode-time now))
-           ;; obtain THEN as discrete components
-           (thenParts (parse-time-string time))
-           (thenHour (elt thenParts 0))
-           (thenMin (elt thenParts 1))
-           ;; convert time as elements into number of seconds since EPOCH.
-           (then (encode-time 0
-                              thenMin
-                              thenHour
-                              ;; If THEN is earlier than NOW, make it
-                              ;; same time tomorrow.  Doc for encode-time
-                              ;; says that this is OK.
-                              (+ (elt nowParts 3)
-                                 (if (or (< thenHour (elt nowParts 2))
-                                         (and (= thenHour (elt nowParts 2))
-                                              (<= thenMin (elt nowParts 1))))
-                                     1 0))
-                              (elt nowParts 4)
-                              (elt nowParts 5)
-                              (elt nowParts 6)
-                              (elt nowParts 7)
-                              (elt nowParts 8)))
-           ;; calculate number of seconds between NOW and THEN
-           (diff (+ (* 65536 (- (car then) (car now)))
-                    (- (cadr then) (cadr now)))))
+          ;; obtain NOW as discrete components -- make a vector for speed
+          (nowParts (decode-time now))
+          ;; obtain THEN as discrete components
+          (thenParts (parse-time-string time))
+          (thenHour (elt thenParts 2))
+          (thenMin (elt thenParts 1))
+          ;; convert time as elements into number of seconds since EPOCH.
+          (then (encode-time 0
+                             thenMin
+                             thenHour
+                             ;; If THEN is earlier than NOW, make it
+                             ;; same time tomorrow.  Doc for encode-time
+                             ;; says that this is OK.
+                             (+ (elt nowParts 3)
+                                (if (or (< thenHour (elt nowParts 2))
+                                        (and (= thenHour (elt nowParts 2))
+                                             (<= thenMin (elt nowParts 1))))
+                                    1 0))
+                             (elt nowParts 4)
+                             (elt nowParts 5)
+                             (elt nowParts 6)
+                             (elt nowParts 7)
+                             (elt nowParts 8)))
+          ;; calculate number of seconds between NOW and THEN
+          (diff (+ (* 65536 (- (car then) (car now)))
+                   (- (cadr then) (cadr now)))))
       ;; return number of timesteps in the number of seconds
       (round (/ diff gnus-demon-timestep)))))
 
@@ -191,6 +193,10 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
     ;; sufficiently ripe.
     (let ((handlers gnus-demon-handler-state)
          (gnus-inhibit-demon t)
+         ;; Try to avoid dialog boxes, e.g. by Mailcrypt.
+         ;; Unfortunately, Emacs 20's `message-or-box...' doesn't
+         ;; obey `use-dialog-box'.
+         use-dialog-box (last-nonmenu-event 10)
          handler time idle)
       (while handlers
        (setq handler (pop handlers))
@@ -316,4 +322,5 @@ minutes, the connection is closed."
 
 (provide 'gnus-demon)
 
+;;; arch-tag: 8dd5cd3d-6ae4-46b4-9b15-f5fca09fd392
 ;;; gnus-demon.el ends here