# HG changeset patch # User Richard M. Stallman # Date 1156075580 0 # Node ID 30a779a4fc5441bc7fff76a1f6a5591027a6a036 # Parent efffd34acd8eeacffabf18f758aa69919b179fcf (Fcurrent_idle_time): New function. (syms_of_keyboard): defsubr it. diff -r efffd34acd8e -r 30a779a4fc54 src/keyboard.c --- a/src/keyboard.c Fri Aug 18 16:17:20 2006 +0000 +++ b/src/keyboard.c Sun Aug 20 12:06:20 2006 +0000 @@ -4543,6 +4543,35 @@ 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 @@ 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);