Mercurial > emacs
comparison lisp/time.el @ 8404:49ffb0b7fd22
(display-time-string-forms): New variable.
(display-time-filter): Simplify to use it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 31 Jul 1994 22:49:46 +0000 |
parents | cc7cd83ccf3f |
children | e1a2458245cb |
comparison
equal
deleted
inserted
replaced
8403:941432da0ff3 | 8404:49ffb0b7fd22 |
---|---|
89 ;; Force mode-line updates | 89 ;; Force mode-line updates |
90 (save-excursion (set-buffer (other-buffer))) | 90 (save-excursion (set-buffer (other-buffer))) |
91 (set-buffer-modified-p (buffer-modified-p)) | 91 (set-buffer-modified-p (buffer-modified-p)) |
92 (sit-for 0)) | 92 (sit-for 0)) |
93 | 93 |
94 (defvar display-time-string-forms | |
95 '((if display-time-day-and-date | |
96 (format "%s %s %s " dayname monthname day) | |
97 "") | |
98 (format "%s:%s%s" | |
99 (if display-time-24hr-format 24-hours 12-hours) | |
100 minutes | |
101 (if display-time-24hr-format "" am-pm)) | |
102 load | |
103 (if mail " Mail" "")) | |
104 "*A list of expressions governing display of the time in the mode line. | |
105 This expression is a list of expressions that can involve the keywords | |
106 `load', `day', `month', and `year', `12-hours', `24-hours', `minutes', | |
107 `seconds', all numbers in string form, and `monthname', `dayname', `am-pm', | |
108 and `time-zone' all alphabetic strings, and `mail' a true/nil value. | |
109 | |
110 For example, the form | |
111 | |
112 '((substring year -2) \"/\" month \"/\" day | |
113 " " 24-hours \":\" minutes \":\" seconds | |
114 (if time-zone \" (\") time-zone (if time-zone \")\") | |
115 (if mail \" Mail\" \"\")) | |
116 | |
117 would give mode line times like `94/12/30 21:07:48 (UTC)'.") | |
118 | |
94 (defun display-time-filter (proc string) | 119 (defun display-time-filter (proc string) |
95 (let ((time (current-time-string)) | 120 (let* ((time (current-time-string)) |
96 (load (condition-case () | 121 (load (condition-case () |
97 (if (zerop (car (load-average))) "" | 122 (if (zerop (car (load-average))) "" |
98 (let ((str (format " %03d" (car (load-average))))) | 123 (let ((str (format " %03d" (car (load-average))))) |
99 (concat (substring str 0 -2) "." (substring str -2)))) | 124 (concat (substring str 0 -2) "." (substring str -2)))) |
100 (error ""))) | 125 (error ""))) |
101 (mail-spool-file (or display-time-mail-file | 126 (mail-spool-file (or display-time-mail-file |
102 (getenv "MAIL") | 127 (getenv "MAIL") |
103 (concat rmail-spool-directory | 128 (concat rmail-spool-directory |
104 (user-login-name)))) | 129 (or (getenv "LOGNAME") |
105 hour am-pm-flag mail-flag) | 130 (getenv "USER") |
106 (setq hour (read (substring time 11 13))) | 131 (user-login-name))))) |
107 (if (not display-time-24hr-format) | 132 (mail (and (file-exists-p mail-spool-file) |
108 (progn | 133 (display-time-file-nonempty-p mail-spool-file))) |
109 (setq am-pm-flag (if (>= hour 12) "pm" "am")) | 134 (24-hours (substring time 11 13)) |
110 (if (> hour 12) | 135 (hour (string-to-int 24-hours)) |
111 (setq hour (- hour 12)) | 136 (12-hours (int-to-string (if (> hour 12) |
112 (if (= hour 0) | 137 (- hour 12) |
113 (setq hour 12)))) | 138 (if (= hour 0) |
114 (setq am-pm-flag "")) | 139 12 |
115 (setq mail-flag | 140 hour)))) |
116 (if (and (or (null display-time-server-down-time) | 141 (am-pm (if (> hour 12) "pm" "am")) |
117 ;; If have been down for 20 min, try again. | 142 (minutes (substring time 14 16)) |
118 (> (- (nth 1 (current-time)) | 143 (seconds (substring time 17 19)) |
119 display-time-server-down-time) | 144 (time-zone (car (cdr (current-time-zone)))) |
120 1200)) | 145 (day (substring time 8 10)) |
121 (let ((start-time (current-time))) | 146 (year (substring time 20 24)) |
122 (prog1 | 147 (monthname (substring time 4 7)) |
123 (display-time-file-nonempty-p mail-spool-file) | 148 (month |
124 (if (> (- (nth 1 (current-time)) (nth 1 start-time)) | 149 (cdr |
125 20) | 150 (assoc |
126 ;; Record that mail file is not accessible. | 151 monthname |
127 (setq display-time-server-down-time | 152 '(("Jan" . "1") ("Feb" . "2") ("Mar" . "3") ("Apr" . "4") |
128 (nth 1 (current-time))) | 153 ("May" . "5") ("Jun" . "6") ("Jul" . "7") ("Aug" . "8") |
129 ;; Record that mail file is accessible. | 154 ("Sep" . "9") ("Oct" . "10") ("Nov" . "11") ("Dec" . "12"))))) |
130 (setq display-time-server-down-time nil)) | 155 (dayname (substring time 0 3))) |
131 ))) | |
132 " Mail" | |
133 "")) | |
134 (setq display-time-string | 156 (setq display-time-string |
135 (concat (format "%d" hour) (substring time 13 16) | 157 (mapconcat 'eval display-time-string-forms ""))) |
136 am-pm-flag | |
137 load | |
138 mail-flag)) | |
139 ;; Append the date if desired. | |
140 (if display-time-day-and-date | |
141 (setq display-time-string | |
142 (concat (substring time 0 11) display-time-string)))) | |
143 (run-hooks 'display-time-hook) | 158 (run-hooks 'display-time-hook) |
144 ;; Force redisplay of all buffers' mode lines to be considered. | 159 ;; Force redisplay of all buffers' mode lines to be considered. |
145 (save-excursion (set-buffer (other-buffer))) | 160 (save-excursion (set-buffer (other-buffer))) |
146 (set-buffer-modified-p (buffer-modified-p)) | 161 (set-buffer-modified-p (buffer-modified-p)) |
147 ;; Do redisplay right now, if no input pending. | 162 ;; Do redisplay right now, if no input pending. |