• Paul Eggert's avatar
    Improve time stamp handling, and be more consistent about it. · 0921dbc3
    Paul Eggert authored
    This implements a suggestion made in:
    Among other things, this means timer.el no longer needs to
    autoload the time-date module.
    * doc/lispref/os.texi (Time of Day, Time Conversion, Time Parsing)
    (Processor Run Time, Time Calculations):
    Document the new behavior, plus be clearer about the old behavior.
    (Idle Timers): Take advantage of new functionality.
    * etc/NEWS: Document the changes.
    * lisp/allout-widgets.el (allout-elapsed-time-seconds): Doc fix.
    * lisp/arc-mode.el (archive-ar-summarize):
    * lisp/calendar/time-date.el (seconds-to-time, days-to-time, time-since):
    * lisp/emacs-lisp/timer.el (timer-relative-time, timer-event-handler)
    (run-at-time, with-timeout-suspend, with-timeout-unsuspend):
    * lisp/net/tramp.el (tramp-time-less-p, tramp-time-subtract):
    * lisp/proced.el (proced-time-lessp):
    * lisp/timezone.el (timezone-time-from-absolute):
    * lisp/type-break.el (type-break-schedule, type-break-time-sum):
    Simplify by using new functionality.
    * lisp/calendar/cal-dst.el (calendar-next-time-zone-transition):
    Do not return time values in obsolete and undocumented (HI . LO)
    format; use (HI LO) instead.
    * lisp/calendar/time-date.el (with-decoded-time-value):
    Treat 'nil' as current time.  This is mostly for XEmacs.
    (encode-time-value, with-decoded-time-value): Obsolete.
    (time-add, time-subtract, time-less-p): Use no-op autoloads, for
    XEmacs.  Define only if XEmacs, as they're now C builtins in Emacs.
    * lisp/ldefs-boot.el: Update to match new time-date.el
    * lisp/proced.el: Do not require time-date.
    * src/editfns.c (invalid_time): New function.
    Use it instead of 'error ("Invalid time specification")'.
    (time_add, time_subtract, time_arith, Ftime_add, Ftime_less_p)
    (decode_float_time, lisp_to_timespec, lisp_time_struct):
    New functions.
    (make_time_tail, make_time): Remove.  All uses changed to use
    new functions or plain list4i.
    (disassemble_lisp_time): Return effective length if successful.
    Check that LOW is an integer, if it's combined with other components.
    (decode_time_components): Decode into struct lisp_time, not
    struct timespec, so that we can support a wide set of times
    regardless of whether time_t is signed.  Decode plain numbers
    as seconds since the Epoch, and nil as the current time.
    (lisp_time_argument, lisp_seconds_argument, Ffloat_time):
    Reimplement in terms of new functions.
    (Fencode_time): Just use list2i.
    (syms_of_editfns): Add time-add, time-subtract, time-less-p.
    * src/keyboard.c (decode_timer): Don't allow the new formats (floating
    point or nil) in timers.
    * src/systime.h (LO_TIME_BITS): New constant.  Use it everywhere in
    place of the magic number '16'.
    (struct lisp_time): New type.
    (decode_time_components): Use it.
    (lisp_to_timespec): New decl.
timer.el 21.8 KB