* doc/lispref/display.texi (Delayed Warnings): New node.
* doc/misc/gnus-faq.texi (FAQ 8-2): Mention EasyPG.
* doc/misc/gnus.texi: Reduce references to obsolete pgg library.
(Security): Note that epg is now the default.
* doc/misc/message.texi (Using PGP/MIME): Note that epg is now the default.
* doc/misc/nxml-mode.texi (Completion): C-RET is no longer bound to
nxml-complete.
* lisp/subr.el (delayed-warnings-hook): Doc fix.
* src/keyboard.c (Vdelayed_warnings_list): Doc fix.
* lisp/subr.el (save-window-excursion): Doc fix.
* doc/lispref/windows.texi (Window Configurations): save-window-excursion is
now a macro.
* doc/lispref/display.texi (Temporary Displays): with-output-to-temp-buffer is
now a macro.
Fixes: debbugs:9979
* lisp/subr.el (display-delayed-warnings): Doc fix.
(collapse-delayed-warnings): New function to collapse identical
adjacent warnings.
(delayed-warnings-hook): Add it.
* lisp/international/characters.el: Add L and R categories.
* lisp/subr.el (bidi-string-mark-left-to-right): Rename from
string-mark-left-to-right. Use category search.
* lisp/buff-menu.el (Buffer-menu-buffer+size): Callers changed.
* lisp/subr.el (make-composed-keymap): Move from C. Change calling
convention, and improve docstring to bring attention to a subtle point.
* lisp/minibuffer.el (completing-read-default): Adjust accordingly.
* src/keymap.c (Fmake_composed_keymap): New function.
(Fset_keymap_parent): Simplify.
(fix_submap_inheritance): Remove.
(access_keymap_1): New function extracted from access_keymap to handle
embedded parents and handle lists of maps.
(access_keymap): Use it.
(Fkeymap_prompt, map_keymap_internal, map_keymap, store_in_keymap)
(Fcopy_keymap): Handle embedded parents.
(Fcommand_remapping, define_as_prefix): Simplify.
(Fkey_binding): Simplify.
(syms_of_keymap): Move minibuffer-local-completion-map,
minibuffer-local-filename-completion-map,
minibuffer-local-must-match-map, and
minibuffer-local-filename-must-match-map to Elisp.
(syms_of_keymap): Defsubr make-composed-keymap.
* src/keyboard.c (menu_bar_items): Use map_keymap_canonical.
(parse_menu_item): Trivial simplification.
* lisp/subr.el (remq): Don't allocate if it's not needed.
(keymap--menu-item-binding, keymap--menu-item-with-binding)
(keymap--merge-bindings): New functions.
(keymap-canonicalize): Use them to refine the canonicalization.
* lisp/minibuffer.el (minibuffer-local-completion-map)
(minibuffer-local-must-match-map): Move initialization from C.
(minibuffer-local-filename-completion-map): Move initialization from C;
don't inherit from anything here.
(minibuffer-local-filename-must-match-map): Make obsolete.
(completing-read-default): Use make-composed-keymap to combine
minibuffer-local-filename-completion-map with either
minibuffer-local-must-match-map or
minibuffer-local-filename-completion-map.
* etc/NEWS: Document `delayed-warnings-list' and `delayed-warnings-hook'.
* lisp/subr.el (display-delayed-warnings): New function.
(delayed-warnings-hook): New variable.
* src/keyboard.c (Qdelayed_warnings_hook): Define.
(command_loop_1): Run `delayed-warnings-hook' if Vdelayed_warnings_list
is non-nil.
(syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
(syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.