]> git.eshelyaron.com Git - emacs.git/commitdiff
(emacs-uptime): New function.
authorGlenn Morris <rgm@gnu.org>
Mon, 11 Feb 2008 00:28:31 +0000 (00:28 +0000)
committerGlenn Morris <rgm@gnu.org>
Mon, 11 Feb 2008 00:28:31 +0000 (00:28 +0000)
lisp/ChangeLog
lisp/calendar/time-date.el

index 0e664149b94ea597518a406ffcdd6065abfc5ede..4ee7ee0e2ad3f79ab6e59f59f3df2306c0c09697 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-11  Glenn Morris  <rgm@gnu.org>
+
+       * startup.el (emacs-startup-time): New variable.
+       (command-line): Set emacs-startup-time.
+
+       * calendar/time-date.el (emacs-uptime): New function.
+
 2008-02-10  Bastien Guerry  <bzg@altern.org>
 
        * mail/rmail.el (rmail-nonignored-headers): Allow to be nil.
index 58444041725f98904826ec285c9d6f248fe9a360..1f325379a48036cbfef9997f7d4d8e4757f91e6e 100644 (file)
@@ -254,6 +254,40 @@ If DATE is malformed, return a time value of zeros."
       (date-to-time date)
     (error '(0 0))))
 
+\f
+;;;###autoload
+(defun emacs-uptime ()
+  "Return a string giving the uptime of this instance of Emacs."
+  (interactive)
+  (let* ((sec (time-to-seconds
+               (time-subtract (current-time) emacs-startup-time)))
+         (prev)
+         (num)
+         (str
+          ;; cf article-make-date-line in gnus-art.
+          ;; Worth having a general time-date `format-seconds'
+          ;; function that converts a number of seconds into so many
+          ;; years, hours, etc?
+          (mapconcat
+           (lambda (unit)
+             (if (zerop (setq num (floor sec (cdr unit))))
+                 ""
+               (setq sec (- sec (* num (cdr unit))))
+              (prog1
+                  (format "%s%d %s%s" (if prev ", " "") num
+                          (symbol-name (car unit))
+                          (if (= num 1) "" "s"))
+                (setq prev t))))
+           '((year   . 31536000)        ; 365-day year
+             (day    .    86400)
+             (hour   .     3600)
+             (minute .       60)
+             (second .        1))
+           "")))
+    (if (interactive-p)
+        (message "%s" str)
+      str)))
+
 (provide 'time-date)
 
 ;;; arch-tag: addcf07b-b20a-465b-af72-550b8ac5190f