Spelling fixes.
[bpt/emacs.git] / lisp / time.el
index b158ef6..4955b17 100644 (file)
@@ -156,21 +156,24 @@ LABEL is a string to display as the label of that TIMEZONE's time."
 (defcustom display-time-world-list
   ;; Determine if zoneinfo style timezones are supported by testing that
   ;; America/New York and Europe/London return different timezones.
-  (let (gmt nyt)
-    (set-time-zone-rule "America/New_York")
-    (setq nyt (format-time-string "%z"))
-    (set-time-zone-rule "Europe/London")
-    (setq gmt (format-time-string "%z"))
-    (set-time-zone-rule nil)
+  (let ((old-tz (getenv "TZ"))
+       gmt nyt)
+    (unwind-protect
+       (progn
+         (setenv "TZ" "America/New_York")
+         (setq nyt (format-time-string "%z"))
+         (setenv "TZ" "Europe/London")
+         (setq gmt (format-time-string "%z")))
+      (setenv "TZ" old-tz))
     (if (string-equal nyt gmt)
         legacy-style-world-list
       zoneinfo-style-world-list))
   "Alist of time zones and places for `display-time-world' to display.
 Each element has the form (TIMEZONE LABEL).
-TIMEZONE should be in the format supported by `set-time-zone-rule' on
-your system.  See the documentation of `zoneinfo-style-world-list' and
-\`legacy-style-world-list' for two widely used formats.
-LABEL is a string to display as the label of that TIMEZONE's time."
+TIMEZONE should be in a format supported by your system.  See the
+documentation of `zoneinfo-style-world-list' and
+\`legacy-style-world-list' for two widely used formats.  LABEL is
+a string to display as the label of that TIMEZONE's time."
   :group 'display-time
   :type '(repeat (list string string))
   :version "23.1")
@@ -366,7 +369,7 @@ would give mode line times like `94/12/30 21:07:48 (UTC)'."
       nil)))
 
 (with-no-warnings
-  ;; Warnings are suppresed to avoid "global/dynamic var `X' lacks a prefix".
+  ;; Warnings are suppressed to avoid "global/dynamic var `X' lacks a prefix".
   (defvar now)
   (defvar time)
   (defvar load)
@@ -481,14 +484,15 @@ update which can wait for the next redisplay."
 ;;;###autoload
 (define-minor-mode display-time-mode
   "Toggle display of time, load level, and mail flag in mode lines.
-With a numeric arg, enable this display if arg is positive.
-
-When this display is enabled, it updates automatically every minute
-\(you can control the number of seconds between updates by
-customizing `display-time-interval').
-If `display-time-day-and-date' is non-nil, the current day and date
-are displayed as well.
-This runs the normal hook `display-time-hook' after each update."
+With a prefix argument ARG, enable Display Time mode if ARG is
+positive, and disable it otherwise.  If called from Lisp, enable
+it if ARG is omitted or nil.
+
+When Display Time mode is enabled, it updates every minute (you
+can control the number of seconds between updates by customizing
+`display-time-interval').  If `display-time-day-and-date' is
+non-nil, the current day and date are displayed as well.  This
+runs the normal hook `display-time-hook' after each update."
   :global t :group 'display-time
   (and display-time-timer (cancel-timer display-time-timer))
   (setq display-time-timer nil)
@@ -521,26 +525,26 @@ See `display-time-world'."
 (defun display-time-world-display (alist)
   "Replace current buffer text with times in various zones, based on ALIST."
   (let ((inhibit-read-only t)
-       (buffer-undo-list t))
+       (buffer-undo-list t)
+       (old-tz (getenv "TZ"))
+       (max-width 0)
+       result fmt)
     (erase-buffer)
-    (let ((max-width 0)
-         (result ())
-         fmt)
-      (unwind-protect
-         (dolist (zone alist)
-           (let* ((label (cadr zone))
-                  (width (string-width label)))
-             (set-time-zone-rule (car zone))
-             (push (cons label
-                         (format-time-string display-time-world-time-format))
-                   result)
-             (when (> width max-width)
-               (setq max-width width))))
-       (set-time-zone-rule nil))
-      (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)))
+    (unwind-protect
+       (dolist (zone alist)
+         (let* ((label (cadr zone))
+                (width (string-width label)))
+           (setenv "TZ" (car zone))
+           (push (cons label
+                       (format-time-string display-time-world-time-format))
+                 result)
+           (when (> width max-width)
+             (setq max-width width))))
+      (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))
 
 ;;;###autoload
 (defun display-time-world ()