]> code.delx.au - gnu-emacs/blobdiff - lisp/time.el
(calculator-expt): Modify previous change to just use the expanded cl
[gnu-emacs] / lisp / time.el
index a048c9780cbb79b84df05dccc77c8eb3ca74e2ab..3db8e97a45e2cf6c68024fceb151ee7bb4efdf11 100644 (file)
@@ -1,7 +1,7 @@
 ;;; time.el --- display time, load and mail indicator in mode line of Emacs -*-coding: utf-8 -*-
 
 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1996, 2000, 2001, 2002,
-;;   2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;;   2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 
@@ -132,10 +132,10 @@ LABEL is a string to display as the label of that TIMEZONE's time."
 (defcustom legacy-style-world-list
   '(("PST8PDT" "Seattle")
     ("EST5EDT" "New York")
-    ("BST0BDT" "London")
+    ("GMT0BST" "London")
     ("CET-1CDT" "Paris")
-    ("IST-5:30IDT" "Bangalore")
-    ("JST-9JDT" "Tokyo"))
+    ("IST-5:30" "Bangalore")
+    ("JST-9" "Tokyo"))
   "Alist of traditional-style time zones and places for `display-time-world'.
 Each element has the form (TIMEZONE LABEL).
 TIMEZONE should be a string of the form:
@@ -150,9 +150,17 @@ LABEL is a string to display as the label of that TIMEZONE's time."
   :version "23.1")
 
 (defcustom display-time-world-list
-  (if (memq 'system-type '(gnu/linux ms-dos))
-      zoneinfo-style-world-list
-    legacy-style-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)
+    (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
@@ -540,7 +548,33 @@ To turn off the world time display, go to that window and type `q'."
           (when (equal (symbol-name (aref elt 5)) "display-time-world-timer")
             (cancel-timer elt)))))))
 
+;;;###autoload
+(defun emacs-uptime (&optional format)
+  "Return a string giving the uptime of this instance of Emacs.
+FORMAT is a string to format the result, using `format-seconds'.
+For example, the Unix uptime command format is \"%D, %z%2h:%.2m\"."
+  (interactive)
+  (let ((str
+         (format-seconds (or format "%Y, %D, %H, %M, %z%S")
+                         (time-to-seconds
+                          (time-subtract (current-time) before-init-time)))))
+    (if (interactive-p)
+        (message "%s" str)
+      str)))
+
+;;;###autoload
+(defun emacs-init-time ()
+  "Return a string giving the duration of the Emacs initialization."
+  (interactive)
+  (let ((str
+        (format "%.1f seconds"
+                (time-to-seconds
+                 (time-subtract after-init-time before-init-time)))))
+    (if (interactive-p)
+        (message "%s" str)
+      str)))
+
 (provide 'time)
 
-;;; arch-tag: b9c1623f-b5cb-48e4-b650-482a4d23c5a6
+;; arch-tag: b9c1623f-b5cb-48e4-b650-482a4d23c5a6
 ;;; time.el ends here