This command performs something really simple:
/atime indicates how long you are/were marked as being away. It code is used for rcircBack, where the
/back command will tell you how long you’ve been away.
(defun-rcirc-command awaytime (arg) "Show how long I've been away." (let ((away rcirc-away-time)) (if (not (null away)) (rcirc-do-notice (format "You have been away for %s." (duration-to-string))) (rcirc-do-notice "+++ You are not away!")))) (defalias 'rcirc-cmd-atime 'rcirc-cmd-awaytime) ;; /atime is like /awaytime ;; taken from, hum, dunno :) (defun time2float (&optional tm) "Convert `current-time' to a float number of seconds." (multiple-value-bind (s0 s1 s2) (or tm (current-time)) (+ (* (float (ash 1 16)) s0) (float s1) (* 0.0000001 s2)))) ;; Given a time, returns a well formatted time duration ;; Original Code authoring: franl (slightly modified to use time2float) (defun* duration-to-string (&optional (difftime (- (time2float (current-time)) (time2float rcirc-away-time)))) "Convert an Emacs TIME value (as returned by function `time-since') into English." (let* ((days (floor (/ difftime 86400))) (hours (progn (decf difftime (* days 86400)) (floor (/ difftime 3600)))) (mins (progn (decf difftime (* hours 3600)) (floor (/ difftime 60)))) (secs (progn (decf difftime (* mins 60)) (floor difftime))) format-args output) (setq format-args (if (> days 0) `("%d days, %d hours, %d minutes, %d seconds" ,days ,hours ,mins ,secs) (if (> hours 0) `("%d hours, %d minutes, %d seconds" ,hours ,mins ,secs) (if (> mins 0) `("%d minutes, %d seconds" ,mins ,secs) `("%d seconds" ,secs)))) output (apply 'format format-args)) ;; Change all "1 units" to "1 unit". (while (string-match "\\([^0-9]\\|^\\)1 \\S-+\\(s\\)" output) (setq output (replace-match "" nil nil output 2))) output))
If you were previously marked as away, typing
/awaytime (when still away) will give something like:
00:57 /atime 00:57 -zedek- You have been away for 2 seconds.
Note that on rcircBack, there is code I use to automatically display that information based on a variable. Then going away and going back to activity will display this information if
‘rcirc-show-away-time’ is non-nil.