aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>2006-08-20 12:06:20 +0000
committerRichard M. Stallman <[email protected]>2006-08-20 12:06:20 +0000
commitff458d812f881e04585bef6bdb96e3cd0ddd905d (patch)
tree75938b9c894ccf3b6ea3c6da3d08653f7fcbec04 /src
parent73a0e48276296383da15e948952cccccca2b4105 (diff)
(Fcurrent_idle_time): New function.
(syms_of_keyboard): defsubr it.
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index fed6fbc79d..13ab529998 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4543,6 +4543,35 @@ timer_check (do_it_now)
UNGCPRO;
return nexttime;
}
+
+DEFUN ("current-idle-time", Fcurrent_idle_time, Scurrent_idle_time, 0, 0, 0,
+ /* Return the current length of Emacs idleness.
+The value is returned as a list of three integers. The first has the
+most significant 16 bits of the seconds, while the second has the
+least significant 16 bits. The third integer gives the microsecond
+count.
+
+The microsecond count is zero on systems that do not provide
+resolution finer than a second. */)
+ ()
+{
+ EMACS_TIME now, idleness_now;
+ Lisp_Object result[3];
+
+ EMACS_GET_TIME (now);
+ if (! EMACS_TIME_NEG_P (timer_idleness_start_time))
+ {
+ EMACS_SUB_TIME (idleness_now, now, timer_idleness_start_time);
+
+ XSETINT (result[0], (EMACS_SECS (idleness_now) >> 16) & 0xffff);
+ XSETINT (result[1], (EMACS_SECS (idleness_now) >> 0) & 0xffff);
+ XSETINT (result[2], EMACS_USECS (idleness_now));
+
+ return Flist (3, result);
+ }
+
+ return Qnil;
+}
/* Caches for modify_event_symbol. */
static Lisp_Object accent_key_syms;
@@ -11131,6 +11160,7 @@ syms_of_keyboard ()
menu_bar_items_vector = Qnil;
staticpro (&menu_bar_items_vector);
+ defsubr (&Scurrent_idle_time);
defsubr (&Sevent_convert_list);
defsubr (&Sread_key_sequence);
defsubr (&Sread_key_sequence_vector);