[TMP] enable load_prefer_newer
[bpt/emacs.git] / lisp / time.el
index c7fa592..ae04077 100644 (file)
@@ -1,9 +1,9 @@
 ;;; time.el --- display time, load and mail indicator in mode line of Emacs -*-coding: utf-8 -*-
 
-;; Copyright (C) 1985-1987, 1993-1994, 1996, 2000-2012
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1993-1994, 1996, 2000-2014 Free Software
+;; Foundation, Inc.
 
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 
 ;; This file is part of GNU Emacs.
 
@@ -206,12 +206,6 @@ a string to display as the label of that TIMEZONE's time."
   :type 'integer
   :version "23.1")
 
-(defvar display-time-world-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "q" 'kill-this-buffer)
-    map)
-  "Keymap of Display Time World mode.")
-
 ;;;###autoload
 (defun display-time ()
   "Enable display of time, load level, and mail flag in mode lines.
@@ -329,8 +323,6 @@ would give mode line times like `94/12/30 21:07:48 (UTC)'."
 
 (defun display-time-event-handler ()
   (display-time-update)
-  ;; Do redisplay right now, if no input pending.
-  (sit-for 0)
   (let* ((current (current-time))
         (timer display-time-timer)
         ;; Compute the time when this timer will run again, next.
@@ -358,8 +350,7 @@ Switches from the 1 to 5 to 15 minute load average, and then back to 1."
   (interactive)
   (if (= 3 (setq display-time-load-average (1+ display-time-load-average)))
       (setq display-time-load-average 0))
-  (display-time-update)
-  (sit-for 0))
+  (display-time-update))
 
 (defun display-time-mail-check-directory ()
   (let ((mail-files (directory-files display-time-mail-directory t))
@@ -465,7 +456,7 @@ update which can wait for the next redisplay."
          (seconds (substring time 17 19))
          (time-zone (car (cdr (current-time-zone now))))
          (day (substring time 8 10))
-         (year (substring time 20 24))
+         (year (format-time-string "%Y" now))
          (monthname (substring time 4 7))
          (month
           (cdr
@@ -480,7 +471,7 @@ update which can wait for the next redisplay."
     ;; This is inside the let binding, but we are not going to document
     ;; what variables are available.
     (run-hooks 'display-time-hook))
-  (force-mode-line-update))
+  (force-mode-line-update 'all))
 
 (defun display-time-file-nonempty-p (file)
   (let ((remote-file-name-inhibit-cache (- display-time-interval 5)))
@@ -523,7 +514,7 @@ runs the normal hook `display-time-hook' after each update."
                 'display-time-event-handler)))
 
 
-(define-derived-mode display-time-world-mode nil "World clock"
+(define-derived-mode display-time-world-mode special-mode "World clock"
   "Major mode for buffer that displays times in various time zones.
 See `display-time-world'."
   (setq show-trailing-whitespace nil))
@@ -549,8 +540,8 @@ See `display-time-world'."
       (setenv "TZ" old-tz))
     (setq fmt (concat "%-" (int-to-string max-width) "s %s\n"))
     (dolist (timedata (nreverse result))
-      (insert (format fmt (car timedata) (cdr timedata)))))
-  (delete-char -1))
+      (insert (format fmt (car timedata) (cdr timedata))))
+    (delete-char -1)))
 
 ;;;###autoload
 (defun display-time-world ()
@@ -562,10 +553,10 @@ To turn off the world time display, go to that window and type `q'."
              (not (get-buffer display-time-world-buffer-name)))
     (run-at-time t display-time-world-timer-second 'display-time-world-timer))
   (with-current-buffer (get-buffer-create display-time-world-buffer-name)
-    (display-time-world-display display-time-world-list))
-  (pop-to-buffer display-time-world-buffer-name)
-  (fit-window-to-buffer)
-  (display-time-world-mode))
+    (display-time-world-display display-time-world-list)
+    (display-buffer display-time-world-buffer-name
+                   (cons nil '((window-height . fit-window-to-buffer))))
+    (display-time-world-mode)))
 
 (defun display-time-world-timer ()
   (if (get-buffer display-time-world-buffer-name)
@@ -575,7 +566,8 @@ To turn off the world time display, go to that window and type `q'."
     (let ((list timer-list))
       (while list
         (let ((elt (pop list)))
-          (when (equal (symbol-name (aref elt 5)) "display-time-world-timer")
+          (when (equal (symbol-name (timer--function elt))
+                      "display-time-world-timer")
             (cancel-timer elt)))))))
 
 ;;;###autoload