-;;; time.el --- display time and load in mode line of Emacs.
+;;; time.el --- display time, load and mail indicator in mode line of Emacs.
-;; Copyright (C) 1985, 86, 87, 93, 94, 1996 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 86, 87, 93, 94, 96, 2000 Free Software Foundation, Inc.
;; Maintainer: FSF
:group 'mail)
+;;;###autoload
(defcustom display-time-mode nil
"Toggle display of time, load level, and mail flag in mode lines.
Setting this variable directly does not take effect;
"*File name of mail inbox file, for indicating existence of new mail.
Non-nil and not a string means don't check for mail. nil means use
default, which is system-dependent, and is the same as used by Rmail."
- :type '(choice (const :tag "Default" nil)
+ :type '(choice (const :tag "(None)" none)
+ (const :tag "Default" nil)
(file :format "%v"))
:group 'display-time)
(remove-hook 'rmail-after-get-new-mail-hook
'display-time-event-handler))))
+(defcustom display-time-mail-face 'mode-line
+ "Face to use for `display-time-mail-string'.
+If `display-time-use-mail-icon' is non-nil, the image's background
+colour is the background of this face. Set this to a face other than
+`mode-line' to make the mail indicator stand out on a suitable
+display."
+ :group 'faces
+ :group 'display-time
+ :type 'face)
+
+(defvar display-time-mail-icon
+ (find-image '((:type xbm :file "letter.xbm" :ascent center)))
+ "Image specification to offer as the mail indicator on a graphic
+display. See `display-time-use-mail-icon' and
+`display-time-mail-face'.")
+
+(defcustom display-time-use-mail-icon nil
+ "Non-nil means use an icon as the mail indicator on a graphic display.
+Otherwise use the string \"Mail\". The icon may consume less of the
+mode line. It is specified by `display-time-mail-icon'."
+ :group 'display-time
+ :type 'boolean)
(defcustom display-time-format nil
"*A string specifying the format for displaying the time in the mode line.
(if display-time-24hr-format "%H:%M" "%-I:%M%p"))
now)
load
- (if mail " Mail" ""))
+ (if mail
+ ;; Build the string every time to act on customization.
+ (concat " "
+ (propertize
+ "Mail"
+ 'display `(when (and display-time-use-mail-icon
+ (display-graphic-p))
+ ,@display-time-mail-icon
+ ,@(list :background (face-attribute
+ display-time-mail-face
+ :background)))
+ 'help-echo "mouse-2: Read mail"
+ 'local-map (make-mode-line-mouse2-map read-mail-command)))
+ ""))
"*A list of expressions governing display of the time in the mode line.
For most purposes, you can control the time format using `display-time-format'
which is a more standard interface.
(time (current-time-string now))
(load (condition-case ()
(if (zerop (car (load-average))) ""
+ ;; The load average number is mysterious, so
+ ;; propvide some help.
(let ((str (format " %03d" (car (load-average)))))
- (concat (substring str 0 -2) "." (substring str -2))))
+ (propertize
+ (concat (substring str 0 -2) "." (substring str -2))
+ 'help-echo "System load average")))
(error "")))
(mail-spool-file (or display-time-mail-file
(getenv "MAIL")
(mail (and (stringp mail-spool-file)
(or (null display-time-server-down-time)
;; If have been down for 20 min, try again.
- (> (- (nth 1 (current-time))
- display-time-server-down-time)
- 1200))
+ (> (- (nth 1 now) display-time-server-down-time)
+ 1200)
+ (and (< (nth 1 now) display-time-server-down-time)
+ (> (- (nth 1 now) display-time-server-down-time)
+ -64336)))
(let ((start-time (current-time)))
(prog1
(display-time-file-nonempty-p mail-spool-file)