This implements a suggestion made in:
http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00587.html
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.
* lisp/battery.el (battery-update): Use the face `error' instead of
`font-lock-warning-face'.
* lisp/ibuffer.el (ibuffer-marked-face): Change default face from
`font-lock-warning-face' to `warning'.
(ibuffer-deletion-face): Change default face from
`font-lock-type-face' to `error'.
* lisp/proced.el (proced-marked): Inherit from `error' instead of
`font-lock-warning-face'.
Fixes: debbugs:6117
* lisp/emacs-lisp/byte-run.el (make-obsolete-variable): New argument
`access-type' and new obsolescence format.
* lisp/emacs-lisp/bytecomp.el (byte-compile-warn-obsolete): Adjust to
new format.
(byte-compile-check-variable): New `access-type' argument.
Only warn if the access-type is obsolete.
(byte-compile-dynamic-variable-bind, byte-compile-variable-ref)
(byte-compile-variable-set): Adjust callers.
* lisp/help-fns.el (describe-variable): Adjust to new obsolescence format.
* lisp/mail/sendmail.el (mail-mailer-swallows-blank-line): Only mark
setting it as obsolete.
* lisp/simple.el (minibuffer-completing-symbol):
* lisp/font-lock.el (font-lock-beginning-of-syntax-function): Only mark read
access as obsolete.
* lisp/minibuffer.el (minibuffer-completing-file-name): Don't make it
obsolete yet.
* lisp/international/quail.el (quail-mouse-choose-completion): Remove unused
code referring to obsolete var.
(quail-choose-completion-string): Remove.
* lisp/server.el (server-clients-with, server-kill-buffer-query-function)
(server-kill-emacs-query-function): Silence "unused `proc'" warnings.
* lisp/proced.el (proced-send-signal):
* lisp/emacs-lisp/lisp.el (lisp-complete-symbol):
Replace completion-annotate-function with completion-extra-properties.
information instead of only running proced-post-display-hook.
(proced-send-signal): Add a leading space to the buffer name
" *Marked Processes*" to make this buffer ephemeral.
(proced-grammar-alist): Capitalize names.
(proced-send-signal): Use a non-hidden buffer (since it's displayed).
Disable undo manually and make it read-only.
Use completion-annotate-function.
(proced-header-line): Handle header lines that are shorter than
window-hscroll.
(proced-send-signal): Rebind split-width-threshold analogous to
dired-pop-to-buffer.
instead of a cons pair.
(proced-post-display-hook): New variable.
(proced-tree-depth): Renamed from proced-tree-indent.
(proced-mode): Derive mode from special-mode.
(proced-mode-map): Changed accordingly.
(proced, proced-update): Run proced-post-display-hook.
(proced-do-mark-all): Count processes for which mark has been
updated.
(proced-format): Check for ppid attribute.
(proced-process-attributes): Take time and ctime attribute from
system-process-attributes.
(proced-send-signal): Doc fix. Collect properly the info on
marked processes. Use fit-window-to-buffer instead of
dired-pop-to-buffer.
(proced-format-alist): Use attribute tree.
(proced-tree-flag, proced-tree-indent): New variables.
(proced-children-alist): Renamed from proced-process-tree. PPID
must refer to a process in process-alist. Ignore PPIDs that equal
PID. Children alist inherits sorting order from process-alist.
(proced-process-tree): New variable. New function.
(proced-process-tree-internal, proced-toggle-tree)
(proced-tree, proced-tree-insert, proced-format-tree): New
functions.
(proced-mark-process-alist): Add docstring.
(proced-filter-parents): PPID must refer to a process in
process-alist. Ignore PPIDs that equal PID.
(proced-sort): Throw error if attribute is not sortable.
(proced-sort-interactive): Restrict completion to sortable
attributes.
(proced-format): Include tree in standard attributes if
proced-tree-flag is non-nil. Make header clickable only if
corresponding predicate is non-nil.
(proced-update): Use proced-tree.
are cons pairs (function . help-echo) or nil.
(proced-refine): Use them.
(proced-format-alist): Allow alternatives.
(proced-descend): New variable.
(proced-sort): New arg descend.
(proced-sort-interactive): Repeated calls toggle sort order.
(proced-format): Accomodate changes of proced-format-alist.
Undefined attributes are displayed as "?".
(proced-process-attributes): New optional arg pid-list.
Ignore processes with empty attribute list.
(proced-auto-update-flag): Renamed from proced-timer-flag.
(proced-auto-update-timer): Renamed from proced-timer.
(proced-toggle-auto-update): Renamed from proced-toggle-timer-flag.
(proced-available): Initialize appropriately.
(proced-format-alist, proced-format, proced-filter-alist)
(proced-filter, proced-sort): Use defcustom.
(proced-mode): Fix docstring.
(proced-process-attributes): Handle return value nil of functions
in proced-custom-attributes.
(proced-sort-header-face): Removed.
(proced-font-lock-keywords): Simplified.
(proced-format): Use face proced-sort-header.
(proced-format-interactive, proced-sort-interactive)
(proced-filter-interactive): Only call proced-update if the scheme
has changed.
(proced-sort-header): Use posn-actual-col-row.
(proced-sort-header-face): New variable.
(proced-format): Allow format value nil. Use
proced-sort-header-face for header of sort column.
(proced-format-args): New function.
(proced-grammar-alist, proced-timer-flag, proced-process-alist)
(proced-header-help-echo, proced-field-help-echo, proced-timer)
(proced-toggle-timer-flag, proced, proced-mode): Doc fix.
(proced-refine): Renamed from proced-filter-attribute. Doc fix.
(proced-sort-header): Bind also to mouse-1.
(proced-move-to-goal-column): Return position of point.
(proced-filter-interactive): Always revert listing.
(proced-format-ttname): Simplify.
(proced-update): Do not keep undo information. Put point at
beginning of buffer if we generate the first listing.
(proced-command-alist, proced-command, proced-goal-header-re)
(proced-sorting-schemes-alist, proced-sorting-scheme)
(proced-header-alist, proced-sorting-schemes-re)
(proced-skip-regexp, proced-next-line, proced-previous-line)
(proced-listing-type, proced-sorting-scheme-p): Removed.
(proced-grammar-alist, proced-custom-attributes)
(proced-format-alist, proced-format, proced-filter-alist)
(proced-filter, proced-sort, proced-goal-attribute)
(proced-timer-interval, proced-timer-flag, proced-timer)
(proced-process-alist, proced-sort-internal, proced-process-tree)
(proced-header-help-echo, proced-field-help-echo): New variables.
(proced-pid-at-point, proced-timer, proced-mark-process-alist)
(proced-omit-process, proced-filter, proced-process-tree)
(proced-filter-children, proced-children-pids)
(proced-filter-parents, proced-<, proced-string-lessp)
(proced-time-lessp, proced-xor, proced-sort-p)
(proced-format-time, proced-format-start, proced-format-ttname)
(proced-format, proced-process-attributes): New functions.
(proced-toggle-timer-flag, proced-mark-children)
(proced-mark-parents, proced-filter-interactive)
(proced-filter-attribute, proced-sort-interactive)
(proced-sort-header, proced-format-interactive): New commands.
(proced-move-to-goal-column): Use goal-column.
(proced-mode): Use proced-timer.
(proced-do-mark-all): Display process count. Use use-region-p.
Simplify.
(proced-omit-processes): Use use-region-p.
(proced-sort-pcpu, proced-sort-pmem, proced-sort-pid)
(proced-sort-start, proced-sort-time, proced-sort-user): Use
proced-sort-interactive.
(proced-sort): Make it a function that performs the actual sort.
(proced-update): New arg revert. Use proced-process-alist,
proced-filter, proced-sort, proced-format, and
proced-grammar-alist. Preserve position of point based on fields.
Make header line and fields clickable.
(proced-send-signal): Use proced-pid-at-point and
proced-process-alist.
(proced-why): Use save-selected-window.
(proced-log): Use buffer-read-only.