annotate lisp/time.el @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents 4f42109edd02
children 35eeafd85667
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 37364
diff changeset
1 ;;; time.el --- display time, load and mail indicator in mode line of Emacs
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
2
37364
5082f7c31b0e Remove a stray carriage return character.
Gerd Moellmann <gerd@gnu.org>
parents: 33197
diff changeset
3 ;; Copyright (C) 1985, 86, 87, 93, 94, 96, 2000, 2001
5082f7c31b0e Remove a stray carriage return character.
Gerd Moellmann <gerd@gnu.org>
parents: 33197
diff changeset
4 ;; Free Software Foundation, Inc.
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
5
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
6 ;; Maintainer: FSF
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
7
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
8 ;; This file is part of GNU Emacs.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
9
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
13 ;; any later version.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
14
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
18 ;; GNU General Public License for more details.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
19
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
20 ;; You should have received a copy of the GNU General Public License
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
23 ;; Boston, MA 02111-1307, USA.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
24
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
25 ;;; Commentary:
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
26
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
27 ;; Facilities to display current time/date and a new-mail indicator
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
28 ;; in the Emacs mode line. The single entry point is `display-time'.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
29
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
30 ;;; Code:
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
31
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
32 (defgroup display-time nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
33 "Display time and load in mode line of Emacs."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
34 :group 'modeline
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
35 :group 'mail)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
36
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
37
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
38 (defcustom display-time-mail-file nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
39 "*File name of mail inbox file, for indicating existence of new mail.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
40 Non-nil and not a string means don't check for mail. nil means use
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
41 default, which is system-dependent, and is the same as used by Rmail."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
42 :type '(choice (const :tag "(None)" none)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
43 (const :tag "Default" nil)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
44 (file :format "%v"))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
45 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
46
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
47 (defcustom display-time-mail-function nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
48 "*Function to call, for indicating existence of new mail.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
49 nil means use the default method of checking `display-time-mail-file'."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
50 :type '(choice (const :tag "Default" nil)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
51 (function))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
52 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
53
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
54 (defcustom display-time-default-load-average 0
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
55 "*Which load-average value will be shown in the mode line.
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
56 Almost every system can provide values of load for past 1 minute, past 5 or
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
57 past 15 minutes. The default is to display 1 minute load average."
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
58 :type '(choice (const :tag "1 minute load" 0)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
59 (const :tag "5 minutes load" 1)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
60 (const :tag "15 minutes load" 2))
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
61 :group 'display-time)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
62
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
63 (defvar display-time-load-average display-time-default-load-average)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
64
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
65 (defcustom display-time-load-average-threshold 0.1
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
66 "*Load-average values below this value won't be shown in the mode line.")
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
67
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
68 ;;;###autoload
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
69 (defcustom display-time-day-and-date nil "\
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
70 *Non-nil means \\[display-time] should display day and date as well as time."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
71 :type 'boolean
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
72 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
73
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
74 (defvar display-time-timer nil)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
75
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
76 (defcustom display-time-interval 60
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
77 "*Seconds between updates of time in the mode line."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
78 :type 'integer
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
79 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
80
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
81 (defcustom display-time-24hr-format nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
82 "*Non-nil indicates time should be displayed as hh:mm, 0 <= hh <= 23.
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
83 nil means 1 <= hh <= 12, and an AM/PM suffix is used."
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
84 :type 'boolean
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
85 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
86
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
87 (defvar display-time-string nil)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
88
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
89 (defcustom display-time-hook nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
90 "*List of functions to be called when the time is updated on the mode line."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
91 :type 'hook
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
92 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
93
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
94 (defvar display-time-server-down-time nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
95 "Time when mail file's file system was recorded to be down.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
96 If that file system seems to be up, the value is nil.")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
97
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
98 ;;;###autoload
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
99 (defun display-time ()
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
100 "Enable display of time, load level, and mail flag in mode lines.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
101 This display updates automatically every minute.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
102 If `display-time-day-and-date' is non-nil, the current day and date
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
103 are displayed as well.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
104 This runs the normal hook `display-time-hook' after each update."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
105 (interactive)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
106 (display-time-mode 1))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
107
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
108 (defcustom display-time-mail-face 'mode-line
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
109 "Face to use for `display-time-mail-string'.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
110 If `display-time-use-mail-icon' is non-nil, the image's background
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
111 colour is the background of this face. Set this to a face other than
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
112 `mode-line' to make the mail indicator stand out on a suitable
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
113 display."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
114 :group 'faces
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
115 :group 'display-time
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
116 :type 'face)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
117
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
118 (defvar display-time-mail-icon
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
119 (find-image '((:type xbm :file "letter.xbm" :ascent center)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
120 "Image specification to offer as the mail indicator on a graphic
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
121 display. See `display-time-use-mail-icon' and
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
122 `display-time-mail-face'.")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
123
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
124 (defcustom display-time-use-mail-icon nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
125 "Non-nil means use an icon as the mail indicator on a graphic display.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
126 Otherwise use the string \"Mail\". The icon may consume less of the
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
127 mode line. It is specified by `display-time-mail-icon'."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
128 :group 'display-time
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
129 :type 'boolean)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
130
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
131 (defcustom display-time-format nil
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
132 "*A string specifying the format for displaying the time in the mode line.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
133 See the function `format-time-string' for an explanation of
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
134 how to write this string. If this is nil, the defaults
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
135 depend on `display-time-day-and-date' and `display-time-24hr-format'."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
136 :type '(choice (const :tag "Default" nil)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
137 string)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
138 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
139
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
140 (defcustom display-time-string-forms
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
141 '((if (and (not display-time-format) display-time-day-and-date)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
142 (format-time-string "%a %b %e " now)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
143 "")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
144 (format-time-string (or display-time-format
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
145 (if display-time-24hr-format "%H:%M" "%-I:%M%p"))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
146 now)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
147 load
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
148 (if mail
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
149 ;; Build the string every time to act on customization.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
150 (concat " "
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
151 (propertize
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
152 "Mail"
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
153 'display `(when (and display-time-use-mail-icon
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
154 (display-graphic-p))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
155 ,@display-time-mail-icon
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
156 ,@(list :background (face-attribute
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
157 display-time-mail-face
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
158 :background)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
159 'help-echo "mouse-2: Read mail"
38759
445bd2ae602a (display-time-string-forms): Use
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
160 'local-map (make-mode-line-mouse-map 'mouse-2
445bd2ae602a (display-time-string-forms): Use
Gerd Moellmann <gerd@gnu.org>
parents: 38412
diff changeset
161 read-mail-command)))
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
162 ""))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
163 "*A list of expressions governing display of the time in the mode line.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
164 For most purposes, you can control the time format using `display-time-format'
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
165 which is a more standard interface.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
166
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
167 This expression is a list of expressions that can involve the keywords
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
168 `load', `day', `month', and `year', `12-hours', `24-hours', `minutes',
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
169 `seconds', all numbers in string form, and `monthname', `dayname', `am-pm',
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
170 and `time-zone' all alphabetic strings, and `mail' a true/nil value.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
171
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
172 For example, the form
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
173
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
174 '((substring year -2) \"/\" month \"/\" day
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
175 \" \" 24-hours \":\" minutes \":\" seconds
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
176 (if time-zone \" (\") time-zone (if time-zone \")\")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
177 (if mail \" Mail\" \"\"))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
178
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
179 would give mode line times like `94/12/30 21:07:48 (UTC)'."
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
180 :type 'sexp
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
181 :group 'display-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
182
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
183 (defun display-time-event-handler ()
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
184 (display-time-update)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
185 ;; Do redisplay right now, if no input pending.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
186 (sit-for 0)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
187 (let* ((current (current-time))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
188 (timer display-time-timer)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
189 ;; Compute the time when this timer will run again, next.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
190 (next-time (timer-relative-time
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
191 (list (aref timer 1) (aref timer 2) (aref timer 3))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
192 (* 5 (aref timer 4)) 0)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
193 ;; If the activation time is far in the past,
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
194 ;; skip executions until we reach a time in the future.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
195 ;; This avoids a long pause if Emacs has been suspended for hours.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
196 (or (> (nth 0 next-time) (nth 0 current))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
197 (and (= (nth 0 next-time) (nth 0 current))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
198 (> (nth 1 next-time) (nth 1 current)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
199 (and (= (nth 0 next-time) (nth 0 current))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
200 (= (nth 1 next-time) (nth 1 current))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
201 (> (nth 2 next-time) (nth 2 current)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
202 (progn
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
203 (timer-set-time timer (timer-next-integral-multiple-of-time
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
204 current display-time-interval)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
205 display-time-interval)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
206 (timer-activate timer)))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
207
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
208 (defun display-time-next-load-average ()
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
209 (interactive)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
210 (if (= 3 (setq display-time-load-average (1+ display-time-load-average)))
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
211 (setq display-time-load-average 0))
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
212 (display-time-update)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
213 (sit-for 0))
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
214
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
215 ;; Update the display-time info for the mode line
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
216 ;; but don't redisplay right now. This is used for
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
217 ;; things like Rmail `g' that want to force an update
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
218 ;; which can wait for the next redisplay.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
219 (defun display-time-update ()
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
220 (let* ((now (current-time))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
221 (time (current-time-string now))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
222 (load (condition-case ()
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
223 ;; Do not show values less than
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
224 ;; `display-time-load-average-threshold'.
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
225 (if (> (* display-time-load-average-threshold 100)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
226 (nth display-time-load-average (load-average)))
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
227 ""
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
228 ;; The load average number is mysterious, so
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
229 ;; provide some help.
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
230 (let ((str (format " %03d" (nth display-time-load-average (load-average)))))
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
231 (propertize
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
232 (concat (substring str 0 -2) "." (substring str -2))
42261
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
233 'local-map (make-mode-line-mouse-map 'mouse-2
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
234 'display-time-next-load-average)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
235 'help-echo (concat "System load average for past "
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
236 (if (= 0 display-time-load-average)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
237 "1 minute"
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
238 (if (= 1 display-time-load-average)
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
239 "5 minutes"
4f42109edd02 (display-time-load-average-threshold): New variable.
Pavel Janík <Pavel@Janik.cz>
parents: 38759
diff changeset
240 "15 minutes")) "; mouse-2: next" ))))
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
241 (error "")))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
242 (mail-spool-file (or display-time-mail-file
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
243 (getenv "MAIL")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
244 (concat rmail-spool-directory
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
245 (user-login-name))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
246 (mail (or (and display-time-mail-function
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
247 (funcall display-time-mail-function))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
248 (and (stringp mail-spool-file)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
249 (or (null display-time-server-down-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
250 ;; If have been down for 20 min, try again.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
251 (> (- (nth 1 now) display-time-server-down-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
252 1200)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
253 (and (< (nth 1 now) display-time-server-down-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
254 (> (- (nth 1 now) display-time-server-down-time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
255 -64336)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
256 (let ((start-time (current-time)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
257 (prog1
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
258 (display-time-file-nonempty-p mail-spool-file)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
259 (if (> (- (nth 1 (current-time)) (nth 1 start-time))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
260 20)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
261 ;; Record that mail file is not accessible.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
262 (setq display-time-server-down-time
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
263 (nth 1 (current-time)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
264 ;; Record that mail file is accessible.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
265 (setq display-time-server-down-time nil)))))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
266 (24-hours (substring time 11 13))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
267 (hour (string-to-int 24-hours))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
268 (12-hours (int-to-string (1+ (% (+ hour 11) 12))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
269 (am-pm (if (>= hour 12) "pm" "am"))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
270 (minutes (substring time 14 16))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
271 (seconds (substring time 17 19))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
272 (time-zone (car (cdr (current-time-zone now))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
273 (day (substring time 8 10))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
274 (year (substring time 20 24))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
275 (monthname (substring time 4 7))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
276 (month
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
277 (cdr
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
278 (assoc
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
279 monthname
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
280 '(("Jan" . "1") ("Feb" . "2") ("Mar" . "3") ("Apr" . "4")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
281 ("May" . "5") ("Jun" . "6") ("Jul" . "7") ("Aug" . "8")
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
282 ("Sep" . "9") ("Oct" . "10") ("Nov" . "11") ("Dec" . "12")))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
283 (dayname (substring time 0 3)))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
284 (setq display-time-string
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
285 (mapconcat 'eval display-time-string-forms ""))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
286 ;; This is inside the let binding, but we are not going to document
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
287 ;; what variables are available.
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
288 (run-hooks 'display-time-hook))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
289 (force-mode-line-update))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
290
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
291 (defun display-time-file-nonempty-p (file)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
292 (and (file-exists-p file)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
293 (< 0 (nth 7 (file-attributes (file-chase-links file))))))
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
294
31980
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
295 ;;;###autoload
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
296 (define-minor-mode display-time-mode
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
297 "Toggle display of time, load level, and mail flag in mode lines.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
298 With a numeric arg, enable this display if arg is positive.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
299
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
300 When this display is enabled, it updates automatically every minute.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
301 If `display-time-day-and-date' is non-nil, the current day and date
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
302 are displayed as well.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
303 This runs the normal hook `display-time-hook' after each update."
33197
5ddf69eeb2bb (display-time-mode): Drop unneeded positional args.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31980
diff changeset
304 :global t :group 'display-time
31980
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
305 (and display-time-timer (cancel-timer display-time-timer))
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
306 (setq display-time-timer nil)
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
307 (setq display-time-string "")
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
308 (or global-mode-string (setq global-mode-string '("")))
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
309 (if display-time-mode
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
310 (progn
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
311 (or (memq 'display-time-string global-mode-string)
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
312 (setq global-mode-string
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
313 (append global-mode-string '(display-time-string))))
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
314 ;; Set up the time timer.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
315 (setq display-time-timer
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
316 (run-at-time t display-time-interval
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
317 'display-time-event-handler))
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
318 ;; Make the time appear right away.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
319 (display-time-update)
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
320 ;; When you get new mail, clear "Mail" from the mode line.
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
321 (add-hook 'rmail-after-get-new-mail-hook
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
322 'display-time-event-handler))
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
323 (remove-hook 'rmail-after-get-new-mail-hook
ceb42baae241 (display-time-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29706
diff changeset
324 'display-time-event-handler)))
29706
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
325
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
326 (provide 'time)
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
327
1030e638c8dd Remove trailing ^M that prevent CVS-merging.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 29693
diff changeset
328 ;;; time.el ends here