emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp 87ee6ff 3/3: Merge remote-tracking branch 'savannah/


From: Andrea Corallo
Subject: feature/native-comp 87ee6ff 3/3: Merge remote-tracking branch 'savannah/master' into HEAD
Date: Mon, 9 Mar 2020 04:11:49 -0400 (EDT)

branch: feature/native-comp
commit 87ee6ff4eb6df369965f37fba073e3ef1bb5d0bd
Merge: 9838ee7 a461baa
Author: Andrea Corallo <address@hidden>
Commit: Andrea Corallo <address@hidden>

    Merge remote-tracking branch 'savannah/master' into HEAD
---
 ChangeLog.3                      |  519 ++++++++++-----
 admin/authors.el                 |   13 +-
 admin/merge-gnulib               |    4 +-
 doc/emacs/building.texi          |    5 +-
 doc/emacs/custom.texi            |   17 +-
 doc/emacs/macos.texi             |   69 +-
 doc/emacs/mini.texi              |   47 +-
 doc/lispref/compile.texi         |    6 +-
 doc/lispref/files.texi           |   10 +-
 doc/lispref/frames.texi          |    2 +-
 doc/lispref/minibuf.texi         |   20 +-
 doc/lispref/os.texi              |    5 +-
 doc/lispref/searching.texi       |    5 +-
 doc/lispref/tips.texi            |    2 +-
 doc/lispref/variables.texi       |   12 +-
 doc/misc/cc-mode.texi            |   52 +-
 doc/misc/eieio.texi              |    4 +-
 doc/misc/gnus.texi               |    6 +-
 etc/AUTHORS                      | 1324 +++++++++++++++++++++++---------------
 etc/DEBUG                        |    4 +-
 etc/NEWS                         |    4 +-
 etc/NEWS.27                      |   75 ++-
 etc/TODO                         |   71 ++
 lib-src/etags.c                  |    5 +
 lib/futimens.c                   |   37 ++
 lib/gnulib.mk.in                 |   28 +-
 lib/open.c                       |    4 +-
 lib/utimensat.c                  |  160 +++++
 lisp/cedet/pulse.el              |    2 +
 lisp/emacs-lisp/bytecomp.el      |   68 +-
 lisp/emacs-lisp/checkdoc.el      |    4 +-
 lisp/emacs-lisp/cl-extra.el      |    6 +-
 lisp/emacs-lisp/cursor-sensor.el |  112 ++--
 lisp/emacs-lisp/rx.el            |   86 ++-
 lisp/emacs-lisp/seq.el           |   10 +-
 lisp/emacs-lisp/timer.el         |    3 -
 lisp/erc/erc.el                  |    2 +-
 lisp/files.el                    |    7 +-
 lisp/frame.el                    |   12 +
 lisp/gnus/gnus-art.el            |    6 +-
 lisp/gnus/gnus-cloud.el          |    4 +-
 lisp/gnus/spam-stat.el           |    2 +-
 lisp/help-fns.el                 |    6 +-
 lisp/icomplete.el                |   15 +-
 lisp/international/mule.el       |    2 +-
 lisp/loadhist.el                 |    2 +-
 lisp/minibuffer.el               |   11 +-
 lisp/net/tramp-adb.el            |    6 +-
 lisp/net/tramp-gvfs.el           |    4 +-
 lisp/net/tramp-sh.el             |    3 +-
 lisp/net/tramp-smb.el            |    3 +-
 lisp/net/tramp-sudoedit.el       |    3 +-
 lisp/progmodes/cc-cmds.el        |   93 +++
 lisp/progmodes/cc-langs.el       |    9 +-
 lisp/progmodes/cc-mode.el        |  111 ++--
 lisp/progmodes/cc-vars.el        |    9 +
 lisp/progmodes/vhdl-mode.el      |    2 +-
 lisp/simple.el                   |   13 +-
 lisp/subr.el                     |   25 +-
 lisp/tab-line.el                 |   36 +-
 lisp/tar-mode.el                 |    2 +-
 lisp/term/rxvt.el                |   21 +-
 lisp/textmodes/bibtex.el         |   50 +-
 lisp/textmodes/table.el          |   21 +-
 lisp/vc/vc-cvs.el                |   21 +-
 lisp/vc/vc-dir.el                |    7 +-
 lisp/vc/vc.el                    |   18 +-
 lisp/windmove.el                 |   12 +
 lisp/window.el                   |   27 +-
 m4/futimens.m4                   |   65 ++
 m4/gnulib-comp.m4                |   38 +-
 m4/utimensat.m4                  |   69 ++
 nt/gnulib-cfg.mk                 |    2 +
 nt/inc/sys/stat.h                |    5 +
 nt/mingw-cfg.site                |    4 +
 src/composite.c                  |   18 +-
 src/conf_post.h                  |    7 +
 src/editfns.c                    |   19 +-
 src/emacs.c                      |    1 -
 src/fileio.c                     |   53 +-
 src/font.c                       |    4 +-
 src/font.h                       |    2 +-
 src/fontset.c                    |   12 +-
 src/fringe.c                     |    7 +-
 src/gnutls.c                     |   19 +-
 src/intervals.c                  |   12 +-
 src/intervals.h                  |   24 +-
 src/nsterm.m                     |   11 +-
 src/pdumper.c                    |    9 +-
 src/process.c                    |   13 -
 src/sysdep.c                     |   15 -
 src/systime.h                    |    3 -
 src/timefns.c                    |   83 ++-
 src/w32.c                        |  106 ++-
 src/w32term.c                    |   42 +-
 src/xdisp.c                      |    4 +
 test/lisp/emacs-lisp/rx-tests.el |   26 +-
 test/lisp/filenotify-tests.el    |   11 +-
 test/lisp/files-tests.el         |    4 +-
 test/lisp/net/tramp-tests.el     |    3 +-
 100 files changed, 2782 insertions(+), 1275 deletions(-)

diff --git a/ChangeLog.3 b/ChangeLog.3
index d35a01a..fc41c1f 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -1,3 +1,186 @@
+2020-02-27  Nicolas Petton  <address@hidden>
+
+       * admin/authors.el (authors-ignored-files): Fix entries.
+
+2020-02-26  Eric Abrahamsen  <address@hidden>
+
+       Fix documented slot name of eieio-instance-tracker class
+
+       * doc/misc/eieio.texi (eieio-instance-tracker): The code has the slot
+         name as `tracking-symbol', not `tracker-symbol'.
+
+2020-02-26  Robert Pluim  <address@hidden>
+
+       Range-check width passed to define-fringe-bitmap
+
+       This prevents a crash when attempting to create a zero-width bitmap.
+
+       * src/fringe.c (Fdefine_fringe_bitmap): Check value of width,
+       signal an error if outside documented range (Bug#39662).
+
+2020-02-26  Nicolas Petton  <address@hidden>
+
+       * admin/authors.el: Add missing entries
+
+2020-02-26  Noam Postavsky  <address@hidden>
+
+       Define libgnutls-version properly
+
+       * src/gnutls.c (syms_of_gnutls) <libgnutls-version>: Define with
+       DEFVAR_LISP and add docstring, so that this variable will accessible by
+       help facilities.
+
+2020-02-25  Dmitry Gutov  <address@hidden>
+
+       vc-dir-ignore: More accurately choose base directory
+
+       * lisp/vc/vc-dir.el:
+       (vc-dir-ignore): Use it (bug#37189).
+
+       * lisp/vc/vc.el:
+       (vc--ignore-base-dir): Extract from vc-ignore.
+
+2020-02-24  Stefan Monnier  <address@hidden>
+
+       * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Change last 
fix
+
+       Make sure we always work in the selected-window's buffer.
+
+2020-02-23  Alan Mackenzie  <address@hidden>
+
+       CC Mode: Protect against consecutive calls to before-change-functions 
...
+
+       without an intervening call to after-change-functions.  This would have 
been a
+       workaround to bug #38691 had the causes of that bug not been removed.
+
+       * lisp/progmodes/cc-mode.el (c-just-done-before-change): Add an extra 
value to
+       this variable, 'whole-buffer, this being set by c-before-change as a 
signal to
+       c-after-change that although c-before-change has run, it has assumed the
+       entire buffer as the change region.
+       (c-before-change, c-after-change): Adapt to the new meaning of the 
above.
+
+2020-02-23  Noam Postavsky  <address@hidden>
+
+       Shorten some ppss struct field names
+
+       * lisp/emacs-lisp/syntax.el (ppss): Capitalize docstrings.
+       (ppss-comment-depth): Renamed from ppss-comment-nesting.
+       (ppss-quoted-p): Renamed from ppss-after-quote-p.
+       (ppss-min-depth): Renamed from ppss-minimum-paren-depth.
+       (ppss-open-parens): Renamed from ppss-open-paren-positions.
+       * etc/NEWS: Announce the ppss-* accessors.
+
+2020-02-23  Alan Mackenzie  <address@hidden>
+
+       Java Mode: Fix fontification of variable decl inside `for'
+
+       * lisp/progmodes/cc-engine.el (c-forward-declarator): In place of a 
test for
+       C++ Mode, test for either C++ Mode or Java Mode.
+
+2020-02-23  Alan Mackenzie  <address@hidden>
+
+       CC Mode: Fontify foo in "const auto foo :" correctly
+
+       * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): While 
attempting to
+       find a declaration's identifier, recast the latest found id. as that
+       identifier when there is no other type identifier and the result of the 
most
+       recent c-forward-type call is 'maybe or 'found.  In the latter case, 
remove
+       the id. from the found types list, too.
+
+2020-02-23  Juri Linkov  <address@hidden>
+
+       * lisp/replace.el (occur-engine-line): Revert part of fb16313025 
(bug#39597)
+
+2020-02-23  Dmitry Gutov  <address@hidden>
+
+       Move more logic to vc-ignore from vc-default-ignore
+
+       * lisp/vc/vc-dir.el (vc-dir-ignore):
+       Pass relative file names to vc-ignore.
+
+       * lisp/vc/vc.el (vc-ignore): Move the responsibility of
+       constructing the ignore pattern (right now, most often a relative
+       file name) using a file name received from the user, here.
+       (vc-default-ignore): ...from here (bug#37189, see discussion).
+       Also clarify the docstring.
+
+2020-02-22  Eli Zaretskii  <address@hidden>
+
+       Warn about the likes of "[:alnum:]" in regexps
+
+       * doc/lispref/searching.texi (Char Classes): Warn about erroneous
+       usage of named character classes.  Suggested by Stephen Leake
+       <address@hidden>.
+
+2020-02-22  Wolfgang Scherer  <address@hidden>
+
+       Don't write absolute filenames and duplicate strings to CVS ignore files
+
+       * lisp/vc/vc-cvs.el (vc-cvs-ignore): Expand filename correctly
+       and pass on only the basename as the pattern.
+       (vc-cvs-append-to-ignore) Do not write duplicate strings to
+       .cvsignore.  New optional parameter SORT to more explicitly
+       control sorting of the ignore entries.  (Bug#37215)
+       * lisp/vc/pcvs.el (cvs-mode-ignore): Call 'vc-cvs-append-to-ignore'
+       with SORT argument.
+
+2020-02-21  Federico Tedin  <address@hidden>
+
+       Fix cursor-sensor--detect when current buf != selected window's buf
+
+       * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Avoid
+       trying to read text properties from position taken from another
+       buffer.  (Bug#38740)
+
+2020-02-21  Eli Zaretskii  <address@hidden>
+
+       * doc/emacs/sending.texi (Mail Sending): Fix index entries.
+
+2020-02-21  Allen Li  <address@hidden>
+
+       Document 'message-send-mail-function' in the Emacs manual
+
+       Most of the manual here addresses Message mode, yet talks about
+       'send-mail-function' which is used for Mail mode.
+       Fixing this completely requires more involved work, but for now at
+       least document the difference here.
+
+       * doc/emacs/sending.texi (Mail Sending): Mention
+       'message-send-mail-function'.  (Bug#39639)
+
+2020-02-21  Allen Li  <address@hidden>
+
+       Fix reference to 'message-send-and-exit' in Emacs manual
+
+       Most of the manual here addresses Message mode, and C-c C-c directly
+       above cites the Message mode command, not the Mail mode command.
+
+       * doc/emacs/sending.texi (Mail Sending): Fix reference.  (Bug#39639)
+
+2020-02-21  Steven Allen  <address@hidden>
+
+       Skip shell prompt on current line in Eshell even if it's protected
+
+       When the eshell prompt is protected (e.g., with rear non-sticky,
+       inhibited movements, etc.), 'beginning-of-line' won't move to the
+       actual beginning of the line and therefore won't skip over the
+       prompt.
+       * lisp/eshell/em-prompt.el (eshell-previous-prompt): Use
+       'forward-line' to go to the beginning of the line, even if it's
+       protected.  (Bug#39627)
+
+2020-02-20  Mattias Engdegård  <address@hidden>
+
+       Fix broken regexps
+
+       Incorrect escaping prevented these from working as intended.
+       Found by relint.
+
+       * lisp/progmodes/cc-defs.el (c-search-backward-char-property):
+       Add missing backslash.
+       * lisp/progmodes/simula.el (simula-mode):
+       Remove one backslash too many.
+
 2020-02-19  Paul Eggert  <address@hidden>
 
        * Makefile.in (PREFERRED_BRANCH): Now emacs-27.
@@ -766,7 +949,7 @@
 
        Improve explanation of available font backends under X
 
-       * frames.texi (Font and Color Parameters): Clarify that you can't
+       * doc/emacs/frames.texi (Font and Color Parameters): Clarify that you 
can't
        have HarfBuzz and non-HarfBuzz at the same time for xft and cairo
        font backends.
 
@@ -1313,7 +1496,7 @@
        the monitors need to be adjusted, not just the width and height
        (Bug#31223).
 
-       * xfns.c (Fx_display_monitor_attributes_list): Scale top-left
+       * src/xfns.c (Fx_display_monitor_attributes_list): Scale top-left
        coordinates.
 
 2020-01-07  Dmitry Gutov  <address@hidden>
@@ -1359,11 +1542,11 @@
        * configure.ac: Remove check for sys/prctl.h and prctl, check for
        pthread_setname_np instead.
 
-       * systhread.c: Remove sys/prctl.h include.
+       * src/systhread.c: Remove sys/prctl.h include.
        (sys_thread_create) [HAVE_PTHREAD_SETNAME_NP]: Use pthread_setname_np
        to set the name of the newly created thread (Bug#38632).
 
-       * thread.c (Fmake_thread): Use ENCODE_SYSTEM instead of
+       * src/thread.c (Fmake_thread): Use ENCODE_SYSTEM instead of
        ENCODE_UTF_8 on the thread name.
 
 2020-01-05  Paul Eggert  <address@hidden>
@@ -2845,7 +3028,7 @@
 
        Check for GUI frame in ns_color_index_to_rgba
 
-       * nsterm.m (ns_color_index_to_rgba): Check that we're using a GUI
+       * src/nsterm.m (ns_color_index_to_rgba): Check that we're using a GUI
        frame before converting color (Bug#38564).
 
 2019-12-11  Michael Albinus  <address@hidden>
@@ -4588,7 +4771,7 @@
 
        Make gnus-mailing-list-archive recognize https
 
-       * /lisp/gnus/gnus-ml.el (gnus-mailing-list-archive): Accept https in
+       * lisp/gnus/gnus-ml.el (gnus-mailing-list-archive): Accept https in
        regexp.
 
 2019-11-22  Filipp Gunbin  <address@hidden>
@@ -4896,7 +5079,7 @@
        Remember the full font description instead of just the family so that
        size/style/weight settings are preserved.
 
-       * gtkutil.c (xg_get_font) [HAVE_GTK3]: Use the pango font
+       * src/gtkutil.c (xg_get_font) [HAVE_GTK3]: Use the pango font
        description to set/get the current font (Bug#28901).
 
 2019-11-19  Robert Pluim  <address@hidden>
@@ -4961,7 +5144,7 @@
        Our minimum GTK3 version is 3.10, the font filter functions appeared
        in 3.2.
 
-       * gtkutil.c (xg_font_filter) [HAVE_GTK3]: Just check for HAVE_GTK3.
+       * src/gtkutil.c (xg_font_filter) [HAVE_GTK3]: Just check for HAVE_GTK3.
        (xg_get_font) [HAVE_GTK3]: Same here.
 
 2019-11-18  Michael Albinus  <address@hidden>
@@ -5414,14 +5597,14 @@
 
        Make so-long disable flymake, flyspell, flycheck
 
-       * so-long.el (so-long-minor-modes): Add flymake-mode, flyspell-mode,
+       * lisp/so-long.el (so-long-minor-modes): Add flymake-mode, 
flyspell-mode,
        and flycheck-mode.
 
 2019-11-14  Phil Sainty  <address@hidden>
 
        Support loading so-long.el on top of an earlier version
 
-       * so-long.el (so-long-version, so-long--latest-version): New variables.
+       * lisp/so-long.el (so-long-version, so-long--latest-version): New 
variables.
 
        This enables users to safely load version 1.0 of so-long.el on top of
        an earlier version, as well as making provisions for doing likewise
@@ -5431,7 +5614,7 @@
 
        Backwards-compatibility function definitions for so-long.el
 
-       * so-long.el (so-long-inhibit-whitespace-mode)
+       * lisp/so-long.el (so-long-inhibit-whitespace-mode)
        (so-long-make-buffer-read-only, so-long-revert-buffer-read-only)
        (so-long-inhibit-global-hl-line-mode): Restore dummy definitions of
        now-obsolete hook functions used by earlier versions of so-long.el,
@@ -5559,7 +5742,7 @@
 
        time-stamp: update support for time zone numeric offset
 
-       * time-stamp.el (time-stamp-string-preprocess): Change new format for
+       * lisp/time-stamp.el (time-stamp-string-preprocess): Change new format 
for
        numeric time zone from %:z to %5z to match format-time-string better.
        (time-stamp-format): Document support for numeric time zone.
        See discussion in bug#32931.
@@ -6108,7 +6291,7 @@
 
        Widen around c-font-lock-fontify-region.  This fixes bug #38049.
 
-       * lisp/progmodes/cc-mode (c-font-lock-fontify-region): Widen in this 
function,
+       * lisp/progmodes/cc-mode.el (c-font-lock-fontify-region): Widen in this 
function,
        to ensure that the CC Mode font locking mechanism can examine characters
        outside the given region.
 
@@ -6430,14 +6613,14 @@
 
        time-stamp: add support for time zone numeric offset
 
-       * time-stamp.el: Implement %:z as expanding to the numeric time zone
+       * lisp/time-stamp.el: Implement %:z as expanding to the numeric time 
zone
        offset, to address the feature request of bug#32931.  Do not document it
        yet, to discourage compatibility problems in mixed Emacs 26 and Emacs 27
        environments.  Documentation will be added in a subsequent release at
        least two years later.  (We cannot yet use %z for numeric time zone
        because in Emacs 26 it was documented to do something else.)
 
-       * time-stamp-tests.el (time-stamp-test-format-time-zone): expand this
+       * test/lisp/time-stamp-tests.el (time-stamp-test-format-time-zone): 
expand this
        test and break it into two tests, time-stamp-test-format-time-zone-name
        and time-stamp-test-format-time-zone-offset.
 
@@ -7297,7 +7480,7 @@
 
        Support \pagebreak[0] for paragraph-separate in latex-mode
 
-       * textmodes/tex-mode.el (latex-mode): In 'paragraph-separate' allow
+       * lisp/textmodes/tex-mode.el (latex-mode): In 'paragraph-separate' allow
        optional argument ('[0]', etc.) for '\pagebreak[0]'.  (Bug#19039)
 
 2019-10-30  Tom Tromey  <address@hidden>
@@ -7717,7 +7900,7 @@
 
 2019-10-27  Eric Ludlam  <address@hidden>
 
-       * test/lisp/cedet/semantic-utest: silence compiler warnings
+       * test/lisp/cedet/semantic-utest.el: silence compiler warnings
 
        * test/lisp/cedet/semantic-utest-c.el
        (semantic-test-c-preprocessor-simulation): Use with-current-buffer.
@@ -7756,14 +7939,14 @@
 
        time-stamp-time-zone: update customization
 
-       * time-stamp.el (time-stamp-time-zone): Support customization with
+       * lisp/time-stamp.el (time-stamp-time-zone): Support customization with
        an integer offset (a new possible value of the ZONE argument to
        format-time-string in Emacs 27).
        Update the safe-local-variable predicate from string-or-null-p
        (describing time-stamp-time-zone's domain before 2015) to new
        predicate time-stamp-zone-type-p (describing the current domain).
 
-       * time-stamp-tests.el (time-stamp-test-helper-zone-type-p): New test.
+       * test/lisp/time-stamp-tests.el (time-stamp-test-helper-zone-type-p): 
New test.
 
 2019-10-27  Eli Zaretskii  <address@hidden>
 
@@ -7918,7 +8101,7 @@
 
        time-stamp-tests: add name prefix to tests of formatting
 
-       * time-stamp-tests.el: rename all the time-stamp-string formatting tests
+       * test/lisp/time-stamp-tests.el: rename all the time-stamp-string 
formatting tests
        to have the word "format" in their name, to make room in the namespace
        for other, future tests.
 
@@ -8119,7 +8302,7 @@
 
        time-stamp-tests: consistently name the time vars
 
-       * time-stamp-tests.el (with-time-stamp-test-env): rename local variable
+       * test/lisp/time-stamp-tests.el (with-time-stamp-test-env): rename 
local variable
        'ref-time' to 'ref-time1', for parallelism with ref-time2 and ref-time3.
 
 2019-10-25  Michael Albinus  <address@hidden>
@@ -9997,7 +10180,7 @@
 
        Changed handle_face_prop_general prototype.
 
-       * src/xdisp.h (handle_face_prop_general): Changed function prototype
+       * src/xdisp.c (handle_face_prop_general): Changed function prototype
        to receive different arguments.
 
 2019-10-14  Jimmy Aguilar Mena  <address@hidden>
@@ -10257,12 +10440,12 @@
 
        Minor tweaks to time-stamp documentation strings
 
-       * time-stamp.el (time-stamp): Reformat the explanation of the
+       * lisp/time-stamp.el (time-stamp): Reformat the explanation of the
        variables that affect time-stamp, for easier reading.  In particular,
        wrap the documentation to 75 characters, so that it displays neatly as
        a before-save-hook customization option.
 
-       * time-stamp-tests.el (with-time-stamp-test-env): Use imperative voice,
+       * test/lisp/time-stamp-tests.el (with-time-stamp-test-env): Use 
imperative voice,
        per checkdoc.
 
 2019-10-13  Alan Mackenzie  <address@hidden>
@@ -10759,7 +10942,7 @@
 
        Remove tabs from time-stamp-format documentation
 
-       * time-stamp.el (time-stamp-format): Untabify the doc string, so
+       * lisp/time-stamp.el (time-stamp-format): Untabify the doc string, so
        the two-column layout displays consistently in several contexts,
        in particular when displayed by customize-variable.
 
@@ -10911,13 +11094,13 @@
 
        time-stamp: revert recent change to "%04y"
 
-       * time-stamp.el (time-stamp-string-preprocess): Revert change to "%04y"
+       * lisp/time-stamp.el (time-stamp-string-preprocess): Revert change to 
"%04y"
        format made 2 weeks ago by commit 0e56883878 (the previous commit to
        this file).  Although undocumented, "%04y" was discovered to be in use
        in the wild (2016) and had not issued a warning that it would change.
        Add a warning that it will change.
 
-       * time-stamp-tests.el (time-stamp-test-year-2digit): add test of "%04y"
+       * test/lisp/time-stamp-tests.el (time-stamp-test-year-2digit): add test 
of "%04y"
 
 2019-10-09  Simen Heggestøyl  <address@hidden>
 
@@ -10931,7 +11114,7 @@
 
        Expand testing of time-stamp format "%y"
 
-       * time-stamp-tests.el (time-stamp-test-year): break into two tests,
+       * test/lisp/time-stamp-tests.el (time-stamp-test-year): break into two 
tests,
        time-stamp-test-year-2digit and time-stamp-test-year-4digit.  Expand
        time-stamp-test-year-2digit to look more like tests for other 2-digit
        conversions.
@@ -11484,7 +11667,7 @@
 
 2019-10-06  Stefan Monnier  <address@hidden>
 
-       * eieio-core.el (eieio--full-class-object): New function.
+       * lisp/emacs-lisp/eieio-core.el (eieio--full-class-object): New 
function.
 
        Rather than explicitly call eieio-class-un-autoload, the autoloading is
        now performed on-demand if you use eieio--full-class-object.
@@ -12481,24 +12664,24 @@
 
        Move undocumented time-stamp formats closer to format-time-string
 
-       * time-stamp.el (time-stamp-string-preprocess): Update some undocumented
+       * lisp/time-stamp.el (time-stamp-string-preprocess): Update some 
undocumented
        formatting characters of time-stamp format for closer (still incomplete)
        alignment with format-time-string.  They have displayed a warning since
        Emacs 20 (released in 1997), so it is unlikely anyone is using them.
 
-       * time-stamp-tests.el: Update tests to match new expectations.
+       * test/lisp/time-stamp-tests.el: Update tests to match new expectations.
 
 2019-09-30  Stephen Gildea  <address@hidden>
 
        time-stamp doc: recommend formats closer to format-time-string
 
-       * time-stamp.el (time-stamp-format, time-stamp-pattern): Update
+       * lisp/time-stamp.el (time-stamp-format, time-stamp-pattern): Update
        recommended (documented) formats.  No code changes, just documentation.
        All recommended formats are compatible at least as far back as Emacs
        22.1 (released in 2007) and are now closer to compatibility with
        format-time-string.
 
-       * time-stamp-tests.el: Update test comments to match.
+       * test/lisp/time-stamp-tests.el: Update test comments to match.
 
 2019-09-30  Juanma Barranquero  <address@hidden>
 
@@ -12816,7 +12999,7 @@
 
        Reorganize time-stamp tests
 
-       * time-stamp-tests.el: Group tests by when the format was or will be
+       * test/lisp/time-stamp-tests.el: Group tests by when the format was or 
will be
        documented.  Add tests for a few more undocumented, volatile formats.
        Change AM hours test time to be a different hour from PM test time.
        (Making these changes to the tests now will minimize test changes
@@ -13123,7 +13306,7 @@
        :format property of this widget.  If %n is used at the end of the
        format string, unrelated widgets get indented.  (Bug#12533)
 
-       * test/wid-edit-tests.el (widget-test-indentation-after-%n)
+       * test/lisp/wid-edit-tests.el (widget-test-indentation-after-%n)
        (widget-test-indentation-after-newline)
        (widget-test-newline-and-indent-same-widget): New tests.
 
@@ -13521,7 +13704,7 @@
 
        Add different faces for different citation levels in Message mode
 
-       * message.el (message-font-lock-keywords)
+       * lisp/gnus/message.el (message-font-lock-keywords)
        (message-font-lock-make-cited-text-matcher): Add support for
        different faces for different citation levels.  The faces are
        defined in the faces named `message-cited-text-N': N of the
@@ -13638,15 +13821,15 @@
 
        Expand time-stamp unit tests to cover all formatting options
 
-       * time-stamp-tests.el: Expand unit tests to cover all formatting 
options.
+       * test/lisp/time-stamp-tests.el: Expand unit tests to cover all 
formatting options.
        These tests validate time-stamp-pattern formatting that has existed
        since at least Emacs 22 (released in 2007).  The tests cover both
        documented behavior and behavior implemented to support future 
migrations.
 
-       * time-stamp.el (time-stamp-string): Add a second argument (TIME) to
+       * test/lisp/time-stamp-tests.el (time-stamp-string): Add a second 
argument (TIME) to
        open a testing seam.  Have the unit tests call this public function.
 
-       * time-stamp.el (time-stamp-string, time-stamp-string-preprocess):
+       * test/lisp/time-stamp-tests.el (time-stamp-string, 
time-stamp-string-preprocess):
        Remove the second pass through time-string--format.  (Previously both
        functions called it.)  It was used only to handle "%", but this is now
        handled by having time-stamp-string-preprocess not double it.
@@ -15762,7 +15945,7 @@
 
        Fix flymake-proc temporary file deletion bug
 
-       * list/progmodes/flymake-proc.el (flymake-proc-create-temp-inplace):
+       * lisp/progmodes/flymake-proc.el (flymake-proc-create-temp-inplace):
        Include a time string part (hour + minute + second + nanosecond) in
        the temporary name to make it unique enough.
        (flymake-proc-legacy-flymake): Store temporary file names in the
@@ -18541,7 +18724,7 @@
 
        password-cache: differentiate null values from non-existent entries
 
-       * password-cache.el (password-in-cache-p, password-cache-add):
+       * lisp/password-cache.el (password-in-cache-p, password-cache-add):
          properly detect non-existent entry.  (Bug#36834)
 
 2019-08-11  Eli Zaretskii  <address@hidden>
@@ -19560,7 +19743,7 @@
 
        easy-menu-define doc string fix
 
-       * emacs-lisp/easymenu.el (easy-menu-define): Docstring :label and
+       * lisp/emacs-lisp/easymenu.el (easy-menu-define): Docstring :label and
        :help of the menu itself.
 
 2019-08-03  Lars Ingebrigtsen  <address@hidden>
@@ -19866,7 +20049,7 @@
        * lisp/url/url-http.el (url-http-simple-after-change-function)
        (url-http-content-length-after-change-function):
        Use byte-count-to-string-function.
-       * test/lisp/files-test.el (files-test-file-size-human-readable):
+       * test/lisp/files-tests.el (files-test-file-size-human-readable):
        Test file-size-human-readable-iec.
 
 2019-08-02  Eli Zaretskii  <address@hidden>
@@ -21074,7 +21257,7 @@
        * doc/emacs/display.texi (Colors): Specify the convention used for
        "#RGB" color triplets.
 
-       * test/lisp/tty-colors-tests.el: New file.
+       * test/lisp/term/tty-colors-tests.el: New file.
 
        * etc/NEWS: Mention the change.
 
@@ -24393,7 +24576,7 @@
 
        Fix indentation of default clocking definitions.
 
-       * verilog-mode.el (verilog-default-clocking-re): Fix indentation of 
default
+       * lisp/progmodes/verilog-mode.el (verilog-default-clocking-re): Fix 
indentation of default
        clocking definitions, Verilog-Mode bug1457. Reported by Paul Donahue.
 
 2019-07-06  Wilson Snyder  <address@hidden>
@@ -24688,7 +24871,7 @@
        Also fix two faulty regexps, save-match-data, and check c-major-mode-is
        'c++-mode where needed.
 
-       * lis/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re)
+       * lisp/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re)
        (c-last-open-c-comment-start-on-line-re): Handle repeated *s in regexp
        correctly.
 
@@ -25940,7 +26123,7 @@
 
        Support opening a new connection when reverting a telnet buffer
 
-       * net/telnet.el (telnet-connect-command): New variable.
+       * lisp/net/telnet.el (telnet-connect-command): New variable.
        (telnet-revert-buffer): New function.
        (telnet-mode): Use `telnet-revert-buffer' as `revert-buffer-function'.
        (telnet, rsh): Set `telnet-connect-command' accordingly (bug#18312).
@@ -25949,7 +26132,7 @@
 
        Suppress warning about unix-sync in nnmaildir.el
 
-       * nnmaildir.el (nnmaildir-request-replace-article): Check if the
+       * lisp/gnus/nnmaildir.el (nnmaildir-request-replace-article): Check if 
the
        function `unix-sync' is bound before running it.
 
 2019-06-25  Ivan Shmakov  <address@hidden>
@@ -25978,7 +26161,7 @@
 
        Highlight zsh glob flags and qualifiers in sh-mode
 
-       * lisp/progmode/sh-script.el (sh-syntax-propertize-function):
+       * lisp/progmodes/sh-script.el (sh-syntax-propertize-function):
        Add regexps to highlight zsh glob flags and alternate qualifiers
        without mistaking them for comments. (bug#19455).
 
@@ -26168,7 +26351,7 @@
 
        This fixes bug #25111.
 
-       * doc/lispref/display.text (Overlay Properties): For the hook property
+       * doc/lispref/display.texi (Overlay Properties): For the hook property
        modification-hooks, state that inhibit-modification-hooks is bound to 
non-nil
        when calling its functions.  This also applies to insert-in-front-hooks 
and
        insert-behind-hooks, which refer to modification-hooks.
@@ -26182,7 +26365,7 @@
 
        Add imenu support to package-menu-mode
 
-       * gnus-cite.el (gnus-message-citation-mode): Fontify if the major
+       * lisp/gnus/gnus-cite.el (gnus-message-citation-mode): Fontify if the 
major
        mode is derived from message-mode (not necessarily equal to
        message-mode) (bug#25124).
 
@@ -26190,7 +26373,7 @@
 
        Add imenu support to package-menu-mode
 
-       * lisp/emacs-list/package.el
+       * lisp/emacs-lisp/package.el
        (package--imenu-prev-index-position-function
        package--imenu-extract-index-name-function): Add Imenu functions
        to package-menu-mode (bug#27134).
@@ -26564,7 +26747,7 @@
        build-aux/update-copyright, lib/canonicalize-lgpl.c,
        lib/gnulib.mk.in, lib/malloca.c, lib/malloca.h, lib/pathmax.h,
        m4/canonicalize.m4, m4/double-slash-root.m4, m4/gnulib-comp.m4,
-       m4/malloca.m4, my/pathmax.4: copy from GNUlib or regenerate from
+       m4/malloca.m4, m4/pathmax.m4: copy from GNUlib or regenerate from
        update
        * src/emacs.c: find dump by canonical path
 
@@ -27410,7 +27593,7 @@
 
        Change font_put_extra value for property removal from Qnil to Qunbound
 
-       * font.c (font_put_extra): If VAL is Qunbound, delete the slot for PROP 
from
+       * src/font.c (font_put_extra): If VAL is Qunbound, delete the slot for 
PROP from
        the list of extra properties.  Previous value Qnil is valid as boolean.
        (font_clear_prop): Changed argument of font_put_extra for property 
removal.
 
@@ -27423,7 +27606,7 @@
 
 2019-06-19  Roland Winkler  <address@hidden>
 
-       * bookmark.el (bookmark-set-internal): Fix format string.
+       * lisp/bookmark.el (bookmark-set-internal): Fix format string.
 
 2019-06-19  Juri Linkov  <address@hidden>
 
@@ -27944,7 +28127,7 @@
 
 2019-06-17  Roland Winkler  <address@hidden>
 
-       * bookmark.el: Watch bookmark file.  Use lexical binding.
+       * lisp/bookmark.el: Watch bookmark file.  Use lexical binding.
 
        (bookmark-watch-bookmark-file): New user variable.
        (bookmark-alist): Fix docstring.
@@ -28183,7 +28366,7 @@
 
 2019-06-16  Roland Winkler  <address@hidden>
 
-       * find-dired.el (find-dired-refine-function): Fix defcustom.
+       * lisp/find-dired.el (find-dired-refine-function): Fix defcustom.
 
 2019-06-16  Eric Abrahamsen  <address@hidden>
 
@@ -28661,7 +28844,7 @@
 
        Clean up verilog-mode.el documentation examples to match behavior.
 
-       * verilog-mode.el (verilog-auto, verilog-auto-arg)
+       * lisp/progmodes/verilog-mode.el (verilog-auto, verilog-auto-arg)
        (verilog-auto-ascii-enum, verilog-auto-inout)
        (verilog-auto-inout-comp, verilog-auto-inout-in)
        (verilog-auto-inout-modport, verilog-auto-inout-module)
@@ -29231,8 +29414,9 @@
 
        Escape newlines when printing functions in timer list
 
-       * timer-list.el (list-timers): Bind `print-escape-newlines' to avoid
-       newlines in printed representation (bug#36187).
+       * lisp/emacs-lisp/timer-list.el (list-timers): Bind
+       `print-escape-newlines' to avoid newlines in printed
+       representation (bug#36187).
 
 2019-06-13  Lars Ingebrigtsen  <address@hidden>
 
@@ -29282,7 +29466,7 @@
        This variable was declared after an invocation of a defsubst which used 
it,
        the defsubst being in another file.
 
-       * lisp/progmodes/cc-mode (c-syntax-table-hwm): Move the declaration to 
earlier
+       * lisp/progmodes/cc-mode.el (c-syntax-table-hwm): Move the declaration 
to earlier
        in the file.
 
 2019-06-12  Glenn Morris  <address@hidden>
@@ -29593,14 +29777,14 @@
 
        Fix to previous commit
 
-       * find-dired.el (find-dired-sentinel): Check whether
+       * lisp/find-dired.el (find-dired-sentinel): Check whether
        find-dired-refine-function is non-nil.
 
 2019-06-11  Roland Winkler  <address@hidden>
 
        Allow refining the *Find* buffer of find-dired. (Bug#29513)
 
-       * find-dired.el (find-dired-refine-function): New user variable.
+       * lisp/find-dired.el (find-dired-refine-function): New user variable.
        (find-dired-sentinel): Use it.  Simplify.
        (find-dired-sort-by-filename): New function.
 
@@ -30546,7 +30730,7 @@
 
 2019-06-04  Stefan Monnier  <address@hidden>
 
-       * sgml-mode.el (sgml-syntax-propertize-rules): More verbose comments
+       * lisp/textmodes/sgml-mode.el (sgml-syntax-propertize-rules): More 
verbose comments
 
 2019-06-04  Jackson Ray Hamilton  <address@hidden>
 
@@ -30747,11 +30931,11 @@
 
 2019-06-02  Juanma Barranquero  <address@hidden>
 
-       * help-fns.el (help-fns--first-release): Do not fail if no release is 
found.
+       * lisp/help-fns.el (help-fns--first-release): Do not fail if no release 
is found.
 
 2019-06-02  Stefan Monnier  <address@hidden>
 
-       * gnus-(sum|async).el: Eliminate assumptions about gnus-data format
+       * lisp/gnus/gnus-sum.el, lisp/gnus/gnus-async.el: Eliminate assumptions 
about gnus-data format
 
        * lisp/gnus/gnus-async.el (gnus-async-with-semaphore): Use `declare`.
        (gnus-async-prefetch-next): Don't assume gnus-data-number == car.
@@ -30764,7 +30948,7 @@
 
 2019-06-02  Stefan Monnier  <address@hidden>
 
-       * gnus.el: Fix cycle in eager macroexpansion
+       * lisp/gnus/gnus.el: Fix cycle in eager macroexpansion
 
        * lisp/gnus/gnus-sum.el (gnus-data): Use cl-defstruct.
        (gnus-data-set-pos, gnus-data-set-header, gnus-data-set-mark)
@@ -30908,7 +31092,7 @@
 
        Make rcirc PART and QUIT reasons customizable (Bug#12857)
 
-       * rcirc.el: (rcirc-default-part-reason, rcirc-default-quit-reason):
+       * lisp/net/rcirc.el: (rcirc-default-part-reason, 
rcirc-default-quit-reason):
        New customizable vars.
        (rcirc-cmd-quit, rcirc-cmd-part): Consult them.
 
@@ -31203,7 +31387,7 @@
 
        Optimize one of CC Mode's syntax caches for long comments and strings.
 
-       * lisp/progmoes/cc-langs.el (c-block-comment-awkward-chars): New lang
+       * lisp/progmodes/cc-langs.el (c-block-comment-awkward-chars): New lang
        constant and variable.
 
        * lisp/progmodes/cc-engine.el (c-state-semi-nonlit-pos-cache): Enhance 
the
@@ -31445,7 +31629,7 @@
 
 2019-05-28  Stefan Monnier  <address@hidden>
 
-       * mule-cmds.el (encoded-string-description): Require unibyte string as 
input
+       * lisp/international/mule-cmds.el (encoded-string-description): Require 
unibyte string as input
 
 2019-05-28  Stefan Monnier  <address@hidden>
 
@@ -31658,7 +31842,7 @@
 
        * lisp/startup.el (command-line): Allow XDG-style as well as old
         style init paths.
-       * doc/startup.texi: Document the above change.
+       * doc/emacs/custom.texi: Document the above change.
 
 2019-05-25  Mauro Aranda  <address@hidden>
 
@@ -32332,7 +32516,7 @@
 
        This avoids clashing with the XColor struct from X.
 
-       * src/dispextern [HAVE_X_WINDOWS]: Define Emacs_Color alias.
+       * src/dispextern.h [HAVE_X_WINDOWS]: Define Emacs_Color alias.
        [!HAVE_X_WINDOWS]: Rename XColor compatibility struct to
        Emacs_Color. Remove unused fields.
 
@@ -32944,7 +33128,7 @@
 
 2019-05-16  Stefan Monnier  <address@hidden>
 
-       * mule.el (set-buffer-file-coding-system): Don't burp on iso-2022-7bit
+       * lisp/international/mule.el (set-buffer-file-coding-system): Don't 
burp on iso-2022-7bit
 
 2019-05-16  Paul Pogonyshev  <address@hidden>
 
@@ -32973,7 +33157,7 @@
 
 2019-05-16  Stefan Monnier  <address@hidden>
 
-       * cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test
+       * test/lisp/emacs-lisp/cl-macs-tests.el 
(cl-macs-test--symbol-macrolet): New test
 
 2019-05-16  Eric Abrahamsen  <address@hidden>
 
@@ -33398,7 +33582,7 @@
 
 2019-05-12  Stefan Monnier  <address@hidden>
 
-       * lisp/emacs-lisp/packages.el: Add `all` to package-check-signature
+       * lisp/emacs-lisp/package.el: Add `all` to package-check-signature
 
        (package-check-signature): Add `all` option.
        (package--check-signature-content): Adjust accordingly.
@@ -33782,7 +33966,7 @@
 
        Fix verilog-mode module backticks; whitespace from prev commits.
 
-       * verilog-mode.el (verilog-read-inst-module-matcher):
+       * lisp/progmodes/verilog-mode.el (verilog-read-inst-module-matcher):
        Work when point is near backtick. Reported by Mattias Engdegard.
 
 2019-05-06  Juri Linkov  <address@hidden>
@@ -34649,7 +34833,7 @@
 
        CC Mode: in certain font lock loops, check point is not beyond limit.
 
-       * /lisp/progmodes/cc-fonts.el (c-font-lock-enum-body)
+       * lisp/progmodes/cc-fonts.el (c-font-lock-enum-body)
        (autodoc-font-lock-line-markup): As part of the `while' condition, 
check that
        the previous iteration of the loop hasn't moved point past `limit', thus
        obviating "wrong side of point" errors in re-search-forward, etc.
@@ -34934,7 +35118,7 @@
 
        Add terminal hook query_frame_background_color
 
-       * src/termhooks.c (query_frame_background_color): New terminal hook.
+       * src/termhooks.h (query_frame_background_color): New terminal hook.
 
        * src/image.c (image_query_frame_background_color): Remove. Use the
        terminal hook instead.
@@ -34981,7 +35165,7 @@
        * src/w32term.c:
        * src/xterm.c: Rename x_get_keysym_name to get_keysym_name.
 
-       * src/nsfns.c:
+       * src/nsfns.m:
        * src/nsterm.m: Rename x_* procedures to ns_*.
 
        * src/w32fns.c:
@@ -35754,7 +35938,7 @@
 
 2019-04-22  Mattias Engdegård  <address@hidden>
 
-       * autorevert.el (auto-revert-notify-rm-watch): Simplify.
+       * lisp/autorevert.el (auto-revert-notify-rm-watch): Simplify.
 
 2019-04-22  Mattias Engdegård  <address@hidden>
 
@@ -35802,7 +35986,7 @@
 
        Module API: Don’t require null-terminated strings in make_string.
 
-       * emacs-module.c (module_make_string): Use make_unibyte_string, which
+       * src/emacs-module.c (module_make_string): Use make_unibyte_string, 
which
        doesn’t require its argument to be null-terminated.  Since it always
        returns a heap-allocated string, we don’t have to copy it any more
        while decoding.
@@ -36002,20 +36186,23 @@
        to pacify LeakSanitizer.
 
 2019-04-20  Michael R. Mauger  <address@hidden>
+       Fix Bug#35307.
 
-       * lisp/progmodes/sql.el  Bug#35307
-       (sql-product-alist): Added :prompt-cont-regexp for ms.
+       * lisp/progmodes/sql.el(sql-product-alist): Added
+       :prompt-cont-regexp for ms.
 
        Looking for experience with Microsofts SQLCMD interpreter and
        adjustments needed for Emacs to support it.
 
 2019-04-20  Michael R. Mauger  <address@hidden>
+       Fix  Bug#24483.
 
-       * lisp/progmodes/sql.el  Bug#24483
-       (sql-interactive-remove-continuation-prompt): Properly protect 
`sql-prompt-cont-regexp'.
+       * lisp/progmodes/sql.el
+       (sql-interactive-remove-continuation-prompt): Properly protect
+       `sql-prompt-cont-regexp'.
        (sql-interactive-mode): Same.
 
-        * lisp/progmodes.sql.el
+        * lisp/progmodes/sql.el
        (sql-product-alist): Corrected :terminator defns.
        (sql-debug-send): New variable.
        (sql-send-string): Use it and correct buffer context.
@@ -37986,7 +38173,7 @@
        Potentially manifest some new bugs (due to false positives with ‘<’
        and ‘>’ and SGML detection).  Slow down indentation a fair bit.
 
-       * list/progmodes/js.el (js-jsx-syntax, js--jsx-start-tag-re)
+       * lisp/progmodes/js.el (js-jsx-syntax, js--jsx-start-tag-re)
        (js--looking-at-jsx-start-tag-p, js--looking-back-at-jsx-end-tag-p):
        New variables and functions.
        (js--jsx-find-before-tag, js--jsx-after-tag-re): Deleted.
@@ -38149,7 +38336,7 @@
 
 2019-04-08  Stefan Monnier  <address@hidden>
 
-       * nadvice.el: Add ourselves to package--builtin-versions
+       * lisp/emacs-lisp/nadvice.el: Add ourselves to package--builtin-versions
 
 2019-04-08  Stefan Monnier  <address@hidden>
 
@@ -38841,7 +39028,7 @@
        string.
        (c-string-delims): Change doc string to doc comment.
 
-       * listp/progmodes/cc-mode.el 
(c-before-change-check-unbalanced-strings): In
+       * lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): 
In
        searches and comparisons, take account of the string delimiters possibly
        being '.  Fix argument in call of 
c-before-change-check-unbalanced-strings.
        (c-parse-quotes-before-change, c-parse-quotes-after-change): Bind
@@ -39186,7 +39373,7 @@
 
 2019-03-26  Stefan Monnier  <address@hidden>
 
-       * easy-mmode.el: simplify via custom-current-group
+       * lisp/emacs-lisp/easy-mmode.el: simplify via custom-current-group
 
        * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
        Don't try and guess a default :group, defcustom does it better anyway.
@@ -39483,9 +39670,9 @@
        about potential NULL pointer dereferencing.
 
 2019-03-22  Michael R. Mauger  <address@hidden>
-
-       * lisp/progmodes/sql.el Bug#25424
-       (sql-end-of-statement): default terminator as semicolon.
+       Fix Bug#25424.
+       * lisp/progmodes/sql.el (sql-end-of-statement): default terminator
+       as semicolon.
 
 2019-03-22  Stephen Leake  <address@hidden>
 
@@ -40408,7 +40595,7 @@
 
 2019-03-09  Christopher Wellons  <address@hidden>  (tiny change)
 
-       * list/emulation/viper: Use user-error for "Viper bell"
+       * lisp/emulation/viper.el: Use user-error for "Viper bell"
 
 
        * lisp/emulation/viper-init.el (viper-ViperBell): New constant.
@@ -40437,7 +40624,7 @@
 
        Mention `binary-as-unsigned' in `format' docstring (Bug#34792)
 
-       * src/src/editfns.c (format): Update docstring to mention 
binary-as-unsigned
+       * src/editfns.c (format): Update docstring to mention binary-as-unsigned
        (Bug#34792)
 
 2019-03-09  Glenn Morris  <address@hidden>
@@ -40806,7 +40993,7 @@
 
        Fix regexp issues introduced in last trunk commit.
 
-       * verilog-mode.el (verilog-coverpoint-re): Fix regexp issues introduced
+       * lisp/progmodes/verilog-mode.el (verilog-coverpoint-re): Fix regexp 
issues introduced
        in last trunk commit.
 
 2019-03-05  Eli Zaretskii  <address@hidden>
@@ -41794,7 +41981,7 @@
 
        Jump to the current error in xref with zero prefix arg
 
-       * xref.el (xref--next-error-function): Handle the corner case of
+       * lisp/progmodes/xref.el (xref--next-error-function): Handle the corner 
case of
        n == 0.  (Bug#34462)
 
 2019-02-22  Paul Eggert  <address@hidden>
@@ -41994,7 +42181,7 @@
 
        Correct implementation of `sql-set-product-feature' (Bug#30494).
 
-       * lisp.progmodes/sql.el (sql-add-product): Correct argument spec.
+       * lisp/progmodes/sql.el (sql-add-product): Correct argument spec.
        (sql-set-product-feature): Handle all cases as intended.
        (sql-get-product-feature): Fetch varaiable value by `eval'.
        * test/lisp/progmodes/sql-tests.el (sql-test-feature-value-[a-d]):
@@ -42129,7 +42316,7 @@
        (sql-password-search-wallet-function): New variable.
        (sql-get-login): Handle password wallet search.
        (sql-product-interactive): Handle password function.
-       * test/lisp/progmodes/sql-test.el: Test wallet changes.
+       * test/lisp/progmodes/sql-tests.el: Test wallet changes.
        (sql-test-login-params): New test variable.
        (with-sql-test-connect-harness): New macro to wrap test
        configuration around calls to `sql-connect'.
@@ -42268,7 +42455,7 @@
        (c-forward-decl-or-cast-1): Recognize a function identifier being 
declared in
        parentheses.
 
-       * lisp/promodes/cc-mode.el (c-before-change): Supply a `beg' argument to
+       * lisp/progmodes/cc-mode.el (c-before-change): Supply a `beg' argument 
to
        c-invalidate-sws-region-before.
 
        * lisp/progmodes/cc-vars.el (c-noise-macro-with-parens-name-re)
@@ -42279,7 +42466,7 @@
 
        * Put INLINE and ATTRIBUTE_NO_SANITIZE_UNDEFINED into 
c-noise-macro-names
 
-       * .dir-locals (entry for c-mode): Put the two strings into
+       * .dir-locals.el (entry for c-mode): Put the two strings into
        c-noise-macro-names.
 
 2019-02-16  Paul Eggert  <address@hidden>
@@ -43565,7 +43752,7 @@
        * lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch):
        * lisp/net/tramp-smb.el (tramp-smb-action-get-acl)
        (tramp-smb-action-set-acl, tramp-smb-wait-for-output):
-       * tramp-sudoedit.el (tramp-sudoedit-action-sudo):
+       * lisp/net/tramp-sudoedit.el (tramp-sudoedit-action-sudo):
        Adapt `accept-process-output' calls wrt timeouts.
 
 2019-01-28  Eli Zaretskii  <address@hidden>
@@ -43707,7 +43894,7 @@
 
        Use minibuffer-default in completion-all-sorted-completions (bug#34083)
 
-       * lisp/minibuffer (completion-all-sorted-completions): Sort with the
+       * lisp/minibuffer.el (completion-all-sorted-completions): Sort with the
        default on top.
 
 2019-01-25  Alex Branham  <address@hidden>
@@ -44037,7 +44224,7 @@
        source symbols could get overwritten when parameter adorn is set to
        'appendable.
 
-       * list/progmodes/cc-langs.el (c-cpp-include-key): New lang const and 
var.
+       * lisp/progmodes/cc-langs.el (c-cpp-include-key): New lang const and 
var.
 
 2019-01-22  Alan Mackenzie  <address@hidden>
 
@@ -44173,7 +44360,7 @@
 
        Minor cleanup in pdumper.c
 
-       * src/pdumper (subtract_timespec): Function removed.
+       * src/pdumper.c (subtract_timespec): Function removed.
        (pdumper_load): Use timespec_sub instead of subtract_timespec.
 
 2019-01-19  Eli Zaretskii  <address@hidden>
@@ -44414,7 +44601,7 @@
 
        Temporarily comment out CC Mode from tests which are incompatible with 
it.
 
-       * tests/electric-tests (electric-pair-test-for): comment out c++-mode 
from the
+       * test/lisp/electric-tests.el (electric-pair-test-for): comment out 
c++-mode from the
        list of modes to be used in tests.
        (electric-pair-whitespace-chomping-2-at-point-4-in-c++-mode-in-strings)
        (ert-deftest electric-layout-int-main-kernel-style)
@@ -44629,7 +44816,7 @@
        (syms_of_ftcrfont): call it.
        * src/ftfont.c (syms_of_ftfont_for_pdumper): new function.
        (syms_of_ftfont): call it.
-       * src/ftxont.c (syms_of_ftxfont_for_pdumper): new function.
+       * src/ftxfont.c (syms_of_ftxfont_for_pdumper): new function.
        (syms_of_ftxfont): call it.
        * src/gmalloc.c: adjust for pdumper througout
        (DUMPED): remove weird custom dumped indicator.
@@ -44706,7 +44893,7 @@
        re_match_object.
        * src/sysdep.c: use will_dump_with_unexec_p() instead of bss
        hack thing.
-       * src/syssignals.h (init_sigsegv): declare.
+       * src/syssignal.h (init_sigsegv): declare.
        * src/systime.h (init_timefns): remove bool from signature.
        * src/textprop.c (syms_of_textprop): move staticpro.
        * src/thread.c (main_thread_p): constify.
@@ -45436,7 +45623,7 @@
 
        Fix electric indent bug in python-mode after dedenting colon
 
-       * list/progmodes/python.el (python-indent-post-self-insert-function):
+       * lisp/progmodes/python.el (python-indent-post-self-insert-function):
        Use markers instead of positions when reindenting statement(s) after
        inserting electric colon to avoid reindenting too many
        statements (bug#22663).
@@ -46641,7 +46828,7 @@
 
 2018-12-16  Stefan Monnier  <address@hidden>
 
-       * lisp/net/tramp: Rework mutual dependencies
+       * lisp/net/tramp.el: Rework mutual dependencies
 
        Functionally split tramp-loaddefs.el into two parts: one part run
        while loading it at the very beginning of loading tramp.el (holding 
plain
@@ -47929,7 +48116,7 @@
        Go into emacs-lisp-compilation-mode rather than the plain 
compilation-mode.
        (compile-defun): Bind byte-compile-current-file to current-buffer, not 
nil.
 
-       * lisp/progmodes/compilation-mode
+       * lisp/progmodes/compile.el
        (compilation-parse-errors-filename-function): Amend comments to specify 
that
        this function may return a buffer, and that it need not save the match 
data.
        (Several places): Amend comments to allow for the use of a buffer 
rather than
@@ -48857,7 +49044,7 @@
 
 2018-11-19  Stefan Monnier  <address@hidden>
 
-       * mouse.el (mouse-posn-property): Add comment
+       * lisp/mouse.el (mouse-posn-property): Add comment
 
 2018-11-18  Stefan Monnier  <address@hidden>
 
@@ -49809,7 +49996,7 @@
        * emacsclient.c (set_socket): Add support for the
        EMACS_SOCKET_NAME environment variable.  (Bug#33095)
 
-       * misc.texi (emacsclient Options):
+       * doc/emacs/misc.texi (emacsclient Options):
        * emacsclient.1: Document the EMACS_SOCKET_NAME environment
        variable.
 
@@ -49874,7 +50061,7 @@
 
        edebug.el: Move window focus switch into edebug-pop-to-buffer
 
-       * lisp/emacs-lisp/follow.el (edebug-focus-frame): Remove.
+       * lisp/follow.el (edebug-focus-frame): Remove.
        (edebug-pop-to-buffer): Call x-focus-frame for GUI frames.
        (edebug-default-enter, edebug--display-1): Replace call to
        edebug-focus-frame with x-focus-frame.
@@ -49989,7 +50176,7 @@
 
 2018-10-19  Stefan Monnier  <address@hidden>
 
-       * emacs-lisp/package.el (package-get-version): Change into a function
+       * lisp/emacs-lisp/package.el (package-get-version): Change into a 
function
 
        (package-quickstart-refresh): Mangle string so it doesn't turn into
        a false positive for "no-byte-compile: t".
@@ -50121,7 +50308,7 @@
        when mouse-drag-copy-region is set to t. (Bug#31240)
        (mouse-drag-and-drop-region): Allow dragging and dropping
        rectangular regions. (Bug#31240)
-       * rect.el (rectangle-intersect-p)
+       * lisp/rect.el (rectangle-intersect-p)
        (rectangle-position-as-coordinates): New functions.
 
 2018-10-16  Juri Linkov  <address@hidden>
@@ -50579,10 +50766,10 @@
        Improvements on (TICKS . HZ)
 
        This patch is in response to Eli's review (Bug#32902#10).
-       * src/systime.c: Doc strings of affected functions now refer
+       * src/systime.h: Doc strings of affected functions now refer
        to format-time-string instead of to Lisp manual, and
        format-time-string's doc string covers time values.
-       * test/src/systime-tests.el (format-time-string-with-zone):
+       * test/src/timefns-tests.el (format-time-string-with-zone):
        Check decode-time too.
        (decode-then-encode-time, time-arith-tests): New tests.
 
@@ -50622,7 +50809,7 @@
        * lisp/net/ntlm.el (ntlm-compute-timestamp):
        * lisp/obsolete/vc-arch.el (vc-arch-add-tagline):
        * lisp/org/org-id.el (org-id-uuid, org-id-time-to-b36):
-       * lisp/tar-mode (tar-octal-time):
+       * lisp/tar-mode.el (tar-octal-time):
        Don't assume timestamps default to list form.
        * lisp/tar-mode.el (tar-parse-octal-long-integer):
        Now an obsolete alias for tar-parse-octal-integer.
@@ -50662,7 +50849,7 @@
        (Fencode_time): Add new two-arg functionality.
        * src/systime.h (struct lisp_time): Now ticks+hz rather than
        hi+lo+us+ps, since ticks+hz does not lose info.
-       * test/src/systime-tests.el (time-equal-p-nil-nil):
+       * test/lisp/time-stamp-tests.el (time-equal-p-nil-nil):
        New test.
 
 2018-10-06  Paul Eggert  <address@hidden>
@@ -50854,7 +51041,7 @@
 
        Automate support for `sql-indent' ELPA package
 
-       * progmodes/lisp/sql.el (sql-use-indent-support): New variable.
+       * lisp/progmodes/sql.el (sql-use-indent-support): New variable.
        (sql-is-indent-available): New function.
        (sql-indent-enable): Use above.
        (sql-mode-hook, sql-interactive-mode-hook): Add `sql-indent-enable'.
@@ -52158,7 +52345,7 @@
 
        Do not call mh-next-msg from mh-junk-process-* fns
 
-       * mh-junk.el (mh-junk-process-blacklist, mh-junk-process-whitelist): Do
+       * lisp/mh-e/mh-junk.el (mh-junk-process-blacklist, 
mh-junk-process-whitelist): Do
        not call mh-next-msg.  Now that these functions are called from
        mh-execute-commands, they should not change the current message pointer.
        The calls to mh-next-msg are probably left over from when blacklist and
@@ -52757,7 +52944,7 @@
        This happened when the type of the previous function was a struct, etc.,
        declaration.
 
-       * lisp/progmodes/cc-mode (c-guess-basic-syntax CASE 5N): Check here (for
+       * lisp/progmodes/cc-mode.el (c-guess-basic-syntax CASE 5N): Check here 
(for
        'topmost-intro-cont) that the first opening brace after BOD is the 
opening
        brace preceding the starting point.
 
@@ -53460,7 +53647,7 @@
 
        EUDC: Add more BBDB >= 3 support
 
-       * lisp/net/eudcb-bbdb.el Declare BBDB >= 3 functions.
+       * lisp/net/eudcb-bbdb.el: Declare BBDB >= 3 functions.
        (eudc-bbdb-field): Add translation from company to
        organization.
        (eudc-bbdb-extract-phones, eudc-bbdb-extract-addresses)
@@ -54808,7 +54995,7 @@
        * doc/lispref/edebug.texi (Edebug Misc): Refer to new node.
        * doc/misc/ert.texi (Running Tests Interactively): Refer to new node.
 
-       * lisp/emacs-lisp-backtrace.el: New file.
+       * lisp/emacs-lisp/backtrace.el: New file.
        * test/lisp/emacs-lisp/backtrace-tests.el: New file.
 
        * lisp/emacs-lisp/debug.el: (debugger-buffer-state): New cl-defstruct.
@@ -54858,7 +55045,7 @@
        (ert-results-pop-to-backtrace-for-test-at-point): Use backtrace-mode.
        (ert--insert-backtrace-header): New function.
 
-       * tests/lisp/emacs-lisp/ert-tests.el (ert-test--which-file):
+       * test/lisp/emacs-lisp/ert-tests.el (ert-test--which-file):
        Use backtrace-frame slot accessor.
 
 2018-08-03  Gemini Lasswell  <address@hidden>
@@ -55026,7 +55213,7 @@
 
        Reset mh-blacklist and mh-whitelist on folder undo
 
-       * mh-funcs.el (mh-undo-folder): Set mh-blacklist and mh-whitelist
+       * lisp/mh-e/mh-funcs.el (mh-undo-folder): Set mh-blacklist and 
mh-whitelist
        to nil, as is done with the other lists of pending operations.
 
 2018-07-30  Michael Albinus  <address@hidden>
@@ -56003,7 +56190,7 @@
 
        Avoid infloop in redisplay due to faulty mode-line properties
 
-       * xdisp.c (safe_set_text_properties): New function.
+       * src/xdisp.c (safe_set_text_properties): New function.
        (display_mode_element): Call Fset_text_properties through
        internal_condition_case_n, using safe_set_text_properties as a
        wrapper.  (Bug#32038)
@@ -56246,9 +56433,9 @@
 
        * test/src/data-tests.el (data-tests-bignum, data-tests-+)
        (data-tests-/, data-tests-number-predicates): New tests.
-       * test/src/fns-tests (test-bignum-eql): New test.
-       * test/src/lread-tests (lread-long-hex-integer): Expect bignum.
-       * test/src/print-tests (print-bignum): New test.
+       * test/src/fns-tests.el (test-bignum-eql): New test.
+       * test/src/lread-tests.el (lread-long-hex-integer): Expect bignum.
+       * test/src/print-tests.el (print-bignum): New test.
 
 2018-07-12  Tom Tromey  <address@hidden>
 
@@ -56262,7 +56449,7 @@
 
        Make comparison operators handle bignums
 
-       * sc/data.c (bignumcompare): New function.
+       * src/data.c (bignumcompare): New function.
        (arithcompare): Handle bignums.
 
 2018-07-12  Tom Tromey  <address@hidden>
@@ -56561,11 +56748,11 @@
 
        Keep interactive uses of 'recenter' backward compatible (Bug#31325)
 
-       * window.c (Frecenter): Change the interactive spec to always pass
+       * src/window.c (Frecenter): Change the interactive spec to always pass
        a non-nil value to the REDISPLAY argument when called interactively.
-       * window.el (recenter-top-bottom): Make sure 'recenter's second
+       * lisp/window.el (recenter-top-bottom): Make sure 'recenter's second
        argument is non-nil everywhere.
-       * windows.texi (Textual Scrolling): Update documentation of
+       * doc/emacs/windows.texi (Textual Scrolling): Update documentation of
        'recenter'.
 
 2018-07-07  Eli Zaretskii  <address@hidden>
@@ -56705,12 +56892,12 @@
 
        Make lisp/jsonrpc.el work with Emacs 25.1
 
-       * jsonrpc.el (Package-Requires): Require Emacs 25.1
+       * lisp/jsonrpc.el (Package-Requires): Require Emacs 25.1
        (jsonrpc-lambda): Use cl-gensym.
        (jsonrpc--call-deferred): Caddr doesn't exist in
        emacs 25.1.
 
-       * jsonrpc-tests.el
+       * test/lisp/jsonrpc-tests.el
        (jsonrpc--call-with-emacsrpc-fixture): New function.
        (jsonrpc--with-emacsrpc-fixture): Use it.
        (deferred-action-complex-tests): Adjust test for Emacs 25.1
@@ -56722,7 +56909,7 @@
        Add a paragraph to minor mode's docstring documenting the mode's ARG
        usage if the supplied docstring doesn't already contain the word "ARG".
 
-       * easy-mmode.el (easy-mmode--arg-docstring): New const.
+       * lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): New const.
        (easy-mmode--arg-docstring): New function.
        (define-minor-mode): Use them.
 
@@ -56743,7 +56930,7 @@
 
        Add a new argument to 'recenter' to allow finer control of redisplay
 
-       * window.c (recenter): Add a new REDISPLAY argument to allow the
+       * src/window.c (recenter): Add a new REDISPLAY argument to allow the
        caller to control the redisplay behavior.  'recenter' will only
        redisplay the frame if this new arg and 'recenter-redisplay' are
        both non-nil.
@@ -57192,19 +57379,19 @@
 
        New functions to switch back and forth to another major mode
 
-       * subr.el (major-mode--suspended): New var.
+       * lisp/subr.el (major-mode--suspended): New var.
        (major-mode-suspend, major-mode-restore): New funs, extracted from 
doc-view.
-       * doc-view.el (doc-view--previous-major-mode): Remove.
+       * lisp/doc-view.el (doc-view--previous-major-mode): Remove.
        (doc-view-mode): Use major-mode-suspend.
        (doc-view-fallback-mode): Use major-mode-restore.
-       * hexl-mode.el (hexl-mode--minor-mode-p, hexl-mode--setq-local): Remove.
+       * lisp/hexl.el: (hexl-mode--minor-mode-p, hexl-mode--setq-local): 
Remove.
        (hexl-mode): Use major-mode-suspend and hexl-follow-ascii-mode.
        (hexl-mode-exit): Use major-mode-restore.
        (hexl-activate-ruler, hexl-follow-line): Don't bother trying to preserve
        earlier state, now that entering/leaving hexl-mode kills local vars.
        (hexl-follow-ascii-mode): New proper local minor mode.
        (hexl-follow-ascii): Rewrite, using it.
-       * image-mode.el (image-mode-previous-major-mode): Remove.
+       * lisp/image-mode.el (image-mode-previous-major-mode): Remove.
        (image-mode): Use major-mode-suspend.
        (image-mode-to-text): Use major-mode-restore.
 
@@ -58220,7 +58407,7 @@
 
 2018-06-11  Michael R. Mauger  <address@hidden>
 
-       * lisp/progmodes/sql.el Add MariaDB support (Robert Cochran)
+       * lisp/progmodes/sql.el: Add MariaDB support (Robert Cochran)
          (sql-product-alist): Add MariaDB entry
          (sql-mariadb-program, sql-mariadb-options, sql-mariadb-login-params,
          sql-mode-mariadb-font-lock): New variables, aliases of the MySQL
@@ -59322,7 +59509,7 @@
 
        bibtex-search-entry: Reuse the window displaying the buffer.
 
-       * textmodes/bibtex.el (bibtex-reposition-window): New optional arg
+       * lisp/textmodes/bibtex-style.el (bibtex-reposition-window): New 
optional arg
        pos.
        (bibtex-search-crossref, bibtex-search-entry): Use it.
        (bibtex-search-entry): If possible, reuse the window displaying
@@ -59332,13 +59519,13 @@
 
        bibtex-mark-entry: Display no message.
 
-       * textmodes/bibtex.el (bibtex-mark-entry): Display no message.
+       * lisp/textmodes/bibtex.el (bibtex-mark-entry): Display no message.
 
 2018-05-30  Roland Winkler  <address@hidden>
 
        bibtex-format-entry: Preserve opt-alt if possible.
 
-       * textmodes/bibtex.el (bibtex-format-entry):
+       * lisp/textmodes/bibtex.el (bibtex-format-entry):
        Preserve opt-alt unless its removal is selected.
        (bibtex-parse-entry):  New optional arg keep-opt-alt.
 
@@ -60168,7 +60355,7 @@
        * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes):
        Parse multibyte symlinks correctly.
 
-       * test/lisp/net/tramp/tramp-tests.el (tramp--test-utf8):
+       * test/lisp/net/tramp-tests.el (tramp--test-utf8):
        Improve backward compatibility.
 
 2018-05-10  Basil L. Contovounesios  <address@hidden>
@@ -61775,7 +61962,7 @@
 
        Do not destructively modify interprogram paste
 
-       * simple.el (kill-new, current-kill): Non-destructively reverse list
+       * lisp/simple.el (kill-new, current-kill): Non-destructively reverse 
list
        returned by interprogram-paste-function. (bug#31097)
 
 2018-04-13  Lars Ingebrigtsen  <address@hidden>
@@ -62324,10 +62511,10 @@
 
        Gnus Group Mail Spliting on mailing-list headers
 
-       * texi/gnus.texi: Document the new `list' split abbreviation and
+       * doc/misc/gnus.texi: Document the new `list' split abbreviation and
        `match-list' group parameter (bug#25346).
 
-       * lisp/gnus-mlspl.el: Use the `list' abbreviation when the new
+       * lisp/gnus/gnus-mlspl.el: Use the `list' abbreviation when the new
        `match-list' group parameter is set to `t'.
        The split regexp is modified to match either `@` or `.` as domain
        separator to comply with RFC2919 IDs too.
@@ -62731,7 +62918,10 @@
 
 2018-04-02  Alan Mackenzie  <address@hidden>
 
-       * lisp/progmodes/cc-{defs,engine,langs,vars}.el: Comment the use of 
"a\\`"
+       * lisp/progmodes/cc-defs.el:
+       * lisp/progmodes/cc-engine.el:
+       * lisp/progmodes/cc-langs.el:
+       * lisp/progmodes/cc-vars.el: Comment the use of "a\\`"
 
 2018-04-02  Paul Eggert  <address@hidden>
 
@@ -63768,7 +63958,7 @@
 
 2018-03-20  Alan Mackenzie  <address@hidden>
 
-       * cc-engine.el (c-looking-at-or-maybe-in-bracelist): Remove 
pessimization
+       * lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): 
Remove pessimization
 
 2018-03-20  Eli Zaretskii  <address@hidden>
 
@@ -64380,7 +64570,7 @@
 
        * doc/emacs/fixit.texi (Transpose): Mention and explain the new
        command.
-       * editfns.c (Ftranspose_regions): Add an interactive calling
+       * src/editfns.c (Ftranspose_regions): Add an interactive calling
        specification, and add documentation for it.
 
 2018-03-11  Charles A. Roelli  <address@hidden>
@@ -64546,7 +64736,7 @@
 
        Fix wrong behavior of 'outline-headers-as-kill' command (Bug#30209)
 
-       * outline.el (outline-headers-as-kill): Fix heading duplication.
+       * lisp/outline.el (outline-headers-as-kill): Fix heading duplication.
 
 2018-03-10  Eli Zaretskii  <address@hidden>
 
@@ -65659,7 +65849,7 @@
        Add ".xpi" to Tramp file archives
 
        * doc/misc/tramp.texi (Archive file names):
-       * tramp-archive.el (tramp-archive-suffixes): Add ".xpi".
+       * lisp/net/tramp-archive.el (tramp-archive-suffixes): Add ".xpi".
 
 2018-02-18  Stefan Monnier  <address@hidden>
 
@@ -65980,7 +66170,7 @@
        * lisp/server.el: (server-name): Update :version tag.
        * etc/NEWS: Document that `server-name' and `server-socket-dir'
          automatically update.
-       * doc/misc.texi: (Emacs Server): Likewise.
+       * doc/emacs/misc.texi: (Emacs Server): Likewise.
 
 2018-02-12  Paul Eggert  <address@hidden>
 
@@ -67952,7 +68142,7 @@
 
        It already exists in the Cygwin-w32 build.
        * src/w32fns.c (Fw32_battery_status): Move to...
-       * src/w32cygwinx: New file, to be used for functions common to
+       * src/w32cygwinx.c: New file, to be used for functions common to
        the MS Windows and Cygwin builds.
        (syms_of_w32cygwinx): New function.
        * src/lisp.h: Add prototype of syms_of_w32cygwinx.
@@ -68253,7 +68443,7 @@
 
        Add macOS character-palette (bug#29837)
 
-       * lisp/ns-win.el (ns-do-show-character-palette): New function.
+       * lisp/term/ns-win.el (ns-do-show-character-palette): New function.
        * src/nsfns.m (Sns_show_character_palette): New function.
        * src/nsterm.m (EmacsView::insertText): Handle NSAttributedString.
 
@@ -68377,7 +68567,7 @@
 
 2018-01-07  Alan Mackenzie  <address@hidden>
 
-       * fns.c (base64-decode-region): Add signal_after_change call for 
insertion.
+       * src/fns.c (base64-decode-region): Add signal_after_change call for 
insertion.
 
 2018-01-06  Noam Postavsky  <address@hidden>
 
@@ -71090,8 +71280,9 @@
 
        Add support for Windows installer build
 
-        * etc/images/slash.bmp,admin/nt/dist-build/emacs.nsi: New files
-        * admin/nt/dist-build/build-zips.sh: Support building installer
+       * etc/images/slash.bmp:
+       * admin/nt/dist-build/emacs.nsi: New files
+       * admin/nt/dist-build/build-zips.sh: Support building installer
 
 2017-11-04  Andreas Politz  <address@hidden>
 
@@ -71681,7 +71872,7 @@
        * lisp/dired-aux.el (dired-create-destination-dirs): New option.
        (dired-maybe-create-dirs): New defun.
        (dired-copy-file-recursive, dired-rename-file): Use it (Bug#28834).
-       * lisp/dired-aux-tests.el (dired-test-bug28834): Add test.
+       * test/lisp/dired-aux-tests.el (dired-test-bug28834): Add test.
        * doc/emacs/dired.texi (Operating on Files): Update manual.
        * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 27.1)
        Announce this change.
@@ -139259,7 +139450,7 @@
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit 28399e585e172ab005328f1c970084e53a299eb4 (inclusive).
+commit 9261b1ed49755284bb9dc194b6c2a9b407151ee5 (inclusive).
 See ChangeLog.2 for earlier changes.
 
 ;; Local Variables:
diff --git a/admin/authors.el b/admin/authors.el
index f8f7287..dc42bc7 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -294,7 +294,10 @@ If REALNAME is nil, ignore that author.")
     "preferences\\.\\(nib\\|gorm\\)"
     ;; Generated files that have since been removed.
     "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
-gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'")
+gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'"
+    ;; Removed as obsolete
+    "README-ftp-server"
+    )
   "List of regexps matching obsolete files.
 Changes to files matching one of the regexps in this list are not listed.")
 
@@ -459,6 +462,12 @@ Changes to files matching one of the regexps in this list 
are not listed.")
     ;; ada-mode has been deleted, now in GNU ELPA
     "ada-mode.texi"
     "GNUS-NEWS"
+    "doc/misc/gnus-news.el"
+    "src/fingerprint-dummy.c"
+    "src/fingerprint.h"
+    ;; Replaced by lisp/thread.el
+    "lisp/emacs-lisp/thread-list.el"
+    "etc/images/slash.bmp"
     )
   "List of files and directories to ignore.
 Changes to files in this list are not listed.")
@@ -1103,6 +1112,8 @@ in the repository.")
     ("lisp/net/starttls.el" . "lisp/obsolete/starttls.el")
     ("url-ns.el" . "lisp/obsolete/url-ns.el")
     ("gnus-news.texi" . "doc/misc/gnus.texi")
+    ("lisp/multifile.el". "lisp/fileloop.el")
+    ("lisp/emacs-lisp/thread.el". "lisp/thread.el")
     )
   "Alist of files which have been renamed during their lifetime.
 Elements are (OLDNAME . NEWNAME).")
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 5571194..768e505 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -34,7 +34,7 @@ GNULIB_MODULES='
   d-type diffseq dosname double-slash-root dtoastr dtotimespec dup2
   environ execinfo explicit_bzero faccessat
   fchmodat fcntl fcntl-h fdopendir
-  filemode filevercmp flexmember fpieee fstatat fsusage fsync
+  filemode filevercmp flexmember fpieee fstatat fsusage fsync futimens
   getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
   ieee754-h ignore-value intprops largefile lstat
   manywarnings memmem-simple mempcpy memrchr minmax mkostemp mktime nstrftime
@@ -43,7 +43,7 @@ GNULIB_MODULES='
   sig2str socklen stat-time std-gnu11 stdalign stddef stdio
   stpcpy strnlen strtoimax symlink sys_stat sys_time
   tempname time time_r time_rz timegm timer-time timespec-add timespec-sub
-  update-copyright unlocked-io utimens
+  update-copyright unlocked-io utimensat
   vla warnings
 '
 
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index 272b08d..38963f2 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -214,6 +214,7 @@ Select a buffer to be used by next invocation of 
@code{next-error} and
 @kindex C-x `
 @findex next-error
 @vindex next-error-highlight
+@vindex next-error-highlight-no-select
   To visit errors sequentially, type @w{@kbd{C-x `}}
 (@code{next-error}), or equivalently @kbd{M-g M-n} or @kbd{M-g n}.
 This command can be invoked from any buffer, not just a Compilation
@@ -258,7 +259,9 @@ to skip any messages.
 
   When Emacs visits the locus of an error message, it momentarily
 highlights the relevant source line.  The duration of this highlight
-is determined by the variable @code{next-error-highlight}.
+is determined by the variable @code{next-error-highlight} for the locus
+in the selected buffer, and @code{next-error-highlight-no-select} for
+the locus in non-selected buffers.
 
 @vindex compilation-context-lines
   If the @file{*compilation*} buffer is shown in a window with a left
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index f39ce40..e7e8790 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1873,15 +1873,19 @@ You can use a vector for the simple cases too:
   Language and coding systems may cause problems with key bindings for
 non-@acronym{ASCII} characters.  @xref{Init Non-ASCII}.
 
+@findex define-key
   As described in @ref{Local Keymaps}, major modes and minor modes can
 define local keymaps.  These keymaps are constructed when the mode is
-used for the first time in a session.  If you wish to change one of
-these keymaps, you must use the @dfn{mode hook} (@pxref{Hooks}).
+loaded for the first time in a session.  The function @code{define-key}
+can be used to make changes in a specific keymap.  This function can
+also unset keys, when passed @code{nil} as the binding.
 
-@findex define-key
-  For example, Texinfo mode runs the hook @code{texinfo-mode-hook}.
-Here's how you can use the hook to add local bindings for @kbd{C-c n}
-and @kbd{C-c p} in Texinfo mode:
+  Since a mode's keymaps are not constructed until it has been loaded,
+you must delay running code which modifies them, e.g., by putting it
+on a @dfn{mode hook} (@pxref{(Hooks)}).  For example, Texinfo mode
+runs the hook @code{texinfo-mode-hook}.  Here's how you can use the
+hook to add local bindings for @kbd{C-c n} and @kbd{C-c p}, and remove
+the one for @kbd{C-c C-x x} in Texinfo mode:
 
 @example
 (add-hook 'texinfo-mode-hook
@@ -1890,6 +1894,7 @@ and @kbd{C-c p} in Texinfo mode:
                         'backward-paragraph)
             (define-key texinfo-mode-map "\C-cn"
                         'forward-paragraph)))
+            (define-key texinfo-mode-map "\C-c\C-xx" nil)
 @end example
 
 @node Modifier Keys
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index ae1b8d6..00daa8b 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -143,6 +143,64 @@ The variables for right-hand keys, like 
@code{ns-right-alternate-modifier},
 may also be set to @code{left}, which means to use the same behavior as
 the corresponding left-hand key.
 
+@subsection Frame Variables
+
+@table @code
+@vindex ns-use-proxy-icon
+@item ns-use-proxy-icon
+This variable specifies whether to display the proxy icon in the
+titlebar.
+
+@vindex ns-confirm-quit
+@item ns-confirm-quit
+This variable specifies whether to display a graphical confirmation
+dialogue on quitting.
+
+@vindex ns-auto-hide-menu-bar
+@item ns-auto-hide-menu-bar
+This variable specifies whether the macOS menu bar is hidden when an
+Emacs frame is selected.  If non-nil the menu bar is not shown unless
+the mouse pointer is moved near to the top of the screen.
+
+@vindex ns-use-native-fullscreen
+@item ns-use-native-fullscreen
+This variable controls whether to use native, or non-native
+fullscreen.  Native fullscreen is only available on macOS 10.7 and
+above.
+@end table
+
+@subsection macOS Trackpad/Mousewheel Variables
+
+These variables only apply to macOS 10.7 (Lion) and above.
+
+@table @code
+@vindex ns-use-mwheel-acceleration
+@item ns-use-mwheel-acceleration
+This variable controls whether Emacs ignores the system mousewheel
+acceleration.  When nil each `click' of the mousewheel will correspond
+exactly with one mousewheel event.  When non-nil, the default, each
+`click' may correspond with more than one mousewheel event, depending
+on the user's input.
+
+@vindex ns-use-mwheel-momentum
+@item ns-use-mwheel-momentum
+This variable controls whether Emacs ignores the system `momentum'
+when scrolling using a trackpad.  When non-nil, the default, scrolling
+rapidly may result in the buffer continuing to scroll for a short
+while after the user has lifted their fingers off the trackpad.
+
+@vindex ns-mwheel-line-height
+@item ns-mwheel-line-height
+This variable controls the sensitivity of scrolling with the trackpad.
+Apple trackpads scroll by pixels, not lines, so Emacs converts the
+system's pixel values into lines.  When set to a number, this variable
+sets the number of pixels Emacs will consider as one line.  When nil
+or a non-number the default line height is used.
+
+Setting a lower number makes the trackpad more sensitive, and a higher
+number makes the trackpad less sensitive.
+@end table
+
 @subsection Font Panel
 
 @findex ns-popup-font-panel
@@ -153,17 +211,6 @@ recently used or clicked on.
 @c  To make the setting permanent, use @samp{Save Options} in the
 @c Options menu, or run @code{menu-bar-options-save}.
 
-@cindex Core Text, on macOS
-@cindex font backend, on macOS
-In macOS, Emacs uses a Core Text based font backend
-by default.  If you prefer the older font style, enter the following
-at the command-line before starting Emacs:
-
-@example
-% defaults write org.gnu.Emacs FontBackend ns
-@end example
-
-
 @node Mac / GNUstep Events
 @section Windowing System Events under macOS / GNUstep
 @cindex events on macOS
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 5d2a007..55e41e3 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -813,35 +813,23 @@ varieties.
 
 @cindex y or n prompt
   For the first type of yes-or-no query, the prompt ends with
-@samp{(y or n)}.  Such a query does not actually use the minibuffer;
-the prompt appears in the echo area, and you answer by typing either
-@samp{y} or @samp{n}, which immediately delivers the response.  For
-example, if you type @kbd{C-x C-w} (@kbd{write-file}) to save a
-buffer, and enter the name of an existing file, Emacs issues a prompt
-like this:
+@w{@samp{(y or n)}}.  You answer the query by typing a single key,
+either @samp{y} or @samp{n}, which immediately exits the minibuffer
+and delivers the response.  For example, if you type @kbd{C-x C-w}
+(@kbd{write-file}) to save a buffer, and enter the name of an existing
+file, Emacs issues a prompt like this:
 
 @smallexample
 File ‘foo.el’ exists; overwrite? (y or n)
 @end smallexample
 
-@noindent
-Because this query does not actually use the minibuffer, the usual
-minibuffer editing commands cannot be used.  However, you can perform
-some window scrolling operations while the query is active: @kbd{C-l}
-recenters the selected window; @kbd{C-v} (or @key{PageDown}, or
-@key{next}) scrolls forward; @kbd{M-v} (or @key{PageUp}, or
-@key{prior}) scrolls backward; @kbd{C-M-v} scrolls forward in the next
-window; and @kbd{C-M-S-v} scrolls backward in the next window.  Typing
-@kbd{C-g} dismisses the query, and quits the command that issued it
-(@pxref{Quitting}).
-
 @cindex yes or no prompt
-  The second type of yes-or-no query is typically employed if
-giving the wrong answer would have serious consequences; it uses the
-minibuffer, and features a prompt ending with @samp{(yes or no)}.  For
-example, if you invoke @kbd{C-x k} (@code{kill-buffer}) on a
-file-visiting buffer with unsaved changes, Emacs activates the
-minibuffer with a prompt like this:
+  The second type of yes-or-no query is typically employed if giving
+the wrong answer would have serious consequences; it thus features a
+longer prompt ending with @samp{(yes or no)}.  For example, if you
+invoke @kbd{C-x k} (@code{kill-buffer}) on a file-visiting buffer with
+unsaved changes, Emacs activates the minibuffer with a prompt like
+this:
 
 @smallexample
 Buffer foo.el modified; kill anyway? (yes or no)
@@ -849,7 +837,12 @@ Buffer foo.el modified; kill anyway? (yes or no)
 
 @noindent
 To answer, you must type @samp{yes} or @samp{no} into the minibuffer,
-followed by @key{RET}.  The minibuffer behaves as described in the
-previous sections; you can switch to another window with @kbd{C-x o},
-use the history commands @kbd{M-p} and @kbd{M-n}, etc.  Type @kbd{C-g}
-to quit the minibuffer and the querying command.
+followed by @key{RET}.
+
+With both types of yes-or-no query the minibuffer behaves as described
+in the previous sections; you can recenter the selected window with
+@kbd{C-l}, scroll that window (@kbd{C-v} or @kbd{PageDown} scrolls
+forward, @kbd{M-v} or @kbd{PageUp} scrolls backward), switch to
+another window with @kbd{C-x o}, use the history commands @kbd{M-p}
+and @kbd{M-n}, etc.  Type @kbd{C-g} to dismiss the query, and quit the
+minibuffer and the querying command (@pxref{Quitting}).
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 311b6f5..e979fda 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -302,7 +302,7 @@ function is called, it reads the full definition from the 
file, to
 replace the place-holder.
 
   The advantage of dynamic function loading is that loading the file
-becomes much faster.  This is a good thing for a file which contains
+should become faster.  This is a good thing for a file which contains
 many separate user-callable functions, if using one of them does not
 imply you will probably also use the rest.  A specialized mode which
 provides many keyboard commands often has that usage pattern: a user may
@@ -326,6 +326,10 @@ installed Emacs files.  But they are quite likely to 
happen with Lisp
 files that you are changing.  The easiest way to prevent these problems
 is to reload the new compiled file immediately after each recompilation.
 
+  @emph{Experience shows that using dynamic function loading provides
+benefits that are hardly measurable, so this feature is deprecated
+since Emacs 27.1.}
+
   The byte compiler uses the dynamic function loading feature if the
 variable @code{byte-compile-dynamic} is non-@code{nil} at compilation
 time.  Do not set this variable globally, since dynamic loading is
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index a69a4e5..b3ad9b9 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1909,11 +1909,19 @@ omitted or @code{nil}, it defaults to 0, i.e., no 
access rights at
 all.
 @end defun
 
-@defun set-file-times filename &optional time
+@defun set-file-times filename &optional time flag
 This function sets the access and modification times of @var{filename}
 to @var{time}.  The return value is @code{t} if the times are successfully
 set, otherwise it is @code{nil}.  @var{time} defaults to the current
 time and must be a time value (@pxref{Time of Day}).
+
+By default this function follows symbolic links.  However, if the
+optional argument @var{flag} is the symbol @code{nofollow}, this
+function does not follow @var{filename} if it is a symbolic link;
+this can help prevent inadvertently changing the times of a file
+somewhere else.  On platforms that do not support changing times
+on a symbolic link, this function signals an error when @var{filename}
+is a symbolic link and @var{flag} is @code{nofollow}.
 @end defun
 
 @defun set-file-extended-attributes filename attribute-alist
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index caa08ff..905e5c2 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -3264,7 +3264,7 @@ that deletion fails for whatever reason, the child frame 
is made a
 top-level frame.
 
   Whether a child frame can have a menu or tool bar is window-system or
-window manager dependent.  Most window-systems explicitly disallow menus
+window manager dependent.  Most window-systems explicitly disallow menu
 bars for child frames.  It seems advisable to disable both, menu and
 tool bars, via the frame's initial parameters settings.
 
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index ac38b9d..2488fb3 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -2236,16 +2236,16 @@ the end of @var{question}.  The possible responses are 
provided in
 @noindent
 where @var{long-answer} is the complete text of the user response, a
 string; @var{short-answer} is a short form of the same response, a
-single character; and @var{help-message} is the text that describes
-the meaning of the answer.  If the variable @code{read-answer-short}
-is non-@code{nil}, the prompt will show the short variants of the
-possible answers and the user is expected to type the single
-characters shown in the prompt; otherwise the prompt will show the
-long variants of the answers, and the user is expected to type the
-full text of one of the answers and end by pressing @key{RET}.  If
-@code{use-dialog-box} is non-@code{nil}, and this function was invoked
-by mouse events, the question and the answers will be displayed in a
-GUI dialog box.
+single character or a function key; and @var{help-message} is the text
+that describes the meaning of the answer.  If the variable
+@code{read-answer-short} is non-@code{nil}, the prompt will show the
+short variants of the possible answers and the user is expected to
+type the single characters/keys shown in the prompt; otherwise the
+prompt will show the long variants of the answers, and the user is
+expected to type the full text of one of the answers and end by
+pressing @key{RET}.  If @code{use-dialog-box} is non-@code{nil}, and
+this function was invoked by mouse events, the question and the
+answers will be displayed in a GUI dialog box.
 
 The function returns the text of the @var{long-answer} selected by the
 user, regardless of whether long or short answers were shown in the
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index cf4ef52..e72858b 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1979,10 +1979,9 @@ The result is @code{nil} if either argument is a NaN.
 
 @defun time-subtract t1 t2
 This returns the time difference @var{t1} @minus{} @var{t2} between
-two time values, normally as a Lisp timestamp but as a float
-if either argument is infinite or a NaN@.
-When the result is a timestamp, it is exact and its clock
+two time values, as a Lisp time value.  The result is exact and its clock
 resolution is no worse than the worse of its two arguments' resolutions.
+The result is floating-point only if it is infinite or a NaN.
 If you need the difference in units
 of elapsed seconds, you can convert it with @code{time-convert} or
 @code{float-time}.  @xref{Time Conversion}.
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index a4d5a27..1a090eb 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1086,8 +1086,9 @@ Corresponding string regexp: @samp{@var{A}@var{B}@dots{}}
 @itemx @code{(| @var{rx}@dots{})}
 @cindex @code{|} in rx
 Match exactly one of the @var{rx}s.
-If all arguments are string literals, the longest possible match
-will always be used.  Otherwise, either the longest match or the
+If all arguments are strings, characters, or @code{or} forms
+so constrained, the longest possible match will always be used.
+Otherwise, either the longest match or the
 first (in left-to-right order) will be used.
 Without arguments, the expression will not match anything at all.@*
 Corresponding string regexp: @samp{@var{A}\|@var{B}\|@dots{}}.
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 0610f80..1ca97e2 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -1076,7 +1076,7 @@ package is only activated if all its dependencies have 
been).
 Its format is a list of lists on a single line.  The @code{car} of
 each sub-list is the name of a package, as a symbol.  The @code{cadr}
 of each sub-list is the minimum acceptable version number, as a string
-that can be parse by @code{version-to-list}.  An entry that lacks a
+that can be parsed by @code{version-to-list}.  An entry that lacks a
 version (i.e., an entry which is just a symbol, or a sub-list of one
 element) is equivalent to entry with version "0".  For instance:
 
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 35eb4d5..abcd4bb 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -858,7 +858,7 @@ is a buffer if the buffer-local value of the variable is 
being
 changed, @code{nil} otherwise.
 @end defun
 
-@defun remove-variable-watch symbol watch-function
+@defun remove-variable-watcher symbol watch-function
 This function removes @var{watch-function} from @var{symbol}'s list of
 watchers.
 @end defun
@@ -1187,8 +1187,14 @@ When evaluating Emacs Lisp code directly using an 
@code{eval} call,
 lexical binding is enabled if the @var{lexical} argument to
 @code{eval} is non-@code{nil}.  @xref{Eval}.
 
-Lexical binding is also enabled in Lisp Interaction and IELM
-mode, used in the @file{*scratch*} and @file{*ielm*} buffers.
+@findex eval-expression@r{, and }lexical-binding
+Lexical binding is also enabled in Lisp Interaction and IELM mode,
+used in the @file{*scratch*} and @file{*ielm*} buffers, and also when
+evaluating expressions via @kbd{M-:} (@code{eval-expression}) and when
+processing the @option{--eval} command-line options of Emacs
+(@pxref{Action Arguments,,, emacs, The GNU Emacs Manual}) and
+@command{emacsclient} (@pxref{emacsclient Options,,, emacs, The GNU
+Emacs Manual}).
 
 @cindex special variables
   Even when lexical binding is enabled, certain variables will
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 544ff85..f99a890 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -350,11 +350,12 @@ Line-Up Functions
 * Misc Line-Up::
 
 
-Customizing Macros
+Custom Macros
 
 * Macro Backslashes::
 * Macros with ;::
 * Noise Macros::
+* Indenting Directives::
 
 @end detailmenu
 @end menu
@@ -6949,6 +6950,10 @@ is @code{nil}, all lines inside macro definitions are 
analyzed as
 @code{cpp-macro-cont}.
 @end defopt
 
+Sometimes you may want to indent particular directives
+(e.g. @code{#pragma}) as though they were statements.  To do this, see
+@ref{Indenting Directives}.
+
 Because a macro can expand into anything at all, near where one is
 invoked @ccmode{} can only indent and fontify code heuristically.
 Sometimes it gets it wrong.  Usually you should try to design your
@@ -6965,6 +6970,7 @@ Macros}.
 * Macro Backslashes::
 * Macros with ;::
 * Noise Macros::
+* Indenting Directives::
 @end menu
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -7074,7 +7080,7 @@ initialization code, after the mode hooks have run.
 @end defun
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node    Noise Macros,  , Macros with ;, Custom Macros
+@node    Noise Macros, Indenting Directives, Macros with ;, Custom Macros
 @comment node-name, next, previous, up
 @section Noise Macros
 @cindex noise macros
@@ -7131,6 +7137,48 @@ after the mode hooks have run.
 @end defun
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+@node    Indenting Directives, , Noise Macros, Custom Macros
+@comment node-name, next, previous, up
+@section Indenting Directives
+@cindex Indenting Directives
+@cindex Indenting #pragma
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Sometimes you may want to indent particular preprocessor directives
+(e.g. @code{#pragma}) as though they were statements.  To do this,
+first set up @code{c-cpp-indent-to-body-directives} to include the
+directive name(s), then enable the ``indent to body'' feature with
+@code{c-toggle-cpp-indent-to-body}.
+
+@defopt c-cpp-indent-to-body-directives
+@vindex cpp-indent-to-body-directives (c-)
+This variable is a list of names of CPP directives (not including the
+introducing @samp{#}) which will be indented as though statements.
+Each element is a string, and must be a valid identifier.  The default
+value is @code{("pragma")}.
+
+If you add more directives to this variable, or remove directives from
+it, whilst ``indent to body'' is active, you need to re-enable the
+feature by calling @code{c-toggle-cpp-indent-to-body} for these
+changes to take effect@footnote{Note that the removal of directives
+doesn't work satisfactorally on XEmacs or on very old versions of
+Emacs}.
+@end defopt
+
+@defun c-toggle-cpp-indent-to-body
+@findex toggle-cpp-indent-to-body (c-)
+With @kbd{M-x c-toggle-cpp-indent-to-body}, you enable or disable the
+``indent to body'' feature.  When called programmatically, it takes an
+optional numerical argument.  A positive value will enable the
+feature, a zero or negative value will disable it.
+
+You should set up @code{c-cpp-indent-to-body-directives} before
+calling this function, since the function sets internal state which
+depends on that variable.
+@end defun
+
+
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 @node    Odds and Ends, Sample Init File, Custom Macros, Top
 @comment node-name, next, previous, up
 @chapter Odds and Ends
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 6c030fc..3943c54 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -1285,9 +1285,9 @@ This class is defined in the package @file{eieio-base}.
 Sometimes it is useful to keep a master list of all instances of a given
 class.  The class @code{eieio-instance-tracker} performs this task.
 
-@deftp {Class} eieio-instance-tracker tracker-symbol
+@deftp {Class} eieio-instance-tracker tracking-symbol
 Enable instance tracking for this class.
-The slot @var{tracker-symbol} should be initialized in inheritors of
+The slot @var{tracking-symbol} should be initialized in inheritors of
 this class to a symbol created with @code{defvar}.  This symbol will
 serve as the variable used as a master list of all objects of the given
 class.
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index b5eb81b..424e15b 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -3181,7 +3181,7 @@ For example:
          (broken-reply-to . t))))
 @end lisp
 
-All clauses that matches the group name will be used, but the last
+All clauses that match the group name will be used, but the last
 setting ``wins''.  So if you have two clauses that both match the
 group name, and both set, say @code{display}, the last setting will
 override the first.
@@ -17874,7 +17874,7 @@ presence of 7 special headers.  These headers are of 
the form
 @code{X-Diary-<something>}, @code{<something>} being one of
 @code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year},
 @code{Time-Zone} and @code{Dow}.  @code{Dom} means ``Day of Month'', and
-@code{dow} means ``Day of Week''.  These headers actually behave like
+@code{Dow} means ``Day of Week''.  These headers actually behave like
 crontab specifications and define the event date(s):
 
 @itemize @bullet
@@ -30916,7 +30916,7 @@ description   = <string>
 
 Believe it or not, but some people who use Gnus haven't really used
 Emacs much before they embarked on their journey on the Gnus Love Boat.
-If you are one of those unfortunates whom ``@kbd{C-M-a}'', ``kill the
+If you are one of those unfortunates to whom ``@kbd{C-M-a}'', ``kill the
 region'', and ``set @code{gnus-flargblossen} to an alist where the key
 is a regexp that is used for matching on the group name'' are magical
 phrases with little or no meaning, then this appendix is for you.  If
diff --git a/etc/AUTHORS b/etc/AUTHORS
index 2f7e015..ab0cbee 100644
--- a/etc/AUTHORS
+++ b/etc/AUTHORS
@@ -9,15 +9,16 @@ Aaron Ecay: changed ob-R.el ob-core.el org-src.el ox-latex.el 
nsterm.m
   ob-awk.el ob-exp.el ob-python.el ob-tangle.el org-bibtex.el org-id.el
   org.el org.texi package.el paren.el
 
-Aaron Jensen: changed frameset.el nsterm.m Info.plist.in mouse.el
+Aaron Jensen: changed frameset.el nsterm.m Info.plist.in flyspell.el
+  mouse.el server.el systhread.c w32term.c xdisp.c xterm.c
 
 Aaron Larson: co-wrote bibtex.el
 
 Aaron S. Hawley: wrote lisp-tests.el undo-tests.el
 and changed simple.el files.texi isearch.el morse.el sgml-mode.el
-  tar-mode.el thingatpt.el add-log.el autoinsert.el building.texi calc.el
-  cc-fonts.el comint.el compare-w.el custom.texi diff.el edebug.el
-  etags.el ffap.el files.el flyspell.el and 29 other files
+  tar-mode.el textmodes/table.el thingatpt.el add-log.el autoinsert.el
+  building.texi calc.el cc-fonts.el comint.el compare-w.el custom.texi
+  diff.el edebug.el etags.el ffap.el files.el and 31 other files
 
 Abdó Roig-Maranges: changed org.el org-agenda.el ox-html.el ox-odt.el
 
@@ -69,6 +70,8 @@ and changed nsterm.m nsfns.m nsfont.m nsterm.h nsmenu.m 
configure.ac
 
 Agustín Martín: changed ispell.el flyspell.el fixit.texi
 
+Ahmed Khanzada: changed battery.el
+
 Aidan Gauland: wrote em-tramp.el
 and changed eshell.texi em-term.el em-unix.el erc-match.el em-cmpl.el
   em-dirs.el em-ls.el em-script.el esh-proc.el eshell-tests.el
@@ -86,17 +89,19 @@ Aki Vehtari: changed bibtex.el gnus-art.el gnus-score.el 
gnus-sum.el
   nnmail.el tar-mode.el
 
 Alain Schneble: wrote url-expand-tests.el url-parse-tests.el
-and changed url-expand.el process.c url-parse.el w32proc.c shr.el w32.c
+and changed url-expand.el process.c url-parse.el w32proc.c message.el
+  shr.el w32.c
 
 Alakazam Petrofsky: changed hanoi.el
 
 Alan Mackenzie: wrote cc-awk.el
 and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el
   cc-langs.el cc-mode.el cc-styles.el cc-vars.el
-and changed cc-mode.texi bytecomp.el subr.el edebug.el follow.el
-  modes.texi syntax.texi display.texi font-lock.el isearch.el
-  programs.texi help.el ispell.el lread.c windows.texi control.texi
-  cus-start.el doc.c eval.c frames.texi help-fns.el and 134 other files
+and changed cc-mode.texi bytecomp.el follow.el display.texi subr.el
+  edebug.el progmodes/compile.el programs.texi syntax.texi modes.texi
+  font-lock.el isearch.el text.texi help.el ispell.el lread.c syntax.c
+  windows.texi .dir-locals.el control.texi cus-start.el
+  and 147 other files
 
 Alan Modra: changed unexelf.c
 
@@ -106,11 +111,11 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el 
cal-hebrew.el
   easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el
   solar.el
 
-Alan Third: wrote dabbrev-tests.el
-and changed nsterm.m nsfns.m nsterm.h nsmenu.m frame.el macfont.m
-  nsimage.m ns-win.el xdisp.c Info.plist.in conf_post.h frame.c frame.h
-  frames.texi keyboard.c macfont.h macos.texi picture.el rect.el
-  battery.el callproc.c and 12 other files
+Alan Third: wrote dabbrev-tests.el image-transforms-tests.el
+and changed nsterm.m nsterm.h nsfns.m nsmenu.m ns-win.el nsimage.m
+  image.c macfont.m configure.ac frame.el xdisp.c display.texi image.el
+  macos.texi xterm.c Info.plist.in conf_post.h dispextern.h frame.c
+  frame.h frames.texi and 21 other files
 
 Alastair Burt: changed gnus-art.el smiley.el
 
@@ -124,11 +129,10 @@ Aleksei Gusev: changed progmodes/compile.el
 
 Alexander Becher: changed vc-annotate.el
 
-Alexander Gramiak: changed faces.el display-line-numbers.el xt-mouse.el
-  CTAGS.good ETAGS.good_1 ETAGS.good_2 ETAGS.good_3 ETAGS.good_4
-  ETAGS.good_5 ETAGS.good_6 Makefile TAGTEST.EL cl-lib-tests.el
-  cl-macs-tests.el cus-start.el custom.texi display.texi erc-list.el
-  ert-tests.el ert.el etags.c and 16 other files
+Alexander Gramiak: changed w32term.c xterm.c nsterm.m dispextern.h
+  xdisp.c frame.c image.c nsgui.h w32gui.h xfns.c frame.el termhooks.h
+  w32fns.c w32term.h faces.el nsterm.h xfaces.c xterm.h frame.h xfont.c
+  configure.ac and 64 other files
 
 Alexander Haeckel: changed getset.el
 
@@ -151,6 +155,8 @@ Alexander Vorobiev: changed org-compat.el
 
 Alexander Zhuckov: changed ebrowse.c
 
+Alexandre Garreau: changed message.el
+
 Alexandre Julliard: wrote vc-git.el
 and changed vc.el ewoc.el
 
@@ -162,17 +168,24 @@ Alexandre Veyrenc: changed fr-refcard.tex
 Alexandru Harsanyi: wrote soap-client.el soap-inspect.el
 and changed emacs3.py vc-hooks.el vc.el xml.el
 
-Alex Branham: changed bibtex.el dired-x.el dired.el em-rebind.el eww.el
-  imenu.el indent.el modes.texi programs.texi text.texi
+Alex Branham: changed checkdoc.el bibtex.el em-rebind.el esh-util.el
+  indent.el js.el lpr.el message.el subr.el text.texi .dir-locals.el
+  auth-source-pass.el bug-reference.el comint.el conf-mode-tests.el
+  conf-mode.el dired-x.el dired.el ediff-diff.el ediff-help.el
+  ediff-hook.el and 41 other files
 
 Alex Coventry: changed files.el
 
 Alex Dunn: changed subr-tests.el subr.el
 
-Alex Gramiak: changed prolog.el
+Alexei Khlebnikov: changed autorevert.el vc-git.el
+
+Alex Gramiak: changed prolog.el terminal.c
 
 Alex Kosorukoff: changed org-capture.el
 
+Alex Murray: changed erc-desktop-notifications.el network-stream.el
+
 Alex Ott: changed TUTORIAL.ru ede/files.el ru-refcard.tex base.el
   cedet-files.el cpp-root.el ede.el ede/generic.el idle.el ispell.el
   semantic/format.el
@@ -204,8 +217,10 @@ Ali Bahrami: changed configure configure.ac sol2-10.h
 
 Alin C. Soare: changed lisp-mode.el hexl.el
 
-Allen Li: changed abbrev.el bookmark.el comint.el dired-x.el misc.texi
-  nsm.el progmodes/compile.el subr.el
+Allen Li: changed abbrev.el abbrev-tests.el abbrevs.texi sending.texi
+  autoload.el bookmark.el comint.el dired-x.el misc.texi nsm.el
+  progmodes/compile.el ring-tests.el ring.el sequences.texi subr.el
+  xref.el
 
 Allen S. Rout: changed org-capture.el
 
@@ -220,17 +235,28 @@ Alp Aker: changed nsfont.m nsterm.m buff-menu.el nsfns.m 
nsmenu.m
 Ami Fischman: changed bindings.el calendar.el diary-lib.el print.c
   savehist.el vc-git.el
 
+Amin Bandali: changed erc-button.el erc-desktop-notifications.el
+  erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el erc-imenu.el
+  erc-join.el erc-lang.el erc-list.el erc-log.el erc-match.el
+  erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el
+  erc-services.el erc-sound.el erc-speedbar.el erc-spelling.el
+  erc-stamp.el and 4 other files
+
 Anand Mitra: changed gnus-sum.el
 
 Anders Holst: wrote hippie-exp.el
 
-Anders Lindgren: wrote autorevert.el cwarn.el follow.el
+Anders Lindgren: wrote autorevert.el cwarn.el faceup-test-basics.el
+  faceup-test-files.el faceup.el follow.el
 and changed nsterm.m nsfns.m nsmenu.m nsterm.h font-lock.el nsimage.m
-  README etags.c term.el window.el Info.plist.in compile.el ert.el
-  loadup.el lread.c ns-win.el nsfont.m vc-svn.el
+  README etags.c term.el window.el Info.plist.in compile.el diff-mode.el
+  ert.el faceup-test-mode.el faceup-test-this-file-directory.el loadup.el
+  lread.c ns-win.el nsfont.m test1.txt and 3 other files
 
 Anders Waldenborg: changed emacsclient.c
 
+Andrea Corallo: changed map-tests.el map.el
+
 Andrea Rossetti: changed ruler-mode.el
 
 Andrea Russo: changed erc-dcc.el info-look.el
@@ -259,23 +285,26 @@ Andreas Leue: changed artist.el
 
 Andreas Luik: changed xfns.c xterm.c
 
-Andreas Politz: changed filenotify.el inotify.c bytecomp.el editfns.c
-  elp.el filenotify-tests.el frame.c ibuffer.el ido.el imenu.el
-  modes.texi outline.el sh-script.el sql.el subr.el term.el wid-edit.el
-  window.el
+Andreas Merziger: changed calendar.el
+
+Andreas Politz: changed filenotify.el inotify.c buffer-tests.el
+  bytecomp.el editfns.c elp.el filecache.el filenotify-tests.el frame.c
+  ibuffer.el idlwave.el ido.el imenu.el modes.texi outline.el
+  sh-script.el sql.el startup.el strokes.el subr.el term.el
+  and 5 other files
 
 Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el
 
-Andreas Schwab: changed configure.ac lisp.h process.c xdisp.c alloc.c
+Andreas Schwab: changed configure.ac lisp.h xdisp.c process.c alloc.c
   coding.c Makefile.in files.el fileio.c keyboard.c lread.c xterm.c fns.c
   editfns.c emacs.c src/Makefile.in print.c eval.c font.c xfns.c sysdep.c
-  and 639 other files
+  and 650 other files
 
 Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus-sum.el
   gnus.el nnslashdot.el gnus-srvr.el gnus-util.el mm-url.el mm-uu.el
-  url-http.el xterm.c battery.el comint.el easy-mmode.el gmm-utils.el
-  gnus-art.el gnus-cite.el gnus-draft.el gnus-group.el gnus-ml.el
-  and 7 other files
+  url-http.el xterm.c battery.el comint.el doc/misc/gnus.texi
+  easy-mmode.el gmm-utils.el gnus-art.el gnus-cite.el gnus-draft.el
+  gnus-group.el and 7 other files
 
 Andreas Vögele: changed pgg-def.el
 
@@ -313,7 +342,7 @@ Andrew Hyatt: changed bug-triage CONTRIBUTE org-archive.el 
org.el
 Andrew Innes: changed makefile.nt w32fns.c w32term.c w32.c w32proc.c
   fileio.c w32-fns.el dos-w32.el inc/ms-w32.h w32term.h makefile.def
   unexw32.c w32menu.c w32xfns.c addpm.c cmdproxy.c emacs.c w32-win.el
-  w32inevt.c configure.bat lread.c and 130 other files
+  w32inevt.c configure.bat lread.c and 129 other files
 
 Andrew L. Moore: changed executable.el
 
@@ -323,6 +352,8 @@ Andrew Robbins: changed net-utils.el
 
 Andrew Schein: changed sql.el
 
+Andrew Schwartzmeyer: changed subr-tests.el subr.el
+
 Andrew W. Nosenko: changed tramp.el
 
 Andrew Zhilin: changed emacs22.png emacs22.ico
@@ -333,10 +364,17 @@ Andrey Slusar: changed gnus-async.el gnus.el
 
 Andrey Zhdanov: changed gud.el
 
+Andrii Kolomoiets: changed vc-hg.el progmodes/python.el vc-git.el vc.el
+  maintaining.texi vc-svn.el
+
 Andrzej Lichnerowicz: wrote ob-io.el
 
-Andy Moreton: changed gnutls.c image.el package.el unexw32.c vc-hg.el
-  w32fns.c w32heap.c w32proc.c w32term.c w32xfns.c
+Andrzej P: changed gdb-mi.el
+
+Andy Moreton: changed gnutls.c alloc.c ccl-tests.el ccl.el image.c
+  w32fns.c w32font.c w32heap.c w32proc.c w32uniscribe.c data.c
+  decompress.c dynlib.c emacs-module-tests.el emacs.c image.el json.c
+  lcms.c lisp.h package.el pdumper.c and 12 other files
 
 Andy Norman: wrote ange-ftp.el
 
@@ -346,7 +384,7 @@ Andy Sawyer: changed saveplace.el
 
 Andy Seaborne: changed keyboard.c
 
-Andy Stewart: wrote org-w3m.el
+Andy Stewart: wrote ol-w3m.el
 and changed erc.el
 
 Angelo Graziosi: changed sysdep.c term.c
@@ -355,6 +393,10 @@ Anmol Khirbat: changed ido.el
 
 Anna M. Bigatti: wrote cal-html.el
 
+Ansgar Burchardt: changed latin-ltx.el
+
+Antoine Beaupré: changed vc-git.el
+
 Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi ada-prj.el
   ange-ftp.el cus-edit.el dired-x.el ebnf2ps.el emerge.el erc-button.el
   erc-goodies.el erc-stamp.el erc-track.el files.el find-file.el
@@ -363,11 +405,11 @@ Antoine Levitt: changed gnus-group.el gnus-sum.el 
message.texi ada-prj.el
 
 Antonin Houska: changed newcomment.el
 
-Arash Esbati: changed reftex-vars.el reftex.el reftex-auc.el
-  reftex-ref.el
+Arash Esbati: changed reftex-vars.el reftex-ref.el reftex.el nnmaildir.el
+  reftex-auc.el reftex-cite.el reftex-dcr.el
 
-Ari Roponen: changed xterm.c atimer.c doc.c hash.texi image.c mule.texi
-  package.el startup.el subr.el svg.el time-date.el woman.el
+Ari Roponen: changed xterm.c image.c atimer.c doc.c ftcrfont.c hash.texi
+  mule.texi package.el startup.el subr.el svg.el time-date.el woman.el
 
 Arisawa Akihiro: changed characters.el coding.c epa-file.el japan-util.el
   language/tibetan.el message.el mm-decode.el mm-view.el ps-print.el
@@ -383,7 +425,7 @@ and changed smime.el mml-smime.el smime-ldap.el flymake.el 
gnus-art.el
   mule-conf.el nnimap.el nnrss.el wid-edit.el
 
 Arni Magnusson: wrote bat-mode.el
-and changed ada-mode.texi frames.texi generic-x.el texinfo.el
+and changed frames.texi generic-x.el texinfo.el
 
 Artem Chuprina: changed message.el
 
@@ -395,6 +437,8 @@ and changed package.el isearch.el lisp/char-fold.el files.el
   let-alist-tests.el simple.el subr-tests.el align.el bindings.el
   cl-lib-tests.el cl-macs.el and 42 other files
 
+Artyom Loenko: changed Info.plist.in
+
 Arun Persaud: changed org-agenda.el org-src.el
 
 Ashish Shukla: changed emacs-gnutls.texi gnutls.el
@@ -410,10 +454,12 @@ Aubrey Jaffer: changed info.el unexelf.c
 Aurélien Aptel: changed alloc.c emacs-module.h lisp.h Makefile
   configure.ac cus-face.el data.c dispextern.h display.texi dynlib.c
   dynlib.h emacs-module.c faces.el lread.c modhelp.py nsterm.m ox-html.el
-  print.c src/Makefile.in syntax.c url.texi and 4 other files
+  print.c src/Makefile.in subr.el syntax.c and 6 other files
 
 Axel Boldt: changed ehelp.el electric.el
 
+Axel Svensson: changed x-win.el
+
 Bahodir Mansurov: changed quail/cyrillic.el
 
 Bake Timmons: changed gnus.texi mail-source.el
@@ -440,21 +486,22 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el 
hexl.el icon.el
   sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el
   xscheme.el
 
-Basil L. Contovounesios: changed simple.el message.el sequences.texi
-  bibtex.el css-mode-tests.el css-mode.el customize.texi display.texi
-  gnus-art.el json-tests.el json.el lists.texi man.el modes.texi
-  newcomment.el rcirc.el shr-color.el text.texi url-handlers.el
+Basil L. Contovounesios: changed simple.el message.el subr.el gravatar.el
+  custom.el gnus-group.el gnus-sum.el gnus-win.el internals.texi
+  modes.texi text.texi window.c bibtex.el button.el customize.texi
+  display.texi eww.el gnus-art.el gnus-msg.el gnus.texi lists.texi
+  and 150 other files
 
-Bastian Beischer: changed include.el mru-bookmark.el refs.el
-  semantic/complete.el senator.el
+Bastian Beischer: changed semantic/complete.el include.el mru-bookmark.el
+  refs.el senator.el
 
 Bastien Guerry: wrote gnus-bookmark.el
-and co-wrote org-bibtex.el org-list.el org-protocol.el org-src.el
+and co-wrote ol-bibtex.el org-list.el org-protocol.el org-src.el
 and changed org.el org-agenda.el org.texi ox-html.el org-clock.el
   org-capture.el org-table.el ox-latex.el ox.el ox-odt.el org-compat.el
   ox-publish.el ob.el org-mobile.el org-colview.el org-macs.el
   org-pcomplete.el org-timer.el org-faces.el ox-ascii.el org-archive.el
-  and 118 other files
+  and 120 other files
 
 Ben A. Mesander: co-wrote erc-dcc.el
 
@@ -471,9 +518,11 @@ Benjamin Andresen: wrote ob-screen.el
 Benjamin Drieu: wrote pong.el
 and changed org-clock.el org.el
 
-Benjamin Riefenstahl: changed w32select.c emacs.c image-mode.el image.el
-  inc/ms-w32.h lisp.h mac-win.el macterm.c mule-cmds.el runemacs.c tcl.el
-  w32.c w32.h
+Benjamin Ragheb: changed fortune.el
+
+Benjamin Riefenstahl: changed files.el image-mode.el w32select.c emacs.c
+  image.el inc/ms-w32.h lisp.h mac-win.el macterm.c mule-cmds.el
+  runemacs.c tcl.el w32.c w32.h
 
 Benjamin Rutt: co-wrote gnus-dired.el
 and changed vc.el gnus-msg.el message.el diff-mode.el ffap.el nnimap.el
@@ -490,6 +539,8 @@ Ben North: changed outline.el buffer.c fill.el isearch.el 
lisp-mode.el
 
 Bernhard Herzog: changed vc-hg.el menu.c xsmfns.c
 
+Bernhard Rotter: changed em-cmpl.el esh-ext.el esh-util.el
+
 Bernt Hansen: changed org-agenda.el org-clock.el org.el org-capture.el
   org-indent.el org-macs.el org.texi ox-html.el
 
@@ -517,11 +568,11 @@ Bill Wohler: wrote mh-buffers.el mh-comp.el mh-compat.el 
mh-e.el
   mh-folder.el mh-funcs.el mh-letter.el mh-mime.el mh-scan.el mh-seq.el
   mh-show.el mh-utils.el mh-xface.el
 and co-wrote mh-junk.el
-and changed mh-customize.el mh-search.el mh-alias.el Makefile mh-e.texi
+and changed mh-customize.el mh-search.el mh-alias.el mh-e.texi Makefile
   mh-identity.el README mh-speed.el mh-init.el mh-acros.el mh-gnus.el
   mh-unit.el mh-inc.el mh-xemacs-compat.el mh-print.el lisp/Makefile.in
   image.el mh-tool-bar.el mh-xemacs.el display.texi mh-pick.el
-  and 83 other files
+  and 82 other files
 
 Bjarte Johansen: wrote ob-sed.el
 
@@ -541,6 +592,8 @@ and changed isearch.el sendmail.el
 
 Bob Halley: changed ccl.c esh-io.el
 
+Bob Newell: changed latin-post.el latin-pre.el
+
 Bob Nnamtrop: changed viper-cmd.el
 
 Bob Olson: co-wrote cperl-mode.el
@@ -565,7 +618,8 @@ and changed fill.el simple.el indent.el paragraphs.el 
cmds.c intervals.c
 
 Boris Samorodov: changed imap.el
 
-Boruch Baum: changed bookmark.el
+Boruch Baum: co-wrote footnote.el
+and changed bookmark.el
 
 Boyd Lynn Gerber: changed configure.ac
 
@@ -577,6 +631,8 @@ Brad Howes: changed gnus-demon.el
 
 Brandon Craig Rhodes: changed flyspell.el
 
+Braun Gábor: changed cua-base.el simple.el
+
 Brendan Kehoe: changed hpux9.h
 
 Brent Goodrick: changed abbrev.el
@@ -613,7 +669,9 @@ Brian Sniffen: changed gnus-draft.el imap.el mm-decode.el
 
 Brian van den Broek: changed org.texi
 
-Bruno Félix Rezende Ribeiro: changed functions.texi
+Bruce Stephens: changed calc-ext.el
+
+Bruno Félix Rezende Ribeiro: changed functions.texi gnus.texi
 
 Bruno Haible: co-wrote po.el
 and changed INSTALL emacs.1 epaths.in info.el paths.el
@@ -637,30 +695,33 @@ Carl Edman: co-wrote ns-win.el
 
 Carl Henrik Lunde: changed format-spec.el
 
-Carlos Pita: changed erc-pcomplete.el sh-script.el
+Carlos Pita: changed erc-pcomplete.el image-mode.el progmodes/python.el
+  sh-script.el
 
 Carsten Bormann: changed ibmrs6000.h latin-post.el
 
 Carsten Dominik: wrote idlw-complete-structtag.el idlw-toolbar.el
-  org-agenda.el org-archive.el org-capture.el org-clock.el org-colview.el
-  org-compat.el org-datetree.el org-faces.el org-feed.el org-footnote.el
-  org-id.el org-indent.el org-info.el org-inlinetask.el org-macs.el
-  org-mobile.el org-rmail.el org-table.el org-timer.el org.el
-  reftex-auc.el reftex-cite.el reftex-dcr.el reftex-global.el
-  reftex-index.el reftex-parse.el reftex-ref.el reftex-sel.el
-  reftex-toc.el reftex-vars.el reftex.el
-and co-wrote idlw-help.el idlw-shell.el idlwave.el org-bbdb.el
-  org-bibtex.el org-entities.el org-gnus.el org-list.el org-pcomplete.el
+  ol-info.el ol-rmail.el ol.el org-agenda.el org-archive.el
+  org-capture.el org-clock.el org-colview.el org-compat.el
+  org-datetree.el org-faces.el org-feed.el org-footnote.el org-goto.el
+  org-id.el org-indent.el org-inlinetask.el org-macs.el org-mobile.el
+  org-table.el org-timer.el org.el reftex-auc.el reftex-cite.el
+  reftex-dcr.el reftex-global.el reftex-index.el reftex-parse.el
+  reftex-ref.el reftex-sel.el reftex-toc.el reftex-vars.el reftex.el
+and co-wrote idlw-help.el idlw-shell.el idlwave.el ol-bbdb.el
+  ol-bibtex.el ol-gnus.el org-entities.el org-list.el org-pcomplete.el
   org-src.el ox-beamer.el ox-html.el ox-icalendar.el
 and changed ox.el ox-latex.el org.texi org-remember.el orgcard.tex
-  ox-publish.el org-docbook.el ox-ascii.el org-attach.el org-protocol.el
-  org-mouse.el org-mac-message.el org-wl.el ox-jsinfo.el org-crypt.el
-  org-freemind.el idlw-rinfo.el org-exp-blocks.el org-habit.el org-mhe.el
-  org-plot.el and 35 other files
+  ox-publish.el org-docbook.el ox-ascii.el org-attach.el org-bbdb.el
+  org-gnus.el org-protocol.el org-mouse.el org-mac-message.el org-wl.el
+  ox-jsinfo.el org-crypt.el org-freemind.el idlw-rinfo.el
+  org-exp-blocks.el org-habit.el and 40 other files
 
 Caveh Jalali: changed configure.ac intel386.h sol2-4.h
 
-Cédric Chépied: changed newst-treeview.el
+Cecilio Pardo: changed DEVEL.HUMOR
+
+Cédric Chépied: changed newst-treeview.el tree-widget.el
 
 Cesar Quiroz: changed maintaining.texi
 
@@ -671,10 +732,10 @@ Changwoo Ryu: changed files.el
 
 Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh
 
-Charles A. Roelli: changed nsterm.m display.texi isearch.el nsfns.m
-  nsterm.h org-clock.el search.texi simple.el DEBUG INSTALL add-log.el
-  anti.texi buffers.texi comint.el data.c diff-mode.el eldoc.el files.el
-  fill.el find-func.el flymake.el and 21 other files
+Charles A. Roelli: changed nsterm.m vc.el nsfns.m simple.el isearch.el
+  nsmenu.m nsterm.h process.c register.el diff-mode.el display.texi
+  files.el files.texi fixit.texi macfont.m minibuf.c nsfont.m nsimage.m
+  nsselect.m org-clock.el progmodes/python.el and 47 other files
 
 Charles Hannum: changed aix3-1.h aix3-2.h configure ibmrs6000.h
   keyboard.c netbsd.h pop.c sysdep.c systime.h systty.h xrdb.c
@@ -687,8 +748,10 @@ Charles Sebold: changed org-plot.el
 
 Charlie Martin: wrote autoinsert.el
 
-Cheng Gao: changed MORE.STUFF Makefile.in flymake.el frame.c tips.texi
-  url-dired.el url-file.el url-handlers.el url-http.el url-nfs.el
+Chen Bin: changed fns.c subr-tests.el
+
+Cheng Gao: changed Makefile.in flymake.el frame.c tips.texi url-dired.el
+  url-file.el url-handlers.el url-http.el url-nfs.el
 
 Chetan Pandya: changed font.c
 
@@ -700,12 +763,12 @@ and co-wrote longlines.el tango-dark-theme.el 
tango-theme.el
 and changed simple.el display.texi xdisp.c files.el frames.texi
   cus-edit.el files.texi custom.el subr.el text.texi faces.el keyboard.c
   startup.el package.el misc.texi emacs.texi modes.texi mouse.el
-  custom.texi image.c window.el and 935 other files
+  custom.texi image.c window.el and 933 other files
 
 Chris Chase: co-wrote idlw-shell.el idlwave.el
 
-Chris Feng: changed dispnew.c autoload.el frame.c keyboard-tests.el
-  keyboard.c process.c
+Chris Feng: changed dispnew.c keyboard-tests.el keyboard.c autoload.el
+  frame.c process.c
 
 Chris Foote: changed progmodes/python.el
 
@@ -778,7 +841,7 @@ Christoph Dittmann: changed ox-beamer.el
 
 Christophe de Dinechin: co-wrote ns-win.el
 
-Christophe Deleuze: changed icalendar.el
+Christophe Deleuze: changed icalendar.el image-dired.el
 
 Christoph Egger: changed configure.ac
 
@@ -798,12 +861,17 @@ Christopher J. White: changed url-http.el
 
 Christopher Oliver: changed mouse.el
 
-Christopher Schmidt: changed ibuffer.el org.el tips.texi calc-aent.el
-  calc.el calc.texi calendar.el cl-macs.el comint.el dired-x.el dired.el
-  files.el files.texi find-dired.el gnus-int.el gnus-msg.el gnus.texi
-  help-fns.el info.el locate.el lread.c and 15 other files
+Christopher Schmidt: changed files.el ibuffer.el org.el tips.texi
+  calc-aent.el calc.el calc.texi calendar.el cl-macs.el comint.el
+  dired-x.el dired.el files.texi find-dired.el gnus-int.el gnus-msg.el
+  gnus.texi help-fns.el info.el locate.el lread.c and 15 other files
 
-Christopher Wellons: changed emacs-lisp/cl-lib.el
+Christopher Thorne: changed dired.el progmodes/grep.el
+
+Christopher Wellons: changed emacs-lisp/cl-lib.el hashcash.el
+  viper-cmd.el viper-ex.el viper-init.el viper.el
+
+Christophe Troestler: changed epg.el
 
 Christoph Scholtes: changed README.W32 progmodes/python.el stdint.h
   INSTALL maintaining.texi INSTALL.REPO admin.el bookmark.el
@@ -816,7 +884,7 @@ and changed progmodes/python.el format.el gnus-art.el 
gnus-picon.el
   message.el prog-mode.el python-tests.el register.el smiley.el
   texinfmt.el
 
-Chris Zheng: changed gnutls.c calculator.el w32-win.el
+Chris Zheng: changed gnutls.c calculator.el json.c w32-win.el
 
 Chuck Blake: changed term.c
 
@@ -832,6 +900,8 @@ Claudio Fontana: changed Makefile.in leim/Makefile.in 
lib-src/Makefile.in
 Clément Pit--Claudel: changed debugging.texi emacs-lisp/debug.el eval.c
   progmodes/python.el subr-tests.el subr.el url-http.el url-vars.el
 
+Clément Pit-Claudel: changed keyboard.c text.texi
+
 Colin Marquardt: changed gnus.el message.el
 
 Colin Rafferty: changed message.el
@@ -862,7 +932,7 @@ and co-wrote sasl-cram.el sasl-digest.el
 and changed mml2015.el epa.texi mml1991.el pinentry.el auth-source.el
   mml-smime.el package.el mml.el epg-tests.el gnus.texi mm-decode.el
   mm-uu.el process.c subr.el auth.texi gnus-sum.el image-mode.el
-  mm-view.el mml-sec.el processes.texi dbus.el and 35 other files
+  mm-view.el mml-sec.el processes.texi dbus.el and 36 other files
 
 Dale Gulledge: changed TUTORIAL.eo
 
@@ -875,9 +945,10 @@ Dale Sedivec: changed sgml-mode.el wisent/python.el
 
 Damien Cassou: wrote auth-source-pass-tests.el
 and co-wrote auth-source-pass.el auth-source-tests.el
-and changed seq-tests.el seq.el simple-tests.el simple.el auth-source.el
-  auth.texi imenu-tests.el imenu.el info.el isearch.el rmc.el
-  sequences.texi
+and changed auth.texi message.el seq-tests.el seq.el simple-tests.el
+  simple.el auth-source.el checkdoc-tests.el checkdoc.el imenu-tests.el
+  imenu.el info.el isearch.el ispell.el json-tests.el json.el
+  message-tests.el package.el rmc.el sequences.texi xref.el
 
 Damien Elmes: changed erc.el erc-dcc.el erc-track.el erc-log.el
   erc-pcomplete.el README erc-button.el erc-nets.el erc-ring.el Makefile
@@ -899,6 +970,8 @@ and changed ob.el ob-sh.el org.el ox.el ox-latex.el 
ob-tangle.el ob-C.el
   ob-table.el ob-ditaa.el ob-dot.el ob-gnuplot.el ob-js.el ob-mscgen.el
   ob-ocaml.el ob-org.el ob-plantuml.el and 14 other files
 
+Daniel Barrett: changed dbnotn.rnc
+
 Daniel Bergey: changed indian.el
 
 Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el
@@ -908,13 +981,13 @@ Daniel Clemente: changed generic-x.el ox-html.el
 Daniel Colascione: wrote alloc-tests.el generator-tests.el generator.el
   lisp-tests.el
 and co-wrote js.el
-and changed w32fns.c emacs.c alloc.c cl-macs.el image.c keyboard.c
-  configure.ac lisp.h process.c sh-script.el src/Makefile.in cygw32.c
-  simple.el w32term.h cl-lib-tests.el cygw32.h dbusbind.c fns.c frame.c
-  sysdep.c unexcw.c and 162 other files
+and changed keyboard.c emacs.c w32fns.c alloc.c image.c cl-macs.el lisp.h
+  src/Makefile.in configure.ac frame.c frame.el process.c xterm.el
+  sh-script.el xfaces.c coding.c cygw32.c data.c dbusbind.c fns.c font.c
+  and 216 other files
 
-Daniel Dehennin: changed mml2015.el gnus-mlspl.el gnus-msg.el
-  mm-decode.el ox.el
+Daniel Dehennin: changed gnus-mlspl.el mml2015.el gnus-msg.el gnus.texi
+  mm-decode.el nnmail.el ox.el
 
 Daniel E. Doherty: changed calc.texi
 
@@ -957,7 +1030,7 @@ Daniel Ortmann: changed paragraphs.el
 
 Daniel Pfeiffer: wrote conf-mode.el copyright.el executable.el
   sh-script.el skeleton.el two-column.el
-and co-wrote ada-stmt.el apropos.el progmodes/compile.el wyse50.el
+and co-wrote apropos.el progmodes/compile.el wyse50.el
 and changed make-mode.el files.el buff-menu.el font-lock.el mpuz.el
   progmodes/grep.el sgml-mode.el autoinsert.el cperl-mode.el facemenu.el
   gomoku.el help.el imenu.el autoload.el autorevert.el bindings.el
@@ -965,11 +1038,14 @@ and changed make-mode.el files.el buff-menu.el 
font-lock.el mpuz.el
   and 12 other files
 
 Daniel Pittman: co-wrote tramp-cache.el
-and changed gnus-spec.el gnus-sum.el ispell.el nnimap.el spam-report.el
-  spam.el tramp-sh.el
+and changed gnus-spec.el emacsclient.1 emacsclient.c gnus-sum.el
+  ispell.el misc.texi nnimap.el spam-report.el spam.el tramp-sh.el
+  vc-hg.el
 
 Daniel Quinlan: changed dired.el info.el
 
+Daniel Ralston: changed rcirc.el
+
 Daniel Schoepe: changed gnus-sum.el
 
 Dani Moncayo: changed msys-to-w32 Makefile.in configure.ac buffers.texi
@@ -982,7 +1058,7 @@ and co-wrote hideshow.el
 and changed vc.el configure.ac vc-hg.el vc-git.el src/Makefile.in
   vc-bzr.el sysdep.c emacs.c process.c vc-cvs.el lisp.h term.c
   vc-hooks.el xterm.c keyboard.c vc-svn.el xterm.el callproc.c darwin.h
-  term.el gnu-linux.h and 920 other files
+  term.el gnu-linux.h and 921 other files
 
 Danny Roozendaal: wrote handwrite.el
 
@@ -990,6 +1066,8 @@ Danny Siu: changed gnus-sum.el gnus-picon.el nndoc.el 
nnimap.el smiley.el
 
 Dan Rosenberg: changed movemail.c
 
+Dario Gjorgjevski: changed auth-source.el recentf.el syntax.el
+
 Darren Hoo: changed db-find.el db.el gnus-art.el isearch.el man.el
   nsmenu.m startup.el
 
@@ -1014,7 +1092,7 @@ and co-wrote latin-ltx.el socks.el
 and changed configure.ac help.el mule-cmds.el fortran.el mule-conf.el
   xterm.c browse-url.el mule.el coding.c src/Makefile.in european.el
   fns.c mule-diag.el simple.el wid-edit.el cus-edit.el cus-start.el
-  files.el keyboard.c byte-opt.el info.el and 773 other files
+  files.el keyboard.c byte-opt.el info.el and 772 other files
 
 Dave Pearson: wrote 5x5.el quickurl.el
 
@@ -1032,6 +1110,8 @@ David Bakhash: wrote strokes.el
 
 David Benjamin: changed xfns.c xterm.c xterm.h
 
+David Beswick: changed startup.el
+
 David Bremner: changed shr.el
 
 David Burger: changed macros.el
@@ -1049,7 +1129,7 @@ David De La Harpe Golden: changed files.el mouse.el 
simple.el fileio.c
 
 David Edmondson: changed message.el erc.el mml2015.el process.c
   gnus-cite.el imap.el mm-uu.el mm-view.el nnfolder.el nnimap.el nnml.el
-  shr.el
+  rcirc.el shr.el
 
 David Engster: wrote mairix.el nnmairix.el
 and co-wrote gitmerge.el
@@ -1080,7 +1160,7 @@ David Hansen: changed dbusbind.c nnrss.el cc-cmds.el 
dired.el em-dirs.el
 
 David Hedbor: changed nnmail.el
 
-David Hull: changed vc-hg.el
+David Hull: changed etags.c vc-hg.el
 
 David Hunter: changed flymake.el inc/ms-w32.h process.c
 
@@ -1116,6 +1196,8 @@ David M. Brown: wrote array.el
 
 David McCabe: changed lisp-mode.el
 
+David Mcfarland: changed gdb-mi.el
+
 David Megginson: wrote derived.el
 and changed mode-clone.el
 
@@ -1162,7 +1244,7 @@ David Robinow: changed w32inevt.c
 
 David Robinson: changed menu-bar.el x-win.el
 
-David Röthlisberger: changed ido.el
+David Röthlisberger: changed ido.el shell.el
 
 David S. Goldberg: changed message.el gnus-art.el
 
@@ -1217,7 +1299,8 @@ and changed buffer.c
 Devon Sean McCullough: changed url-http.el buff-menu.el comint.el
   ns-win.el
 
-Dhruva Krishnamurthy: changed emacsclient.c fontset.c sound.c w32proc.c
+Dhruva Krishnamurthy: changed emacsclient.c fontset.c image.c sound.c
+  w32proc.c
 
 Diane Murray: changed erc.el erc-backend.el erc-menu.el erc-button.el
   erc-track.el erc-match.el erc-nets.el erc-list.el erc-autoaway.el
@@ -1225,6 +1308,8 @@ Diane Murray: changed erc.el erc-backend.el erc-menu.el 
erc-button.el
   erc-goodies.el erc-ibuffer.el erc-log.el erc-nicklist.el url-http.el
   Makefile erc-dcc.el and 36 other files
 
+Dick R. Chiang: changed checkdoc.el
+
 Didier Verna: wrote gnus-diary.el nndiary.el
 and co-wrote nnml.el
 and changed nntp.el message.el gnus-group.el gnus-sum.el gnus-msg.el
@@ -1241,9 +1326,9 @@ Dieter Schuster: changed etags.c
 
 Dima Kogan: wrote diff-mode-tests.el
 and changed diff-mode.el erc-backend.el image.c font.c gud.el hideshow.el
-  autorevert.el find-file.el subword.el BOOST.tests PCRE.tests PTESTS
-  TESTS align.el alloc.c ediff-mult.el ediff.el erc-button.el keyboard.c
-  lisp.el regex-tests.el and 6 other files
+  autorevert.el comint.el find-file.el subword.el BOOST.tests PCRE.tests
+  PTESTS TESTS align.el alloc.c ediff-mult.el ediff.el erc-button.el
+  isearch.el keyboard.c and 11 other files
 
 Dirk Herrmann: co-wrote bibtex.el
 
@@ -1267,16 +1352,18 @@ Dmitry Gorbik: changed org.el
 
 Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el
   vc-hg-tests.el xref-tests.el
-and changed ruby-mode.el xref.el vc-git.el elisp-mode.el etags.el
-  ruby-mode-tests.el project.el js.el package.el vc-hg.el vc.el
-  symref/grep.el log-edit.el menu-bar.el package-test.el
-  progmodes/grep.el simple.el vc-svn.el eldoc.el find-func.el lisp.el
-  and 89 other files
+and changed ruby-mode.el xref.el project.el vc-git.el elisp-mode.el
+  etags.el ruby-mode-tests.el js.el package.el vc-hg.el vc.el
+  symref/grep.el log-edit.el dired-aux.el simple.el menu-bar.el
+  minibuffer.el package-test.el progmodes/grep.el vc-svn.el eldoc.el
+  and 110 other files
 
 Dmitry Kurochkin: changed isearch.el
 
 Dmitry Lazurkin: changed progmodes/python.el python-tests.el
 
+Dmitry Safronov: changed outline.el
+
 Dominique de Waleffe: changed pcvs-info.el
 
 Dominique Quatravaux: changed tramp-sh.el
@@ -1297,13 +1384,15 @@ Drake Wilson: changed emacsclient.c files.el misc.texi
 
 Drew Adams: wrote light-blue-theme.el
 and co-wrote color.el
-and changed cus-edit.el dired.el faces.el files.el help-mode.el imenu.el
-  info.el isearch.el ls-lisp.el menu-bar.el modes.texi mouse.el
-  ange-ftp.el apropos.el bindings.el bookmark.el custom.el descr-text.el
-  dired.texi etags.el finder.el and 15 other files
+and changed dired.el cus-edit.el imenu.el info.el ls-lisp.el faces.el
+  files.el help-mode.el help.el isearch.el menu-bar.el modes.texi
+  mouse.el ange-ftp.el apropos.el bindings.el bookmark.el custom.el
+  descr-text.el dired-aux.el dired.texi and 18 other files
 
 E. Choroba: changed simple.el
 
+Edison Ibañez: changed auth-source-pass-tests.el
+
 Ed L. Cashin: changed gnus-sum.el imap.el
 
 Ed Swarthout: changed hexl.el textmodes/table.el
@@ -1353,9 +1442,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c]
   chartab-tests.el coding-tests.el doc-tests.el etags-tests.el rxvt.el
   tty-colors.el
 and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el
-  files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi
-  dispnew.c emacs.c frames.texi dispextern.h lisp.h window.c process.c
-  term.c and 1125 other files
+  files.el fileio.c keyboard.c w32term.c w32proc.c emacs.c files.texi
+  text.texi dispnew.c frames.texi lisp.h dispextern.h window.c process.c
+  term.c and 1184 other files
 
 Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c
   fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el
@@ -1367,20 +1456,20 @@ Emilio C. Lopes: changed woman.el cmuscheme.el help.el 
vc.el advice.el
   animate.el apropos.el artist.el bookmark.el cal-menu.el calc-prog.el
   calc-store.el calcalg3.el calendar.el calendar.texi checkdoc.el
   code-pages.el codepage.el completion.el cus-edit.el diff.el
-  and 56 other files
+  and 57 other files
 
-Emmanuel Briot: wrote ada-prj.el xml.el
-and co-wrote ada-mode.el ada-xref.el
-and changed ada-stmt.el
+Emmanuel Briot: wrote xml.el
+and changed ada-mode.el ada-stmt.el ada-prj.el ada-xref.el
 
 Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el
   tramp.el tramp.texi
 
-Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el
-  gnus-registry.el files.el files.texi windows.texi eieio-test-persist.el
-  eieio.el gnus-start.el gnus-sum.el gnus.texi nnir.el buffers.texi
-  checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el
-  org.el org.texi and 4 other files
+Eric Abrahamsen: wrote gnus-test-headers.el
+and changed gnus-sum.el gnus-group.el gnus-start.el gnus-registry.el
+  eieio-base.el nnimap.el gnus.texi nnir.el gnus-agent.el registry.el
+  gnus-srvr.el gnus.el eieio.el gnus-score.el files.el files.texi
+  gnus-art.el gnus-cache.el nnmail.el nnmaildir.el nnrss.el
+  and 43 other files
 
 Eric Bélanger: changed image.c
 
@@ -1426,48 +1515,50 @@ Eric M. Ludlam: wrote analyze.el analyze/complete.el 
analyze/debug.el
   proj-archive.el proj-aux.el proj-comp.el proj-elisp.el proj-info.el
   proj-misc.el proj-obj.el proj-prog.el proj-scheme.el proj-shared.el
   proj.el project-am.el pulse.el refs.el sb-image.el sb.el scm.el
-  scope.el semantic-ia-utest.el semantic-tests.el semantic-utest-c.el
-  semantic-utest.el semantic/chart.el semantic/complete.el
-  semantic/ctxt.el semantic/debug.el semantic/find.el semantic/format.el
-  semantic/imenu.el semantic/sort.el semantic/texi.el semantic/util.el
-  source.el speedbar.el srecode-tests.el srecode/compile.el
-  srecode/ctxt.el srecode/el.el srecode/find.el srecode/java.el
-  srecode/mode.el srecode/semantic.el srecode/table.el srecode/texi.el
-  srt.el symref.el symref/grep.el system.el tag-file.el tag-ls.el
-  tag-write.el tag.el test.el
+  scope.el semantic-tests.el semantic-utest-c.el semantic-utest-fmt.el
+  semantic-utest-ia.el semantic-utest.el semantic/chart.el
+  semantic/complete.el semantic/ctxt.el semantic/debug.el
+  semantic/find.el semantic/format.el semantic/imenu.el semantic/sort.el
+  semantic/texi.el semantic/util.el source.el speedbar.el
+  srecode-tests.el srecode/compile.el srecode/ctxt.el srecode/el.el
+  srecode/find.el srecode/java.el srecode/mode.el srecode/semantic.el
+  srecode/table.el srecode/texi.el srt.el symref.el symref/grep.el
+  system.el tag-file.el tag-ls.el tag-write.el tag.el test-fmt.el test.el
 and co-wrote db-ebrowse.el srecode/cpp.el util-modes.el
-and changed c.srt ede.texi info.el rmail.el speedbspec.el cedet.el
+and changed c.srt ede.texi info.el rmail.el speedbspec.el  cedet.el
   ede-autoconf.srt ede-make.srt eieio.texi gud.el sb-dir-minus.xpm
   sb-dir-plus.xpm sb-dir.xpm sb-mail.xpm sb-pg-minus.xpm sb-pg-plus.xpm
   sb-pg.xpm sb-tag-gt.xpm sb-tag-minus.xpm sb-tag-plus.xpm
-  sb-tag-type.xpm and 33 other files
+  and 50 other files
 
 Eric Schulte: wrote ob-asymptote.el ob-awk.el ob-calc.el ob-comint.el
   ob-coq.el ob-css.el ob-ditaa.el ob-dot.el ob-emacs-lisp.el ob-eval.el
-  ob-forth.el ob-gnuplot.el ob-haskell.el ob-java.el ob-js.el ob-keys.el
-  ob-latex.el ob-makefile.el ob-ocaml.el ob-org.el ob-ruby.el ob-sass.el
-  ob-shell.el ob-shen.el ob-sql.el ob-sqlite.el ob-table.el ob-tangle.el
-  ob.el org-plot.el
+  ob-forth.el ob-gnuplot.el ob-haskell.el ob-java.el ob-js.el ob-latex.el
+  ob-makefile.el ob-ocaml.el ob-org.el ob-ruby.el ob-sass.el ob-shell.el
+  ob-shen.el ob-sql.el ob-sqlite.el ob-table.el ob-tangle.el ob.el
+  org-plot.el
 and co-wrote ob-C.el ob-R.el ob-core.el ob-exp.el ob-fortran.el
   ob-lisp.el ob-lob.el ob-maxima.el ob-perl.el ob-picolisp.el
-  ob-python.el ob-ref.el ob-scheme.el org-bibtex.el
+  ob-python.el ob-ref.el ob-scheme.el ol-bibtex.el
 and changed org.texi org.el ob-clojure.el org-exp-blocks.el ob-sh.el
-  ox.el ox-latex.el org-src.el ob-plantuml.el ob-screen.el org-macs.el
-  org-table.el org-agenda.el org-mouse.el orgcard.tex ob-lilypond.el
-  ob-mscgen.el ob-octave.el org-clock.el org-compat.el org-footnote.el
-  and 14 other files
+  org-bibtex.el ox.el ox-latex.el org-src.el ob-plantuml.el ob-keys.el
+  ob-screen.el org-macs.el org-table.el org-agenda.el org-mouse.el
+  orgcard.tex ob-lilypond.el ob-mscgen.el ob-octave.el org-clock.el
+  and 16 other files
 
 Eric S Fraga: wrote ob-ledger.el
 and co-wrote ob-maxima.el
 and changed ox-icalendar.el org.texi ox-latex.el
 
+Eric Skoglund: changed esh-proc.el eshell.texi
+
 Eric S. Raymond: wrote AT386.el asm-mode.el cookie1.el finder.el gud.el
   lisp-mnt.el loadhist.el
 and co-wrote make-mode.el
 and changed vc.el vc-hooks.el vc-svn.el vc-cvs.el vc-git.el vc-rcs.el
   vc-sccs.el vc-hg.el vc-bzr.el vc-dispatcher.el files.texi vc-mcvs.el
   vc-mtn.el files.el vc-arch.el comint.el emacsbug.el simple.el vc-src.el
-  Makefile.in add-log.el and 273 other files
+  Makefile.in add-log.el and 274 other files
 
 Eric Youngdale: changed etags-vmslib.c
 
@@ -1506,6 +1597,8 @@ Eugene Exarevsky: changed sql.el
 
 Evangelos Evangelou: changed progmodes/f90.el
 
+Evan Moses: changed progmodes/python.el
+
 Evgeni Dobrev: changed man.el
 
 Evgeni Kolev: changed perl-mode.el
@@ -1514,7 +1607,7 @@ Evgeny Fraimovitch: changed emacsclient.c
 
 Evgeny Roubinchtein: changed mail-source.el pc-select.el
 
-Evgeny Zajcev: changed battery.el image.c image.el
+Evgeny Zajcev: changed battery.el image.c image.el quail.el
 
 Exal de Jesus Garcia Carrillo: changed erc-sound.el erc.texi
 
@@ -1539,7 +1632,18 @@ Faried Nawaz: changed message.el
 
 Federico Beffa: changed xscheme.el
 
-Felipe Ochoa: changed faces.el paren.el
+Federico Tedin: wrote tempo-tests.el
+and changed minibuf.c mouse.el package.el rect.el cursor-sensor.el
+  cus-start.el doc-view.el edebug.el eww.el files.texi gamegrid.el
+  keyboard.c minibuf.texi package-tests.el package.texi simple.el
+  tempo.el vc-git.el xfaces.c
+
+Felicián Németh: changed project.el xref.el
+
+Felipe Ochoa: changed faces.el js.el js.js paren.el
+
+Felix E. Klee: co-wrote svg.el
+and changed display.texi
 
 Felix H. Dahlke: changed js.el
 
@@ -1558,8 +1662,14 @@ Ferenc Wagner: changed nnweb.el
 
 Filipe Cabecinhas: changed nsterm.m
 
-Filipp Gunbin: changed autorevert.el shell.el auth-source-tests.el
-  auth-source.el cc-menus.el dired-aux.el info.el info.texi
+Filipp Gunbin: changed auth-source-tests.el auth-source.el autorevert.el
+  compilation.txt dired-aux.el gnus-ml.el progmodes/compile.el shell.el
+  cc-menus.el custom.el dabbrev.el gnus-sum.el imenu.el info.el info.texi
+  ldap.el search.texi sql.el
+
+Fix Bug#24483.: changed sql.el sql-tests.el
+
+Fix Bug#35307.: changed sql.el
 
 Flemming Hoejstrup Hansen: changed forms.el
 
@@ -1575,14 +1685,14 @@ Florian Weimer: changed message.el gnus.el coding.c 
gnus-sum.el gnus.texi
 Francesco Pizzolante: changed org-clock.el org-macs.el org.el ox-html.el
 
 Francesco Potortì: wrote cmacexp.el
-and changed etags.c man.el delta.h etags.1 undigest.el comint.el
-  configure.ac maintaining.texi uniquify.el latin-post.el rmail.el
-  etags.el latin-alt.el lib-src/Makefile.in sgml-mode.el Makefile.in
-  data.c european.el filelock.c files.el generic-x.el and 44 other files
+and changed etags.c man.el delta.h etags.1 undigest.el rmail.el comint.el
+  configure.ac maintaining.texi uniquify.el latin-post.el etags.el
+  latin-alt.el lib-src/Makefile.in sgml-mode.el Makefile.in data.c
+  european.el filelock.c files.el generic-x.el and 44 other files
 
-Francesc Rocher: changed MORE.STUFF splash.png splash.svg startup.el
-  README cus-start.el gnus.el gnus.png gnus.svg macterm.c splash.pbm
-  splash.xpm splash8.xpm w32term.c xdisp.c xterm.c
+Francesc Rocher: changed splash.png splash.svg startup.el README
+  cus-start.el gnus.el gnus.png gnus.svg macterm.c splash.pbm splash.xpm
+  splash8.xpm w32term.c xdisp.c xterm.c
 
 Francis Devereux: changed nsfont.m
 
@@ -1648,6 +1758,8 @@ Friedrich Delgado Friedrichs: changed org.el
 
 Fritz Knabe: changed mh-mime.el
 
+Fritz Stelzer: changed xref.el
+
 F. Thomas May: wrote blackbox.el
 
 Fujii Hironori: changed w32fns.c
@@ -1679,12 +1791,13 @@ G Dinesh Dutt: changed etags.el
 
 Geert Kloosterman: changed which-func.el
 
-Gemini Lasswell: wrote edebug-tests.el kmacro-tests.el testcover-tests.el
-and changed edebug.el cl-macs.el cl-generic.el ert-x.el cl-print.el
-  edebug-test-code.el edebug.texi eieio-compat.el generator.el subr.el
-  autorevert-tests.el cl-print-tests.el eieio.texi emacs-lisp/debug.el
-  eval-tests.el eval.c filenotify-tests.el generator-tests.el kmacro.el
-  lread.c map-tests.el and 10 other files
+Gemini Lasswell: wrote backtrace-tests.el backtrace.el edebug-tests.el
+  kmacro-tests.el testcover-tests.el thread-tests.el thread.el
+and changed edebug.el cl-print.el edebug.texi cl-print-tests.el
+  debugging.texi cl-macs.el emacs-lisp/debug.el edebug-test-code.el
+  subr.el testcases.el testcover.el cl-generic.el ert-x.el eval.c
+  eieio-compat.el elisp.texi ert.el ert.texi eval-tests.el generator.el
+  print.c and 24 other files
 
 Geoff Gole: changed align.el ibuffer.el whitespace.el
 
@@ -1711,7 +1824,7 @@ Georges Brun-Cottan: wrote easy-mmode.el
 
 George V. Reilly: changed emacs.ico makefile.nt
 
-Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el rx.el tooltip.el
+Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el tooltip.el
 and changed xdisp.c xterm.c dispnew.c dispextern.h xfns.c xfaces.c
   window.c keyboard.c lisp.h faces.el alloc.c buffer.c startup.el xterm.h
   fns.c simple.el term.c configure.ac frame.c xmenu.c emacs.c
@@ -1738,10 +1851,10 @@ Giuseppe Scrivano: changed browse-url.el buffer.c 
configure.ac sysdep.c
 
 Glenn Morris: wrote check-declare.el f90-tests.el vc-bzr-tests.el
 and changed configure.ac Makefile.in src/Makefile.in calendar.el
-  diary-lib.el lisp/Makefile.in files.el rmail.el make-dist
-  progmodes/f90.el bytecomp.el simple.el authors.el admin.el emacs.texi
-  misc/Makefile.in startup.el lib-src/Makefile.in ack.texi display.texi
-  cal-menu.el and 1681 other files
+  diary-lib.el lisp/Makefile.in files.el make-dist rmail.el
+  progmodes/f90.el bytecomp.el simple.el authors.el admin.el startup.el
+  emacs.texi misc/Makefile.in display.texi lib-src/Makefile.in ack.texi
+  subr.el and 1760 other files
 
 Glynn Clements: wrote gamegrid.el snake.el tetris.el
 
@@ -1783,7 +1896,7 @@ Gregor Schmid: changed intervals.c intervals.h 
tcl-mode.el textprop.c
 
 Gregory Chernov: changed nnslashdot.el
 
-Grégory Mounié: changed man.el
+Grégory Mounié: changed display.texi hi-lock.el man.el
 
 Gregory Neil Shapiro: changed mailabbrev.el
 
@@ -1882,10 +1995,11 @@ Hoan Ton-That: changed erc-log.el
 Holger Schauer: wrote fortune.el
 and changed message-utils.el
 
-Hong Xu: changed paren.el search.c editfns.c em-cmpl.el emacs-mime.texi
-  files.texi flyspell.el maintaining.texi parse-time-tests.el
-  parse-time.el progmodes/cpp.el progmodes/python.el programs.texi
-  python-tests.el subr.el vc.el
+Hong Xu: changed etags.el simple.el maintaining.texi minibuf.texi
+  paren.el progmodes/python.el search.c editfns.c em-cmpl.el
+  emacs-mime.texi files.texi flyspell.el gnus-cite.el message.el
+  parse-time-tests.el parse-time.el progmodes/cpp.el programs.texi
+  python-tests.el subr.el url-util.el and 3 other files
 
 Hosoya Kei: changed TUTORIAL.ja
 
@@ -1912,10 +2026,12 @@ Hynek Schlawack: changed gnus-art.el gnus-sum.el
 
 Ian D: changed doc-view.el image-mode.el
 
-Ian Dunn: changed eww.el
+Ian Dunn: changed eww.el vc-hg.el
 
 Ian Eure: changed sql.el url-util.el
 
+Ian Johnson: changed comint.el
+
 Ian Kelling: changed process.c ob-core.el
 
 Ian Lance Taylor: changed sco4.h
@@ -1923,10 +2039,12 @@ Ian Lance Taylor: changed sco4.h
 Ian T Zimmerman: wrote gametree.el
 and changed ange-ftp.el desktop.el tex-mode.el
 
-İ. Göktuğ Kayaalp: changed vc-rcs.el
+İ. Göktuğ Kayaalp: changed eww.el vc-rcs.el
 
 Igor Kuzmin: wrote cconv.el
 
+Iku Iwasa: changed auth-source-pass-tests.el auth-source-pass.el
+
 Ikumi Keita: changed characters.el japan-util.el kinsoku.el minibuf.c
 
 Ilja Weis: co-wrote gnus-topic.el
@@ -1969,12 +2087,14 @@ Irie Tetsuya: changed gnus.texi message.texi
 
 İsmail Dönmez: changed nsfont.m nsterm.m url-auth.el xterm.c
 
+Ismail S: changed org-capture.el
+
 Istvan Marko: changed gnus-agent.el xfns.c
 
 Itai Zukerman: changed mm-decode.el
 
-Ivan Andrus: changed epg.el ffap.el find-file.el ibuf-ext.el ibuffer.el
-  newcomment.el nxml-mode.el progmodes/python.el
+Ivan Andrus: changed editfns.c epg.el ffap.el find-file.el ibuf-ext.el
+  ibuffer.el newcomment.el nxml-mode.el progmodes/python.el
 
 Ivan Boldyrev: changed mml1991.el
 
@@ -1985,9 +2105,9 @@ and changed eww.el shr.el appt.el dired.el help-fns.el 
saveplace.el
 Ivan Radanov Ivanov: changed quail/cyrillic.el
 
 Ivan Shmakov: changed eww.el shr.el desktop.el eww.texi faces.el files.el
-  cus-dep.el descr-text.el diff-mode.el enriched.el erc-track.el
-  facemenu.el files.texi iso-transl.el misearch.el nndoc.el simple.el
-  tar-mode.el tcl.el tex-mode.el url-cookie.el
+  tar-mode.el cus-dep.el descr-text.el diff-mode.el diff.el enriched.el
+  erc-track.el facemenu.el files.texi iso-transl.el misearch.el nndoc.el
+  rcirc.el simple.el smerge-mode.el and 5 other files
 
 Ivan Vilata i Balaguer: changed org-clock.el org.texi
 
@@ -2001,11 +2121,16 @@ Jaap-Henk Hoepman: changed mm-decode.el
 
 Jacek Chrząszcz: changed ispell.el
 
+Jack Coughlin: changed calc-prog.el
+
 Jack Duthen: changed which-func.el
 
 Jack Repenning: changed unexelfsgi.c
 
-Jackson Ray Hamilton: changed js.el sgml-mode.el
+Jackson Ray Hamilton: changed js.el jsx-unclosed-2.jsx jsx.jsx js.js
+  jsx-comment-string.jsx files.el jsx-align-gt-with-lt.jsx
+  jsx-indent-level.jsx jsx-quote.jsx jsx-self-closing.jsx
+  jsx-unclosed-1.jsx sgml-mode.el
 
 Jack Twilley: changed message.el
 
@@ -2015,8 +2140,12 @@ Jacques Duthen: co-wrote ps-print.el ps-samp.el
 
 Jae-hyeon Park: changed fontset.el
 
+Jaesup Kwak: changed xwidget.c
+
 Jaeyoun Chung: changed hangul3.el hanja3.el gnus-mule.el hangul.el
 
+J. Alexander Branham: wrote conf-mode-tests.el
+
 Jambunathan K: wrote ox-odt.el
 and co-wrote ox-html.el
 and changed org-lparse.el org.el org.texi ox.el icomplete.el
@@ -2055,10 +2184,10 @@ Jamie Zawinski: wrote mailabbrev.el tar-mode.el
 and co-wrote byte-opt.el byte-run.el bytecomp.el disass.el font-lock.el
 and changed bytecode.c mail-extr.el subr.el
 
-Jan Beich: changed configure.ac
+Jan Beich: changed configure.ac mml-smime.el
 
-Jan Böcker: wrote org-docview.el
-and changed org.el org.texi
+Jan Böcker: wrote ol-docview.el
+and changed org.el org-docview.el org.texi
 
 Jan Djärv: wrote dnd.el dynamic-setting.el x-dnd.el
 and changed gtkutil.c xterm.c nsterm.m xfns.c configure.ac nsfns.m
@@ -2105,7 +2234,7 @@ and changed org-gnus.el org-table.el org.texi
 Jarno Malmari: wrote url-auth-tests.el
 and changed url-auth.el
 
-Jarosław Rzeszótko: changed url-http.el
+Jarosław Rzeszótko: changed ielm.el url-http.el
 
 Jason Baker: changed gnus-art.el
 
@@ -2122,7 +2251,7 @@ Jason Rumney: wrote w32-vars.el
 and changed w32fns.c w32term.c w32font.c w32menu.c w32-win.el w32term.h
   w32.c w32uniscribe.c w32-fns.el makefile.nt w32console.c w32bdf.c
   configure.bat keyboard.c w32proc.c w32select.c font.c image.c w32font.h
-  w32gui.h xdisp.c and 154 other files
+  w32gui.h xdisp.c and 153 other files
 
 Jason S. Cornez: changed keyboard.c
 
@@ -2134,19 +2263,21 @@ Jay Belanger: changed calc.texi calc.el calc-ext.el 
calc-units.el
 
 Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el
 
-Jay Kamat: changed erc-goodies.el esh-opt.el
+Jay Kamat: changed esh-opt.el em-hist.el em-tramp.el erc-goodies.el
+  esh-opt-tests.el
 
 Jay McCarthy: changed org-colview.el
 
 Jay Sachs: changed gnus-score.el gnus-win.el
 
-J.D. Smith: co-wrote idlw-help.el idlw-shell.el idlwave.el
-and changed idlw-rinfo.el idlw-toolbar.el comint.el idlwave.texi vc.el
-  bibtex.el files.texi hideshow.el idlw-complete-structtag.el misc.texi
-  mouse.el
+Jd Smith: co-wrote idlw-help.el idlw-shell.el idlwave.el
 
-Jean-Christophe Helary: changed ns-win.el strings.texi subr-x.el
-  ucs-normalize.el
+J.D. Smith: changed idlwave.el idlw-shell.el idlw-help.el idlw-rinfo.el
+  idlw-toolbar.el comint.el idlwave.texi vc.el bibtex.el files.texi
+  hideshow.el idlw-complete-structtag.el misc.texi mouse.el
+
+Jean-Christophe Helary: changed emacs-lisp-intro.texi ns-win.el
+  package-tests.el package.el strings.texi subr-x.el ucs-normalize.el
 
 Jean Haidouk: changed latin-alt.el latin-post.el latin-pre.el
 
@@ -2178,7 +2309,9 @@ and changed emacstool.1 emacstool.c
 Jeffrey C Honig: wrote mh-print.el
 and changed mh-e.el mh-comp.el mh-utils.el mh-mime.el mh-customize.el
   mh-folder.el mh-funcs.el mh-alias.el mh-seq.el mh-show.el Makefile
-  bsdos4.h mh-junk.el mh-letter.el
+  bsdos4.h mh-identity.el mh-junk.el mh-letter.el
+
+Jelle Licht: changed auth-source-pass-tests.el auth-source-pass.el
 
 Jens Krinke: changed smime.el
 
@@ -2199,6 +2332,8 @@ Jens Uwe Schmidt: changed edebug.el
 
 Jeramey Crawford: changed amdx86-64.h configure.ac
 
+Jeremie Courreges-Anglas: changed kqueue.c
+
 Jérémie Courrèges-Anglas: changed org.texi ox-latex.el
 
 Jeremy Bertram Maitin-Shepard: changed erc.el erc-backend.el
@@ -2230,6 +2365,8 @@ and changed gnus-sum.el gnus-art.el message.el 
gnus-group.el gnus-msg.el
 
 Jhair Tocancipa Triana: changed gnus-audio.el
 
+Jiajie Chen: changed button.el
+
 Jihyun Cho: wrote hangul.el hanja-util.el
 
 Jim Blandy: wrote tvi970.el
@@ -2249,6 +2386,11 @@ Jim Meyering: changed lread.c make-docfile.c w32.c 
w32font.c copyright.el
   alloc.c artist.el autoinsert.el buffer.h callproc.c character.h
   charset.c configure and 55 other files
 
+Jimmy Aguilar Mena: changed xdisp.c xfaces.c dispextern.h face-remap.el
+  hl-line.el icomplete.el xwidget.c
+
+Jimmy Yuen Ho Wong: changed nsm.el gnutls.c gnutls.el net-utils.el
+
 Jim Paris: changed process.c
 
 Jim Radford: changed gnus-start.el
@@ -2285,12 +2427,13 @@ Joanna Pluta: changed TUTORIAL.pl
 
 João Cachopo: changed spam.el
 
-João Távora: wrote elec-pair.el electric-tests.el message-tests.el
-and changed flymake.el flymake-proc.el flymake-tests.el flymake-elisp.el
-  flymake.texi elisp-mode.el flymake-ui.el tex-mode.el
-  errors-and-warnings.c linum.el message.el shr.el xref.el Makefile
-  bytecomp.el checkdoc.el cperl-mode.el electric.el emacs.texi
-  lisp-mode.el maintaining.texi and 14 other files
+João Távora: wrote elec-pair.el electric-tests.el flymake-cc.el
+  jsonrpc-tests.el jsonrpc.el message-tests.el
+and changed flymake.el flymake-proc.el icomplete.el minibuffer.el
+  flymake-tests.el flymake.texi elisp-mode.el flymake-elisp.el
+  electric.el flymake-ui.el text.texi json-tests.el tex-mode.el
+  errors-and-warnings.c json.c xref.el auth-source-pass.el linum.el
+  maintaining.texi message.el progmodes/python.el and 29 other files
 
 Jochen Hein: changed gnus-art.el
 
@@ -2319,6 +2462,8 @@ Joel N. Weber II: changed comint.el make-dist
 
 Joel Ray Holveck: changed gnus-sum.el info.el
 
+Joel Rosdahl: changed flymake-proc.el progmodes/python.el python-tests.el
+
 Joe Matarazzo: changed ebrowse.c
 
 Joe Ramey: changed filelock.c rmailsum.el
@@ -2341,9 +2486,10 @@ Johan Bockgård: changed erc.el cl-macs.el pcase.el 
erc-backend.el
   erc-button.el erc-match.el icomplete.el mouse-sel.el subr.el xdisp.c
   browse-url.el bytecomp.el custom.el display.texi edebug.el eieio.el
   erc-compat.el erc-nickserv.el erc-ring.el erc-speak.el erc-track.el
-  and 62 other files
+  and 63 other files
 
-Johan Claesson: changed cl.texi filecache.el term.el
+Johan Claesson: changed cl.texi filecache.el files-x.el help-fns.el
+  tabulated-list.el term.el
 
 Johan Euphrosine: changed ibuf-ext.el
 
@@ -2365,6 +2511,8 @@ John F. Trudeau: changed make-mode.el
 
 John F. Whitehead: changed mule-cmds.el mule-diag.el
 
+John Goerzen: changed erc.el
+
 John Grabowski: changed xfaces.c xfns.c
 
 John Heidemann: wrote mouse-copy.el mouse-drag.el
@@ -2380,7 +2528,7 @@ John K. Luebs: changed org.el
 
 John Marino: changed configure.ac
 
-John Mastro: changed auth-source.el ibuffer.el
+John Mastro: changed auth-source.el ibuffer.el w32heap.c
 
 John Mongan: changed progmodes/f90.el
 
@@ -2389,7 +2537,8 @@ John Paul Wallington: changed ibuffer.el ibuf-ext.el 
subr.el help-fns.el
   bytecomp.el cus-theme.el font-lock.el hexl.el ibuf-macs.el info.el
   minibuf.c re-builder.el simple.el startup.el and 135 other files
 
-John Shahid: changed easy-mmode.el term.c termhooks.h terminal.c
+John Shahid: changed term.el easy-mmode.el tramp.el window.c window.el
+  env.el flymake.el term.c termhooks.h terminal.c windows.texi
 
 John Sullivan: changed window.c
 
@@ -2418,8 +2567,8 @@ John Yates: changed hideshow.el
 
 Jon Anders Skorpen: changed ox-publish.el
 
-Jonas Bernoulli: changed eieio.el button.el ido.el lisp-mnt.el
-  tabulated-list.el tips.texi
+Jonas Bernoulli: changed eieio.el button.el cus-edit.el ido.el
+  lisp-mnt.el tabulated-list.el tips.texi
 
 Jonas Hoersch: changed org-inlinetask.el org.el
 
@@ -2431,16 +2580,23 @@ Jonathan I. Kamens: changed pop.c movemail.c rmail.el 
configure.ac b2m.pl
   simple.el timezone.el vc-hooks.el
 
 Jonathan Kyle Mitchell: changed em-dirs.el em-ls.el em-unix.el esh-cmd.el
-  esh-ext.el
+  esh-ext.el esh-mode.el xdisp.c
 
 Jonathan Leech-Pepin: wrote ox-texinfo.el
 
 Jonathan Marchand: changed cpp-root.el
 
-Jonathan Rockway: changed rcirc.el
+Jonathan Marten: changed nnimap.el
+
+Jonathan Rockway: co-wrote cperl-mode.el
+and changed rcirc.el
+
+Jonathan Shin Hayase: changed sh-script.el
 
 Jonathan Stigelman: changed hilit19.el
 
+Jonathan Tomer: changed files-tests.el files.el tramp-tests.el
+
 Jonathan Vail: changed vc.el
 
 Jonathan Yavner: wrote ses.el tcover-ses.el tcover-unsafep.el
@@ -2458,6 +2614,8 @@ Joost Kremers: changed reftex-toc.el
 
 Jordan Wilson: changed doc-view.el
 
+Jordon Biondo: changed subr.el
+
 Jorge A. Alfaro-Murillo: changed message.el
 
 Jorgen Schäfer: wrote erc-autoaway.el erc-goodies.el erc-spelling.el
@@ -2497,18 +2655,19 @@ Joshua Datko: changed fortune.el
 
 Joshua Varner: changed intro.texi
 
-Jostein Kjønigsen: changed progmodes/compile.el
+Jostein Kjønigsen: changed nxml-mode.el progmodes/compile.el
 
 Jouni K. Seppänen: changed gnus.texi nnimap.el mm-url.el
 
 Juan León Lahoz García: wrote wdired.el
 and changed files.el perl-mode.el
 
-Juanma Barranquero: wrote emacs-lock.el frameset.el keymap-tests.el
-and changed subr.el desktop.el w32fns.c server.el emacsclient.c simple.el
-  faces.el files.el bs.el help-fns.el w32term.c org.el xdisp.c keyboard.c
-  w32.c buffer.c ido.el image.c window.c allout.el process.c
-  and 1134 other files
+Juanma Barranquero: wrote emacs-lock.el frameset.el help-tests.el
+  keymap-tests.el
+and changed subr.el desktop.el w32fns.c faces.el simple.el emacsclient.c
+  files.el server.el bs.el help-fns.el xdisp.c org.el w32term.c w32.c
+  buffer.c keyboard.c ido.el image.c window.c eval.c allout.el
+  and 1235 other files
 
 Juan Pechiar: wrote ob-mscgen.el
 and changed ob-octave.el
@@ -2549,11 +2708,12 @@ Jürgen Hötzel: wrote tramp-adb.el
 and changed tramp-gvfs.el tramp-sh.el comint.el em-unix.el esh-util.el
   tramp-cache.el tramp.el url-handlers.el wid-edit.el
 
-Juri Linkov: wrote files-x.el misearch.el replace-tests.el
-and changed isearch.el info.el replace.el simple.el progmodes/grep.el
-  dired.el dired-aux.el progmodes/compile.el startup.el faces.el files.el
-  menu-bar.el bindings.el display.texi descr-text.el desktop.el comint.el
-  image-mode.el ispell.el man.el cus-edit.el and 359 other files
+Juri Linkov: wrote files-x.el misearch.el replace-tests.el tab-bar.el
+  tab-line.el
+and changed isearch.el info.el simple.el replace.el dired.el dired-aux.el
+  progmodes/grep.el progmodes/compile.el startup.el subr.el diff-mode.el
+  files.el menu-bar.el faces.el bindings.el display.texi image-mode.el
+  desktop.el comint.el minibuffer.el search.texi and 418 other files
 
 Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h
   w32console.c w32heap.c w32inevt.c w32term.h
@@ -2595,10 +2755,9 @@ Karel Klíč: changed fileio.c files.el configure.ac 
eval.c ftfont.c lisp.h
   src/Makefile.in text.texi tramp.el
 
 Karl Berry: changed info.texi emacs.texi elisp.texi text.texi anti.texi
-  display.texi efaq.texi ada-mode.texi autotype.texi calc.texi
-  cc-mode.texi cl.texi dired-x.texi ebrowse.texi ediff.texi
-  emacs-mime.texi emacs-xtra.texi eshell.texi eudc.texi filelock.c
-  forms.texi and 94 other files
+  display.texi efaq.texi autotype.texi calc.texi cc-mode.texi cl.texi
+  dired-x.texi ebrowse.texi ediff.texi emacs-mime.texi emacs-xtra.texi
+  eshell.texi eudc.texi filelock.c forms.texi gnu.texi and 93 other files
 
 Karl Chen: changed files.el align.el cc-vars.el emacsclient.c flymake.el
   flymake.texi gnus-art.el help-mode.el jka-cmpr-hook.el make-mode.el
@@ -2610,10 +2769,10 @@ Karl Eichwalder: changed Makefile.in add-log.el 
bookmark.el dired-aux.el
 Karl Fogel: wrote bookmark.el mail-hist.el saveplace.el
 and co-wrote pcvs.el
 and changed simple.el files.el doc-view.el image-mode.el info.el
-  vc-svn.el CONTRIBUTE INSTALL autogen.sh internals.texi isearch.el
-  menu-bar.el simple-test.el subr.el tex-mode.el thingatpt.el
-  INSTALL.REPO comint.el configure configure.ac editfns.c
-  and 18 other files
+  isearch.el vc-svn.el CONTRIBUTE INSTALL autogen.sh editfns.c
+  internals.texi menu-bar.el simple-test.el subr.el tex-mode.el
+  thingatpt.el INSTALL.REPO comint.el configure configure.ac
+  and 21 other files
 
 Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c
   alloc.c files.el frame.c configure.ac window.c data.c minibuf.c
@@ -2628,7 +2787,7 @@ Karl Landstrom: co-wrote js.el
 
 Karl M. Hegbloom: changed gnus.el
 
-Karl Otness: changed term.el
+Karl Otness: changed configure.ac image.c term.el
 
 Karl Pflästerer: changed gnus-art.el gnus-score.el mml.el spam-stat.el
   vc-svn.el
@@ -2643,14 +2802,15 @@ Károly Lőrentey: changed xfns.c bindings.el keyboard.c 
menu-bar.el
 Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el
 
 Katsumi Yamaoka: wrote canlock.el
-and changed gnus-art.el message.el gnus-sum.el mm-decode.el gnus.texi
-  mm-util.el mm-view.el gnus-util.el gnus-group.el gnus-msg.el mml.el
+and changed gnus-art.el gnus-sum.el message.el mm-decode.el gnus.texi
+  mm-util.el mm-view.el gnus-group.el gnus-util.el gnus-msg.el mml.el
   shr.el rfc2047.el gnus-start.el gnus.el nntp.el gnus-agent.el nnrss.el
-  mm-uu.el nnmail.el emacs-mime.texi and 160 other files
+  mm-uu.el nnmail.el emacs-mime.texi and 161 other files
 
 Kaushal Modi: changed files.el isearch.el apropos.el calc-yank.el
-  desktop.el ediff-diff.el eww.el ffap.el maintaining.texi printing.el
-  ps-print.el variables.texi vc-hooks.el vc1-xtra.texi woman.el
+  custom.texi desktop.el ediff-diff.el eww.el ffap.el maintaining.texi
+  printing.el ps-print.el tips.texi variables.texi vc-hooks.el
+  vc1-xtra.texi woman.el
 
 Kaushik Srenevasan: changed gdb-mi.el
 
@@ -2669,6 +2829,9 @@ Keisuke Nishida: changed print.c alloc.c bytecomp.el 
data.c keymap.c
 
 Keitaro Miyazaki: changed re-builder.el
 
+Keith Amidon: co-wrote auth-source-pass.el
+and changed auth-source-pass-tests.el
+
 Keith Gabryelski: wrote hexl.c hexl.el
 
 Keith Packard: changed font.c
@@ -2680,10 +2843,10 @@ Kelly Dean: changed simple.el help-mode.el desktop.el 
files.el lisp.el
 Kelvin White: changed erc.el erc-pcomplete.el erc.texi NEWS.24
   erc-backend.el erc-ring.el erc-stamp.el
 
-Ken Brown: changed configure.ac gmalloc.c sheap.c w32fns.c emacs.c
-  w32term.c conf_post.h cygwin.h unexcw.c fileio.c filenotify-tests.el
-  browse-url.el dispextern.h emacs.rc.in frame.c image.c lisp.h sysdep.c
-  w32term.h alloc.c keyboard.c and 46 other files
+Ken Brown: changed configure.ac gmalloc.c sheap.c emacs.c w32fns.c
+  fileio.c w32term.c unexcw.c conf_post.h cygwin.h filenotify-tests.el
+  lisp.h browse-url.el dispextern.h emacs.rc.in fileio-tests.el frame.c
+  image.c keyboard.c profiler.c src/Makefile.in and 48 other files
 
 Ken Brush: changed emacsclient.c
 
@@ -2751,6 +2914,8 @@ and changed gnus-agent.el gnus-sum.el gnus-start.el 
gnus-int.el nntp.el
 
 Kevin Layer: changed mml.el w32proc.c
 
+Kévin Le Gouguec: changed font-lock.el font-lock-tests.el
+
 Kevin Rodgers: changed compile.el mailabbrev.el progmodes/compile.el
   dired-x.el files.el ange-ftp.el byte-opt.el desktop.el diff-mode.el
   dired-x.texi ffap.el files.texi flyspell.el isearch.el killing.texi
@@ -2760,8 +2925,8 @@ Kevin Rodgers: changed compile.el mailabbrev.el 
progmodes/compile.el
 Kevin Ryde: wrote info-xref.el
 and changed info-look.el info.el checkdoc.el cl.texi compilation.txt
   etags.c arc-mode.el ffap.el gnus-art.el gnus-sum.el mule.el os.texi
-  progmodes/compile.el woman.el MORE.STUFF browse-url.el copyright.el
-  dig.el files.el flyspell.el keyboard.c and 85 other files
+  progmodes/compile.el woman.el browse-url.el copyright.el dig.el
+  files.el flyspell.el keyboard.c mailcap.el and 86 other files
 
 Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el
   keypad.el kmacro.el
@@ -2799,11 +2964,17 @@ Kobayashi Yasuhiro: changed w32fns.c configure.bat 
indent.c info.el
 
 Kodi Arfer: changed org.texi ox-html.el
 
-Koichi Arakawa: changed w32proc.c
+Koichi Arakawa: changed tramp-sh.el w32proc.c
 
-Konrad Hinsen: wrote org-eshell.el
+Konrad Hinsen: wrote ol-eshell.el
 and changed ob-python.el
 
+Konstantin Kharlamov: changed ada-mode.el calc-aent.el calc-ext.el
+  calc-lang.el cc-mode.el cperl-mode.el css-mode.el cua-rect.el
+  diff-mode.el dnd.el ebnf-abn.el ebnf-dtd.el ebnf-ebx.el
+  emacs-module-tests.el epg.el faces.el gnus-art.el gtkutil.c hideif.el
+  htmlfontify.el lex.el and 24 other files
+
 Konstantin Kliakhandler: changed org-agenda.el
 
 Konstantin Novitsky: changed progmodes/python.el
@@ -2860,27 +3031,29 @@ and co-wrote dabbrev.el imenu.el
 Lars Ljung: changed esh-ext.el isearch.el
 
 Lars Magne Ingebrigtsen: wrote compface.el decompress-tests.el dns.el
-  dom.el ecomplete.el eww.el format-spec.el gnus-agent.el gnus-art.el
-  gnus-async.el gnus-bcklg.el gnus-cache.el gnus-cloud.el gnus-demon.el
-  gnus-draft.el gnus-dup.el gnus-eform.el gnus-fun.el gnus-group.el
-  gnus-html.el gnus-int.el gnus-logic.el gnus-picon.el gnus-range.el
-  gnus-salt.el gnus-spec.el gnus-srvr.el gnus-start.el gnus-sum.el
-  gnus-undo.el gnus-util.el gnus-uu.el gnus-win.el ietf-drums.el
-  mail-parse.el mail-prsvr.el mail-source.el message.el messcompat.el
-  mm-archive.el mm-view.el mml.el netrc.el network-stream-tests.el
-  network-stream.el nnagent.el nndir.el nndraft.el nngateway.el nnmail.el
-  nnoo.el nntp.el nnweb.el nsm.el parse-time-tests.el puny.el qp.el
-  rfc2045.el rfc2231.el rtree.el score-mode.el shr-tests.el shr.el
-  spam.el svg.el url-domsuf.el url-queue.el
+  dom.el ecomplete.el eww.el exif.el format-spec.el gnus-agent.el
+  gnus-art.el gnus-async.el gnus-bcklg.el gnus-cache.el gnus-cloud.el
+  gnus-demon.el gnus-draft.el gnus-dup.el gnus-eform.el gnus-fun.el
+  gnus-group.el gnus-html.el gnus-int.el gnus-logic.el gnus-picon.el
+  gnus-range.el gnus-salt.el gnus-spec.el gnus-srvr.el gnus-start.el
+  gnus-sum.el gnus-undo.el gnus-util.el gnus-uu.el gnus-win.el
+  ietf-drums.el image-converter.el mail-parse.el mail-prsvr.el
+  mail-source.el message.el messcompat.el mm-archive.el mm-view.el mml.el
+  netrc.el network-stream-tests.el network-stream.el nnagent.el nndir.el
+  nndraft.el nngateway.el nnmail.el nnoo.el nntp.el nnweb.el nsm.el
+  parse-time-tests.el puny.el qp.el rfc2045.el rfc2104-tests.el
+  rfc2231.el rtree.el score-mode.el shr-tests.el shr.el spam.el
+  text-property-search-tests.el text-property-search.el url-domsuf.el
+  url-queue.el
 and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el
   gnus-topic.el gnus.el gssapi.el mailcap.el mm-bodies.el mm-decode.el
   mm-encode.el mm-util.el nnbabyl.el nndoc.el nneething.el nnfolder.el
   nnheader.el nnimap.el nnmbox.el nnmh.el nnml.el nnspool.el nnvirtual.el
-  rfc2047.el time-date.el
-and changed gnus.texi process.c gnus-ems.el subr.el gnutls.c gnus-cite.el
-  pop3.el smtpmail.el display.texi files.el url-http.el gnus-xmas.el
-  simple.el auth-source.el image.c gnutls.el proto-stream.el dired.el
-  image.el text.texi nnrss.el and 318 other files
+  rfc2047.el svg.el time-date.el
+and changed gnus.texi process.c subr.el simple.el files.el gnutls.c
+  gnus-ems.el smtpmail.el display.texi url-http.el auth-source.el
+  gnus-cite.el pop3.el dired.el edebug.el gnus-xmas.el text.texi image.el
+  image.c gnutls.el nnrss.el and 651 other files
 
 Lars Rasmusson: changed ebrowse.c
 
@@ -2907,14 +3080,14 @@ Lee Duhem: changed eval.c
 Leigh Stoller: changed emacsclient.c server.el
 
 Lele Gaifax: changed progmodes/python.el flymake.el python-tests.el
-  TUTORIAL.it flymake-proc.el flymake.texi
+  TUTORIAL.it flymake-proc.el flymake.texi isearch.el
 
 Lennart Borgman: co-wrote ert-x.el
-and changed nxml-mode.el tutorial.el window.el ada-xref.el buff-menu.el
-  emacs-lisp/debug.el emacsclient.c filesets.el flymake.el help-fns.el
-  isearch.el linum.el lisp-mode.el lisp.el mouse.el recentf.el
-  remember.el replace.el ruby-mode.el shell.el texinfmt.el
-  and 3 other files
+and changed nxml-mode.el tutorial.el re-builder.el window.el ada-xref.el
+  buff-menu.el emacs-lisp/debug.el emacsclient.c filesets.el flymake.el
+  help-fns.el isearch.el linum.el lisp-mode.el lisp.el mouse.el
+  recentf.el remember.el replace.el ruby-mode.el shell.el
+  and 4 other files
 
 Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c
 
@@ -2946,6 +3119,8 @@ Liam Stitt: changed url-file.el url-vars.el
 
 Liang Wang: changed etags.el
 
+Lin Sun: changed makefile-edit.el
+
 Lixin Chin: changed bibtex.el
 
 Lloyd Zusman: changed mml.el pgg-gpg.el
@@ -2954,6 +3129,8 @@ Lluís Vilanova: changed ede/linux.el
 
 Luca Capello: changed mm-encode.el
 
+Lucas Werkmeister: changed emacs.c emacs.service
+
 Lucid, Inc.: changed byte-opt.el byte-run.el bytecode.c bytecomp.el
   delsel.el disass.el faces.el font-lock.el lmenu.el mailabbrev.el
   select.el xfaces.c xselect.c
@@ -2962,7 +3139,7 @@ Luc Teirlinck: wrote help-at-pt.el
 and changed files.el autorevert.el cus-edit.el subr.el simple.el
   frames.texi startup.el display.texi files.texi dired.el comint.el
   modes.texi custom.texi emacs.texi fns.c frame.el ielm.el minibuf.texi
-  variables.texi buffers.texi commands.texi and 212 other files
+  variables.texi buffers.texi commands.texi and 211 other files
 
 Ludovic Courtès: wrote nnregistry.el
 and changed configure.ac gnus.texi loadup.el
@@ -2975,8 +3152,12 @@ Lukas Huonker: changed tetris.el
 
 Łukasz Demianiuk: changed erc.el
 
-Łukasz Stelmach: changed erc.el ps-print.el cookie1.el gtkutil.c
-  message.el org-agenda.el org-bbdb.el org.el ox-html.el ox.el
+Łukasz Jędrzejewski: changed auth-source-pass-tests.el
+  auth-source-pass.el
+
+Łukasz Stelmach: changed erc.el ps-print.el cookie1.el gnus-group.el
+  gtkutil.c message.el org-agenda.el org-bbdb.el org.el org.texi
+  ox-html.el ox.el simple.el
 
 Luke Lee: changed hideif.el
 
@@ -2997,8 +3178,9 @@ Madan Ramakrishnan: changed org-agenda.el
 Magnus Henoch: wrote sasl-scram-rfc-tests.el sasl-scram-rfc.el
 and changed url-http.el ispell.el url.el dbusbind.c dns.el configure.ac
   nnmaildir.el progmodes/compile.el sasl.el url-gw.el url-parse.el
-  url-proxy.el autoinsert.el cl.texi cyrillic.el dbus.el gnus.texi
-  hashcash.el image.c latin-pre.el log-edit.el and 16 other files
+  url-proxy.el auth-source-pass-tests.el auth-source-pass.el
+  autoinsert.el cl.texi cyrillic.el dbus.el gnus.texi hashcash.el image.c
+  and 18 other files
 
 Maksim Golubev: changed opascal.el
 
@@ -3021,16 +3203,17 @@ Marc Fleischeuers: changed files.el
 
 Marc Girod: changed informat.el rmail.el rmailsum.el sendmail.el
 
-Marcin Borkowski: wrote lisp-tests.el
-and changed battery.el doc-view.el elisp-mode-tests.el lisp.el
+Marcin Borkowski: wrote fill-tests.el lisp-tests.el
+and changed battery.el doc-view.el elisp-mode-tests.el fill.el lisp.el
   parse-time.el studly.el
 
 Marc Lefranc: changed gnus-art.el
 
 Marco Melgazzi: changed term.el
 
-Marco Wahl: wrote org-eww.el
-and changed org-agenda.el org.el
+Marco Wahl: wrote ol-eww.el
+and changed org-agenda.el page-ext.el org.el scroll-lock-tests.el
+  scroll-lock.el
 
 Marco Walther: changed mips-siemens.h unexelfsni.c unexsni.c
 
@@ -3073,7 +3256,7 @@ Mark D. Baushke: changed mh-e.el mh-utils.el mh-mime.el 
mh-comp.el
   mh-speed.el mh-funcs.el mh-alias.el etags.c mh-junk.el mh-tool-bar.el
   mh-xemacs-compat.el pgg-gpg.el
 
-Mark Diekhans: changed files.el progmodes/compile.el subr.el
+Mark Diekhans: changed files.el ispell.el progmodes/compile.el subr.el
 
 Mark E. Shoulson: changed org.el org-entities.el
 
@@ -3099,9 +3282,9 @@ Mark Osbourne: changed hexl-mode.el
 
 Mark Oteiza: wrote mailcap-tests.el md4-tests.el xdg-tests.el xdg.el
 and changed image-dired.el dunnet.el mpc.el eww.el json.el calc-units.el
-  subr.el lcms.c message.el subr-x.el tex-mode.el cl-macs.el cl.texi
+  subr-x.el subr.el lcms.c message.el tex-mode.el cl-macs.el cl.texi
   ibuffer.el lcms-tests.el mailcap.el cl-print.el emacs-lisp/chart.el
-  files.el htmlfontify.el pcase.el and 169 other files
+  files.el htmlfontify.el pcase.el and 178 other files
 
 Mark Plaksin: changed nnrss.el term.el
 
@@ -3117,8 +3300,6 @@ Markus Hauck: changed org-agenda.el
 
 Markus Heiser: changed gud.el
 
-Markus Heritsch: co-wrote ada-mode.el ada-stmt.el ada-xref.el
-
 Markus Holmberg: changed thingatpt.el
 
 Markus Rost: wrote cus-test.el
@@ -3134,7 +3315,7 @@ Markus Triska: wrote linum.el
 and changed bytecomp.el byte-opt.el doctor.el image-mode.el
   processes.texi calc-math.el emacs.c expand.el flymake.el flymake.texi
   flyspell.el handwrite.el internals.texi proced.el prolog.el ps-mode.el
-  speedbar.el subr.el tumme.el widget.texi windows.texi xterm.c
+  speedbar.el subr.el text.texi tumme.el widget.texi and 3 other files
 
 Mark W. Eichin: changed keyboard.c xterm.c
 
@@ -3153,6 +3334,8 @@ Martin Jesper Low Madsen: changed auth-source.el
 
 Martin J. Reed: changed ldap.el
 
+Martin Kletzander: changed erc-join.el
+
 Martin Kretzschmar: changed gnus-spec.el gnus-sum.el
 
 Martin Larose: changed message.el
@@ -3164,10 +3347,10 @@ Martin Neitzel: changed supercite.el
 
 Martin Pohlack: changed iimage.el pc-select.el
 
-Martin Rudalics: changed window.el window.c windows.texi frame.c
-  frames.texi w32fns.c xdisp.c xterm.c w32term.c frame.el xfns.c help.el
-  buffer.c display.texi cus-start.el dispnew.c frame.h mouse.el nsfns.m
-  window.h gtkutil.c and 203 other files
+Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c
+  w32fns.c frames.texi xterm.c w32term.c frame.el xfns.c display.texi
+  help.el buffer.c window.h cus-start.el frame.h dispnew.c mouse.el
+  nsfns.m dired.el and 209 other files
 
 Martin Stjernholm: wrote cc-bytecomp.el
 and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el
@@ -3186,6 +3369,8 @@ and changed ob-emacs-lisp.el
 
 Masahiko Sato: wrote vip.el
 
+Masahiro Nakamura: changed ns-win.el nsterm.m
+
 Masanobu Umeda: wrote metamail.el rmailsort.el timezone.el
 and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus.el nnbabyl.el
   nndoc.el nneething.el nnfolder.el nnheader.el nnmbox.el nnmh.el nnml.el
@@ -3199,8 +3384,8 @@ Masatake Yamato: wrote add-log-tests.el imenu-tests.el 
ld-script.el
 and co-wrote cc-guess.el
 and changed etags.el asm-mode.el hexl.el xdisp.c bindings.el man.el
   xfaces.c simple.el vc.el wid-edit.el add-log.el etags.c faces.el
-  pcvs.el progmodes/compile.el register.el ruler-mode.el sh-script.el
-  buffer.c cc-langs.el cus-face.el and 80 other files
+  pcvs.el progmodes/compile.el progmodes/cpp.el register.el ruler-mode.el
+  sh-script.el buffer.c cc-langs.el and 80 other files
 
 Masayuki Ataka: changed texinfmt.el texinfo.el characters.el cmuscheme.el
   make-mode.el
@@ -3212,23 +3397,27 @@ and changed tumme.el dired.el dired.texi
 
 Mathias Megyei: changed lisp/Makefile.in
 
+Mathieu Othacehe: changed tramp-adb.el
+
 Mats Lidell: changed TUTORIAL.sv european.el gnus-art.el org-element.el
 
 Matt Armstrong: changed gnus-topic.el gnus.el imap.el message.el shell.el
 
+Matt Bisson: changed xterm.c
+
 Matt Curtis: changed pulse.el
 
 Matt Fidler: changed package.el
 
-Matthew Bauer: changed startup.el
+Matthew Bauer: changed comint.el startup.el
 
 Matthew Carter: changed sql.el
 
 Matthew Junker: changed cal-tex.el
 
-Matthew Leach: changed configure.ac arc-mode.el battery.el emacs.c
-  font-lock.el ispell.el lisp.h misc.texi process.c processes.texi
-  server.el src/Makefile.in
+Matthew Leach: changed server.el process.c configure.ac emacs.c lisp.h
+  misc.texi processes.texi arc-mode.el battery.el font-lock.el ispell.el
+  src/Makefile.in
 
 Matthew Luckie: changed configure.ac
 
@@ -3238,12 +3427,14 @@ Matthew Mundell: changed calendar.texi diary-lib.el 
files.texi
   objects.texi os.texi positions.texi searching.texi subr.el text.texi
   and 3 other files
 
+Matthew Newton: changed imenu.el
+
 Matthias Dahl: changed faces.el process.c process.h
 
 Matthias Förste: changed files.el
 
 Matthias Meulien: changed bookmark.el progmodes/python.el buff-menu.el
-  prog-mode.el simple.el tabify.el vc-dir.el
+  prog-mode.el simple.el tabify.el vc-dir.el vc-git.el
 
 Matthias Wiehl: changed gnus.el
 
@@ -3258,7 +3449,11 @@ Matt Hodges: changed textmodes/table.el faces.el 
iswitchb.el simple.el
   edebug.texi eldoc.el em-hist.el em-pred.el fixit.texi icon.el ido.el
   locate.el paragraphs.el pcomplete.el repeat.el and 3 other files
 
-Mattias Engdegård: changed subr.el
+Mattias Engdegård: changed rx.el searching.texi rx-tests.el autorevert.el
+  regexp-opt.el calc-tests.el filenotify.el subr.el progmodes/compile.el
+  files.el mouse.el bytecomp.el compile-tests.el autorevert-tests.el
+  byte-opt.el bytecomp-tests.el calc-alg.el compilation.txt font.c
+  regex-emacs.c regexp-opt-tests.el and 121 other files
 
 Matt Lundin: changed org-agenda.el org.el org-bibtex.el org-footnote.el
   ox-publish.el org-bbdb.el org-datetree.el org-gnus.el
@@ -3272,7 +3467,11 @@ Matt Simmons: changed message.el
 Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el
   outline.el progmodes/compile.el rx.el simple.el startup.el
 
-Mauro Aranda: changed autorevert.el files.texi os.texi
+Mauro Aranda: changed wid-edit.el cus-edit.el gnus.texi octave.el pong.el
+  autorevert.el cc-mode.texi control.texi custom-tests.el custom.el
+  dbus.texi dired-x.texi elisp-mode.el epa.el esh-mode.el
+  eshell/eshell.el eudc.texi files.texi functions.texi gnus-faq.texi
+  info.el and 14 other files
 
 Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el
 
@@ -3283,16 +3482,16 @@ Memnon Anon: changed org.texi
 Micah Anderson: changed spook.lines
 
 Michael Albinus: wrote autorevert-tests.el dbus-tests.el dbus.el
-  filenotify-tests.el filenotify.el files-x-tests.el secrets.el
-  shadowfile-tests.el tramp-cmds.el tramp-compat.el tramp-ftp.el
-  tramp-gvfs.el tramp-smb.el tramp-tests.el url-tramp-tests.el
-  url-tramp.el vc-tests.el xesam.el zeroconf.el
+  filenotify-tests.el filenotify.el files-x-tests.el secrets-tests.el
+  secrets.el shadowfile-tests.el tramp-archive-tests.el tramp-archive.el
+  tramp-cmds.el tramp-compat.el tramp-ftp.el tramp-gvfs.el
+  tramp-integration.el tramp-rclone.el tramp-smb.el tramp-sudoedit.el
+  tramp-tests.el url-tramp-tests.el url-tramp.el vc-tests.el zeroconf.el
 and co-wrote tramp-cache.el tramp-sh.el tramp.el
 and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c
-  file-notify-tests.el ange-ftp.el files.el dbus.texi files.texi
+  file-notify-tests.el files.el ange-ftp.el files.texi dbus.texi
   autorevert.el tramp-fish.el kqueue.c tramp-gw.el tramp-imap.el os.texi
-  configure.ac lisp.h gfilenotify.c inotify.c keyboard.c
-  and 224 other files
+  xesam.el configure.ac lisp.h shell.el gfilenotify.c and 253 other files
 
 Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h
   unexec.c
@@ -3300,6 +3499,8 @@ Michael Ben-Gershon: changed acorn.h configure.ac 
riscix1-1.h riscix1-2.h
 Michael Brand: changed org.texi org-table.el org.el org-agenda.el
   org-capture.el ob-tangle.el org-feed.el org-id.el org-list.el
 
+Michael Brumlow: changed htmlfontify.el
+
 Michaël Cadilhac: changed browse-url.el fr-dired-ref.tex gnus-sum.el
   gnus.texi ido.el Makefile emacsbug.el files.el fill.el flyspell.el
   fr-refcard.tex ispell.el meta-mode.el nnrss.el anti.texi battery.el
@@ -3325,8 +3526,13 @@ Michael Gschwind: wrote iso-cvt.el
 
 Michael Harnois: changed nnimap.el
 
-Michael Heerdegen: changed subr-x.el control.texi dired-aux.el dired.el
-  easy-mmode.el eldoc.el pcase.el shr.el subr-x-tests.el wdired.el
+Michael Heerdegen: changed cl-macs.el subr.el control.texi copyright.el
+  css-mode.el dired.el easy-mmode.el filesets.el hi-lock.el macroexp.el
+  modula2.el ob-C.el ob-core.el ob-exp.el ob-groovy.el ob-haskell.el
+  ob-io.el ob-lisp.el ob-lob.el ob-lua.el ob-octave.el
+  and 227 other files
+
+Michael Hendricks: changed help.el
 
 Michael Hoffman: changed term.el xterm.el
 
@@ -3358,14 +3564,17 @@ Michael Olson: changed erc.el erc-backend.el Makefile 
erc-track.el
   erc-log.el erc-stamp.el erc-autoaway.el erc-dcc.el erc-goodies.el
   erc-list.el erc-compat.el erc-identd.el erc.texi ERC-NEWS erc-bbdb.el
   erc-match.el erc-notify.el erc-ibuffer.el erc-services.el remember.el
-  erc-button.el and 55 other files
+  erc-button.el and 54 other files
+
+Michael Orlitzky: changed tex-mode.el
 
 Michael Piotrowski: changed gnus-art.el gnus-sum.el ps-print.el
 
 Michael R. Cook: changed gnus-sum.el gnus-topic.el gnus-art.el
 
-Michael R. Mauger: changed sql.el emacsclient.c comint.el cua-base.el
-  custom.el facemenu.el recentf.el replace.el server.el tramp.el w32fns.c
+Michael R. Mauger: changed sql.el sql-tests.el comint.el emacsclient.c
+  comint-tests.el cua-base.el custom.el facemenu.el recentf.el replace.el
+  server.el tramp.el w32fns.c
 
 Michael R. Wolf: changed ange-ftp.el
 
@@ -3375,7 +3584,7 @@ Michael Schuldt: changed calc-comb.el
 
 Michael Shields: changed spam.el gnus-art.el gnus-sum.el gnus-cite.el
   Makefile.in gnus-group.el gnus.el intel386.h nndraft.el pgg-def.el
-  window.c window.el
+  server.el window.c window.el
 
 Michael Sperber: changed org.el nnmail.el aix3-1.h aix4-2.h gnus-sum.el
   gnus.texi mail-source.el mailcap.el nnml.el org-capture.el
@@ -3386,9 +3595,9 @@ Michael Staats: wrote pc-select.el
 Michael Vehrs: changed quail.el woman.el
 
 Michael Welsh Duggan: changed nnimap.el lisp.h sh-script.el w32term.c
-  buffer.c gnus-spec.el keyboard.c mail/sieve-manage.el nnir.el nnmail.el
-  print.c termhooks.h url-http.el w32-win.el w32fns.c w32menu.c w32term.h
-  woman.el xdisp.c xterm.c
+  buffer.c gnus-spec.el gud.el keyboard.c mail/sieve-manage.el nnir.el
+  nnmail.el print.c termhooks.h url-http.el w32-win.el w32fns.c w32menu.c
+  w32term.h woman.el xdisp.c xterm.c
 
 Michael Weylandt: changed ox-latex.el
 
@@ -3396,16 +3605,22 @@ Michael Witten: changed TUTORIAL fixit.texi intro.texi
 
 Michal Jankowski: changed insdel.c keyboard.c
 
+Michał Kondraciuk: changed cus-edit.el
+
+Michał Krzywkowski: changed elide-head.el
+
 Michal Nazarewicz: wrote cc-mode-tests.el descr-text-tests.el
   tildify-tests.el
 and co-wrote tildify.el
-and changed regex.c casefiddle.c regex-tests.el simple.el
+and changed regex.c casefiddle.c simple.el test/src/regex-emacs-tests.el
   casefiddle-tests.el message.el regex.h search.c buffer.h ert-x.el
-  files.el frame.c remember.el unidata-gen.el README SpecialCasing.txt
-  bindings.el buffer.c cc-mode.el cfengine.el char-fold-tests.el
-  and 36 other files
+  files.el frame.c remember.el sgml-mode.el unidata-gen.el README
+  SpecialCasing.txt bindings.el buffer.c cc-mode.el cfengine.el
+  and 37 other files
+
+Michal Nowak: changed gnutls.el
 
-Michal Sojka: changed ox-icalendar.el
+Michal Sojka: changed ox-icalendar.el textmodes/table.el
 
 Michelangelo Grigni: wrote ffap.el
 and changed gnus-score.el
@@ -3437,8 +3652,9 @@ Mike Haertel: changed 7300.h
 
 Mike Kazantsev: changed erc-dcc.el
 
-Mike Kupfer: changed mh-comp.el mh-e.el emacs-mime.texi gnus-mh.el
-  gnus.texi mh-acros.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el
+Mike Kupfer: changed mh-comp.el mh-e.el ftcrfont.c mh-utils.el
+  emacs-mime.texi ftxfont.c gnus-mh.el gnus.texi mh-acros.el mh-compat.el
+  mh-e.texi mh-identity.el mh-mime.el xftfont.c
 
 Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el
 
@@ -3539,6 +3755,8 @@ Neal Ziring: co-wrote vi.el (public domain)
 
 Neil Mager: wrote appt.el
 
+Neil Roberts: changed custom.texi files.el
+
 Neil W. Van Dyke: wrote webjump.el
 
 Nelson H. F. Beebe: changed configure.ac
@@ -3556,7 +3774,7 @@ Niall Mansfield: changed etags.c
 
 Nic Ferrier: changed ert.el tramp.el
 
-Nicholas Drozd: changed calc.texi
+Nicholas Drozd: changed calc.texi editfns.c ol.html ol.txt shr.el
 
 Nicholas Maniscalco: changed term.el
 
@@ -3567,10 +3785,11 @@ Nick Alcock: changed control.texi customize.texi 
display.texi files.el
 Nick Dokos: changed org-table.el ox.el icalendar.el mh-search.el
   org-mobile.el org.el ox-ascii.el url-cache.el
 
-Nick Drozd: changed eww.el eww.texi
+Nick Drozd: changed quail/georgian.el eww.el eww.texi shr.el HELLO
+  cc-mode-tests.el ido.texi
 
-Nick Helm: changed eldoc.el help.el help.texi whitespace-tests.el
-  whitespace.el
+Nick Helm: changed eldoc.el help.el help.texi nsterm.m
+  whitespace-tests.el whitespace.el
 
 Nick Roberts: wrote gdb-mi.el t-mouse.el
 and changed gdb-ui.el gud.el building.texi tooltip.el speedbar.el
@@ -3586,8 +3805,9 @@ Nicolas Avrutin: changed url-http.el
 
 Nicolas Calderon Asselin: changed org-clock.el
 
-Nicolas Goaziou: wrote org-duration.el org-element.el org-lint.el
-  org-macro.el ox-ascii.el ox-latex.el ox-md.el ox-org.el ox.el
+Nicolas Goaziou: wrote org-duration.el org-element.el org-keys.el
+  org-lint.el org-macro.el org-num.el ox-ascii.el ox-latex.el ox-md.el
+  ox-org.el ox.el
 and co-wrote ox-beamer.el ox-icalendar.el ox-man.el
 and changed org-list.el org.el ox-html.el org-footnote.el ox-texinfo.el
   org.texi ox-publish.el ox-odt.el org-inlinetask.el org-indent.el
@@ -3598,13 +3818,13 @@ and changed org-list.el org.el ox-html.el 
org-footnote.el ox-texinfo.el
 Nicolas Graner: changed message.el
 
 Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el
-  thunk-tests.el thunk.el
+  thunk-tests.el thunk.el url-handlers-test.el
 and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el
-and changed README configure.ac sed2v2.inp sequences.texi authors.el
-  README.W32 emacs.png emacs23.png arc-mode.el cl-extra.el emacs.svg
-  manoj-dark-theme.el Emacs.icns HISTORY Makefile.in auth-source.el
+and changed README configure.ac sed2v2.inp authors.el sequences.texi
+  README.W32 emacs.png emacs23.png HISTORY arc-mode.el cl-extra.el
+  emacs.svg manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el
   emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el
-  and 35 other files
+  and 37 other files
 
 Nicolas Richard: wrote cl-seq-tests.el cmds-tests.el replace-tests.el
 and changed ffap.el package.el byte-run.el help.el keyboard.c landmark.el
@@ -3626,7 +3846,7 @@ Nikolai Weibull: changed org.el
 Nikolaj Schumacher: changed flymake.el progmodes/compile.el eldoc.el
   elp.el nsfont.m rx.el
 
-Nikolaus Rath: changed nnimap.el gnus.texi
+Nikolaus Rath: changed nnimap.el gnus-sum.el gnus.texi
 
 Nikolay Kudryavtsev: changed sql.el vc-git.el
 
@@ -3636,7 +3856,7 @@ Nils Ackermann: changed message.el nnmh.el reftex-vars.el
 
 Nitish Chandra: changed simple.el
 
-N. Jackson: changed emacs.texi
+N. Jackson: changed emacs.texi forms.texi
 
 Noah Friedman: wrote eldoc.el rlogin.el type-break.el
 and co-wrote erc-dcc.el
@@ -3647,13 +3867,16 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el 
files.el Makefile
 
 Noah Lavine: changed tramp.el
 
-Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c
-  cl-macs.el lisp-mode-tests.el emacs-lisp/debug.el data.c simple.el
-  term.el ert.el subr.el help-fns.el bytecomp.el cl-print.el
-  elisp-mode.el eval.c ffap.el modes.texi search.c sh-script.el
-  cl-preloaded.el and 249 other files
+Noah Swainland: changed calc.el
+
+Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el
+  lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c
+  emacs-lisp/debug.el simple.el data.c modes.texi subr.el elisp-mode.el
+  ert.el help-fns.el isearch.el processes.texi cl-print.el ffap.el
+  print.c and 357 other files
 
 Nobuyoshi Nakada: co-wrote ruby-mode.el
+and changed ruby-mode-tests.el
 
 Nobuyuki Hikichi: changed news-risc.h
 
@@ -3673,27 +3896,32 @@ Nuutti Kotivuori: changed gnus-sum.el flow-fill.el 
gnus-cache.el
 
 Odd Gripenstam: wrote dcl-mode.el
 
-Ogawa Hirofumi: changed calc-aent.el gnus-sum.el nnimap.el
+Ogawa Hirofumi: changed calc-aent.el gnus-sum.el nnimap.el sieve-mode.el
+  sieve.el
 
 Ognyan Kulev: changed TUTORIAL.bg cyrillic.el
 
 Okazaki Tetsurou: changed cc-fonts.el vc-svn.el vc.el
 
-Olaf Rogalsky: changed help.el keyboard.c mouse.el xt-mouse.el
+Olaf Rogalsky: changed keyboard.c help.el mouse.el xt-mouse.el
 
 Olaf Sylvester: wrote bs.el
 
+Ola Nilsson: changed sh-script.el
+
 Ole Aamot: changed compile.el
 
+Oleg Pykhalov: changed gnus-sum.el
+
 Oleg S. Tihonov: changed cyrillic.el ispell.el language/cyrillic.el
   map-ynp.el subr.el
 
 Oleh Krehel: wrote ob-J.el
 and co-wrote subr-tests.el
-and changed dired-aux.el outline.el checkdoc.el subr.el buffer.c
-  check-declare.el alloc.c appt.el buffer.h category.c cl-indent.el
-  custom.el derived.el dired-x.el dired.el dired.texi display.texi
-  easy-mmode.el ffap.el gdb-mi.el keyboard.c and 12 other files
+and changed dired-aux.el outline.el checkdoc.el files.el subr.el buffer.c
+  check-declare.el alloc.c appt.el buffer.h calc.el category.c
+  cl-indent.el custom.el derived.el dired-x.el dired.el dired.texi
+  display.texi easy-mmode.el ffap.el and 14 other files
 
 Oleksandr Gavenko: changed generic-x.el progmodes/grep.el
 
@@ -3728,10 +3956,10 @@ and co-wrote eudc-bob.el eudc-export.el eudc-hotlist.el 
eudc-vars.el
   eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el
 and changed ph.el
 
-Óscar Fuentes: changed ido.el vc-hooks.el xfns.c CPP-DEFINES addpm.c
-  addsection.c browse-url.el cmdproxy.c configure.ac diff-mode.el
-  emacsclient.c keyboard.c ms-w32.h preprep.c progmodes/grep.el ses.el
-  vc-bzr.el vc-cvs.el vc-git.el vc-hg.el vc-mtn.el and 7 other files
+Óscar Fuentes: changed ido.el password-cache.el ses.el vc-hooks.el xfns.c
+  CPP-DEFINES addpm.c addsection.c browse-url.el callproc.c cmdproxy.c
+  configure.ac diff-mode.el emacsclient.c keyboard.c ms-w32.h preprep.c
+  progmodes/grep.el vc-bzr.el vc-cvs.el vc-git.el and 9 other files
 
 Øyvind Stegard: changed gnus-msg.el
 
@@ -3753,9 +3981,9 @@ and changed imenu.el make-mode.el
 Paul Eggert: wrote rcs2log
 and co-wrote cal-dst.el
 and changed lisp.h configure.ac alloc.c process.c fileio.c editfns.c
-  xdisp.c sysdep.c keyboard.c image.c emacs.c xterm.c data.c lread.c
-  fns.c callproc.c Makefile.in gnulib.mk eval.c buffer.c frame.c
-  and 1608 other files
+  xdisp.c sysdep.c image.c keyboard.c data.c emacs.c fns.c lread.c
+  xterm.c eval.c callproc.c Makefile.in frame.c buffer.c gnulib-comp.m4
+  and 1821 other files
 
 Paul Fisher: changed fns.c
 
@@ -3768,10 +3996,10 @@ and changed message.el gnus-util.el gnus-int.el gnus.el 
gnus-agent.el
   gnus-start.el gnus-sum.el nnmail.el
 
 Paul Pogonyshev: changed subr.el byte-opt.el eval.c progmodes/python.el
-  which-func.el align.el bytecode.c cc-langs.el cl-macs.el configure.ac
-  dabbrev.el display.texi eldoc.el elisp-mode.el etags.el fns-tests.el
-  fns.c functions.texi generator.el hash.texi image-file.el
-  and 15 other files
+  which-func.el align.el bytecode.c bytecomp.el cc-langs.el cl-macs.el
+  configure.ac dabbrev.el display.texi eldoc.el elisp-mode.el
+  emacs-lisp/debug.el ert.el ert.texi etags.el fns-tests.el fns.c
+  and 20 other files
 
 Paul Rankin: changed outline.el
 
@@ -3787,6 +4015,8 @@ Paul Rubin: changed config.h sun2.h texinfmt.el window.c
 
 Paul Sexton: wrote org-ctags.el
 
+Paul Smith: changed compile-tests.el progmodes/compile.el
+
 Paul Stevenson: changed nnvirtual.el
 
 Paul Stodghill: changed gnus-agent.el gnus-util.el
@@ -3805,7 +4035,8 @@ and changed flymake.texi
 
 Peder O. Klingenberg: wrote dns-mode-tests.el
 and changed dns-mode.el icalendar.el mm-decode.el calc-comb.el calc.texi
-  dunnet.el emacsbug.el emacsclient.c gnus.texi misc.texi
+  dunnet.el emacsbug.el emacsclient.c eww.el gnus.texi misc.texi
+  url-http.el url-queue.el url-util.el url-vars.el url.texi
 
 P. E. Jareth Hein: changed gnus-util.el
 
@@ -3870,7 +4101,7 @@ Peter Münster: changed gnus-delay.el gnus-demon.el 
gnus-group.el
 
 Peter O'Gorman: changed configure.ac frame.h hpux10-20.h termhooks.h
 
-Peter Oliver: changed perl-mode.el server.el
+Peter Oliver: changed perl-mode.el server.el vc-sccs.el
 
 Peter Povinec: changed term.el
 
@@ -3912,14 +4143,18 @@ Petr Salinger: changed configure.ac gnu-kfreebsd.h
 Phil Hagelberg: wrote ert-x-tests.el
 and changed package.el pcmpl-unix.el subr.el
 
-Philip Jackson: wrote find-cmd.el org-irc.el
+Philip Hudson: changed em-hist.el
+
+Philip Jackson: wrote find-cmd.el ol-irc.el
+and changed org-irc.el
 
 Philip K: changed ispell.el
 
 Philippe Schnoebelen: wrote gomoku.el mpuz.el
+and changed cl-extra.el
 
 Philippe Vaucher: changed callint.c composite.el debugging.texi
-  replace.el subr.el text-mode.el
+  modes.texi replace.el subr.el tabulated-list.el text-mode.el
 
 Philippe Waroquiers: changed etags.el term.c
 
@@ -3928,32 +4163,39 @@ Philipp Haselwarter: changed gnus-agent.el gnus-sum.el 
gnus-sync.el
 
 Philipp Rumpf: changed electric.el
 
-Philipp Stephani: wrote checkdoc-tests.el ediff-diff-tests.el
-  eval-tests.el ido-tests.el lread-tests.el mouse-tests.el
-  xt-mouse-tests.el
-and changed emacs-module.c eval.c bytecomp.el nsterm.m
-  emacs-module-tests.el files.el lread.c configure.ac editfns.c
-  mod-test.c alloc.c electric.el gtkutil.c lisp.h electric-tests.el
-  emacs.c macfont.m test/Makefile.in xt-mouse.el Makefile
-  bytecomp-tests.el and 96 other files
+Philipp Stephani: wrote callint-tests.el checkdoc-tests.el
+  cl-preloaded-tests.el ediff-diff-tests.el eval-tests.el ido-tests.el
+  lread-tests.el mouse-tests.el xt-mouse-tests.el
+and changed emacs-module.c emacs-module-tests.el json.c json-tests.el
+  eval.c mod-test.c lisp.h lread.c nsterm.m configure.ac bytecomp.el
+  internals.texi gtkutil.c emacs-module.h.in files.el alloc.c electric.el
+  test/Makefile.in editfns.c electric-tests.el emacs.c
+  and 126 other files
 
 Phillip Lord: wrote ps-print-tests.el
-and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile
-  Makefile.in viper-cmd.el elisp-mode-tests.el keyboard.c ldefs-clean.el
-  loadup.el autoload.el automated/Makefile.in build-zips.sh cmds.c
-  dired.el eieio-tests.el fileio.c htmlfontify.el
-  make-test-deps.emacs-lisp reftex-tests.el and 168 other files
-
-Phil Sainty: changed term.el derived.el easy-mmode.el lisp.el package.el
-  progmodes/grep.el simple.el subword.el
+and changed build-zips.sh lisp/Makefile.in undo.c simple.el
+  build-dep-zips.py test/Makefile.in Makefile Makefile.in emacs.nsi
+  keyboard.c viper-cmd.el README-windows-binaries README.W32
+  elisp-mode-tests.el ldefs-clean.el loadup.el README-scripts autoload.el
+  automated/Makefile.in cmds.c dired.el and 171 other files
+
+Phil Sainty: wrote autoload-longlines-mode-tests.el
+  autoload-major-mode-tests.el autoload-minor-mode-tests.el
+  so-long-tests-helpers.el so-long-tests.el so-long.el spelling-tests.el
+and changed diff.el goto-addr.el term.el cl-macs.el comint.el derived.el
+  easy-mmode.el emacs.texi files.texi lisp.el misc.texi package.el
+  progmodes/grep.el simple.el subword.el trouble.texi
 
 Phil Sung: changed wdired.el dired.texi follow.el progmodes/python.el
 
-Pierre Lorenzon: changed eieio-custom.el
+Pierre Lorenzon: changed eieio-custom.el pconf.el
 
 Pierre Poissinger: changed charset.c
 
-Pierre Téchoueyres: changed eieio-test-persist.el epg.el tramp-cmds.el
+Pierre Téchoueyres: changed browse-url.el eieio-test-persist.el epg.el
+  fns-tests.el fns.c mouse.el sql.el text.texi tramp-cmds.el
+
+Pierre-Yves Luyten: changed bookmark.el cua-rect.el
 
 Pieter E.J. Pareit: wrote mixal-mode.el
 
@@ -3961,6 +4203,8 @@ Pieter Praet: changed org-crypt.el
 
 Pieter Schoenmakers: changed TUTORIAL.nl
 
+Pieter Van Oostrum: changed package.el shell-tests.el shell.el
+
 Piet van Oostrum: changed data.c fileio.c flyspell.el smtpmail.el
 
 Pinku Surana: changed sql.el
@@ -3969,7 +4213,10 @@ Piotr Trojanek: changed gnutls.c process.c
 
 Piotr Zieliński: wrote org-mouse.el
 
-Pip Cet: changed dispextern.h gtkutil.c xdisp.c xfaces.c xterm.c xterm.h
+Pip Cet: changed fns.c display.texi xdisp.c xterm.c dispextern.h frame.el
+  gtkutil.c image.c json-tests.el json.c mail-utils.el nsterm.m simple.el
+  subr.el text.texi textprop.c timer-list.el tty-colors-tests.el
+  tty-colors.el url-http.el xfaces.c xterm.h
 
 Pontus Michael: changed simple.el
 
@@ -3984,7 +4231,8 @@ and changed abbrev-tests.el abbrev.el cl-lib-tests.el 
loadup.el
 Puneeth Chaganti: changed org.texi ox.el org-agenda.el org-capture.el
   ox-html.el svg.el
 
-Radon Rosborough: changed eval.c
+Radon Rosborough: changed package.el custom.texi package.texi startup.el
+  eval.c lread.c org.texi os.texi
 
 Rafael Laboissiere: changed org-remember.el org-bibtex.el org.el org.texi
 
@@ -3992,7 +4240,8 @@ Rafael Sepúlveda: changed TUTORIAL.es
 
 Raffael Mancini: changed misc.el
 
-Raimon Grau: changed replace.el thingatpt.el
+Raimon Grau: changed thingatpt.el calc-fin.el eww.el replace.el
+  thingatpt-tests.el
 
 Rainer Orth: changed gtkutil.c lisp/Makefile.in
 
@@ -4025,7 +4274,7 @@ and changed libc.el browse-url.el fileio.c info.el 
mm-decode.el
 
 Ramakrishnan M: changed mlm-util.el
 
-Rami Ylimäki: changed term.c efaq.texi termchar.h tparam.h tty-colors.el
+Rami Ylimäki: changed efaq.texi term.c tparam.h termchar.h tty-colors.el
   xterm.el
 
 Randall Smith: changed dired.el
@@ -4034,10 +4283,10 @@ Randal Schwartz: wrote pp.el
 
 Ransom Williams: changed files.el
 
-Rasmus Pank Roulund: changed ox-latex.el gnus-notifications.el org.el
-  ange-ftp.el gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el
-  message.texi ob-C.el org-entities.el org-src.el org.texi ox-html.el
-  ox.el vc-git.el
+Rasmus Pank Roulund: wrote org-tempo.el
+and changed ox-latex.el gnus-notifications.el org.el ange-ftp.el
+  gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el message.texi
+  ob-C.el org-entities.el org-src.el org.texi ox-html.el ox.el vc-git.el
 
 Raul Acevedo: changed info.el options.el
 
@@ -4049,11 +4298,11 @@ and changed gnus-art.el gnus-msg.el gnus.texi 
message.el nnmail.el
 
 R. Bernstein: changed gud.el
 
-Reiner Steib: wrote gmm-utils.el gnus-news.el
+Reiner Steib: wrote gmm-utils.el
 and changed message.el gnus.texi gnus-art.el gnus-sum.el gnus-group.el
   gnus.el mml.el gnus-faq.texi mm-util.el gnus-score.el message.texi
   gnus-msg.el gnus-start.el gnus-util.el spam-report.el mm-uu.el spam.el
-  mm-decode.el files.el gnus-agent.el nnmail.el and 174 other files
+  mm-decode.el files.el gnus-agent.el nnmail.el and 172 other files
 
 Remek Trzaska: changed gnus-ems.el
 
@@ -4073,13 +4322,14 @@ Reuben Thomas: changed ispell.el whitespace.el 
dired-x.el files.el
   sh-script.el emacsclient-tests.el remember.el README emacsclient.c
   misc.texi msdos.c simple.el INSTALL ada-mode.el ada-xref.el alloc.c
   arc-mode.el authors.el config.bat copyright dired-x.texi
-  and 34 other files
+  and 36 other files
 
 Ricardo Wurmus: changed xwidget.el xwidget.c configure.ac xwidget.h
 
 Riccardo Murri: changed vc-bzr.el tls.el
 
 Richard Copley: changed Makefile.in epaths.in epaths.nt gdb-mi.el
+  text.texi
 
 Richard Dawe: changed config.in src/Makefile.in
 
@@ -4115,7 +4365,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el 
cc-engine.el cc-langs.el
 and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el
   fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el
   configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c
-  info.el dired.el and 1339 other files
+  info.el dired.el and 1338 other files
 
 Richard Ryniker: changed sendmail.el
 
@@ -4139,7 +4389,8 @@ Robert Bihlmeyer: changed gnus-score.el gnus-util.el 
message.el
 
 Robert Brown: changed lisp-mode.el
 
-Robert Cochran: changed bytecomp.el checkdoc.el data.c map.el
+Robert Cochran: changed tab-bar.el bytecomp.el checkdoc.el data.c
+  frames.texi map.el
 
 Robert Fenk: changed desktop.el
 
@@ -4156,17 +4407,21 @@ Robert Marshall: changed mule-cmds.el
 
 Roberto Huelga Díaz: changed org-clock.el org-timer.el
 
-Roberto Rodríguez: changed ada-mode.texi glossary.texi widget.texi
+Roberto Rodríguez: changed glossary.texi widget.texi
 
 Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el
 
-Robert Pluim: changed gtkutil.c configure.ac files.texi dired-x.texi
-  ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c bindings.el
-  desktop.el efaq.texi epa.texi filelock.c font.c ftcrfont.c
-  gnus-agent.el gnus-demon.el gnus.texi gtkutil.h and 19 other files
+Robert Pluim: wrote nsm-tests.el
+and changed process.c gtkutil.c processes.texi vc-git.el configure.ac
+  ftfont.c network-stream.el nsm.el process-tests.el files.texi font.c
+  ftcrfont.c gnus-icalendar.el gnutls.el gtkutil.h
+  network-stream-tests.el text.texi w32.c xfns.c xftfont.c auth.texi
+  and 83 other files
 
 Robert Thorpe: changed cus-start.el indent.el
 
+Robert Weiner: changed cus-edit.el
+
 Rob Giardina: changed org-agenda.el
 
 Rob Kaut: changed vhdl-mode.el
@@ -4196,21 +4451,20 @@ and changed compile.el add-log.el configure.ac files.el 
vc.el simple.el
   rlogin.el rmail.el and 139 other files
 
 Roland Winkler: wrote proced.el
-and changed bibtex.el faces.el crm.el process.c appt.el artist.el
-  conf-mode.el cus-edit.el diary-lib.el flyspell.el hideshow.el
-  ibuf-ext.el ibuffer.el ispell.el make-mode.el sgml-mode.el sh-script.el
-  skeleton.el smtpmail.el
+and changed bibtex.el faces.el crm.el find-dired.el bookmark.el process.c
+  appt.el artist.el bibtex-style.el conf-mode.el cus-edit.el diary-lib.el
+  flyspell.el hideshow.el ibuf-ext.el ibuffer.el ispell.el make-mode.el
+  sgml-mode.el sh-script.el skeleton.el smtpmail.el
 
-Rolf Ade: changed sql.el
+Rolf Ade: changed sql.el tcl.el
 
-Rolf Ebert: co-wrote ada-mode.el ada-stmt.el ada-xref.el
-and changed files.el find-file.el
+Rolf Ebert: changed ada-mode.el files.el find-file.el
 
 Romain Francoise: changed efaq.texi message.el make-dist gnus.texi
   dired-x.el Makefile.in comint.el fileio.c ibuf-ext.el subr.el
   configure.ac files.texi gnus-sum.el gnus-uu.el progmodes/compile.el
   puresize.h replace.el startup.el doclicense.texi emacs.c gnus-fun.el
-  and 150 other files
+  and 149 other files
 
 Roman Belenov: changed which-func.el
 
@@ -4231,7 +4485,7 @@ Rüdiger Sonderfeld: wrote inotify-tests.el reftex-tests.el
 and changed eww.el octave.el shr.el bibtex.el configure.ac
   misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de ada-mode.el
   autoinsert.el building.texi calc-lang.el cc-langs.el dired.texi
-  editfns.c emacs.c emacs.texi epa.el erc.el eww.texi and 38 other files
+  editfns.c emacs.c emacs.texi epa.el erc.el eww.texi and 39 other files
 
 Rui-Tao Dong: changed nnweb.el
 
@@ -4245,6 +4499,8 @@ Russ Allbery: changed message.el
 
 Ryan Barrett: changed dirtrack.el
 
+Ryan Brown: changed cl-indent.el
+
 Ryan Crum: changed json.el
 
 Ryan Thompson: changed advice-tests.el ido.el minibuffer-tests.el
@@ -4280,13 +4536,13 @@ Sam Kendall: changed etags.c etags.el
 
 Sam Steingold: wrote gulp.el midnight.el
 and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el
-  mouse.el vc-hg.el files.el font-lock.el tex-mode.el ange-ftp.el
-  sgml-mode.el window.el add-log.el bindings.el bookmark.el
-  bug-reference.el calendar.el cperl-mode.el diary-lib.el dired.el
-  and 152 other files
+  mouse.el vc-hg.el etags.el files.el font-lock.el tex-mode.el
+  ange-ftp.el sgml-mode.el vc-git.el window.el add-log.el bindings.el
+  bookmark.el bug-reference.el calendar.el cperl-mode.el
+  and 157 other files
 
 Samuel Bronson: changed custom.el emacsclient.c keyboard.c
-  progmodes/grep.el unexmacosx.c
+  progmodes/grep.el semantic/format.el unexmacosx.c
 
 Samuel Freilich: changed simple.el
 
@@ -4357,6 +4613,8 @@ Sebastian Kremer: wrote dired-aux.el dired.el ls-lisp.el
 and co-wrote dired-x.el find-dired.el
 and changed add-log.el
 
+Sebastian Reuße: changed find-dired.el
+
 Sebastian Rose: co-wrote org-protocol.el
 and changed ox-publish.el ftfont.c ox-jsinfo.el
 
@@ -4404,6 +4662,8 @@ Seweryn Kokot: changed positions.texi searching.texi
 Shakthi Kannan: wrote tamil-dvorak.el
 and changed ert.texi lisp-mode.el programs.texi text.texi
 
+Shanavas M: changed buffer-tests.el
+
 Shaun Johnson: changed ob-tangle.el org-exp-blocks.el
 
 Shawn Boles: changed url-cookie.el
@@ -4423,13 +4683,16 @@ Shigeru Fukaya: wrote bytecomp-tests.el
 and changed apropos.el bs.el byte-opt.el bytecomp.el elint.el rx-new.el
   ses.el subr.el texinfmt.el
 
+Shingo Tanaka: changed files.el
+
 Shinichirou Sugou: changed etags.c
 
 Shoji Nishimura: changed org.el
 
 Sho Nakatani: changed doc-view.el
 
-Shuguang Sun: changed dired-aux.el
+Shuguang Sun: changed dired-aux.el tramp-adb.el tramp-archive.el
+  tramp-integration.el
 
 Shuhei Kobayashi: wrote hex-util.el hmac-def.el hmac-md5.el
 and changed gnus-group.el message.el nnmail.el
@@ -4442,12 +4705,16 @@ Sidney Markowitz: changed doctor.el nsmenu.m
 
 Sigbjorn Finne: changed gnus-srvr.el
 
-Simen Heggestøyl: wrote color-tests.el css-mode-tests.el dom-tests.el
-  ring-tests.el rot13-tests.el sql-tests.el
-and changed css-mode.el json-tests.el json.el sgml-mode.el css-mode.css
-  scss-mode.scss ring.el rot13.el scheme.el sql.el color.el files.el
-  js.el less-css-mode.el less-css-mode.less maintaining.texi midnight.el
-  seq.el sequences.texi
+Simen Heggestøyl: wrote asm-mode-tests.el autoinsert-tests.el
+  color-tests.el css-mode-tests.el dom-tests.el makesum-tests.el
+  page-tests.el paren-tests.el ring-tests.el rot13-tests.el sql-tests.el
+and changed css-mode.el css-mode.css json-tests.el json.el sgml-mode.el
+  scss-mode.scss page.el ring.el rot13.el scheme.el sql.el asm-mode.el
+  autoinsert.el color.el files.el js.el less-css-mode.el
+  less-css-mode.less maintaining.texi makesum.el midnight.el
+  and 5 other files
+
+Simona Arizanova: changed help.el
 
 Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el
   mml-sec.el mml-smime.el password-cache.el rfc2104.el sieve-mode.el
@@ -4458,7 +4725,7 @@ and changed message.el gnus-sum.el gnus-art.el 
smtpmail.el pgg-gpg.el
   pgg.el gnus-agent.el mml2015.el mml.el gnus-group.el mm-decode.el
   gnus-msg.el gnus.texi mail/sieve-manage.el pgg-pgp5.el browse-url.el
   gnus-int.el gnus.el hashcash.el mm-view.el password.el
-  and 102 other files
+  and 101 other files
 
 Simon Law: changed delsel.el electric.el
 
@@ -4483,7 +4750,7 @@ Simon Thum: changed ob-maxima.el
 
 Skip Collins: changed w32fns.c w32term.c w32term.h
 
-Slawomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl
+Sławomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl
   flyspell.el ls-lisp.el w32proc.c
 
 Spencer Thomas: changed dabbrev.el emacsclient.c gnus.texi server.el
@@ -4499,20 +4766,29 @@ Stefan Bruda: co-wrote prolog.el
 
 Stefan Guath: changed find-dired.el
 
+Stefan Kangas: wrote bookmark-tests.el delim-col-tests.el morse-tests.el
+  paragraphs-tests.el password-cache-tests.el studly-tests.el
+  tabify-tests.el timezone-tests.el underline-tests.el uudecode-tests.el
+and changed bookmark.el package.el efaq.texi package.texi ibuffer.el
+  mwheel.el cperl-mode.el fns.c gud.el simple.el subr.el autoinsert.el
+  comint-tests.el cus-edit.el delim-col.el dired-aux.el dired-x.el
+  em-term.el ert.texi flow-fill.el frames.texi and 146 other files
+
 Stefan Merten: co-wrote rst.el
 
-Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el
+Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el
   cl-generic-tests.el cl-generic.el cl-preloaded.el cl-print.el cl.el
-  css-mode.el cursor-sensor.el cvs-status.el diff-mode.el gv.el inline.el
-  lisp-tests.el log-edit.el log-view.el minibuffer-tests.el minibuffer.el
-  mpc.el nadvice.el pcase.el pcvs-defs.el pcvs-info.el pcvs-parse.el
-  pcvs-util.el radix-tree.el regexp-opt-tests.el reveal.el smerge-mode.el
-  smie.el subword-tests.el vc-mtn.el
+  css-mode.el cursor-sensor.el cvs-status.el diff-mode.el fileloop.el
+  footnote-tests.el gv.el inline.el lisp-tests.el log-edit.el log-view.el
+  minibuffer-tests.el minibuffer.el mpc.el nadvice.el pcase.el
+  pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el radix-tree.el
+  regexp-opt-tests.el reveal.el smerge-mode.el smie.el subword-tests.el
+  vc-mtn.el
 and co-wrote font-lock.el gitmerge.el pcvs.el
-and changed subr.el simple.el keyboard.c lisp.h bytecomp.el files.el
-  vc.el cl-macs.el xdisp.c alloc.c eval.c sh-script.el
-  progmodes/compile.el keymap.c tex-mode.el newcomment.el buffer.c
-  window.c lisp-mode.el lread.c vc-hooks.el and 1282 other files
+and changed subr.el simple.el keyboard.c bytecomp.el files.el lisp.h
+  cl-macs.el vc.el xdisp.c alloc.c eval.c sh-script.el
+  progmodes/compile.el keymap.c tex-mode.el buffer.c newcomment.el
+  window.c lread.c fileio.c help-fns.el and 1372 other files
 
 Stefano Facchini: changed gtkutil.c
 
@@ -4531,9 +4807,9 @@ Stefan Wiens: changed gnus-sum.el
 Steinar Bang: changed gnus-setup.el imap.el
 
 Štěpán Němec: changed INSTALL calc-ext.el cl.texi comint.el edebug.texi
-  font-lock.el loading.texi maps.texi mark.texi message.texi mini.texi
-  minibuf.texi misc.texi programs.texi subr.el tips.texi url-vars.el
-  url.texi vc-git.el window.c windows.texi
+  font-lock.el functions.texi leim-ext.el loading.texi maps.texi
+  mark.texi message.texi mini.texi minibuf.texi misc.texi programs.texi
+  subr.el tips.texi url-vars.el url.texi vc-git.el and 3 other files
 
 Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi
   ediff-mult.el
@@ -4542,10 +4818,10 @@ Stephen A. Wood: changed fortran.el
 
 Stephen Berman: wrote todo-mode-tests.el
 and co-wrote todo-mode.el
-and changed todo-mode.texi diary-lib.el dired-tests.el doc-view.el
-  files.el minibuffer.el wdired-tests.el dired.el frames.texi hl-line.el
-  info.el menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes
-  TUTORIAL allout.el artist.el compile.texi cus-start.el
+and changed wdired.el todo-mode.texi diary-lib.el wdired-tests.el
+  dired-tests.el doc-view.el files.el minibuffer.el dired.el frames.texi
+  hl-line.el info.el menu-bar.el mouse.el otodo-mode.el subr.el
+  .gitattributes TUTORIAL allout.el artist.el compile.texi
   and 43 other files
 
 Stephen C. Gilardi: changed configure.ac
@@ -4554,24 +4830,25 @@ Stephen Compall: changed saveplace.el texinfo.el
 
 Stephen Eglen: wrote iswitchb.el mspools.el
 and changed diary-lib.el octave.el org-agenda.el locate.el replace.el
-  hexl.el info-look.el sendmail.el spell.el uce.el MORE.STUFF add-log.el
-  advice.el allout.el autoinsert.el avoid.el backquote.el battery.el
-  bib-mode.el bruce.el c-mode.el and 80 other files
+  hexl.el info-look.el sendmail.el spell.el uce.el add-log.el advice.el
+  allout.el autoinsert.el avoid.el backquote.el battery.el bib-mode.el
+  bruce.el c-mode.el ccl.el and 79 other files
 
 Stephen Gildea: wrote refcard.tex
 and co-wrote mh-funcs.el mh-search.el
-and changed time-stamp.el mh-e.el mh-comp.el mh-utils.el mh-customize.el
-  mh-junk.el fileio.c files.el fortran.el mh-e.texi mh-mime.el mwheel.el
-  tex-mode.el
+and changed time-stamp.el time-stamp-tests.el mh-e.el mh-comp.el
+  mh-utils.el mh-junk.el files.el mh-customize.el mh-e.texi mh-show.el
+  backups.texi dns-mode.el fileio.c files.texi fortran.el goto-addr.el
+  mh-mime.el misc.texi mwheel.el tex-mode.el
 
 Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el
 
 Stephen Leake: wrote elisp-mode-tests.el
-and changed ada-mode.el ada-xref.el elisp-mode.el mode-local.el window.el
-  xref.el CONTRIBUTE vc-mtn.el ada-mode.texi ada-prj.el cedet-global.el
-  ede/generic.el ada-stmt.el cl-generic.el ede/locate.el files.texi
-  project.el windows.texi INSTALL.REPO INSTALL.W64 align.el
-  and 21 other files
+and changed ada-mode.el ada-xref.el elisp-mode.el xref.el window.el
+  mode-local.el CONTRIBUTE ada-prj.el project.el vc-mtn.el ada-stmt.el
+  cedet-global.el ede/generic.el simple.el autoload.el bytecomp.el
+  cl-generic.el ede/locate.el files.texi functions.texi package.el
+  and 30 other files
 
 Stephen Pegoraro: changed xterm.c
 
@@ -4583,13 +4860,15 @@ Steve Fisk: co-wrote cal-tex.el
 
 Steve Grubb: changed vcdiff
 
-Steven Allen: changed xdg.el
+Steven Allen: changed em-prompt.el xdg.el
+
+Steven De Herdt: changed vc/vc-bzr.el
 
 Steven E. Harris: changed nnheader.el
 
 Steven Huwig: changed emacs.py progmodes/python.el
 
-Steven L. Baur: wrote footnote.el
+Steven L. Baur: co-wrote footnote.el
 and changed gnus-xmas.el gnus-msg.el add-log.el edebug.el gnus-ems.el
   gnus-start.el gnus-topic.el message.el nnbabyl.el nntp.el webjump.el
 
@@ -4605,6 +4884,8 @@ Steve Nygard: changed unexnext.c
 Steve Purcell: wrote less-css-mode.el
 and changed package.el nnimap.el nsterm.m sql.el
 
+Steve Scott: changed rcirc.el
+
 Steve Strassmann: wrote spook.el
 
 Steve Youngs: changed mh-utils.el mh-xemacs-compat.el mh-customize.el
@@ -4645,9 +4926,10 @@ Svante Carl V. Erichsen: changed cl-indent.el
 Svend Tollak Munkejord: changed deuglify.el
 
 Sven Joachim: changed files.el de-refcard.tex dired-aux.el emacs.1
-  arc-mode.el dired-x.el em-cmpl.el em-hist.el em-ls.el esh-cmd.el
-  esh-ext.el esh-io.el files.texi gnus-news.texi gnus-sum.el gnus.texi
-  help.el make-dist message.el movemail.c mule.texi and 9 other files
+  arc-mode.el dired-x.el doc/misc/gnus.texi em-cmpl.el em-hist.el
+  em-ls.el esh-cmd.el esh-ext.el esh-io.el files.texi gnus-sum.el
+  gnus.texi help.el make-dist message.el movemail.c mule.texi
+  and 9 other files
 
 Sylvain Chouleur: changed gnus-icalendar.el icalendar.el
 
@@ -4679,7 +4961,7 @@ Takai Kousuke: changed ccl.el image/compface.el
 Takeshi Yamada: changed fns.c
 
 Tak Kunihiro: wrote pixel-scroll.el
-and changed frames.texi mouse.el mwheel.el dired.el
+and changed frames.texi mouse.el mwheel.el dired.el ns-win.el
 
 Tao Fang: changed url-http.el
 
@@ -4687,12 +4969,12 @@ Taro Kawagishi: wrote md4.el ntlm.el sasl-ntlm.el
 and changed arc-mode.el
 
 Tassilo Horn: wrote doc-view.el
-and co-wrote org-gnus.el
+and co-wrote ol-gnus.el
 and changed reftex-vars.el tex-mode.el gnus.texi reftex-cite.el
   tsdh-dark-theme.el tsdh-light-theme.el gnus-sum.el file-notify-tests.el
-  reftex.el misc.texi prog-mode.el subword.el image-mode.el lisp-mode.el
-  cc-cmds.el display.texi em-term.el emacsbug.el files.el gnus-art.el
-  nnimap.el and 74 other files
+  reftex.el misc.texi org-gnus.el prog-mode.el subword.el image-mode.el
+  json.el lisp-mode.el cc-cmds.el display.texi em-term.el emacsbug.el
+  files.el and 82 other files
 
 Tatsuya Ichikawa: changed gnus-agent.el gnus-cache.el
 
@@ -4703,8 +4985,8 @@ Ted Phelps: changed mh-search.el mh-e.el mh-folder.el 
mh-junk.el
 
 Ted Wiles: changed org-habit.el
 
-Teemu Likonen: changed dired.el epg.el erc-backend.el gnus-agent.el
-  gnus.texi indent.el message.el
+Teemu Likonen: changed epg.el dired.el epg-config.el erc-backend.el
+  gnus-agent.el gnus.texi indent.el message.el mml-sec.el
 
 Teodor Zlatanov: wrote auth-source.el gnus-registry.el gnus-tests.el
   gnutls-tests.el gnutls.el registry.el spam-report.el
@@ -4712,7 +4994,7 @@ Teodor Zlatanov: wrote auth-source.el gnus-registry.el 
gnus-tests.el
 and changed spam.el gnus.el nnimap.el gnus.texi gnutls.c gnus-sum.el
   auth.texi cfengine.el gnus-sync.el gnus-util.el gnus-start.el netrc.el
   gnutls.h message.el spam-stat.el encrypt.el mail-source.el nnir.el
-  nnmail.el auth-source-tests.el configure.ac and 120 other files
+  nnmail.el auth-source-tests.el configure.ac and 119 other files
 
 Terje Rosten: changed xfns.c version.el xterm.c xterm.h
 
@@ -4741,8 +5023,8 @@ Thien-Thi Nguyen: wrote last-chance.el
 and co-wrote hideshow.el
 and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el
   scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el
-  MORE.STUFF TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el
-  diff-mode.el dired.el and 169 other files
+  TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el diff-mode.el
+  dired.el elisp.texi and 168 other files
 
 Thierry Banel: co-wrote ob-C.el
 and changed calc-arith.el
@@ -4751,14 +5033,14 @@ Thierry Emery: changed kinsoku.el timezone.el 
url-http.el wid-edit.el
 
 Thierry Volpiatto: changed bookmark.el files.el dired-aux.el
   eshell/eshell.el gnus-sum.el keyboard.c net-utils.el package.el
-  tramp.el eldoc.el files.texi image-mode.el info.el man.el pcmpl-gnu.el
-  subr.el woman.el avoid.el commands.texi dired.el doc-view.el
-  and 11 other files
+  tramp.el eldoc.el files.texi image-mode.el info.el man.el minibuffer.el
+  pcmpl-gnu.el subr.el winner.el woman.el avoid.el commands.texi
+  and 15 other files
 
 Thomas Bach: changed wisent/python.el
 
-Thomas Baumann: wrote org-mhe.el
-and co-wrote org-bbdb.el
+Thomas Baumann: wrote ol-mhe.el
+and co-wrote ol-bbdb.el
 
 Thomas Bellman: co-wrote avl-tree.el
 
@@ -4769,9 +5051,10 @@ Thomas Dorner: changed ange-ftp.el
 Thomas Dye: changed org.texi org-bibtex.el ob-R.el org.el
 
 Thomas Fitzsimmons: wrote soap-client.el
-and changed soap-inspect.el ldap.el eudc-vars.el eudc.texi ntlm.el
-  eudc.el eudcb-ldap.el eudc-export.el eudcb-bbdb.el eudcb-ph.el
-  display.texi url-http.el
+and changed soap-inspect.el ldap.el eudc-vars.el eudc.el eudc.texi
+  ntlm.el eudcb-ldap.el eudcb-bbdb.el eudc-bob.el eudc-export.el
+  eudcb-ph.el package.el url-http.el diary-lib.el display.texi
+  eudc-hotlist.el icalendar.el url-auth.el
 
 Thomas Horsley: changed cxux-crt0.s cxux.h cxux7.h emacs.c nh3000.h
   nh4000.h simple.el sysdep.c xterm.c
@@ -4840,20 +5123,23 @@ Tim Van Holder: changed emacsclient.c Makefile.in 
configure.ac
 Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el
   em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el
   register-tests.el rmc-tests.el
-and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el
-  simple.el replace.el ibuffer-tests.el ls-lisp.el diff-mode.el
-  ibuf-macs.el cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el
-  files.el replace-tests.el buff-menu.el cl.texi ediff-init.el
-  and 82 other files
+and changed ibuffer.el ibuf-ext.el dired-tests.el dired.el replace.el
+  dired-aux.el replace-tests.el simple.el ibuf-macs.el subr.el dired.texi
+  ibuffer-tests.el ls-lisp.el diff-mode.el files.el cl-macs.el cl-seq.el
+  dired-x.el ediff-ptch.el em-ls.el buff-menu.el and 95 other files
 
 Titus von der Malsburg: changed simple.el window.el
 
-Tobias Bading: changed progmodes/compile.el
+Tobias Bading: changed gtkutil.c progmodes/compile.el xfns.c
 
 Tobias C. Rittweiler: changed font-lock.el searching.texi sendmail.el
 
+Tobias Gerdin: changed xref.el
+
 Tobias Ringström: changed etags.c
 
+Tobias Zawada: changed wid-edit.el
+
 Toby Allsopp: changed ldap.el eudc.el
 
 Toby Cubitt: co-wrote avl-tree.el
@@ -4877,6 +5163,10 @@ Tom Hageman: changed etags.c
 
 Tom Houlder: wrote mantemp.el
 
+Tom Levy: changed sequences.texi
+
+Tommi Komulainen: changed progmodes/python.el
+
 Tommi Vainikainen: changed gnus-sum.el message.el mml-sec.el
 
 Tomohiko Morioka: co-wrote mm-bodies.el mm-decode.el mm-encode.el
@@ -4902,12 +5192,12 @@ Tom Seddon: changed w32font.c
 
 Tom Tromey: wrote bug-reference.el erc-list.el package-x.el
 and co-wrote package.el tcl.el
-and changed js.el buffer.c lisp.h css-mode.el js-tests.el mhtml-mode.el
-  makefile.el window.c cmds.c files.el keyboard.c keymap.c process.c
-  xfns.c buffer.h bytecode.c callint.c callproc.c composite.c
-  configure.ac dispextern.h and 176 other files
+and changed data.c lisp.h js.el buffer.c data-tests.el alloc.c
+  css-mode.el js-tests.el mhtml-mode.el process.c window.c editfns.c
+  fns.c keyboard.c keymap.c lread.c makefile.el xfns.c bytecode.c cmds.c
+  configure.ac and 206 other files
 
-Tom Willemse: changed elec-pair.el package.el prog-mode.el
+Tom Willemse: changed elec-pair.el package.el perl-mode.el prog-mode.el
   progmodes/python.el simple.el
 
 Toon Claes: changed latin-alt.el
@@ -4930,7 +5220,7 @@ Toshiaki Nomura: changed uxpds.h
 
 Trent W. Buck: changed rcirc.el remember.el rx.el
 
-Trevor Murphy: changed gnus.texi nnimap.el org.el
+Trevor Murphy: changed find-dired.el gnus.texi nnimap.el org.el
 
 Trevor Spiteri: changed progmodes/grep.el
 
@@ -4940,6 +5230,8 @@ Triet Hoai Lai: changed vntelex.el viet-util.el 
vietnamese.el
 
 Troels Nielsen: changed process.c buffer.c progmodes/compile.el window.el
 
+Troy Hinckley: changed progmodes/compile.el
+
 Trung Tran-Duc: changed nntp.el
 
 Tsuchiya Masatoshi: changed gnus-art.el mm-view.el gnus-sum.el
@@ -4975,10 +5267,11 @@ and changed org-gnus.el smime.el
 
 Ulrich Leodolter: changed w32proc.c
 
-Ulrich Müller: changed configure.ac lib-src/Makefile.in src/Makefile.in
-  version.el calc-units.el doctor.el emacs.1 files.el gamegrid.el gud.el
-  server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in XMakeAssoc.c
-  authors.el bytecomp.el case-table.el configure and 39 other files
+Ulrich Müller: changed configure.ac calc-units.el lib-src/Makefile.in
+  src/Makefile.in version.el doctor.el emacs.1 files.el gamegrid.el
+  gud.el server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in
+  XMakeAssoc.c authors.el bytecomp.el case-table.el configure
+  and 39 other files
 
 Ulrich Neumerkel: changed xterm.c
 
@@ -4993,7 +5286,9 @@ Vadim Nasardinov: changed allout.el
 
 Vagn Johansen: changed gnus-cache.el vc-svn.el
 
-Vaidheeswaran C: changed help-mode.el
+Vaidheeswaran C: changed help-mode.el tabulated-list.el
+
+Väinö Järvelä: changed nsfns.m
 
 Valentin Gatien-Baron: changed emacs-module.c
 
@@ -5001,10 +5296,12 @@ Valentin Wüstholz: changed org.el
 
 Valery Alexeev: changed cyril-util.el cyrillic.el
 
+Van L: changed subr.el
+
 Vasilij Schneidermann: changed cus-start.el eww.el cc-mode.el
   debugging.texi display.texi edebug.el emacs-lisp/debug.el eval.c
-  ielm.el os.texi redisplay-testsuite.el shr.el snake.el term.el
-  tetris.el xdisp.c xterm.c
+  ielm.el os.texi profiler.el redisplay-testsuite.el shr.el snake.el
+  term.el tetris.el xdisp.c xterm.c
 
 Vasily Korytov: changed cyrillic.el message.el cperl-mode.el gnus-art.el
   gnus-dired.el gnus-msg.el gnus-util.el mail-source.el
@@ -5013,9 +5310,10 @@ Vasily Korytov: changed cyrillic.el message.el 
cperl-mode.el gnus-art.el
 Vegard Øye: changed viper-init.el
 
 Vibhav Pant: changed bytecomp.el byte-opt.el bytecode.c bytecomp-tests.el
-  esh-mode.el cperl-mode.el disass.el alloc.c browse-url.el category.c
-  emacs-module.c erc-backend.el erc.el eshell.texi fns.c hangul.el
-  image.c lisp.h lread.c print.c profiler.c xterm.c
+  erc.el esh-mode.el cperl-mode.el disass.el erc-backend.el
+  erc-services.el alloc.c browse-url.el category.c emacs-module.c
+  erc-dcc.el eshell.texi fns.c hangul.el image.c lisp.h lread.c
+  and 4 other files
 
 Victor J. Orlikowski: changed erc-dcc.el
 
@@ -5045,8 +5343,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps 
blank-mode.el ps-prin3.ps
   easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el
   ps-print-def.el ps-vars.el
 
-Vitalie Spinu: changed comint.el message.el ob-R.el ob-core.el
-  ob-tangle.el subr.el
+Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el
+  ob-core.el ob-tangle.el subr.el
 
 Vitaly Takmazov: changed emacs-x64.manifest emacs-x86.manifest
 
@@ -5078,7 +5376,7 @@ Warren Lynn: changed tramp-sh.el
 
 Wei-Wei Guo: co-wrote rst.el
 
-Wenjamin Petrenko: changed files-x.el
+Wenjamin Petrenko: changed files-x.el filesets.el
 
 Werner Benger: changed keyboard.c
 
@@ -5097,10 +5395,12 @@ Wes Hardaker: changed gnus-score.el gnus-art.el 
gnus-sum.el gnus-win.el
 
 Wesley Dawson: changed icomplete.el
 
+W. Garrett Mitchener: changed ipa-praat.el
+
 Wieland Hoffmann: changed auth-source.el custom.el
 
-Wilfred Hughes: changed button.el byte-opt.el help.el sh-script.el
-  subr.el vc-git.el
+Wilfred Hughes: changed button.el byte-opt.el css-mode.el find-func.el
+  help-mode.el help.el hexl.el sh-script.el subr.el vc-git.el
 
 Will Glozer: changed macterm.c
 
@@ -5139,12 +5439,16 @@ and changed files.el
 Wim Nieuwenhuizen: changed TUTORIAL.nl
 
 Wlodzimierz Bzyl: co-wrote ogonek.el
-and changed latin-pre.el pl-refcard.tex survival.tex
+and changed pl-refcard.tex
+
+Włodzimierz Bzyl: changed latin-pre.el pl-refcard.tex survival.tex
 
 W. Martin Borgert: changed files.el schemas.xml
 
 Wojciech Gac: changed latin-pre.el quail/cyrillic.el
 
+Wojciech S. Gac: wrote sami.el
+
 Wolfgang Glas: changed unexsgi.c
 
 Wolfgang Jenkner: wrote man-tests.el textprop-tests.el
@@ -5161,7 +5465,7 @@ and changed process.c alloc.c callint.c config.in 
configure.ac data.c
   fns.c lisp-mode.el lisp.h loadup.el lread.c net-utils.el nntp.el
   print.c sort.el
 
-Wolfgang Scherer: changed vc-cvs.el
+Wolfgang Scherer: changed vc-cvs.el vc-dir.el vc-svn.el vc.el pcvs.el
 
 Wolfgang Schnerring: changed emacsclient.c
 
@@ -5175,7 +5479,7 @@ Xavier Maillard: changed gnus-faq.texi gnus-score.el 
mh-utils.el spam.el
 
 Xi Lu: changed etags.c tramp-sh.el
 
-Xu Chunyang: changed gud.el
+Xu Chunyang: changed dom.el eww.el gud.el netrc.el
 
 Xue Fuqiao: changed display.texi emacs-lisp-intro.texi files.texi
   maintaining.texi text.texi windows.texi nonascii.texi frames.texi
@@ -5188,15 +5492,17 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el
 Yair F: changed hebrew.el
 
 Yamamoto Mitsuharu: wrote uvs.el
-and changed macterm.c macfns.c mac-win.el mac.c macterm.h macmenu.c
-  xterm.c macgui.h image.c xdisp.c keyboard.c macselect.c w32term.c
-  src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c macfont.m
-  darwin.h dispnew.c and 97 other files
+and changed macterm.c macfns.c mac-win.el xterm.c mac.c macterm.h image.c
+  macmenu.c macgui.h xdisp.c ftfont.c xfns.c keyboard.c macselect.c
+  ftcrfont.c configure.ac macfont.m w32term.c dispextern.h
+  src/Makefile.in unexmacosx.c and 109 other files
 
 Yann Dirson: changed imenu.el
 
 Yann Hodique: changed ox-publish.el package.el rcirc.el
 
+Yasuhiro Kimura: changed japan-util.el
+
 Yasushi Shoji: changed org-clock.el org.texi ox-ascii.el
 
 Yavor Doganov: changed configure.ac Makefile.in emacs.1 etags.1 make-dist
@@ -5221,6 +5527,8 @@ Yoshinari Nomura: changed ox-html.el ox.el
 Yoshinori Koseki: wrote iimage.el
 and changed fontset.el message.el nnheader.el nnmail.el
 
+Yuan Fu: changed gdb-mi.el
+
 Yuanle Song: changed rng-xsd.el
 
 Yu-ji Hosokawa: changed README.W32
diff --git a/etc/DEBUG b/etc/DEBUG
index a5e6418..7fb7e44 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -739,9 +739,9 @@ stepping, you will see where the loop starts and ends.  
Also, examine
 the data being used in the loop and try to determine why the loop does
 not exit when it should.
 
-On GNU and Unix systems, you can also trying sending Emacs SIGUSR2,
+On GNU and Unix systems, you can also try sending Emacs SIGUSR2,
 which, if 'debug-on-event' has its default value, will cause Emacs to
-attempt to break it out of its current loop and into the Lisp
+attempt to break out of its current loop and enter the Lisp
 debugger.  (See the node "Debugging" in the ELisp manual for the
 details about the Lisp debugger.)  This feature is useful when a
 C-level debugger is not conveniently available.
diff --git a/etc/NEWS b/etc/NEWS
index fcdf6db..47b87af 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -225,8 +225,8 @@ called when the function object is garbage-collected.  Use
 'set_function_finalizer' to set the finalizer and
 'get_function_finalizer' to retrieve it.
 
-** 'file-modes' and 'set-file-modes' now have an optional argument
-specifying whether to follow symbolic links.
+** 'file-modes', 'set-file-modes', and 'set-file-times' now have an
+optional argument specifying whether to follow symbolic links.
 
 ** 'parse-time-string' can now parse ISO 8601 format strings,
 such as "2020-01-15T16:12:21-08:00".
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index e9dfd26..1eff926 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -347,14 +347,18 @@ The default value is 30000, as the previously hard-coded 
threshold.
 +++
 ** The function 'read-passwd' uses "*" as default character to hide passwords.
 
++++
 ** The function 'read-answer' now accepts not only single character
 answers, but also function keys like 'F1', character events such as
 'C-M-h', and control characters like 'C-h'.
 
-** Lexical binding is now used when evaluating interactive Elisp forms.
-More specifically, 'lexical-binding' is now used for 'M-:', '--eval',
-as well as in 'lisp-interaction-mode' and 'ielm-mode', used in the
-"*scratch*" and "*ielm*" buffers.
++++
+** Lexical binding is now used by default when evaluating interactive Elisp.
+More specifically, 'lexical-binding' is now used by default for 'M-:'
+and '--eval' (including in evaluations invoked from 'emacsclient' via
+its '--eval' command-line option), as well as in
+'lisp-interaction-mode' and 'ielm-mode', used in the "*scratch*" and
+"*ielm*" buffers.
 
 ---
 ** The new user option 'tooltip-resize-echo-area' avoids truncating
@@ -489,6 +493,7 @@ matches strings where the pattern appears as a subsequence. 
 Put
 simply, makes "foo" complete to both "barfoo" and "frodo".  Add 'flex'
 to 'completion-styles' or 'completion-category-overrides' to use it.
 
+---
 ** The 'completion-common-part' face is now visible by default.
 
 +++
@@ -555,6 +560,7 @@ mode, they are described in the manual "(emacs) Display".
 ** New user option 'xref-file-name-display' controls the display of
 file names in xref buffers.
 
+---
 ** New user option 'byte-count-to-string-function'.
 It is used for displaying file sizes and disk space in some cases.
 
@@ -586,6 +592,7 @@ The HIST argument of 'read-from-minibuffer' now works 
correctly with
 buffer-local variables.  This means that different buffers can have
 their own separated input history list if desired.
 
++++
 ** 'backup-by-copying-when-privileged-mismatch' applies to file gid, too.
 In addition to checking the file owner uid, Emacs also checks that the
 group gid is not greater than 'backup-by-copying-when-privileged-mismatch';
@@ -739,9 +746,11 @@ non-nil.
 what they're named, and the 'battery-linux-sysfs-regexp' variable has
 been removed.
 
+---
 ** The 'list-processes' command now includes port numbers in the
 network connection information (in addition to the host name).
 
+---
 ** The 'cl' package is now officially deprecated in favor of 'cl-lib'.
 
 ---
@@ -750,51 +759,55 @@ network connection information (in addition to the host 
name).
 *** When called interactively with a prefix arg 'C-u', 'desktop-read'
 now prompts the user for the directory containing the desktop file.
 
-+++
 ** display-line-numbers-mode
 
++++
 *** New faces 'line-number-major-tick' and 'line-number-minor-tick',
 and user options 'display-line-numbers-major-tick' and
 'display-line-numbers-minor-tick' can be used to highlight the line
 numbers of lines multiple of certain numbers.
 
++++
 *** New variable 'display-line-numbers-offset', when non-zero, adds
 an offset to absolute line numbers.
 
-+++
 ** winner
 
++++
 *** A new user option, 'winner-boring-buffers-regexp', has been added.
 
 ** table
 
-*** 'table-generate-source' and friends now support outputting wiki and
-mediawiki format tables.
++++
+*** 'table-generate-source' now supports wiki and mediawiki
+This command can now output wiki and mediawiki format tables.
 
----
 ** telnet-mode
 
+---
 *** Reverting a buffer in 'telnet-mode' will restart a closed connection.
 
 ** goto-addr
 
+---
 *** A way to more conveniently specify what URI address schemes should
 be ignored has been added via the 'goto-address-uri-schemes-ignored'
 variable.
 
-+++
 ** tex-mode
 
++++
 *** 'latex-noindent-commands' controls indentation of certain commands.
 You can use this new user option to control indentation of arguments of
 \emph, \footnote, and similar commands.
 
 ** byte compiler
 
++++
 *** 'byte-compile-dynamic' is now obsolete.
 This is because on the one hand it suffers from misbehavior in corner
-cases that have plagued it for years, and on the other experiments indicated
-that it doesn't bring any measurable benefit.
+cases that have plagued it for years, and on the other hand experience
+indicates that it doesn't bring any measurable benefit.
 
 ---
 *** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a
@@ -832,15 +845,19 @@ its functions.
 
 ** doc-view.el
 
+---
 *** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.
 
+---
 *** Added support for password-protected PDF files.
 
+---
 *** A new user option 'doc-view-pdftotext-program-args' has been added
 to allow controlling how the conversion to text is done.
 
 ** Ido
 
+---
 *** New user option 'ido-big-directories' to mark directories whose
 names match certain regular expressions as big.  Ido won't attempt to
 list the contents of such directories when completing file names.
@@ -871,6 +888,7 @@ at the end of the active minibuffer.
 *** Some commands that previously used 'read-char-choice' now read
 a character using the minibuffer by 'read-char-from-minibuffer'.
 
+---
 ** map.el
 
 *** Now also understands plists.
@@ -882,6 +900,7 @@ a character using the minibuffer by 
'read-char-from-minibuffer'.
 +++
 *** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'.
 
+---
 ** seq.el
 New convenience functions 'seq-first' and 'seq-rest' give easy access
 to respectively the first and all but the first elements of sequences.
@@ -941,6 +960,7 @@ functions 'windmove-coord-add', 
'windmove-constrain-to-range',
 'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement',
 'windmove-reference-loc' and 'windmove-other-window-loc'.
 
+---
 ** Octave mode
 The mode is automatically enabled in files that start with the
 'function' keyword.
@@ -1103,9 +1123,11 @@ for a revision.
 *** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions
 and compares their entire trees.
 
+---
 *** New user option 'vc-hg-revert-switches'.
 It specifies switches to pass to Hg's 'revert' command.
 
+---
 *** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase')
 print diffs and logs between the merge base (common ancestor) of two
 given revisions.
@@ -1475,9 +1497,9 @@ strings and report all the spelling mistakes.
 +++
 *** New minor mode Fido mode.
 This mode is based on Icomplete, and its name stands for "Fake Ido".
-The point of this mode is to be an 'ido-mode' workalike, but provide
-most of the functionality present in Icomplete that is not in
-'ido-mode', while being much more compatible with all of Emacs's
+The point of this mode is to be an 'ido-mode' workalike, providing
+most of the functionality present in 'ido-mode' that is not in
+Icomplete, which is much more compatible with all of Emacs's
 completion facilities.
 
 ** Ecomplete
@@ -1809,7 +1831,6 @@ keyboard macros.
 'isearch-yank-symbol-or-char'.  'isearch-del-char' is now bound to
 'C-M-d'.
 
-+++
 'M-s h l' invokes 'highlight-lines-matching-regexp' using the search
 string to highlight lines matching the search string.  This is similar
 to the existing binding 'M-s h r' ('highlight-regexp') that highlights
@@ -1964,6 +1985,7 @@ This is useful for games where lower scores are better, 
like time-based games.
 *** Completing file names in the minibuffer via 'C-TAB' now uses the
 styles as configured by the user option 'completion-styles'.
 
++++
 ** New macros 'thunk-let' and 'thunk-let*'.
 These macros are analogue to 'let' and 'let*', but create bindings that
 are evaluated lazily.
@@ -2187,8 +2209,9 @@ are formatted as MIME digests.
 *** 'message-forward-included-headers' has changed its default to
 exclude most headers when forwarding.
 
+---
 *** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender".
-When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's
+When 'mml-secure-openpgp-sign-with-sender' is non-nil, message sender's
 email address (in addition to its old behavior) will also be used to
 set gpg's "--sender email@domain" option.
 
@@ -2323,7 +2346,16 @@ With 'or' and 'not', it can be used to compose 
character-matching
 expressions from simpler parts.
 
 +++
-*** 'not' argument can now be a character or single-char string.
+*** 'not' now accepts more argument types.
+The argument can now also be a character, a single-character string,
+an 'intersection' form, or an 'or' form whose arguments each match a
+single character.
+
++++
+*** Nested 'or' forms of strings guarantee a longest match.
+For example, '(or (or "IN" "OUT") (or "INPUT" "OUTPUT"))' now matches
+the whole string "INPUT" if present, not just "IN".  Previously, this
+was only guaranteed inside a single 'or' form of string literals.
 
 ** Frames
 
@@ -2631,6 +2663,7 @@ overrides all system and Emacs-provided defaults.  To get 
the old
 method back, set 'mailcap-prefer-mailcap-viewers' to nil.
 
 ** MH-E
+
 +++
 *** The hook 'mh-show-mode-hook' is now called before the message is inserted.
 Functions that want to affect the message text (for example, to change
@@ -3075,6 +3108,7 @@ with POSIX.1-2017.
 'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone'
 accessors can be used.
 
++++
 *** The new functions 'date-days-in-month' (which will say how many
 days there are in a month in a specific year), 'date-ordinal-to-time'
 (that computes the date of an ordinal day), 'decoded-time-add' (for
@@ -3134,6 +3168,7 @@ throughput of reading from sub-processes that produces 
vast
 ** The new user option 'quit-window-hook' is now run first when
 executing the 'quit-window' command.
 
++++
 ** The user options 'help-enable-completion-auto-load',
 'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the
 function 'vhdl-auto-load-project' have been renamed to have "autoload"
@@ -3614,15 +3649,18 @@ signal 'user-error' if there is no buffer to switch to.
 ** Battery status is now supported in all Cygwin builds.
 Previously it was supported only in the Cygwin-w32 build.
 
+---
 ** Emacs now handles key combinations involving the macOS "command"
 and "option" modifier keys more correctly.
 
++++
 ** MacOS modifier key behavior is now more adjustable.
 The behavior of the macOS "Option", "Command", "Control" and
 "Function" keys can now be specified separately for use with
 ordinary keys, function keys and mouse clicks.  This allows using them
 in their standard macOS way for composing characters.
 
++++
 ** The special handling of 'frame-title-format' on NS where setting it
 to t would enable the macOS proxy icon has been replaced with a
 separate variable, 'ns-use-proxy-icon'.  'frame-title-format' will now
@@ -3673,6 +3711,7 @@ modifier keys in line with Apples guidelines.  This makes 
the drag and
 drop behavior more consistent, as previously the sending application
 was able to 'set' modifiers without the knowledge of the user.
 
+---
 ** On NS multicolor font display is enabled again since it is also
 implemented in Emacs on free operating systems via Cairo drawing.
 
diff --git a/etc/TODO b/etc/TODO
index 0a06484..20262a7 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -244,6 +244,23 @@ populate composition-function-table with those rules.  See
 composite.el for examples of this, and also grep lisp/language/*.el
 for references to composition-function-table.
 
+One problem with character compositions that will need to be solved is
+that composition-function-table, the char-table which holds the
+composition rules, is a global variable, whereas use of ligatures is
+inherently specific to buffer-local stuff like the major mode and the
+script or language in use.  So there should be a buffer-local variable
+to augment/customize/override the global composition rules.
+
+Another problem is that ligatures are frequently composed of ASCII
+characters, and some of those ASCII characters are present in the mode
+line, for example "--".  Since displaying a ligature instead of 2
+separate '-' characters on a mode line is not right, there should be a
+way of preventing the ligation from happening.  One possibility is to
+have a ZWNJ character separate these ASCII characters; another
+possibility is to introduce a special text property that prevents
+character composition, and place that property on the relevant parts
+of the mode line.
+
 The prettify-symbols-mode should be deprecated once ligature support
 is in place.
 
@@ -267,6 +284,60 @@ should invoke the 'shape' method.  'hbfont_shape' should 
be extended
 to pass to 'hb_shape_full' the required array of features, as
 mentioned in the above HarfBuzz discussion.
 
+** Better support for displaying Emoji
+
+Emacs is capable of displaying Emoji and some of the Emoji sequences,
+provided that its fontsets are configured with a suitable font.  To
+make this easier out of the box, the following should be done:
+
+*** Populate composition-function-table with Emoji rules
+
+The Unicode Character Database (UCD) includes several data files that
+define the valid Emoji sequences.  These files should be imported into
+the Emacs tree, and should be converted by some script at Emacs build
+time to Lisp code that populates composition-function-table with the
+corresponding composition rules.
+
+*** Augment the default fontsets with Emoji-capable fonts
+
+The default fontsets set up by fontest.el should include known free
+fonts that provide good support for displaying Emoji sequences.  In
+addition, the rule that the default face's font is used for symbol and
+punctuation characters, disregarding the fontsets, should be modified
+to exempt Emoji from this rule (since Emoji characters belong to the
+'symbol' script in Emacs), so that use-default-font-for-symbols would
+not have to be tweaked to have Emoji display by default with a capable
+font.
+
+*** Consider changing the default display of Variation Selectors
+
+Emacs by default displays the Variation Selector (VS) codepoints not
+composed with base characters as hex codes in a box.  The Unicode FAQ
+says that if variation sequences cannot be supported, the VS
+characters should not be shown, leaving just the base character of the
+sequence visible.  This could be handled via glyphless-char-display,
+by changing the entries for VS codepoints to 'zero-width'.  Or we
+could display them as a thin 1-pixel space, as we do with format
+control characters, by using 'thin-space' there.
+
+*** Special face for displaying text presentation of Emoji
+
+Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION
+SELECTOR-16 (VS16) for emoji-style display, but usually don't support
+the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display.  There
+are other fonts which support the text-style sequences, but not
+emoji-style.  Since Emacs selects a font based on a single character,
+it cannot choose 2 different fonts for displaying both styles of the
+same base character.  To display both styles in the same buffer, one
+could use a special face, placing a 'face' text property on portions
+of the text.  This special face could specify a specific font known to
+support text-style Emoji sequences.  Emacs could have such a face
+built-in.
+
+See the discussion of bug#39799 for more details about this task.
+Another relevant resource is the Unicode Technical Standard #51
+"Unicode Emoji" (http://www.unicode.org/reports/tr51/).
+
 ** Extend text-properties and overlays
 *** Several text-property planes
 This would get us rid of font-lock-face property (and I'd be happy to
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 174c33a..eee2c59 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -124,6 +124,7 @@ University of California, as described above. */
 #include <binary-io.h>
 #include <intprops.h>
 #include <unlocked-io.h>
+#include <verify.h>
 #include <c-ctype.h>
 #include <c-strcase.h>
 
@@ -7310,6 +7311,8 @@ static void *
 xnmalloc (ptrdiff_t nitems, ptrdiff_t item_size)
 {
   ptrdiff_t nbytes;
+  assume (0 <= nitems);
+  assume (0 < item_size);
   if (INT_MULTIPLY_WRAPV (nitems, item_size, &nbytes))
     memory_full ();
   return xmalloc (nbytes);
@@ -7319,6 +7322,8 @@ static void *
 xnrealloc (void *pa, ptrdiff_t nitems, ptrdiff_t item_size)
 {
   ptrdiff_t nbytes;
+  assume (0 <= nitems);
+  assume (0 < item_size);
   if (INT_MULTIPLY_WRAPV (nitems, item_size, &nbytes) || SIZE_MAX < nbytes)
     memory_full ();
   void *result = realloc (pa, nbytes);
diff --git a/lib/futimens.c b/lib/futimens.c
new file mode 100644
index 0000000..83fb27c
--- /dev/null
+++ b/lib/futimens.c
@@ -0,0 +1,37 @@
+/* Set the access and modification time of an open fd.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include "utimens.h"
+
+/* Set the access and modification timestamps of FD to be
+   TIMESPEC[0] and TIMESPEC[1], respectively.
+   Fail with ENOSYS on systems without futimes (or equivalent).
+   If TIMESPEC is null, set the timestamps to the current time.
+   Return 0 on success, -1 (setting errno) on failure.  */
+int
+futimens (int fd, struct timespec const times[2])
+{
+  /* fdutimens also works around bugs in native futimens, when running
+     with glibc compiled against newer headers but on a Linux kernel
+     older than 2.6.32.  */
+  return fdutimens (fd, NULL, times);
+}
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index d4dc6a3..e90d2e3 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -106,6 +106,7 @@
 #  fstatat \
 #  fsusage \
 #  fsync \
+#  futimens \
 #  getloadavg \
 #  getopt-gnu \
 #  gettime \
@@ -155,7 +156,7 @@
 #  timespec-sub \
 #  unlocked-io \
 #  update-copyright \
-#  utimens \
+#  utimensat \
 #  vla \
 #  warnings
 
@@ -1087,6 +1088,7 @@ gl_GNULIB_ENABLED_lchmod = @gl_GNULIB_ENABLED_lchmod@
 gl_GNULIB_ENABLED_malloca = @gl_GNULIB_ENABLED_malloca@
 gl_GNULIB_ENABLED_open = @gl_GNULIB_ENABLED_open@
 gl_GNULIB_ENABLED_strtoll = @gl_GNULIB_ENABLED_strtoll@
+gl_GNULIB_ENABLED_utimens = @gl_GNULIB_ENABLED_utimens@
 gl_LIBOBJS = @gl_LIBOBJS@
 gl_LTLIBOBJS = @gl_LTLIBOBJS@
 gltests_LIBOBJS = @gltests_LIBOBJS@
@@ -1733,6 +1735,17 @@ EXTRA_libgnu_a_SOURCES += fsync.c
 endif
 ## end   gnulib module fsync
 
+## begin gnulib module futimens
+ifeq (,$(OMIT_GNULIB_MODULE_futimens))
+
+
+EXTRA_DIST += futimens.c
+
+EXTRA_libgnu_a_SOURCES += futimens.c
+
+endif
+## end   gnulib module futimens
+
 ## begin gnulib module getdtablesize
 ifeq (,$(OMIT_GNULIB_MODULE_getdtablesize))
 
@@ -3375,13 +3388,26 @@ endif
 ## begin gnulib module utimens
 ifeq (,$(OMIT_GNULIB_MODULE_utimens))
 
+ifneq (,$(gl_GNULIB_ENABLED_utimens))
 libgnu_a_SOURCES += utimens.c
 
+endif
 EXTRA_DIST += utimens.h
 
 endif
 ## end   gnulib module utimens
 
+## begin gnulib module utimensat
+ifeq (,$(OMIT_GNULIB_MODULE_utimensat))
+
+
+EXTRA_DIST += at-func.c utimensat.c
+
+EXTRA_libgnu_a_SOURCES += at-func.c utimensat.c
+
+endif
+## end   gnulib module utimensat
+
 ## begin gnulib module verify
 ifeq (,$(OMIT_GNULIB_MODULE_verify))
 
diff --git a/lib/open.c b/lib/open.c
index 487194f..bb180fd 100644
--- a/lib/open.c
+++ b/lib/open.c
@@ -110,7 +110,9 @@ open (const char *filename, int flags, ...)
          directories,
        - if O_WRONLY or O_RDWR is specified, open() must fail because the
          file does not contain a '.' directory.  */
-  if (flags & (O_CREAT | O_WRONLY | O_RDWR))
+  if ((flags & O_CREAT)
+      || (flags & O_ACCMODE) == O_RDWR
+      || (flags & O_ACCMODE) == O_WRONLY)
     {
       size_t len = strlen (filename);
       if (len > 0 && filename[len - 1] == '/')
diff --git a/lib/utimensat.c b/lib/utimensat.c
new file mode 100644
index 0000000..63788d5
--- /dev/null
+++ b/lib/utimensat.c
@@ -0,0 +1,160 @@
+/* Set the access and modification time of a file relative to directory fd.
+   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* written by Eric Blake */
+
+#include <config.h>
+
+/* Specification.  */
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+
+#include "stat-time.h"
+#include "timespec.h"
+#include "utimens.h"
+
+#if HAVE_UTIMENSAT
+
+# undef utimensat
+
+/* If we have a native utimensat, but are compiling this file, then
+   utimensat was defined to rpl_utimensat by our replacement
+   sys/stat.h.  We assume the native version might fail with ENOSYS,
+   or succeed without properly affecting ctime (as is the case when
+   using newer glibc but older Linux kernel).  In this scenario,
+   rpl_utimensat checks whether the native version is usable, and
+   local_utimensat provides the fallback manipulation.  */
+
+static int local_utimensat (int, char const *, struct timespec const[2], int);
+# define AT_FUNC_NAME local_utimensat
+
+/* Like utimensat, but work around native bugs.  */
+
+int
+rpl_utimensat (int fd, char const *file, struct timespec const times[2],
+               int flag)
+{
+# if defined __linux__ || defined __sun
+  struct timespec ts[2];
+# endif
+
+  /* See comments in utimens.c for details.  */
+  static int utimensat_works_really; /* 0 = unknown, 1 = yes, -1 = no.  */
+  if (0 <= utimensat_works_really)
+    {
+      int result;
+# if defined __linux__ || defined __sun
+      struct stat st;
+      /* As recently as Linux kernel 2.6.32 (Dec 2009), several file
+         systems (xfs, ntfs-3g) have bugs with a single UTIME_OMIT,
+         but work if both times are either explicitly specified or
+         UTIME_NOW.  Work around it with a preparatory [l]stat prior
+         to calling utimensat; fortunately, there is not much timing
+         impact due to the extra syscall even on file systems where
+         UTIME_OMIT would have worked.
+
+         The same bug occurs in Solaris 11.1 (Apr 2013).
+
+         FIXME: Simplify this in 2024, when these file system bugs are
+         no longer common on Gnulib target platforms.  */
+      if (times && (times[0].tv_nsec == UTIME_OMIT
+                    || times[1].tv_nsec == UTIME_OMIT))
+        {
+          if (fstatat (fd, file, &st, flag))
+            return -1;
+          if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT)
+            return 0;
+          if (times[0].tv_nsec == UTIME_OMIT)
+            ts[0] = get_stat_atime (&st);
+          else
+            ts[0] = times[0];
+          if (times[1].tv_nsec == UTIME_OMIT)
+            ts[1] = get_stat_mtime (&st);
+          else
+            ts[1] = times[1];
+          times = ts;
+        }
+#  ifdef __hppa__
+      /* Linux kernel 2.6.22.19 on hppa does not reject invalid tv_nsec
+         values.  */
+      else if (times
+               && ((times[0].tv_nsec != UTIME_NOW
+                    && ! (0 <= times[0].tv_nsec
+                          && times[0].tv_nsec < TIMESPEC_HZ))
+                   || (times[1].tv_nsec != UTIME_NOW
+                       && ! (0 <= times[1].tv_nsec
+                             && times[1].tv_nsec < TIMESPEC_HZ))))
+        {
+          errno = EINVAL;
+          return -1;
+        }
+#  endif
+# endif
+      result = utimensat (fd, file, times, flag);
+      /* Linux kernel 2.6.25 has a bug where it returns EINVAL for
+         UTIME_NOW or UTIME_OMIT with non-zero tv_sec, which
+         local_utimensat works around.  Meanwhile, EINVAL for a bad
+         flag is indeterminate whether the native utimensat works, but
+         local_utimensat will also reject it.  */
+      if (result == -1 && errno == EINVAL && (flag & ~AT_SYMLINK_NOFOLLOW))
+        return result;
+      if (result == 0 || (errno != ENOSYS && errno != EINVAL))
+        {
+          utimensat_works_really = 1;
+          return result;
+        }
+    }
+  /* No point in trying openat/futimens, since on Linux, futimens is
+     implemented with the same syscall as utimensat.  Only avoid the
+     native utimensat due to an ENOSYS failure; an EINVAL error was
+     data-dependent, and the next caller may pass valid data.  */
+  if (0 <= utimensat_works_really && errno == ENOSYS)
+    utimensat_works_really = -1;
+  return local_utimensat (fd, file, times, flag);
+}
+
+#else /* !HAVE_UTIMENSAT */
+
+# define AT_FUNC_NAME utimensat
+
+#endif /* !HAVE_UTIMENSAT */
+
+/* Set the access and modification timestamps of FILE to be
+   TIMESPEC[0] and TIMESPEC[1], respectively; relative to directory
+   FD.  If flag is AT_SYMLINK_NOFOLLOW, change the times of a symlink,
+   or fail with ENOSYS if not possible.  If TIMESPEC is null, set the
+   timestamps to the current time.  If possible, do it without
+   changing the working directory.  Otherwise, resort to using
+   save_cwd/fchdir, then utimens/restore_cwd.  If either the save_cwd
+   or the restore_cwd fails, then give a diagnostic and exit nonzero.
+   Return 0 on success, -1 (setting errno) on failure.  */
+
+/* AT_FUNC_NAME is now utimensat or local_utimensat.  */
+#define AT_FUNC_F1 lutimens
+#define AT_FUNC_F2 utimens
+#define AT_FUNC_USE_F1_COND AT_SYMLINK_NOFOLLOW
+#define AT_FUNC_POST_FILE_PARAM_DECLS , struct timespec const ts[2], int flag
+#define AT_FUNC_POST_FILE_ARGS        , ts
+#include "at-func.c"
+#undef AT_FUNC_NAME
+#undef AT_FUNC_F1
+#undef AT_FUNC_F2
+#undef AT_FUNC_USE_F1_COND
+#undef AT_FUNC_POST_FILE_PARAM_DECLS
+#undef AT_FUNC_POST_FILE_ARGS
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 5713a7b..16243e1 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -181,6 +181,7 @@ Optional argument FACE specifies the face to do the 
highlighting."
   (overlay-put o 'original-face (overlay-get o 'face))
   ;; Make this overlay take priority over the `transient-mark-mode'
   ;; overlay.
+  (overlay-put o 'original-priority (overlay-get o 'priority))
   (overlay-put o 'priority 1)
   (setq pulse-momentary-overlay o)
   (if (eq pulse-flag 'never)
@@ -214,6 +215,7 @@ Optional argument FACE specifies the face to do the 
highlighting."
     (let ((ol pulse-momentary-overlay))
       (overlay-put ol 'face (overlay-get ol 'original-face))
       (overlay-put ol 'original-face nil)
+      (overlay-put ol 'priority (overlay-get ol 'original-priority))
       ;; Clear the overlay if it needs deleting.
       (when (overlay-get ol 'pulse-delete) (delete-overlay ol)))
 
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 72c6fc7..fe5616b 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2171,50 +2171,9 @@ With argument ARG, insert value in current buffer after 
the form."
        ;; Make warnings about unresolved functions
        ;; give the end of the file as their position.
        (setq byte-compile-last-position (point-max))
-       (byte-compile-warn-about-unresolved-functions))
-      ;; Fix up the header at the front of the output
-      ;; if the buffer contains multibyte characters.
-      (and byte-compile-current-file
-          (with-current-buffer byte-compile--outbuffer
-            (byte-compile-fix-header byte-compile-current-file))))
+       (byte-compile-warn-about-unresolved-functions)))
      byte-compile--outbuffer)))
 
-(defun byte-compile-fix-header (_filename)
-  "If the current buffer has any multibyte characters, insert a version test."
-  (when (< (point-max) (position-bytes (point-max)))
-    (goto-char (point-min))
-    ;; Find the comment that describes the version condition.
-    (when (search-forward "\n;;; This file does not contain utf-8" nil t)
-      (narrow-to-region (line-beginning-position) (point-max))
-      ;; Find the first line of ballast semicolons.
-      (search-forward ";;;;;;;;;;")
-      (beginning-of-line)
-      (narrow-to-region (point-min) (point))
-      (let ((old-header-end (point))
-           (minimum-version "23")
-           delta)
-        (delete-region (point-min) (point-max))
-        (insert
-         ";;; This file contains utf-8 non-ASCII characters,\n"
-         ";;; and so cannot be loaded into Emacs 22 or earlier.\n"
-         ;; Have to check if emacs-version is bound so that this works
-         ;; in files loaded early in loadup.el.
-         "(and (boundp 'emacs-version)\n"
-         ;; If there is a name at the end of emacs-version,
-         ;; don't try to check the version number.
-         "     (< (aref emacs-version (1- (length emacs-version))) ?A)\n"
-         (format "     (string-lessp emacs-version \"%s\")\n" minimum-version)
-         ;; Because the header must fit in a fixed width, we cannot
-         ;; insert arbitrary-length file names (Bug#11585).
-         "     (error \"`%s' was compiled for "
-         (format "Emacs %s or later\" #$))\n\n" minimum-version))
-        ;; Now compensate for any change in size, to make sure all
-        ;; positions in the file remain valid.
-        (setq delta (- (point-max) old-header-end))
-        (goto-char (point-max))
-        (widen)
-        (delete-char delta)))))
-
 (defun byte-compile-insert-header (_filename outbuffer)
   "Insert a header at the start of OUTBUFFER.
 Call from the source buffer."
@@ -2232,7 +2191,19 @@ Call from the source buffer."
       ;; 0     string          ;ELC            GNU Emacs Lisp compiled file,
       ;; >4    byte            x               version %d
       (insert
-       ";ELC" 23 "\000\000\000\n"
+       ";ELC"
+       (let ((version
+              (if (zerop emacs-minor-version)
+                  ;; Let's allow silently loading into Emacs-27
+                  ;; files compiled with Emacs-28.0.NN since the two can
+                  ;; be almost identical (e.g. right after cutting the
+                  ;; release branch) and people running the development
+                  ;; branch can be presumed to know that it's risky anyway.
+                  (1- emacs-major-version) emacs-major-version)))
+         ;; Make sure the version is a plain byte that doesn't end the comment!
+         (cl-assert (and (> version 13) (< version 128)))
+         version)
+       "\000\000\000\n"
        ";;; Compiled\n"
        ";;; in Emacs version " emacs-version "\n"
        ";;; with"
@@ -2244,16 +2215,7 @@ Call from the source buffer."
        ".\n"
        (if dynamic ";;; Function definitions are lazy-loaded.\n"
         "")
-       "\n"
-       ;; Note that byte-compile-fix-header may change this.
-       ";;; This file does not contain utf-8 non-ASCII characters,\n"
-       ";;; and so can be loaded in Emacs versions earlier than 23.\n\n"
-       ;; Insert semicolons as ballast, so that byte-compile-fix-header
-       ;; can delete them so as to keep the buffer positions
-       ;; constant for the actual compiled code.
-       ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
-       ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n"
-       
";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\n"))))
+       "\n\n"))))
 
 (defun byte-compile-output-file-form (form)
   ;; Write the given form to the output buffer, being careful of docstrings
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index ccdddb4..fa5d1cf 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -168,7 +168,7 @@
 ;;     not specifically docstring related.  Would this even be useful?
 
 ;;; Code:
-(defvar checkdoc-version "0.6.1"
+(defvar checkdoc-version "0.6.2"
   "Release version of checkdoc you are currently running.")
 
 (require 'cl-lib)
@@ -2073,7 +2073,7 @@ If the offending word is in a piece of quoted text, then 
it is skipped."
                                     ;; piece of an abbreviation
                                     ;; FIXME etc
                                     (looking-at
-                                     
"\\([a-zA-Z]\\|[iI]\\.?e\\|[eE]\\.?g\\)\\."))
+                                     
"\\([a-zA-Z]\\|[iI]\\.?e\\|[eE]\\.?g\\|[cC]f\\)\\."))
                                 (error t))))
                   (if (checkdoc-autofix-ask-replace
                        b e
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index e3dabdf..e9bfe8d 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -556,11 +556,7 @@ too large if positive or too small if negative)."
 (defun cl-concatenate (type &rest sequences)
   "Concatenate, into a sequence of type TYPE, the argument SEQUENCEs.
 \n(fn TYPE SEQUENCE...)"
-  (pcase type
-    ('vector (apply #'vconcat sequences))
-    ('string (apply #'concat sequences))
-    ('list (apply #'append (append sequences '(nil))))
-    (_ (error "Not a sequence type name: %S" type))))
+  (seq-concatenate type sequences))
 
 ;;; List functions.
 
diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el
index 7728e78..d50f7ad 100644
--- a/lisp/emacs-lisp/cursor-sensor.el
+++ b/lisp/emacs-lisp/cursor-sensor.el
@@ -141,61 +141,63 @@ By convention, this is a list of symbols where each 
symbol stands for the
 ;;; Detect cursor movement.
 
 (defun cursor-sensor--detect (&optional window)
-  (unless cursor-sensor-inhibit
-    (let* ((point (window-point window))
-           ;; It's often desirable to make the cursor-sensor-functions property
-           ;; non-sticky on both ends, but that means get-pos-property might
-           ;; never see it.
-           (new (and (eq (current-buffer) (window-buffer))
-                     (or (get-char-property point 'cursor-sensor-functions)
-                         (unless (<= (point-min) point)
-                           (get-char-property (1- point) 
'cursor-sensor-functions)))))
-           (old (window-parameter window 'cursor-sensor--last-state))
-           (oldposmark (car old))
-           (oldpos (or (if oldposmark (marker-position oldposmark))
-                       (point-min)))
-           (start (min oldpos point))
-           (end (max oldpos point)))
-      (unless (or (null old) (eq (marker-buffer oldposmark) (current-buffer)))
-        ;; `window' does not display the same buffer any more!
-        (setcdr old nil))
-      (if (or (and (null new) (null (cdr old)))
-              (and (eq new (cdr old))
-                   (eq (next-single-char-property-change
-                        start 'cursor-sensor-functions nil end)
-                       end)))
-          ;; Clearly nothing to do.
-          nil
-        ;; Maybe something to do.  Let's see exactly what needs to run.
-        (let* ((missing-p
-                (lambda (f)
-                  "Non-nil if F is missing somewhere between START and END."
-                  (let ((pos start)
-                        (missing nil))
-                    (while (< pos end)
-                      (setq pos (next-single-char-property-change
-                                 pos 'cursor-sensor-functions
-                                 nil end))
-                      (unless (memq f (get-char-property
-                                       pos 'cursor-sensor-functions))
-                        (setq missing t)))
-                    missing)))
-               (window (selected-window)))
-          (dolist (f (cdr old))
-            (unless (and (memq f new) (not (funcall missing-p f)))
-              (funcall f window oldpos 'left)))
-          (dolist (f new)
-            (unless (and (memq f (cdr old)) (not (funcall missing-p f)))
-              (funcall f window oldpos 'entered)))))
-
-      ;; Remember current state for next time.
-      ;; Re-read cursor-sensor-functions since the functions may have moved
-      ;; window-point!
-      (if old
-          (progn (move-marker (car old) point)
-                 (setcdr old new))
-        (set-window-parameter window 'cursor-sensor--last-state
-                              (cons (copy-marker point) new))))))
+  (with-current-buffer (window-buffer window)
+    (unless cursor-sensor-inhibit
+      (let* ((point (window-point window))
+             ;; It's often desirable to make the
+             ;; cursor-sensor-functions property non-sticky on both
+             ;; ends, but that means get-pos-property might never
+             ;; see it.
+             (new (or (get-char-property point 'cursor-sensor-functions)
+                      (unless (<= (point-min) point)
+                        (get-char-property (1- point)
+                                           'cursor-sensor-functions))))
+             (old (window-parameter window 'cursor-sensor--last-state))
+             (oldposmark (car old))
+             (oldpos (or (if oldposmark (marker-position oldposmark))
+                         (point-min)))
+             (start (min oldpos point))
+             (end (max oldpos point)))
+        (unless (or (null old) (eq (marker-buffer oldposmark) 
(current-buffer)))
+          ;; `window' does not display the same buffer any more!
+          (setcdr old nil))
+        (if (or (and (null new) (null (cdr old)))
+                (and (eq new (cdr old))
+                     (eq (next-single-char-property-change
+                          start 'cursor-sensor-functions nil end)
+                         end)))
+            ;; Clearly nothing to do.
+            nil
+          ;; Maybe something to do.  Let's see exactly what needs to run.
+          (let* ((missing-p
+                  (lambda (f)
+                    "Non-nil if F is missing somewhere between START and END."
+                    (let ((pos start)
+                          (missing nil))
+                      (while (< pos end)
+                        (setq pos (next-single-char-property-change
+                                   pos 'cursor-sensor-functions
+                                   nil end))
+                        (unless (memq f (get-char-property
+                                         pos 'cursor-sensor-functions))
+                          (setq missing t)))
+                      missing)))
+                 (window (selected-window)))
+            (dolist (f (cdr old))
+              (unless (and (memq f new) (not (funcall missing-p f)))
+                (funcall f window oldpos 'left)))
+            (dolist (f new)
+              (unless (and (memq f (cdr old)) (not (funcall missing-p f)))
+                (funcall f window oldpos 'entered)))))
+
+        ;; Remember current state for next time.
+        ;; Re-read cursor-sensor-functions since the functions may have moved
+        ;; window-point!
+        (if old
+            (progn (move-marker (car old) point)
+                   (setcdr old new))
+          (set-window-parameter window 'cursor-sensor--last-state
+                                (cons (copy-marker point) new)))))))
 
 ;;;###autoload
 (define-minor-mode cursor-sensor-mode
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index b4cab57..aa4b2ad 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -134,7 +134,7 @@ Each entry is:
                 (if (cdr def)
                     (error "Not an `rx' symbol definition: %s" form)
                   (car def)))))
-        ((consp form)
+        ((and (consp form) (symbolp (car form)))
          (let* ((op (car form))
                 (def (rx--lookup-def op)))
            (and def
@@ -254,22 +254,39 @@ Left-fold the list L, starting with X, by the binary 
function F."
     (setq l (cdr l)))
   x)
 
+(defun rx--normalise-or-arg (form)
+  "Normalise the `or' argument FORM.
+Characters become strings, user-definitions and `eval' forms are expanded,
+and `or' forms are normalised recursively."
+  (cond ((characterp form)
+         (char-to-string form))
+        ((and (consp form) (memq (car form) '(or |)))
+         (cons (car form) (mapcar #'rx--normalise-or-arg (cdr form))))
+        ((and (consp form) (eq (car form) 'eval))
+         (rx--normalise-or-arg (rx--expand-eval (cdr form))))
+        (t
+         (let ((expanded (rx--expand-def form)))
+           (if expanded
+               (rx--normalise-or-arg expanded)
+             form)))))
+
+(defun rx--all-string-or-args (body)
+  "If BODY only consists of strings or such `or' forms, return all the strings.
+Otherwise throw `rx--nonstring'."
+  (mapcan (lambda (form)
+            (cond ((stringp form) (list form))
+                  ((and (consp form) (memq (car form) '(or |)))
+                   (rx--all-string-or-args (cdr form)))
+                  (t (throw 'rx--nonstring nil))))
+          body))
+
 (defun rx--translate-or (body)
   "Translate an or-pattern of zero or more rx items.
 Return (REGEXP . PRECEDENCE)."
   ;; FIXME: Possible improvements:
   ;;
-  ;; - Turn single characters to strings: (or ?a ?b) -> (or "a" "b"),
-  ;;   so that they can be candidates for regexp-opt.
-  ;;
-  ;; - Translate compile-time strings (`eval' forms), again for regexp-opt.
-  ;;
   ;; - Flatten sub-patterns first: (or (or A B) (or C D)) -> (or A B C D)
-  ;;   in order to improve effectiveness of regexp-opt.
-  ;;   This would also help composability.
-  ;;
-  ;; - Use associativity to run regexp-opt on contiguous subsets of arguments
-  ;;   if not all of them are strings.  Example:
+  ;;   Then call regexp-opt on runs of string arguments. Example:
   ;;   (or (+ digit) "CHARLIE" "CHAN" (+ blank))
   ;;   -> (or (+ digit) (or "CHARLIE" "CHAN") (+ blank))
   ;;
@@ -279,33 +296,32 @@ Return (REGEXP . PRECEDENCE)."
   ;;   so that (or "@" "%" digit (any "A-Z" space) (syntax word))
   ;;        -> (any "@" "%" digit "A-Z" space word)
   ;;        -> "[A-Z@%[:digit:][:space:][:word:]]"
-  ;;
-  ;; Problem: If a subpattern is carefully written to be
-  ;; optimizable by regexp-opt, how do we prevent the transforms
-  ;; above from destroying that property?
-  ;; Example: (or "a" (or "abc" "abd" "abe"))
   (cond
    ((null body)                    ; No items: a never-matching regexp.
     (rx--empty))
    ((null (cdr body))              ; Single item.
     (rx--translate (car body)))
-   ((rx--every #'stringp body)     ; All strings.
-    (cons (list (regexp-opt body nil))
-          t))
-   ((rx--every #'rx--charset-p body)  ; All charsets.
-    (rx--translate-union nil body))
    (t
-    (cons (append (car (rx--translate (car body)))
-                  (mapcan (lambda (item)
-                            (cons "\\|" (car (rx--translate item))))
-                          (cdr body)))
-          nil))))
+    (let* ((args (mapcar #'rx--normalise-or-arg body))
+           (all-strings (catch 'rx--nonstring (rx--all-string-or-args args))))
+      (cond
+       (all-strings                       ; Only strings.
+        (cons (list (regexp-opt all-strings nil))
+              t))
+       ((rx--every #'rx--charset-p args)  ; All charsets.
+        (rx--translate-union nil args))
+       (t
+        (cons (append (car (rx--translate (car args)))
+                      (mapcan (lambda (item)
+                                (cons "\\|" (car (rx--translate item))))
+                              (cdr args)))
+              nil)))))))
 
 (defun rx--charset-p (form)
   "Whether FORM looks like a charset, only consisting of character intervals
 and set operations."
   (or (and (consp form)
-           (or (and (memq (car form) '(any 'in 'char))
+           (or (and (memq (car form) '(any in char))
                     (rx--every (lambda (x) (not (symbolp x))) (cdr form)))
                (and (memq (car form) '(not or | intersection))
                     (rx--every #'rx--charset-p (cdr form)))))
@@ -344,7 +360,7 @@ character X becomes (?X . ?X).  Return the intervals in a 
list."
                       (push (cons start end) intervals))
                      (t
                       (error "Invalid rx `any' range: %s"
-                             (substring str i 3))))
+                             (substring str i (+ i 3)))))
                (setq i (+ i 3))))
             (t
              ;; Single character.
@@ -450,6 +466,10 @@ classes."
            (not negated))
       (cons (list (regexp-quote (char-to-string (caar items))))
             t))
+     ;; Negated newline.
+     ((and (equal items '((?\n . ?\n)))
+           negated)
+      (rx--translate-symbol 'nonl))
      ;; At least one character or class, possibly negated.
      (t
       (cons
@@ -836,11 +856,15 @@ Return (REGEXP . PRECEDENCE)."
            (cons (list (list 'regexp-quote arg)) 'seq))
           (t (error "rx `literal' form with non-string argument")))))
 
-(defun rx--translate-eval (body)
-  "Translate the `eval' form.  Return (REGEXP . PRECEDENCE)."
+(defun rx--expand-eval (body)
+  "Expand `eval' arguments.  Return a new rx form."
   (unless (and body (null (cdr body)))
     (error "rx `eval' form takes exactly one argument"))
-  (rx--translate (eval (car body))))
+  (eval (car body)))
+
+(defun rx--translate-eval (body)
+  "Translate the `eval' form.  Return (REGEXP . PRECEDENCE)."
+  (rx--translate (rx--expand-eval body)))
 
 (defvar rx--regexp-atomic-regexp nil)
 
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 0b946dd..e3037a7 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -58,6 +58,10 @@
 
 (eval-when-compile (require 'cl-generic))
 
+;; We used to use some sequence functions from cl-lib, but this
+;; dependency was swapped around so that it will be easier to make
+;; seq.el preloaded in the future.  See also Bug#39761#26.
+
 (defmacro seq-doseq (spec &rest body)
   "Loop over a sequence.
 Evaluate BODY with VAR bound to each element of SEQUENCE, in turn.
@@ -285,7 +289,11 @@ sorted.  FUNCTION must be a function of one argument."
 TYPE must be one of following symbols: vector, string or list.
 
 \n(fn TYPE SEQUENCE...)"
-  (apply #'cl-concatenate type (seq-map #'seq-into-sequence sequences)))
+  (pcase type
+    ('vector (apply #'vconcat sequences))
+    ('string (apply #'concat sequences))
+    ('list (apply #'append (append sequences '(nil))))
+    (_ (error "Not a sequence type name: %S" type))))
 
 (cl-defgeneric seq-into-sequence (sequence)
   "Convert SEQUENCE into a sequence.
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 74a9495..61fd05c 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -378,9 +378,6 @@ This function returns a timer object which you can use in
                                  (decoded-time-year now)
                                  (decoded-time-zone now)))))))
 
-  (or (consp time)
-      (error "Invalid time format"))
-
   (let ((timer (timer-create)))
     (timer-set-time timer time repeat)
     (timer-set-function timer function args)
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index a467551..81325df 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -75,7 +75,7 @@
 (eval-when-compile (require 'subr-x))
 
 (defvar erc-official-location
-  "https://www.emacswiki.org/emacs/ERC (mailing list: address@hidden)"
+  "https://www.emacswiki.org/emacs/ERC (mailing list: address@hidden)"
   "Location of the ERC client on the Internet.")
 
 (defgroup erc nil
diff --git a/lisp/files.el b/lisp/files.el
index 2e7694d..8ce0187 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5944,9 +5944,10 @@ into NEWNAME instead."
       ;; Set directory attributes.
       (let ((modes (file-modes directory))
            (times (and keep-time (file-attribute-modification-time
-                                  (file-attributes directory)))))
-       (if modes (set-file-modes newname modes (unless follow 'nofollow)))
-       (if times (set-file-times newname times))))))
+                                  (file-attributes directory))))
+           (follow-flag (unless follow 'nofollow)))
+       (if modes (set-file-modes newname modes follow-flag))
+       (if times (set-file-times newname times follow-flag))))))
 
 
 ;; At time of writing, only info uses this.
diff --git a/lisp/frame.el b/lisp/frame.el
index 16ee758..dc8dabc 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -713,6 +713,18 @@ The optional argument PARAMETERS specifies additional 
frame parameters."
                       (x-display-list))))
   (make-frame (cons (cons 'display display) parameters)))
 
+(defun make-frame-on-current-monitor (&optional parameters)
+  "Make a frame on the currently selected monitor.
+Like `make-frame-on-monitor' and with the same PARAMETERS as in `make-frame'."
+  (interactive)
+  (let* ((monitor-workarea
+          (cdr (assq 'workarea (frame-monitor-attributes))))
+         (geometry-parameters
+          (when monitor-workarea
+            `((top . ,(nth 1 monitor-workarea))
+              (left . ,(nth 0 monitor-workarea))))))
+    (make-frame (append geometry-parameters parameters))))
+
 (defun make-frame-on-monitor (monitor &optional display parameters)
   "Make a frame on monitor MONITOR.
 The optional argument DISPLAY can be a display name, and the optional
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 754655d..6b9610d 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -7774,11 +7774,11 @@ also be Lisp expression evaluating to a string),
 BUTTON: is the number of the regexp grouping actually matching the button,
 FORM: is a Lisp expression which must eval to true for the button to
 be added,
-CALLBACK: is the function to call when the user push this button, and each
+CALLBACK: is the function to call when the user pushes this button, and each
 PAR: is a number of a regexp grouping whose text will be passed to CALLBACK.
 
-CALLBACK can also be a variable, in that case the value of that
-variable it the real callback function."
+CALLBACK can also be a variable, in which case the value of that
+variable is the real callback function."
   :group 'gnus-article-buttons
   :type '(repeat (list (choice regexp variable sexp)
                       (integer :tag "Button")
diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el
index 4d8764b..da6231d 100644
--- a/lisp/gnus/gnus-cloud.el
+++ b/lisp/gnus/gnus-cloud.el
@@ -285,8 +285,8 @@ Use old data if FORCE-OLDER is not nil."
     (insert new-contents)
     (when (file-exists-p file-name)
       (rename-file file-name (car (find-backup-file-name file-name))))
-    (write-region (point-min) (point-max) file-name)
-    (set-file-times file-name (parse-iso8601-time-string date))))
+    (write-region (point-min) (point-max) file-name nil nil nil 'excl)
+    (set-file-times file-name (parse-iso8601-time-string date) 'nofollow)))
 
 (defun gnus-cloud-file-covered-p (file-name)
   (let ((matched nil))
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 8a4161e..2e03608 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -174,7 +174,7 @@ no effect when spam-stat is invoked through spam.el."
 
 (defcustom spam-stat-score-buffer-user-functions nil
   "List of additional scoring functions.
-Called  one by one on the buffer.
+Called one by one on the buffer.
 
 If all of these functions return non-nil answers, these numerical
 answers are added to the computed spam stat score on the buffer.  If
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index fad5b03..ecda62e 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -953,7 +953,7 @@ it is displayed along with the global value."
     (unless (buffer-live-p buffer) (setq buffer (current-buffer)))
     (unless (frame-live-p frame) (setq frame (selected-frame)))
     (if (not (symbolp variable))
-       (message "You did not specify a variable")
+       (user-error "You didn't specify a variable")
       (save-excursion
        (let ((valvoid (not (with-current-buffer buffer (boundp variable))))
              val val-start-pos locus)
@@ -1009,6 +1009,8 @@ it is displayed along with the global value."
                    (terpri)
                     (let ((buf (current-buffer)))
                       (with-temp-buffer
+                        (lisp-mode-variables nil)
+                        (set-syntax-table emacs-lisp-mode-syntax-table)
                         (insert print-rep)
                         (pp-buffer)
                         (let ((pp-buffer (current-buffer)))
@@ -1442,7 +1444,7 @@ current buffer and the selected frame, respectively."
                                t nil nil
                                (if found (symbol-name v-or-f)))))
      (list (if (equal val "")
-              v-or-f (intern val)))))
+              (or v-or-f "") (intern val)))))
   (if (not (symbolp symbol))
       (user-error "You didn't specify a function or variable"))
   (unless (buffer-live-p buffer) (setq buffer (current-buffer)))
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index a1a67e2..66bc731 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -284,6 +284,17 @@ require user confirmation."
           (t
            (icomplete-force-complete-and-exit)))))
 
+(defun icomplete-fido-exit (force)
+  "Attempt to exit minibuffer immediately with current input.
+Unless FORCE is non-nil (interactively with a prefix argument),
+honour a non-nil REQUIRE-MATCH argument to `completing-read' by
+trying to complete as much as possible and disallowing the exit
+if that doesn't produce a completion match."
+  (interactive "P")
+  (if (and (not force) minibuffer--require-match)
+      (minibuffer-complete-and-exit)
+    (exit-minibuffer)))
+
 (defun icomplete-fido-backward-updir ()
   "Delete char before or go up directory, like `ido-mode'."
   (interactive)
@@ -299,7 +310,7 @@ require user confirmation."
     (define-key map (kbd "RET") 'icomplete-fido-ret)
     (define-key map (kbd "C-m") 'icomplete-fido-ret)
     (define-key map (kbd "DEL") 'icomplete-fido-backward-updir)
-    (define-key map (kbd "M-j") 'exit-minibuffer)
+    (define-key map (kbd "M-j") 'icomplete-fido-exit)
     (define-key map (kbd "C-s") 'icomplete-forward-completions)
     (define-key map (kbd "C-r") 'icomplete-backward-completions)
     (define-key map (kbd "<right>") 'icomplete-forward-completions)
@@ -541,7 +552,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'."
                           (icomplete--completion-table)
                           (icomplete--completion-predicate)
                           (if (window-minibuffer-p)
-                              (not minibuffer-completion-confirm)))))
+                              (eq minibuffer--require-match t)))))
                  (buffer-undo-list t)
                  deactivate-mark)
             ;; Do nothing if while-no-input was aborted.
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 6659479..86f3d2a 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -2601,7 +2601,7 @@ This function is intended to be added to 
`auto-coding-functions'."
                     (detect-coding-region (point-min) size t)))))
             ;; Pure ASCII always comes back as undecided.
             (if (memq detected
-                      '(utf-8 'utf-8-with-signature 'utf-8-hfs undecided))
+                      '(utf-8 utf-8-with-signature utf-8-hfs undecided))
                 'utf-8
               (warn "File contents detected as %s.
   Consider adding an encoding attribute to the xml declaration,
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index dabc8b9..a1ff2f6 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -173,7 +173,7 @@ documentation of `unload-feature' for details.")
 ;; we undefine it.
 ;; So we use this auxiliary variable to keep track of the last (t . SYMBOL)
 ;; that occurred.
-(defvar loadhist--restore-autoload
+(defvar loadhist--restore-autoload nil
   "If non-nil, this is a symbol for which we should
 restore a previous autoload if possible.")
 
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 49daabc..7f5b597 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1400,7 +1400,11 @@ scroll the window of possible completions."
    (minibuffer-prompt-end) (point-max) #'exit-minibuffer
    ;; If the previous completion completed to an element which fails
    ;; test-completion, then we shouldn't exit, but that should be rare.
-   (lambda () (minibuffer-message "Incomplete"))))
+   (lambda ()
+     (if minibuffer--require-match
+         (minibuffer-message "Incomplete")
+       ;; If a match is not required, exit after all.
+       (exit-minibuffer)))))
 
 (defun minibuffer-force-complete (&optional start end dont-cycle)
   "Complete the minibuffer to an exact match.
@@ -1464,6 +1468,9 @@ DONT-CYCLE tells the function not to setup cycling."
   "List of commands which cause an immediately following
 `minibuffer-complete-and-exit' to ask for extra confirmation.")
 
+(defvar minibuffer--require-match nil
+  "Value of REQUIRE-MATCH passed to `completing-read'.")
+
 (defun minibuffer-complete-and-exit ()
   "Exit if the minibuffer contains a valid completion.
 Otherwise, try to complete the minibuffer contents.  If
@@ -3748,8 +3755,10 @@ See `completing-read' for the meaning of the arguments."
 
   (let* ((minibuffer-completion-table collection)
          (minibuffer-completion-predicate predicate)
+         ;; FIXME: Remove/rename this var, see the next one.
          (minibuffer-completion-confirm (unless (eq require-match t)
                                           require-match))
+         (minibuffer--require-match require-match)
          (base-keymap (if require-match
                          minibuffer-local-must-match-map
                         minibuffer-local-completion-map))
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 2c9674f..7ee740f 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -674,8 +674,9 @@ But handle the case, if the \"test\" command is not 
available."
       (tramp-adb-send-command-and-check
        v (format "chmod %o %s" mode localname)))))
 
-(defun tramp-adb-handle-set-file-times (filename &optional time)
+(defun tramp-adb-handle-set-file-times (filename &optional time flag)
   "Like `set-file-times' for Tramp files."
+  flag ;; FIXME: Support 'nofollow'.
   (with-parsed-tramp-file-name filename nil
     (tramp-flush-file-properties v localname)
     (let ((time (if (or (null time)
@@ -777,7 +778,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are 
completely ignored."
       (set-file-times
        newname
        (tramp-compat-file-attribute-modification-time
-       (file-attributes filename))))))
+       (file-attributes filename))
+       (unless ok-if-already-exists 'nofollow)))))
 
 (defun tramp-adb-handle-rename-file
   (filename newname &optional ok-if-already-exists)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 3ce7bbb..1ad57c5 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1571,7 +1571,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
      (tramp-gvfs-url-file-name (tramp-make-tramp-file-name v))
      "unix::mode" (number-to-string mode))))
 
-(defun tramp-gvfs-handle-set-file-times (filename &optional time)
+(defun tramp-gvfs-handle-set-file-times (filename &optional time flag)
   "Like `set-file-times' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     (tramp-flush-file-properties v localname)
@@ -1582,7 +1582,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
               (current-time)
             time)))
       (tramp-gvfs-send-command
-       v "gvfs-set-attribute" "-t" "uint64"
+       v "gvfs-set-attribute" (if flag "-nt" "-t") "uint64"
        (tramp-gvfs-url-file-name (tramp-make-tramp-file-name v))
        "time::modified" (format-time-string "%s" time)))))
 
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 84b8191..560941c 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -1495,11 +1495,12 @@ of."
        mode (tramp-shell-quote-argument localname))
        "Error while changing file's mode %s" filename))))
 
-(defun tramp-sh-handle-set-file-times (filename &optional time)
+(defun tramp-sh-handle-set-file-times (filename &optional time flag)
   "Like `set-file-times' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     (when (tramp-get-remote-touch v)
       (tramp-flush-file-properties v localname)
+      flag ;; FIXME: Support 'nofollow'.
       (let ((time
             (if (or (null time)
                     (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 42954cb..d91362c8 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -619,7 +619,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are 
completely ignored."
       (set-file-times
        newname
        (tramp-compat-file-attribute-modification-time
-       (file-attributes filename))))))
+       (file-attributes filename))
+       (unless ok-if-already-exists 'nofollow)))))
 
 (defun tramp-smb-handle-delete-directory (directory &optional recursive _trash)
   "Like `delete-directory' for Tramp files."
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 7d8c8a9..c054f40 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -523,10 +523,11 @@ the result will be a local, non-Tramp, file name."
                     (string-to-number (match-string 2)))
                  (string-to-number (match-string 3)))))))))
 
-(defun tramp-sudoedit-handle-set-file-times (filename &optional time)
+(defun tramp-sudoedit-handle-set-file-times (filename &optional time flag)
   "Like `set-file-times' for Tramp files."
   (with-parsed-tramp-file-name filename nil
     (tramp-flush-file-properties v localname)
+    flag ;; FIXME: Support 'nofollow'.
     (let ((time
           (if (or (null time)
                   (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index a608122..1b557c4 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -48,6 +48,7 @@
 (cc-bytecomp-defvar filladapt-mode)    ; c-fill-paragraph contains a kludge
                                        ; which looks at this.
 (cc-bytecomp-defun electric-pair-post-self-insert-function)
+(cc-bytecomp-defvar c-indent-to-body-directives)
 
 ;; Indentation / Display syntax functions
 (defvar c-fix-backslashes t)
@@ -1441,6 +1442,98 @@ keyword on the line, the keyword is not inserted inside 
a literal, and
          (indent-according-to-mode)
        (delete-char -2)))))
 
+(defun c-align-cpp-indent-to-body ()
+  "Align a \"#pragma\" line under the previous line.
+This function is intented for use as a member of `c-special-indent-hook'."
+  (when (assq 'cpp-macro c-syntactic-context)
+    (when
+       (save-excursion
+         (save-match-data
+           (back-to-indentation)
+           (and
+            (looking-at (concat c-opt-cpp-symbol "[ \t]*\\([a-zA-Z0-9_]+\\)"))
+            (member (match-string-no-properties 1)
+                    c-cpp-indent-to-body-directives))))
+      (c-indent-line (delete '(cpp-macro) c-syntactic-context)))))
+
+(defvar c-cpp-indent-to-body-flag nil)
+;; Non-nil when CPP directives such as "#pragma" should be indented to under
+;; the preceding statement.
+(make-variable-buffer-local 'c-cpp-indent-to-body-flag)
+
+(defun c-electric-pragma ()
+  "Reindent the current line if appropriate.
+
+This function is used to reindent a preprocessor line when the
+symbol for the directive, typically \"pragma\", triggers this
+function as a hook function of an abbreviation.
+
+The \"#\" of the preprocessor construct is aligned under the
+first anchor point of the line's syntactic context.
+
+The line is reindented if the construct is not in a string or
+comment, there is exactly one \"#\" contained in optional
+whitespace before it on the current line, and `c-electric-flag'
+and `c-syntactic-indentation' are both non-nil."
+  (save-excursion
+    (save-match-data
+      (when
+         (and
+          c-cpp-indent-to-body-flag
+          c-electric-flag
+          c-syntactic-indentation
+          last-abbrev-location
+          c-opt-cpp-symbol             ; "#" or nil.
+          (progn (back-to-indentation)
+                 (looking-at (concat c-opt-cpp-symbol "[ \t]*")))
+          (>= (match-end 0) last-abbrev-location)
+          (not (c-literal-limits)))
+       (c-indent-line (delete '(cpp-macro) (c-guess-basic-syntax)))))))
+
+(defun c-add-indent-to-body-to-abbrev-table (d)
+  ;; Create an abbreviation table entry for the directive D, and add it to the
+  ;; current abbreviation table.  Existing abbreviation (e.g. for "else") do
+  ;; not get overwritten.
+  (when (and c-buffer-is-cc-mode
+            local-abbrev-table
+            (not (abbrev-symbol d local-abbrev-table)))
+    (condition-case nil
+       (define-abbrev local-abbrev-table d d 'c-electric-pragma 0 t)
+      (wrong-number-of-arguments
+       (define-abbrev local-abbrev-table d d 'c-electric-pragma)))))
+
+(defun c-clear-stale-indent-to-body-abbrevs ()
+  ;; Fill in this comment.  FIXME!!!
+  (when (fboundp 'abbrev-get)
+    (mapatoms (lambda (a)
+               (when (and (abbrev-get a ':system) ; Preserve a user's abbrev!
+                          (not (member (symbol-name a) c-std-abbrev-keywords))
+                          (not (member (symbol-name a)
+                                       c-cpp-indent-to-body-directives)))
+                 (unintern a local-abbrev-table)))
+             local-abbrev-table)))
+
+(defun c-toggle-cpp-indent-to-body (&optional arg)
+  "Toggle the C preprocessor indent-to-body feature.
+When enabled, preprocessor directives which are words in
+`c-indent-to-body-directives' are indented as if they were statements.
+
+Optional numeric ARG, if supplied, turns on the feature when positive,
+turns it off when negative, and just toggles it when zero or
+left out."
+  (interactive "P")
+  (setq c-cpp-indent-to-body-flag
+       (c-calculate-state arg c-cpp-indent-to-body-flag))
+  (if c-cpp-indent-to-body-flag
+      (progn
+       (c-clear-stale-indent-to-body-abbrevs)
+       (mapc 'c-add-indent-to-body-to-abbrev-table
+             c-cpp-indent-to-body-directives)
+       (add-hook 'c-special-indent-hook 'c-align-cpp-indent-to-body nil t))
+    (remove-hook 'c-special-indent-hook 'c-align-cpp-indent-to-body t))
+  (message "c-cpp-indent-to-body %sabled"
+          (if c-cpp-indent-to-body-flag "en" "dis")))
+
 
 
 (declare-function subword-forward "subword" (&optional arg))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index e7e7cfd..1e72352 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -3030,7 +3030,14 @@ Note that Java specific rules are currently applied to 
tell this from
         ;; can start a declaration.)
         "entity" "process" "service" "session" "storage"))
 
-
+(c-lang-defconst c-std-abbrev-keywords
+  "List of keywords which may need to cause electric indentation."
+  t '("else" "while")
+  c++ (append (c-lang-const c-std-abbrev-keywords) '("catch"))
+  java (append (c-lang-const c-std-abbrev-keywords) '("catch" "finally"))
+  idl nil)
+(c-lang-defvar c-std-abbrev-keywords (c-lang-const c-std-abbrev-keywords))
+
 ;;; Constants built from keywords.
 
 ;; Note: No `*-kwds' language constants may be defined below this point.
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 9c62b2b..f92d3ef 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -278,6 +278,29 @@ control).  See \"cc-mode.el\" for more info."
       (setq defs (cdr defs)))))
 (put 'c-define-abbrev-table 'lisp-indent-function 1)
 
+(defun c-populate-abbrev-table ()
+  ;; Insert the standard keywords which may need electric indentation into the
+  ;; current mode's abbreviation table.
+  (let ((table (intern (concat (symbol-name major-mode) "-abbrev-table")))
+       (defs c-std-abbrev-keywords)
+       )
+    (unless (and (boundp table)
+                (abbrev-table-p (symbol-value table)))
+      (define-abbrev-table table nil))
+    (setq local-abbrev-table (symbol-value table))
+    (while defs
+      (unless (intern-soft (car defs) local-abbrev-table) ; Don't overwrite the
+                                       ; abbrev's use count.
+       (condition-case nil
+           (define-abbrev (symbol-value table)
+             (car defs) (car defs)
+             'c-electric-continued-statement 0 t)
+         (wrong-number-of-arguments
+          (define-abbrev (symbol-value table)
+            (car defs) (car defs)
+            'c-electric-continued-statement 0))))
+      (setq defs (cdr defs)))))
+
 (defun c-bind-special-erase-keys ()
   ;; Only used in Emacs to bind C-c C-<delete> and C-c C-<backspace>
   ;; to the proper keys depending on `normal-erase-is-backspace'.
@@ -550,6 +573,8 @@ that requires a literal mode spec at compile time."
 
   (setq c-buffer-is-cc-mode mode)
 
+  (c-populate-abbrev-table)
+
   ;; these variables should always be buffer local; they do not affect
   ;; indentation style.
   (make-local-variable 'comment-start)
@@ -1865,18 +1890,25 @@ Note that this is a strict tail, so won't match, e.g. 
\"0x....\".")
   ;; it/them from the cache.  Don't worry about being inside a string
   ;; or a comment - "wrongly" removing a symbol from `c-found-types'
   ;; isn't critical.
-  (unless (or (c-called-from-text-property-change-p)
-             c-just-done-before-change) ; guard against a spurious second
-                                       ; invocation of before-change-functions.
-    (setq c-just-done-before-change t)
-    ;; (c-new-BEG c-new-END) will be the region to fontify.
-    (setq c-new-BEG beg  c-new-END end)
-    (setq c-maybe-stale-found-type nil)
-    ;; A workaround for syntax-ppss's failure to notice syntax-table text
-    ;; property changes.
-    (when (fboundp 'syntax-ppss)
-      (setq c-syntax-table-hwm most-positive-fixnum))
+  (unless (c-called-from-text-property-change-p)
     (save-restriction
+      (widen)
+      (if c-just-done-before-change
+         ;; We have two consecutive calls to `before-change-functions' without
+         ;; an intervening `after-change-functions'.  An example of this is bug
+         ;; #38691.  To protect CC Mode, assume that the entire buffer has
+         ;; changed.
+         (setq beg (point-min)
+               end (point-max)
+               c-just-done-before-change 'whole-buffer)
+       (setq c-just-done-before-change t))
+      ;; (c-new-BEG c-new-END) will be the region to fontify.
+      (setq c-new-BEG beg  c-new-END end)
+      (setq c-maybe-stale-found-type nil)
+      ;; A workaround for syntax-ppss's failure to notice syntax-table text
+      ;; property changes.
+      (when (fboundp 'syntax-ppss)
+       (setq c-syntax-table-hwm most-positive-fixnum))
       (save-match-data
        (widen)
        (unwind-protect
@@ -1982,14 +2014,19 @@ Note that this is a strict tail, so won't match, e.g. 
\"0x....\".")
   ;; without an intervening call to `before-change-functions' when reverting
   ;; the buffer (see bug #24094).  Whatever the cause, assume that the entire
   ;; buffer has changed.
-  (when (and (not c-just-done-before-change)
-            (not (c-called-from-text-property-change-p)))
-    (save-restriction
-      (widen)
-      (c-before-change (point-min) (point-max))
-      (setq beg (point-min)
-           end (point-max)
-           old-len (- end beg))))
+
+  ;; Note: c-just-done-before-change is nil, t, or 'whole-buffer.
+  (unless (c-called-from-text-property-change-p)
+    (unless (eq c-just-done-before-change t)
+      (save-restriction
+       (widen)
+       (when (null c-just-done-before-change)
+         (c-before-change (point-min) (point-max)))
+       (setq beg (point-min)
+             end (point-max)
+             old-len (- end beg)
+             c-new-BEG (point-min)
+             c-new-END (point-max)))))
 
   ;; (c-new-BEG c-new-END) will be the region to fontify.  It may become
   ;; larger than (beg end).
@@ -2432,11 +2469,6 @@ opening \" and the next unescaped end of line."
   (funcall (c-lang-const c-make-mode-syntax-table c))
   "Syntax table used in c-mode buffers.")
 
-(c-define-abbrev-table 'c-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0))
-  "Abbreviation table used in c-mode buffers.")
-
 (defvar c-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2548,12 +2580,6 @@ the code is C or C++ and based on that chooses whether 
to enable
   (funcall (c-lang-const c-make-mode-syntax-table c++))
   "Syntax table used in c++-mode buffers.")
 
-(c-define-abbrev-table 'c++-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0)
-    ("catch" "catch" c-electric-continued-statement 0))
-  "Abbreviation table used in c++-mode buffers.")
-
 (defvar c++-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2602,11 +2628,6 @@ Key bindings:
   (funcall (c-lang-const c-make-mode-syntax-table objc))
   "Syntax table used in objc-mode buffers.")
 
-(c-define-abbrev-table 'objc-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0))
-  "Abbreviation table used in objc-mode buffers.")
-
 (defvar objc-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2653,13 +2674,6 @@ Key bindings:
   (funcall (c-lang-const c-make-mode-syntax-table java))
   "Syntax table used in java-mode buffers.")
 
-(c-define-abbrev-table 'java-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0)
-    ("catch" "catch" c-electric-continued-statement 0)
-    ("finally" "finally" c-electric-continued-statement 0))
-  "Abbreviation table used in java-mode buffers.")
-
 (defvar java-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2710,9 +2724,6 @@ Key bindings:
   (funcall (c-lang-const c-make-mode-syntax-table idl))
   "Syntax table used in idl-mode buffers.")
 
-(c-define-abbrev-table 'idl-mode-abbrev-table nil
-  "Abbreviation table used in idl-mode buffers.")
-
 (defvar idl-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2755,11 +2766,6 @@ Key bindings:
   (funcall (c-lang-const c-make-mode-syntax-table pike))
   "Syntax table used in pike-mode buffers.")
 
-(c-define-abbrev-table 'pike-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0))
-  "Abbreviation table used in pike-mode buffers.")
-
 (defvar pike-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
@@ -2807,11 +2813,6 @@ Key bindings:
 ;;;###autoload (add-to-list 'interpreter-mode-alist '("nawk" . awk-mode))
 ;;;###autoload (add-to-list 'interpreter-mode-alist '("gawk" . awk-mode))
 
-(c-define-abbrev-table 'awk-mode-abbrev-table
-  '(("else" "else" c-electric-continued-statement 0)
-    ("while" "while" c-electric-continued-statement 0))
-  "Abbreviation table used in awk-mode buffers.")
-
 (defvar awk-mode-map
   (let ((map (c-make-inherited-keymap)))
     map)
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index 556ff60..3995b21 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1649,6 +1649,15 @@ white space either before or after the operator, but not 
both."
   :type 'boolean
   :group 'c)
 
+(defcustom c-cpp-indent-to-body-directives '("pragma")
+  "Preprocessor directives which will be indented as statements.
+
+A list of Preprocessor directives which when reindented, or newly
+typed in, will cause the \"#\" introducing the directive to be
+indented as a statement."
+  :type '(repeat string)
+  :group 'c)
+
 ;; Initialize the next two to a regexp which never matches.
 (defvar c-noise-macro-with-parens-name-re regexp-unmatchable)
 (make-variable-buffer-local 'c-noise-macro-with-parens-name-re)
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 0677d36..22c6158 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -13334,7 +13334,7 @@ File statistics: \"%s\"\n\
 (defvar vhdl-font-lock-keywords nil
   "Regular expressions to highlight in VHDL Mode.")
 
-(defvar vhdl-font-lock-keywords-0
+(defvar vhdl-font-lock-keywords-0 nil
   ;; set in `vhdl-font-lock-init' because dependent on user options
   "For consideration as a value of `vhdl-font-lock-keywords'.
 This does highlighting of template prompts and directives (pragmas).")
diff --git a/lisp/simple.el b/lisp/simple.el
index 688dbcc..91736a6 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -75,14 +75,16 @@ value of 1 means that nothing is amalgamated.")
   :version "22.1")
 
 (defcustom next-error-highlight 0.5
-  "Highlighting of locations in selected source buffers.
+  "Highlighting of locations in the selected buffer.
 If a number, highlight the locus in `next-error' face for the given time
 in seconds, or until the next command is executed.
 If t, highlight the locus until the next command is executed, or until
 some other locus replaces it.
 If nil, don't highlight the locus in the source buffer.
 If `fringe-arrow', indicate the locus by the fringe arrow
-indefinitely until some other locus replaces it."
+indefinitely until some other locus replaces it.
+See `next-error-highlight-no-select' to customize highlighting
+of the locus in non-selected buffers."
   :type '(choice (number :tag "Highlight for specified time")
                  (const :tag "Semipermanent highlighting" t)
                  (const :tag "No highlighting" nil)
@@ -91,12 +93,15 @@ indefinitely until some other locus replaces it."
   :version "22.1")
 
 (defcustom next-error-highlight-no-select 0.5
-  "Highlighting of locations in `next-error-no-select'.
+  "Highlighting of locations in non-selected source buffers.
+Usually non-selected buffers are displayed by `next-error-no-select'.
 If number, highlight the locus in `next-error' face for given time in seconds.
 If t, highlight the locus indefinitely until some other locus replaces it.
 If nil, don't highlight the locus in the source buffer.
 If `fringe-arrow', indicate the locus by the fringe arrow
-indefinitely until some other locus replaces it."
+indefinitely until some other locus replaces it.
+See `next-error-highlight' to customize highlighting of the locus
+in the selected buffer."
   :type '(choice (number :tag "Highlight for specified time")
                  (const :tag "Semipermanent highlighting" t)
                  (const :tag "No highlighting" nil)
diff --git a/lisp/subr.el b/lisp/subr.el
index 96b98c6..13515ca 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -3967,19 +3967,18 @@ the function `undo--wrap-and-run-primitive-undo'."
       (let ((undo--combining-change-calls t))
        (if (not inhibit-modification-hooks)
            (run-hook-with-args 'before-change-functions beg end))
-       (if (eq buffer-undo-list t)
-           (setq result (funcall body))
-         (let (;; (inhibit-modification-hooks t)
-                (before-change-functions
-                 ;; Ugly Hack: if the body uses syntax-ppss/syntax-propertize
-                 ;; (e.g. via a regexp-search or sexp-movement trigerring
-                 ;; on-the-fly syntax-propertize), make sure that this gets
-                 ;; properly refreshed after subsequent changes.
-                 (if (memq #'syntax-ppss-flush-cache before-change-functions)
-                     '(syntax-ppss-flush-cache)))
-                after-change-functions)
-           (setq result (funcall body)))
-         (let ((ap-elt
+       (let (;; (inhibit-modification-hooks t)
+              (before-change-functions
+               ;; Ugly Hack: if the body uses syntax-ppss/syntax-propertize
+               ;; (e.g. via a regexp-search or sexp-movement trigerring
+               ;; on-the-fly syntax-propertize), make sure that this gets
+               ;; properly refreshed after subsequent changes.
+               (if (memq #'syntax-ppss-flush-cache before-change-functions)
+                   '(syntax-ppss-flush-cache)))
+              after-change-functions)
+         (setq result (funcall body)))
+        (when (not (eq buffer-undo-list t))
+          (let ((ap-elt
                 (list 'apply
                       (- end end-marker)
                       beg
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 8f1221a..902c312 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -446,17 +446,19 @@ variable `tab-line-tabs-function'."
            (setq hscroll nil)
            (set-window-parameter nil 'tab-line-hscroll hscroll))
        (list separator
-             (when (and (integerp hscroll) (not (zerop hscroll)))
+             (when (and (numberp hscroll) (not (zerop hscroll)))
                tab-line-left-button)
-             (when (if (integerp hscroll)
-                       (< (abs hscroll) (1- (length strings)))
+             (when (if (numberp hscroll)
+                       (< (truncate hscroll) (1- (length strings)))
                      (> (length strings) 1))
                tab-line-right-button)))
-     (if hscroll (nthcdr (abs hscroll) strings) strings)
+     (if hscroll (nthcdr (truncate hscroll) strings) strings)
      (when (eq tab-line-tabs-function #'tab-line-tabs-window-buffers)
        (list (concat separator (when tab-line-new-tab-choice
                                  tab-line-new-button)))))))
 
+(defvar tab-line-auto-hscroll)
+
 (defun tab-line-format ()
   "Template for displaying tab line for selected window."
   (let* ((tabs (funcall tab-line-tabs-function))
@@ -464,6 +466,13 @@ variable `tab-line-tabs-function'."
                           (window-buffer)
                           (window-parameter nil 'tab-line-hscroll)))
          (cache (window-parameter nil 'tab-line-cache)))
+    ;; Enable auto-hscroll again after it was disabled on manual scrolling.
+    ;; The moment to enable it is when the window-buffer was updated.
+    (when (and tab-line-auto-hscroll        ; if auto-hscroll was enabled
+               (integerp (nth 2 cache-key)) ; integer on manual scroll
+               cache                        ; window-buffer was updated
+               (not (equal (nth 1 (car cache)) (nth 1 cache-key))))
+      (set-window-parameter nil 'tab-line-hscroll (float (nth 2 cache-key))))
     (or (and cache (equal (car cache) cache-key) (cdr cache))
         (cdr (set-window-parameter
               nil 'tab-line-cache
@@ -478,24 +487,27 @@ the selected tab visible."
   :group 'tab-line
   :version "27.1")
 
+(defvar tab-line-auto-hscroll-buffer (generate-new-buffer " 
*tab-line-hscroll*"))
+
 (defun tab-line-auto-hscroll (strings hscroll)
-  (with-temp-buffer
+  (with-current-buffer tab-line-auto-hscroll-buffer
     (let ((truncate-partial-width-windows nil)
           (inhibit-modification-hooks t)
           show-arrows)
       (setq truncate-lines nil)
+      (erase-buffer)
       (apply 'insert strings)
       (goto-char (point-min))
       (add-face-text-property (point-min) (point-max) 'tab-line)
       ;; Continuation means tab-line doesn't fit completely,
       ;; thus scroll arrows are needed for scrolling.
       (setq show-arrows (> (vertical-motion 1) 0))
-      ;; Try to auto-scroll only when scrolling is needed,
+      ;; Try to auto-hscroll only when scrolling is needed,
       ;; but no manual scrolling was performed before.
       (when (and tab-line-auto-hscroll
                  show-arrows
                  ;; Do nothing when scrolled manually
-                 (not (and (integerp hscroll) (>= hscroll 0))))
+                 (not (integerp hscroll)))
         (let ((selected (seq-position strings 'selected
                                       (lambda (str prop)
                                         (get-pos-property 1 prop str)))))
@@ -503,7 +515,7 @@ the selected tab visible."
            ((null selected)
             ;; Do nothing if no tab is selected
             )
-           ((or (not (integerp hscroll)) (< selected (abs hscroll)))
+           ((or (not (numberp hscroll)) (< selected (truncate hscroll)))
             ;; Selected is scrolled to the left, or no scrolling yet
             (erase-buffer)
             (apply 'insert (reverse (seq-subseq strings 0 (1+ selected))))
@@ -520,14 +532,14 @@ the selected tab visible."
                                                     (lambda (str tab)
                                                       (eq (get-pos-property 1 
'tab str) tab))))))
                   (when new-hscroll
-                    (setq hscroll (- new-hscroll))
+                    (setq hscroll (float new-hscroll))
                     (set-window-parameter nil 'tab-line-hscroll hscroll)))
               (setq hscroll nil)
               (set-window-parameter nil 'tab-line-hscroll hscroll)))
            (t
             ;; Check if the selected tab is already visible
             (erase-buffer)
-            (apply 'insert (seq-subseq strings (abs hscroll) (1+ selected)))
+            (apply 'insert (seq-subseq strings (truncate hscroll) (1+ 
selected)))
             (goto-char (point-min))
             (add-face-text-property (point-min) (point-max) 'tab-line)
             (when (> (vertical-motion 1) 0)
@@ -547,7 +559,7 @@ the selected tab visible."
                                                     (lambda (str tab)
                                                       (eq (get-pos-property 1 
'tab str) tab))))))
                   (when new-hscroll
-                    (setq hscroll (- new-hscroll))
+                    (setq hscroll (float new-hscroll))
                     (set-window-parameter nil 'tab-line-hscroll 
hscroll)))))))))
       (list show-arrows hscroll))))
 
@@ -559,7 +571,7 @@ the selected tab visible."
                  (funcall tab-line-tabs-function))))
     (set-window-parameter
      window 'tab-line-hscroll
-     (max 0 (min (+ (if (integerp hscroll) (abs hscroll) 0) (or arg 1))
+     (max 0 (min (+ (if (numberp hscroll) (truncate hscroll) 0) (or arg 1))
                  (1- (length tabs)))))
     (when window
       (force-mode-line-update t))))
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 97d883e..a3c1715 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -1056,7 +1056,7 @@ extracted file."
        (write-region start end to-file nil nil nil t))
       (when (and tar-copy-preserve-time
                  date)
-        (set-file-times to-file date)))
+       (set-file-times to-file date 'nofollow)))
     (message "Copied tar entry %s to %s" name to-file)))
 
 (defun tar-new-entry (filename &optional index)
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index ca6c468..31e3d6e 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -26,6 +26,16 @@
 
 (require 'term/xterm)
 
+(defgroup rxvt nil
+  "(U)RXVT support."
+  :version "28.1"
+  :group 'terminals)
+
+(defcustom rxvt-set-window-title nil
+  "Whether Emacs should set window titles to an Emacs frame in RXVT."
+  :version "28.1"
+  :type 'boolean)
+
 (defvar rxvt-function-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map xterm-rxvt-function-map)
@@ -171,7 +181,16 @@
   (xterm-register-default-colors rxvt-standard-colors)
   (rxvt-set-background-mode)
   ;; This recomputes all the default faces given the colors we've just set up.
-  (tty-set-up-initial-frame-faces))
+  (tty-set-up-initial-frame-faces)
+
+  ;; Unconditionally enable bracketed paste mode: terminals that don't
+  ;; support it just ignore the sequence.
+  (xterm--init-bracketed-paste-mode)
+
+  (when rxvt-set-window-title
+    (xterm--init-frame-title))
+
+  (run-hooks 'terminal-init-rxvt-hook))
 
 ;; rxvt puts the default colors into an environment variable
 ;; COLORFGBG.  We use this to set the background mode in a more
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index a7be57e..670e763 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1006,32 +1006,36 @@ See `bibtex-generate-autokey' for details."
   :type 'boolean)
 
 (defvar bibtex-autokey-transcriptions
-  '(;; language specific characters
-    ("\\\\aa" . "a")                      ; \aa           -> a
-    ("\\\\AA" . "A")                      ; \AA           -> A
-    ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae    -> ae
-    ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE    -> Ae
-    ("\\\\i" . "i")                       ; \i            -> i
-    ("\\\\j" . "j")                       ; \j            -> j
-    ("\\\\l" . "l")                       ; \l            -> l
-    ("\\\\L" . "L")                       ; \L            -> L
-    ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe
-    ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe
-    ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss")  ; "s,\"s,\3     -> ss
-    ("\\\"u\\|\\\\\\\"u" . "ue")          ; "u,\"u        -> ue
-    ("\\\"U\\|\\\\\\\"U" . "Ue")          ; "U,\"U        -> Ue
-    ;; accents
-    
("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\u\\|\\\\v\\|\\\\H\\|\\\\t\\|\\\\c\\|\\\\d\\|\\\\b"
 . "")
-    ;; braces, quotes, concatenation.
-    ("[`'\"{}#]" . "")
-    ("\\\\-" . "")                        ; \-            ->
-    ;; spaces
-    ("\\\\?[ \t\n]+\\|~" . " "))
+  (nconc
+   (mapcar (lambda (a) (cons (regexp-opt (car a)) (cdr a)))
+           '(;; language specific characters
+             (("\\aa") . "a")                      ; \aa           -> a
+             (("\\AA") . "A")                      ; \AA           -> A
+             (("\"a" "\\\"a" "\\ae") . "ae")       ; "a,\"a,\ae    -> ae
+             (("\"A" "\\\"A" "\\AE") . "Ae")       ; "A,\"A,\AE    -> Ae
+             (("\\i") . "i")                       ; \i            -> i
+             (("\\j") . "j")                       ; \j            -> j
+             (("\\l") . "l")                       ; \l            -> l
+             (("\\L") . "L")                       ; \L            -> L
+             (("\"o" "\\\"o" "\\o" "\\oe") . "oe") ; "o,\"o,\o,\oe -> oe
+             (("\"O" "\\\"O" "\\O" "\\OE") . "Oe") ; "O,\"O,\O,\OE -> Oe
+             (("\"s" "\\\"s" "\\3") . "ss")        ; "s,\"s,\3     -> ss
+             (("\"u" "\\\"u") . "ue")              ; "u,\"u        -> ue
+             (("\"U" "\\\"U") . "Ue")              ; "U,\"U        -> Ue
+             ;; hyphen, accents
+             (("\\-" "\\`" "\\'" "\\^" "\\~" "\\=" "\\." "\\u" "\\v"
+               "\\H" "\\t" "\\c" "\\d" "\\b") . "")
+             ;; space
+             (("~") . " ")))
+   ;; more spaces
+   '(("[\s\t\n]*\\(?:\\\\\\)?[\s\t\n]+" . " ")
+     ;; braces, quotes, concatenation.
+     ("[`'\"{}#]" . "")))
   "Alist of (OLD-REGEXP . NEW-STRING) pairs.
-Used by the default values of `bibtex-autokey-name-change-strings' and
+Used as default values of `bibtex-autokey-name-change-strings' and
 `bibtex-autokey-titleword-change-strings'.  Defaults to translating some
 language specific characters to their ASCII transcriptions, and
-removing any character accents.")
+removing any accent characters.")
 
 (defcustom bibtex-autokey-name-change-strings
   bibtex-autokey-transcriptions
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 7f87ee3..33f181b 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -2914,16 +2914,17 @@ WHERE is provided the cell and table at that location 
is reported."
 (defun table-generate-source (language &optional dest-buffer caption)
   "Generate source of the current table in the specified language.
 LANGUAGE is a symbol that specifies the language to describe the
-structure of the table.  It must be either `html', `latex' or `cals'.
-The resulted source text is inserted into DEST-BUFFER and the buffer
-object is returned.  When DEST-BUFFER is omitted or nil the default
-buffer specified in `table-dest-buffer-name' is used.  In this case
-the content of the default buffer is erased prior to the generation.
-When DEST-BUFFER is non-nil it is expected to be either a destination
-buffer or a name of the destination buffer.  In this case the
-generated result is inserted at the current point in the destination
-buffer and the previously existing contents in the buffer are
-untouched.
+structure of the table.  It must be either `html', `latex', `cals',
+`wiki', or `mediawiki'.
+The function inserts the resulting source text into DEST-BUFFER, and
+returns the buffer object.  When DEST-BUFFER is omitted or nil, the
+function uses the default buffer specified in `table-dest-buffer-name'.
+In this case, the function erases the default buffer prior to the
+source generation.
+When DEST-BUFFER is non-nil, it should be either a destination
+buffer or a name of the destination buffer.  In that case, the
+function inserts the generated result at point in the destination
+buffer, and leaves the previous contents of the buffer untouched.
 
 References used for this implementation:
 
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index b6afda6..e8231ec 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -1222,23 +1222,24 @@ is non-nil."
 
 (defun vc-cvs-ignore (file &optional directory _remove)
   "Ignore FILE under CVS.
-FILE is either absolute or relative to DIRECTORY.  The basename
-of FILE is written unmodified into the ignore file and is
+FILE is either absolute or relative to DIRECTORY.  The non-directory
+part of FILE is written unmodified into the ignore file and is
 therefore evaluated by CVS as an ignore pattern which follows
 glob(7) syntax.  If the pattern should match any of the special
-characters ‘?*[\\\’ literally, they must be escaped with a
+characters `?*[\\' literally, they must be escaped with a
 backslash.
 
 CVS processes one ignore file for each subdirectory.  Patterns
 are separated by whitespace and only match files in the same
 directory.  Since FILE can be a relative filename with leading
-diretories, FILE is expanded against DIRECTORY to determine the
-correct absolute filename.  The directory name of this path is
-then used to determine the location of the ignore file.  The base
-name of this path is used as pattern for the ignore file.
-
-Since patterns are whitespace sparated, it is usually better to
-replace spaces in filenames with question marks ‘?’."
+directories, FILE is expanded against DIRECTORY to determine the
+correct absolute filename.  The directory part of the resulting name
+is then used to determine the location of the ignore file.  The
+non-directory part of the name is used as pattern for the ignore file.
+
+Since patterns are whitespace-separated, filenames containing spaces
+cannot be represented directly.  A work-around is to replace such
+spaces with question marks."
   (setq file (directory-file-name (expand-file-name file directory)))
   (vc-cvs-append-to-ignore (file-name-directory file) (file-name-nondirectory 
file)))
 
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index e5c5e16..38b4937 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -879,9 +879,10 @@ If a prefix argument is given, ignore all marked files."
           (vc-ignore (vc-dir-fileinfo->name filearg))
           t))
        vc-ewoc)
-    (vc-ignore
-     (file-relative-name (vc-dir-current-file))
-     default-directory)))
+    (let ((rel-dir (vc--ignore-base-dir)))
+      (vc-ignore
+       (file-relative-name (vc-dir-current-file) rel-dir)
+       rel-dir))))
 
 (defun vc-dir-current-file ()
   (let ((node (ewoc-locate vc-ewoc)))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index ec10265..96c400c 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1427,14 +1427,7 @@ When called interactively, prompt for a FILE to ignore, 
unless a
 prefix argument is given, in which case prompt for a file FILE to
 remove from the list of ignored files."
   (interactive
-   (let* ((backend (vc-responsible-backend default-directory))
-          (rel-dir
-           (condition-case nil
-               (file-name-directory
-                (vc-call-backend backend 'find-ignore-file
-                                 default-directory))
-             (vc-not-supported
-              default-directory)))
+   (let* ((rel-dir (vc--ignore-base-dir))
           (file (read-file-name "File to ignore: ")))
      (when (and (file-name-absolute-p file)
                 (file-in-directory-p file rel-dir))
@@ -1447,6 +1440,15 @@ remove from the list of ignored files."
                       (error "Unknown backend"))))
     (vc-call-backend backend 'ignore file directory remove)))
 
+(defun vc--ignore-base-dir ()
+  (let ((backend (vc-responsible-backend default-directory)))
+    (condition-case nil
+        (file-name-directory
+         (vc-call-backend backend 'find-ignore-file
+                          default-directory))
+      (vc-not-supported
+       default-directory))))
+
 (defun vc-default-ignore (backend file &optional directory remove)
   "Ignore FILE under DIRECTORY (default is `default-directory').
 FILE is a wildcard specification relative to DIRECTORY.
diff --git a/lisp/windmove.el b/lisp/windmove.el
index 40adb49..94d2b75 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -474,6 +474,11 @@ When `switch-to-buffer-obey-display-actions' is non-nil,
                                         (tab-bar-new-tab))
                                       (setq type 'tab)
                                       (selected-window))
+                                     ((eq dir 'new-frame)
+                                      (window--maybe-raise-frame
+                                       (make-frame-on-current-monitor 
pop-up-frame-alist))
+                                      (setq type 'frame)
+                                      (selected-window))
                                      ((eq dir 'same-window)
                                       (selected-window))
                                      (t (window-in-direction
@@ -542,6 +547,12 @@ See the logic of the prefix ARG in 
`windmove-display-in-direction'."
   (windmove-display-in-direction 'same-window arg))
 
 ;;;###autoload
+(defun windmove-display-new-frame (&optional arg)
+  "Display the next buffer in a new frame."
+  (interactive "P")
+  (windmove-display-in-direction 'new-frame arg))
+
+;;;###autoload
 (defun windmove-display-new-tab (&optional arg)
   "Display the next buffer in a new tab."
   (interactive "P")
@@ -562,6 +573,7 @@ Default value of MODIFIERS is `shift-meta'."
   (global-set-key (vector (append modifiers '(up)))    'windmove-display-up)
   (global-set-key (vector (append modifiers '(down)))  'windmove-display-down)
   (global-set-key (vector (append modifiers '(?0)))    
'windmove-display-same-window)
+  (global-set-key (vector (append modifiers '(?f)))    
'windmove-display-new-frame)
   (global-set-key (vector (append modifiers '(?t)))    
'windmove-display-new-tab))
 
 
diff --git a/lisp/window.el b/lisp/window.el
index bd825c0..5824b1c 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -7891,15 +7891,15 @@ Info node `(elisp) Buffer Display Action Alists' for 
details of
 such alists.
 
 ALIST has to contain a `direction' entry whose value should be
-one of `left', `above' (or `up'), `right' and `below' (or
-'down').  Other values are usually interpreted as `below'.
+one of `left', `above' (or `up'), `right' and `below' (or `down').
+Other values are usually interpreted as `below'.
 
 If ALIST also contains a `window' entry, its value specifies a
 reference window.  That value can be a special symbol like
-'main' (which stands for the selected frame's main window) or
-'root' (standings for the selected frame's root window) or an
+`main' (which stands for the selected frame's main window) or
+`root' (standings for the selected frame's root window) or an
 arbitrary valid window.  Any other value (or omitting the
-'window' entry) means to use the selected window as reference
+`window' entry) means to use the selected window as reference
 window.
 
 This function tries to reuse or split a window such that the
@@ -8806,8 +8806,7 @@ parameters of FRAME."
            (parent (frame-parent frame))
            (monitor-attributes
             (unless parent
-              (car (display-monitor-attributes-list
-                    (frame-parameter frame 'display)))))
+              (frame-monitor-attributes frame)))
            ;; FRAME'S parent or display sizes.  Used in connection
            ;; with margins.
            (geometry
@@ -8816,11 +8815,11 @@ parameters of FRAME."
            (parent-or-display-width
             (if parent
                 (frame-native-width parent)
-              (- (nth 2 geometry) (nth 0 geometry))))
+              (nth 2 geometry)))
            (parent-or-display-height
             (if parent
                 (frame-native-height parent)
-              (- (nth 3 geometry) (nth 1 geometry))))
+              (nth 3 geometry)))
            ;; FRAME's parent or workarea sizes.  Used when no margins
            ;; are specified.
            (parent-or-workarea
@@ -8882,13 +8881,15 @@ parameters of FRAME."
                                 (window--sanitize-margin
                                  (nth 2 margins) left-margin
                                  parent-or-display-width))
-                           (nth 2 parent-or-workarea)))
+                           (+ (nth 0 parent-or-workarea)
+                              (nth 2 parent-or-workarea))))
            (bottom-margin (if (nth 3 margins)
                               (- parent-or-display-height
                                  (window--sanitize-margin
                                   (nth 3 margins) top-margin
                                   parent-or-display-height))
-                            (nth 3 parent-or-workarea)))
+                            (+ (nth 1 parent-or-workarea)
+                               (nth 3 parent-or-workarea))))
            ;; Minimum and maximum sizes specified for FRAME.
            (sizes (or (frame-parameter frame 'fit-frame-to-buffer-sizes)
                       fit-frame-to-buffer-sizes))
@@ -9124,8 +9125,8 @@ accessible position."
               ;; wider than its frame's pixel width, its height
               ;; remains unaltered.
               (width (+ (car (window-text-pixel-size
-                              window (window-start) (point-max)
-                              (frame-pixel-width)
+                              window (window-start window) nil
+                              (frame-pixel-width (window-frame window))
                               ;; Add one line-height to assure that
                               ;; we're on the safe side.  This
                               ;; overshoots when the first line below
diff --git a/m4/futimens.m4 b/m4/futimens.m4
new file mode 100644
index 0000000..dc5cfa9
--- /dev/null
+++ b/m4/futimens.m4
@@ -0,0 +1,65 @@
+# serial 8
+# See if we need to provide futimens replacement.
+
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_FUTIMENS],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([futimens])
+  if test $ac_cv_func_futimens = no; then
+    HAVE_FUTIMENS=0
+  else
+    AC_CACHE_CHECK([whether futimens works],
+      [gl_cv_func_futimens_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+]], [[struct timespec ts[2];
+      int fd = creat ("conftest.file", 0600);
+      struct stat st;
+      if (fd < 0) return 1;
+      ts[0].tv_sec = 1;
+      ts[0].tv_nsec = UTIME_OMIT;
+      ts[1].tv_sec = 1;
+      ts[1].tv_nsec = UTIME_NOW;
+      errno = 0;
+      if (futimens (AT_FDCWD, NULL) == 0) return 2;
+      if (errno != EBADF) return 3;
+      if (futimens (fd, ts)) return 4;
+      sleep (1);
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_nsec = UTIME_OMIT;
+      if (futimens (fd, ts)) return 5;
+      if (fstat (fd, &st)) return 6;
+      if (st.st_ctime < st.st_atime) return 7;
+      ]])],
+         [gl_cv_func_futimens_works=yes],
+         [gl_cv_func_futimens_works=no],
+         [case "$host_os" in
+                           # Guess no on glibc systems.
+            *-gnu* | gnu*) gl_cv_func_futimens_works="guessing no" ;;
+                           # Guess no on musl systems.
+            *-musl*)       gl_cv_func_futimens_works="guessing no" ;;
+                           # Guess yes otherwise.
+            *)             gl_cv_func_futimens_works="guessing yes" ;;
+          esac
+         ])
+      rm -f conftest.file])
+    case "$gl_cv_func_futimens_works" in
+      *yes) ;;
+      *)
+        REPLACE_FUTIMENS=1
+        ;;
+    esac
+  fi
+])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 1465ce8..3228aa4 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -95,6 +95,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module fstatat:
   # Code from module fsusage:
   # Code from module fsync:
+  # Code from module futimens:
   # Code from module getdtablesize:
   # Code from module getgroups:
   # Code from module getloadavg:
@@ -179,6 +180,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module unlocked-io:
   # Code from module update-copyright:
   # Code from module utimens:
+  # Code from module utimensat:
   # Code from module vararrays:
   # Code from module verify:
   # Code from module vla:
@@ -297,6 +299,11 @@ AC_DEFUN([gl_INIT],
     gl_PREREQ_FSYNC
   fi
   gl_UNISTD_MODULE_INDICATOR([fsync])
+  gl_FUNC_FUTIMENS
+  if test $HAVE_FUTIMENS = 0 || test $REPLACE_FUTIMENS = 1; then
+    AC_LIBOBJ([futimens])
+  fi
+  gl_SYS_STAT_MODULE_INDICATOR([futimens])
   gl_GETLOADAVG
   if test $HAVE_GETLOADAVG = 0; then
     AC_LIBOBJ([getloadavg])
@@ -466,7 +473,11 @@ AC_DEFUN([gl_INIT],
   gl_TIMESPEC
   gl_UNISTD_H
   gl_FUNC_GLIBC_UNLOCKED_IO
-  gl_UTIMENS
+  gl_FUNC_UTIMENSAT
+  if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
+    AC_LIBOBJ([utimensat])
+  fi
+  gl_SYS_STAT_MODULE_INDICATOR([utimensat])
   AC_C_VARARRAYS
   gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b=false
   gl_gnulib_enabled_cloexec=false
@@ -485,6 +496,7 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false
   gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
   gl_gnulib_enabled_strtoll=false
+  gl_gnulib_enabled_utimens=false
   gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
   func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b ()
   {
@@ -663,6 +675,13 @@ AC_DEFUN([gl_INIT],
       gl_gnulib_enabled_strtoll=true
     fi
   }
+  func_gl_gnulib_m4code_utimens ()
+  {
+    if ! $gl_gnulib_enabled_utimens; then
+      gl_UTIMENS
+      gl_gnulib_enabled_utimens=true
+    fi
+  }
   func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec ()
   {
     if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then
@@ -705,6 +724,9 @@ AC_DEFUN([gl_INIT],
   if test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1; then
     func_gl_gnulib_m4code_03e0aaad4cb89ca757653bd367a6ccb7
   fi
+  if test $HAVE_FUTIMENS = 0 || test $REPLACE_FUTIMENS = 1; then
+    func_gl_gnulib_m4code_utimens
+  fi
   if test $REPLACE_GETOPT = 1; then
     func_gl_gnulib_m4code_be453cec5eecf5731a274f2de7f2db36
   fi
@@ -729,6 +751,15 @@ AC_DEFUN([gl_INIT],
   if test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1; then
     func_gl_gnulib_m4code_5264294aa0a5557541b53c8c741f7f31
   fi
+  if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
+    func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b
+  fi
+  if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
+    func_gl_gnulib_m4code_03e0aaad4cb89ca757653bd367a6ccb7
+  fi
+  if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
+    func_gl_gnulib_m4code_utimens
+  fi
   m4_pattern_allow([^gl_GNULIB_ENABLED_])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b], 
[$gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_cloexec], [$gl_gnulib_enabled_cloexec])
@@ -747,6 +778,7 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7], 
[$gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], 
[$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
+  AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], 
[$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
   # End of code from modules
   m4_ifval(gl_LIBSOURCES_LIST, [
@@ -956,6 +988,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/fsync.c
   lib/ftoastr.c
   lib/ftoastr.h
+  lib/futimens.c
   lib/get-permissions.c
   lib/getdtablesize.c
   lib/getgroups.c
@@ -1063,6 +1096,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unlocked-io.h
   lib/utimens.c
   lib/utimens.h
+  lib/utimensat.c
   lib/verify.h
   lib/vla.h
   lib/warn-on-use.h
@@ -1103,6 +1137,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/fstatat.m4
   m4/fsusage.m4
   m4/fsync.m4
+  m4/futimens.m4
   m4/getdtablesize.m4
   m4/getgroups.m4
   m4/getloadavg.m4
@@ -1184,6 +1219,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/unistd_h.m4
   m4/unlocked-io.m4
   m4/utimens.m4
+  m4/utimensat.m4
   m4/utimes.m4
   m4/vararrays.m4
   m4/warn-on-use.m4
diff --git a/m4/utimensat.m4 b/m4/utimensat.m4
new file mode 100644
index 0000000..2bc1bfe
--- /dev/null
+++ b/m4/utimensat.m4
@@ -0,0 +1,69 @@
+# serial 6
+# See if we need to provide utimensat replacement.
+
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_UTIMENSAT],
+[
+  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  AC_CHECK_FUNCS_ONCE([utimensat])
+  if test $ac_cv_func_utimensat = no; then
+    HAVE_UTIMENSAT=0
+  else
+    AC_CACHE_CHECK([whether utimensat works],
+      [gl_cv_func_utimensat_works],
+      [AC_RUN_IFELSE(
+         [AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <unistd.h>
+]],         [[int result = 0;
+              const char *f = "conftest.file";
+              if (close (creat (f, 0600)))
+                return 1;
+              /* Test whether the AT_SYMLINK_NOFOLLOW flag is supported.  */
+              {
+                if (utimensat (AT_FDCWD, f, NULL, AT_SYMLINK_NOFOLLOW))
+                  result |= 2;
+              }
+              /* Test whether UTIME_NOW and UTIME_OMIT work.  */
+              {
+                struct timespec ts[2];
+                ts[0].tv_sec = 1;
+                ts[0].tv_nsec = UTIME_OMIT;
+                ts[1].tv_sec = 1;
+                ts[1].tv_nsec = UTIME_NOW;
+                if (utimensat (AT_FDCWD, f, ts, 0))
+                  result |= 4;
+              }
+              sleep (1);
+              {
+                struct stat st;
+                struct timespec ts[2];
+                ts[0].tv_sec = 1;
+                ts[0].tv_nsec = UTIME_NOW;
+                ts[1].tv_sec = 1;
+                ts[1].tv_nsec = UTIME_OMIT;
+                if (utimensat (AT_FDCWD, f, ts, 0))
+                  result |= 8;
+                if (stat (f, &st))
+                  result |= 16;
+                else if (st.st_ctime < st.st_atime)
+                  result |= 32;
+              }
+              return result;
+            ]])],
+         [gl_cv_func_utimensat_works=yes],
+         [gl_cv_func_utimensat_works=no],
+         [gl_cv_func_utimensat_works="guessing yes"])])
+    if test "$gl_cv_func_utimensat_works" = no; then
+      REPLACE_UTIMENSAT=1
+    fi
+  fi
+])
diff --git a/nt/gnulib-cfg.mk b/nt/gnulib-cfg.mk
index 1d120a9..e3b9457 100644
--- a/nt/gnulib-cfg.mk
+++ b/nt/gnulib-cfg.mk
@@ -65,3 +65,5 @@ OMIT_GNULIB_MODULE_unistd = true
 OMIT_GNULIB_MODULE_canonicalize-lgpl = true
 OMIT_GNULIB_MODULE_fchmodat = true
 OMIT_GNULIB_MODULE_lchmod = true
+OMIT_GNULIB_MODULE_futimens = true
+OMIT_GNULIB_MODULE_utimensat = true
diff --git a/nt/inc/sys/stat.h b/nt/inc/sys/stat.h
index 7bf780d..f58d5ab 100644
--- a/nt/inc/sys/stat.h
+++ b/nt/inc/sys/stat.h
@@ -164,4 +164,9 @@ int __cdecl __MINGW_NOTHROW fstatat (int, char const *,
                                                 struct stat *, int);
 int __cdecl __MINGW_NOTHROW    chmod (const char*, int);
 
+/* Provide prototypes of library functions that are emulated on w32
+   and whose prototypes are usually found in sys/stat.h on POSIX
+   platforms.  */
+extern int utimensat (int, const char *, struct timespec const[2], int);
+
 #endif /* INC_SYS_STAT_H_ */
diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index 5bd5b83..2271eef 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -105,6 +105,10 @@ gl_cv_func_fstatat_zero_flag=yes
 ac_cv_func_fchmodat=yes
 gl_cv_func_fchmodat_works="not-needed-so-yes"
 ac_cv_func_lchmod=yes
+ac_cv_func_futimens=not-needed
+gl_cv_func_futimens_works="not-needed-so-yes"
+ac_cv_func_utimensat=yes
+gl_cv_func_utimensat_works=yes
 # Aliased to _commit in ms-w32.h
 ac_cv_func_fsync=yes
 ac_cv_func_fdatasync=yes
diff --git a/src/composite.c b/src/composite.c
index 05365cf..84de334 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -818,6 +818,11 @@ fill_gstring_body (Lisp_Object gstring)
   Lisp_Object header = AREF (gstring, 0);
   ptrdiff_t len = LGSTRING_CHAR_LEN (gstring);
   ptrdiff_t i;
+  struct font *font = NULL;
+  unsigned int code;
+
+  if (FONT_OBJECT_P (font_object))
+    font = XFONT_OBJECT (font_object);
 
   for (i = 0; i < len; i++)
     {
@@ -832,10 +837,15 @@ fill_gstring_body (Lisp_Object gstring)
       LGLYPH_SET_FROM (g, i);
       LGLYPH_SET_TO (g, i);
       LGLYPH_SET_CHAR (g, c);
-      if (FONT_OBJECT_P (font_object))
-       {
-         font_fill_lglyph_metrics (g, font_object);
-       }
+
+      if (font != NULL)
+        code = font->driver->encode_char (font, LGLYPH_CHAR (g));
+      else
+        code = FONT_INVALID_CODE;
+      if (code != FONT_INVALID_CODE)
+        {
+         font_fill_lglyph_metrics (g, font, code);
+        }
       else
        {
          int width = XFIXNAT (CHAR_TABLE_REF (Vchar_width_table, c));
diff --git a/src/conf_post.h b/src/conf_post.h
index 2f8d19f..eb8fb18 100644
--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -78,6 +78,7 @@ typedef bool bool_bf;
 # define __has_attribute_no_address_safety_analysis false
 # define __has_attribute_no_sanitize_address GNUC_PREREQ (4, 8, 0)
 # define __has_attribute_no_sanitize_undefined GNUC_PREREQ (4, 9, 0)
+# define __has_attribute_returns_nonnull GNUC_PREREQ (4, 9, 0)
 # define __has_attribute_warn_unused_result GNUC_PREREQ (3, 4, 0)
 #endif
 
@@ -321,6 +322,12 @@ extern int emacs_setenv_TZ (char const *);
 
 #define ATTRIBUTE_MALLOC_SIZE(args) ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE 
(args)
 
+#if __has_attribute (returns_nonnull)
+# define ATTRIBUTE_RETURNS_NONNULL __attribute__ ((returns_nonnull))
+#else
+# define ATTRIBUTE_RETURNS_NONNULL
+#endif
+
 /* Work around GCC bug 59600: when a function is inlined, the inlined
    code may have its addresses sanitized even if the function has the
    no_sanitize_address attribute.  This bug is fixed in GCC 4.9.0 and
diff --git a/src/editfns.c b/src/editfns.c
index ddf190b..eb15566 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1262,14 +1262,17 @@ name, or nil if there is no such user.  */)
   if (q)
     {
       Lisp_Object login = Fuser_login_name (INT_TO_INTEGER (pw->pw_uid));
-      USE_SAFE_ALLOCA;
-      char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1);
-      memcpy (r, p, q - p);
-      char *s = lispstpcpy (&r[q - p], login);
-      r[q - p] = upcase ((unsigned char) r[q - p]);
-      strcpy (s, q + 1);
-      full = build_string (r);
-      SAFE_FREE ();
+      if (!NILP (login))
+       {
+         USE_SAFE_ALLOCA;
+         char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1);
+         memcpy (r, p, q - p);
+         char *s = lispstpcpy (&r[q - p], login);
+         r[q - p] = upcase ((unsigned char) r[q - p]);
+         strcpy (s, q + 1);
+         full = build_string (r);
+         SAFE_FREE ();
+       }
     }
 #endif /* AMPERSAND_FULL_NAME */
 
diff --git a/src/emacs.c b/src/emacs.c
index ce1c9ed..fcc02a3 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1974,7 +1974,6 @@ Using an Emacs configured with --with-x-toolkit=lucid 
does not have this problem
   /* This calls putenv and so must precede init_process_emacs.  */
   init_timefns ();
 
-  /* This sets Voperating_system_release, which init_process_emacs uses.  */
   init_editfns ();
 
   /* These two call putenv.  */
diff --git a/src/fileio.c b/src/fileio.c
index 2532f52..ffe7955 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2077,7 +2077,7 @@ permissions.  */)
       report_file_error ("Copying permissions from", file);
     case -3:
       xsignal2 (Qfile_date_error,
-               build_string ("Resetting file times"), newname);
+               build_string ("Cannot set file date"), newname);
     case -4:
       report_file_error ("Copying permissions to", newname);
     }
@@ -2253,9 +2253,8 @@ permissions.  */)
 
   if (!NILP (keep_time))
     {
-      struct timespec atime = get_stat_atime (&st);
-      struct timespec mtime = get_stat_mtime (&st);
-      if (set_file_times (ofd, SSDATA (encoded_newname), atime, mtime) != 0)
+      struct timespec ts[] = { get_stat_atime (&st), get_stat_mtime (&st) };
+      if (futimens (ofd, ts) != 0)
        xsignal2 (Qfile_date_error,
                  build_string ("Cannot set file date"), newname);
     }
@@ -3430,39 +3429,41 @@ The value is an integer.  */)
 }
 
 
-DEFUN ("set-file-times", Fset_file_times, Sset_file_times, 1, 2, 0,
+DEFUN ("set-file-times", Fset_file_times, Sset_file_times, 1, 3, 0,
        doc: /* Set times of file FILENAME to TIMESTAMP.
-Set both access and modification times.
-Return t on success, else nil.
-Use the current time if TIMESTAMP is nil.  TIMESTAMP is in the format of
-`current-time'. */)
-  (Lisp_Object filename, Lisp_Object timestamp)
+If optional FLAG is `nofollow', do not follow FILENAME if it is a
+symbolic link.  Set both access and modification times.  Return t on
+success, else nil.  Use the current time if TIMESTAMP is nil.
+TIMESTAMP is in the format of `current-time'. */)
+  (Lisp_Object filename, Lisp_Object timestamp, Lisp_Object flag)
 {
-  Lisp_Object absname, encoded_absname;
-  Lisp_Object handler;
-  struct timespec t = lisp_time_argument (timestamp);
+  int nofollow = symlink_nofollow_flag (flag);
 
-  absname = Fexpand_file_name (filename, BVAR (current_buffer, directory));
+  struct timespec ts[2];
+  if (!NILP (timestamp))
+    ts[0] = ts[1] = lisp_time_argument (timestamp);
+  else
+    ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW;
 
   /* If the file name has special constructs in it,
      call the corresponding file name handler.  */
-  handler = Ffind_file_name_handler (absname, Qset_file_times);
+  Lisp_Object
+    absname = Fexpand_file_name (filename, BVAR (current_buffer, directory)),
+    handler = Ffind_file_name_handler (absname, Qset_file_times);
   if (!NILP (handler))
-    return call3 (handler, Qset_file_times, absname, timestamp);
+    return call4 (handler, Qset_file_times, absname, timestamp, flag);
 
-  encoded_absname = ENCODE_FILE (absname);
+  Lisp_Object encoded_absname = ENCODE_FILE (absname);
 
-  {
-    if (set_file_times (-1, SSDATA (encoded_absname), t, t) != 0)
-      {
+  if (utimensat (AT_FDCWD, SSDATA (encoded_absname), ts, nofollow) != 0)
+    {
 #ifdef MSDOS
-        /* Setting times on a directory always fails.  */
-        if (file_directory_p (encoded_absname))
-          return Qnil;
+      /* Setting times on a directory always fails.  */
+      if (file_directory_p (encoded_absname))
+       return Qnil;
 #endif
-        report_file_error ("Setting file times", absname);
-      }
-  }
+      report_file_error ("Setting file times", absname);
+    }
 
   return Qt;
 }
diff --git a/src/font.c b/src/font.c
index bb39aef..2a45630 100644
--- a/src/font.c
+++ b/src/font.c
@@ -4416,10 +4416,8 @@ DEFUN ("clear-font-cache", Fclear_font_cache, 
Sclear_font_cache, 0, 0, 0,
 
 
 void
-font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_Object font_object)
+font_fill_lglyph_metrics (Lisp_Object glyph, struct font *font, unsigned int 
code)
 {
-  struct font *font = XFONT_OBJECT (font_object);
-  unsigned code = font->driver->encode_char (font, LGLYPH_CHAR (glyph));
   struct font_metrics metrics;
 
   LGLYPH_SET_CODE (glyph, code);
diff --git a/src/font.h b/src/font.h
index 0561e3c..8614e7f 100644
--- a/src/font.h
+++ b/src/font.h
@@ -886,7 +886,7 @@ extern Lisp_Object font_update_drivers (struct frame *f, 
Lisp_Object list);
 extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *,
                               struct window *, struct face *,
                               Lisp_Object);
-extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object);
+extern void font_fill_lglyph_metrics (Lisp_Object, struct font *, unsigned 
int);
 
 extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop,
                                    Lisp_Object val);
diff --git a/src/fontset.c b/src/fontset.c
index bca9452..c2bb8b2 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -367,8 +367,14 @@ fontset_add (Lisp_Object fontset, Lisp_Object range, 
Lisp_Object elt, Lisp_Objec
 static int
 fontset_compare_rfontdef (const void *val1, const void *val2)
 {
-  return (RFONT_DEF_SCORE (*(Lisp_Object *) val1)
-         - RFONT_DEF_SCORE (*(Lisp_Object *) val2));
+  Lisp_Object v1 = *(Lisp_Object *) val1, v2 = *(Lisp_Object *) val2;
+  if (NILP (v1) && NILP (v2))
+    return 0;
+  else if (NILP (v1))
+    return INT_MIN;
+  else if (NILP (v2))
+    return INT_MAX;
+  return (RFONT_DEF_SCORE (v1) - RFONT_DEF_SCORE (v2));
 }
 
 /* Update a cons cell which has this form:
@@ -400,6 +406,8 @@ reorder_font_vector (Lisp_Object font_group, struct font 
*font)
   for (i = 0; i < size; i++)
     {
       Lisp_Object rfont_def = AREF (vec, i);
+      if (NILP (rfont_def))
+       continue;
       Lisp_Object font_def = RFONT_DEF_FONT_DEF (rfont_def);
       Lisp_Object font_spec = FONT_DEF_SPEC (font_def);
       int score = RFONT_DEF_SCORE (rfont_def) & 0xFF;
diff --git a/src/fringe.c b/src/fringe.c
index 97aad84..2a46e3c 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1500,7 +1500,8 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, 
Sdefine_fringe_bitmap,
 BITMAP is a symbol identifying the new fringe bitmap.
 BITS is either a string or a vector of integers.
 HEIGHT is height of bitmap.  If HEIGHT is nil, use length of BITS.
-WIDTH must be an integer between 1 and 16, or nil which defaults to 8.
+WIDTH must be an integer from 1 to 16, or nil which defaults to 8.  An
+error is signaled if WIDTH is outside this range.
 Optional fifth arg ALIGN may be one of `top', `center', or `bottom',
 indicating the positioning of the bitmap relative to the rows where it
 is used; the default is to center the bitmap.  Fifth arg may also be a
@@ -1535,7 +1536,9 @@ If BITMAP already exists, the existing definition is 
replaced.  */)
   else
     {
       CHECK_FIXNUM (width);
-      fb.width = max (0, min (XFIXNUM (width), 255));
+      fb.width = max (1, min (XFIXNUM (width), 16));
+      if (fb.width != XFIXNUM (width))
+        args_out_of_range (width, build_string ("Width must be from 1 to 16"));
     }
 
   fb.period = 0;
diff --git a/src/gnutls.c b/src/gnutls.c
index 31fcd37..70176c4 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -2834,16 +2834,21 @@ Any GnuTLS extension with ID up to 100
 void
 syms_of_gnutls (void)
 {
-  DEFSYM (Qlibgnutls_version, "libgnutls-version");
-  Fset (Qlibgnutls_version,
+  DEFVAR_LISP ("libgnutls-version", Vlibgnutls_version,
+               doc: /* The version of libgnutls that Emacs was compiled with.
+The version number is encoded as an integer with the major version in
+the ten thousands place, minor version in the hundreds, and patch
+level in the ones.  For builds without libgnutls, the value is -1.  */);
+  Vlibgnutls_version = make_fixnum
 #ifdef HAVE_GNUTLS
-       make_fixnum (GNUTLS_VERSION_MAJOR * 10000
-                    + GNUTLS_VERSION_MINOR * 100
-                    + GNUTLS_VERSION_PATCH)
+    (GNUTLS_VERSION_MAJOR * 10000
+     + GNUTLS_VERSION_MINOR * 100
+     + GNUTLS_VERSION_PATCH)
 #else
-       make_fixnum (-1)
+    (-1)
 #endif
-        );
+    ;
+
 #ifdef HAVE_GNUTLS
   gnutls_global_initialized = 0;
   PDUMPER_IGNORE (gnutls_global_initialized);
diff --git a/src/intervals.c b/src/intervals.c
index a66594c..594d892 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -298,7 +298,7 @@ rotate_right (INTERVAL A)
     set_interval_parent (c, A);
 
   /* A's total length is decreased by the length of B and its left child.  */
-  A->total_length -= B->total_length - TOTAL_LENGTH (c);
+  A->total_length -= TOTAL_LENGTH (B) - TOTAL_LENGTH0 (c);
   eassert (TOTAL_LENGTH (A) > 0);
   eassert (LENGTH (A) > 0);
 
@@ -349,7 +349,7 @@ rotate_left (INTERVAL A)
     set_interval_parent (c, A);
 
   /* A's total length is decreased by the length of B and its right child.  */
-  A->total_length -= B->total_length - TOTAL_LENGTH (c);
+  A->total_length -= TOTAL_LENGTH (B) - TOTAL_LENGTH0 (c);
   eassert (TOTAL_LENGTH (A) > 0);
   eassert (LENGTH (A) > 0);
 
@@ -723,13 +723,13 @@ previous_interval (register INTERVAL interval)
       i->position - LEFT_TOTAL_LENGTH (i)                       \
       - LENGTH (INTERVAL_PARENT (i))
 
-/* Find the interval containing POS, given some non-NULL INTERVAL in
+/* Find the interval containing POS, given some interval I in
    the same tree.  Note that we update interval->position in each
    interval we traverse, assuming it is already correctly set for the
    argument I.  We don't assume that any other interval already has a
    correctly set ->position.  */
 INTERVAL
-update_interval (register INTERVAL i, ptrdiff_t pos)
+update_interval (INTERVAL i, ptrdiff_t pos)
 {
   if (!i)
     return NULL;
@@ -739,7 +739,7 @@ update_interval (register INTERVAL i, ptrdiff_t pos)
       if (pos < i->position)
        {
          /* Move left.  */
-         if (pos >= i->position - TOTAL_LENGTH (i->left))
+         if (pos >= i->position - LEFT_TOTAL_LENGTH (i))
            {
              i->left->position = i->position - TOTAL_LENGTH (i->left)
                + LEFT_TOTAL_LENGTH (i->left);
@@ -757,7 +757,7 @@ update_interval (register INTERVAL i, ptrdiff_t pos)
       else if (pos >= INTERVAL_LAST_POS (i))
        {
          /* Move right.  */
-         if (pos < INTERVAL_LAST_POS (i) + TOTAL_LENGTH (i->right))
+         if (pos < INTERVAL_LAST_POS (i) + RIGHT_TOTAL_LENGTH (i))
            {
              i->right->position = INTERVAL_LAST_POS (i)
                + LEFT_TOTAL_LENGTH (i->right);
diff --git a/src/intervals.h b/src/intervals.h
index a93b10e..9a7ba91 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -96,24 +96,27 @@ struct interval
 /* True if this interval has both left and right children.  */
 #define BOTH_KIDS_P(i) ((i)->left != NULL && (i)->right != NULL)
 
-/* The total size of all text represented by this interval and all its
-   children in the tree.   This is zero if the interval is null.  */
-#define TOTAL_LENGTH(i) ((i) == NULL ? 0 : (i)->total_length)
+/* The total size of all text represented by the nonnull interval I
+   and all its children in the tree.  */
+#define TOTAL_LENGTH(i) ((i)->total_length)
+
+/* Likewise, but also defined to be zero if I is null.  */
+#define TOTAL_LENGTH0(i) ((i) ? TOTAL_LENGTH (i) : 0)
 
 /* The size of text represented by this interval alone.  */
-#define LENGTH(i) ((i)->total_length                   \
-                  - TOTAL_LENGTH ((i)->right)          \
-                  - TOTAL_LENGTH ((i)->left))
+#define LENGTH(i) (TOTAL_LENGTH (i)            \
+                  - RIGHT_TOTAL_LENGTH (i)     \
+                  - LEFT_TOTAL_LENGTH (i))
 
 /* The position of the character just past the end of I.  Note that
    the position cache i->position must be valid for this to work.  */
 #define INTERVAL_LAST_POS(i) ((i)->position + LENGTH (i))
 
 /* The total size of the left subtree of this interval.  */
-#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0)
+#define LEFT_TOTAL_LENGTH(i) TOTAL_LENGTH0 ((i)->left)
 
 /* The total size of the right subtree of this interval.  */
-#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0)
+#define RIGHT_TOTAL_LENGTH(i) TOTAL_LENGTH0 ((i)->right)
 
 /* These macros are for dealing with the interval properties.  */
 
@@ -234,7 +237,7 @@ set_interval_plist (INTERVAL i, Lisp_Object plist)
 
 /* Declared in alloc.c.  */
 
-extern INTERVAL make_interval (void);
+extern INTERVAL make_interval (void) ATTRIBUTE_RETURNS_NONNULL;
 
 /* Declared in intervals.c.  */
 
@@ -246,7 +249,8 @@ extern void traverse_intervals (INTERVAL, ptrdiff_t,
                                 Lisp_Object);
 extern void traverse_intervals_noorder (INTERVAL,
                                        void (*) (INTERVAL, void *), void *);
-extern INTERVAL split_interval_right (INTERVAL, ptrdiff_t);
+extern INTERVAL split_interval_right (INTERVAL, ptrdiff_t)
+  ATTRIBUTE_RETURNS_NONNULL;
 extern INTERVAL split_interval_left (INTERVAL, ptrdiff_t);
 extern INTERVAL find_interval (INTERVAL, ptrdiff_t);
 extern INTERVAL next_interval (INTERVAL);
diff --git a/src/nsterm.m b/src/nsterm.m
index 8e25614..851a561 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1141,6 +1141,7 @@ ns_update_end (struct frame *f)
 
 #ifdef NS_DRAW_TO_BUFFER
   [NSGraphicsContext setCurrentContext:nil];
+  [view setNeedsDisplay:YES];
 #else
   block_input ();
 
@@ -1194,12 +1195,6 @@ ns_focus (struct frame *f, NSRect *r, int n)
   /* clipping */
   if (r)
     {
-#ifdef NS_IMPL_COCOA
-      int i;
-      for (i = 0 ; i < n ; i++)
-        [view setNeedsDisplayInRect:r[i]];
-#endif
-
       [[NSGraphicsContext currentContext] saveGraphicsState];
       if (n == 2)
         NSRectClipList (r, 2);
@@ -1224,7 +1219,9 @@ ns_unfocus (struct frame *f)
       gsaved = NO;
     }
 
-#ifdef NS_IMPL_GNUSTEP
+#ifdef NS_DRAW_TO_BUFFER
+  [FRAME_NS_VIEW (f) setNeedsDisplay:YES];
+#else
   if (f != ns_updating_frame)
     {
       if (focus_view != NULL)
diff --git a/src/pdumper.c b/src/pdumper.c
index 4ecdea1..2e2220a 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -3692,14 +3692,12 @@ dump_unwind_cleanup (void *data)
   Vprocess_environment = ctx->old_process_environment;
 }
 
-/* Return DUMP_OFFSET, making sure it is within the heap.  */
-static dump_off
+/* Check that DUMP_OFFSET is within the heap.  */
+static void
 dump_check_dump_off (struct dump_context *ctx, dump_off dump_offset)
 {
   eassert (dump_offset > 0);
-  if (ctx)
-    eassert (dump_offset < ctx->end_heap);
-  return dump_offset;
+  eassert (!ctx || dump_offset < ctx->end_heap);
 }
 
 static void
@@ -3822,6 +3820,7 @@ decode_emacs_reloc (struct dump_context *ctx, Lisp_Object 
lreloc)
           }
         else
           {
+           eassume (ctx); /* Pacify GCC 9.2.1 -O3 -Wnull-dereference.  */
             eassert (!dump_object_emacs_ptr (target_value));
             reloc.u.dump_offset = dump_recall_object (ctx, target_value);
             if (reloc.u.dump_offset <= 0)
diff --git a/src/process.c b/src/process.c
index 91d4261..e4e5e57 100644
--- a/src/process.c
+++ b/src/process.c
@@ -8277,19 +8277,6 @@ init_process_emacs (int sockfd)
   memset (datagram_address, 0, sizeof datagram_address);
 #endif
 
-#if defined (DARWIN_OS)
-  /* PTYs are broken on Darwin < 6, but are sometimes useful for interactive
-     processes.  As such, we only change the default value.  */
- if (initialized)
-  {
-    char const *release = (STRINGP (Voperating_system_release)
-                          ? SSDATA (Voperating_system_release)
-                          : 0);
-    if (!release || !release[0] || (release[0] < '7' && release[1] == '.')) {
-      Vprocess_connection_type = Qnil;
-    }
-  }
-#endif
 #endif /* subprocesses */
   kbd_is_on_hold = 0;
 }
diff --git a/src/sysdep.c b/src/sysdep.c
index e8e8bbf..149d80f 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2752,21 +2752,6 @@ emacs_perror (char const *message)
   errno = err;
 }
 
-/* Set the access and modification time stamps of FD (a.k.a. FILE) to be
-   ATIME and MTIME, respectively.
-   FD must be either negative -- in which case it is ignored --
-   or a file descriptor that is open on FILE.
-   If FD is nonnegative, then FILE can be NULL.  */
-int
-set_file_times (int fd, const char *filename,
-               struct timespec atime, struct timespec mtime)
-{
-  struct timespec timespec[2];
-  timespec[0] = atime;
-  timespec[1] = mtime;
-  return fdutimens (fd, filename, timespec);
-}
-
 /* Rename directory SRCFD's entry SRC to directory DSTFD's entry DST.
    This is like renameat except that it fails if DST already exists,
    or if this operation is not supported atomically.  Return 0 if
diff --git a/src/systime.h b/src/systime.h
index 00ca4a1..b59a3d1 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -67,9 +67,6 @@ timespec_valid_p (struct timespec t)
   return t.tv_nsec >= 0;
 }
 
-/* defined in sysdep.c */
-extern int set_file_times (int, const char *, struct timespec, struct 
timespec);
-
 /* defined in keyboard.c */
 extern void set_waiting_for_input (struct timespec *);
 
diff --git a/src/timefns.c b/src/timefns.c
index 0aa8775..404ce49 100644
--- a/src/timefns.c
+++ b/src/timefns.c
@@ -421,6 +421,9 @@ decode_float_time (double t, struct lisp_time *result)
       else if (flt_radix_power_size <= scale)
        return isnan (t) ? EDOM : EOVERFLOW;
 
+      /* Compute TICKS, HZ such that TICKS / HZ exactly equals T, where HZ is
+        T's frequency or 1, whichever is greater.  Here, “frequency” means
+        1/precision.  Cache HZ values in flt_radix_power.  */
       double scaled = scalbn (t, scale);
       eassert (trunc (scaled) == scaled);
       ticks = double_to_integer (scaled);
@@ -442,6 +445,7 @@ decode_float_time (double t, struct lisp_time *result)
 static Lisp_Object
 ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz)
 {
+  /* mpz[0] = floor ((ticks * trillion) / hz).  */
   mpz_t const *zticks = bignum_integer (&mpz[0], ticks);
 #if FASTER_TIMEFNS && TRILLION <= ULONG_MAX
   mpz_mul_ui (mpz[0], *zticks, TRILLION);
@@ -449,6 +453,9 @@ ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz)
   mpz_mul (mpz[0], *zticks, ztrillion);
 #endif
   mpz_fdiv_q (mpz[0], mpz[0], *bignum_integer (&mpz[1], hz));
+
+  /* mpz[0] = floor (mpz[0] / trillion), with US = the high six digits of the
+     12-digit remainder, and PS = the low six digits.  */
 #if FASTER_TIMEFNS && TRILLION <= ULONG_MAX
   unsigned long int fullps = mpz_fdiv_q_ui (mpz[0], mpz[0], TRILLION);
   int us = fullps / 1000000;
@@ -458,11 +465,14 @@ ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz)
   int ps = mpz_fdiv_q_ui (mpz[1], mpz[1], 1000000);
   int us = mpz_get_ui (mpz[1]);
 #endif
+
+  /* mpz[0] = floor (mpz[0] / 1 << LO_TIME_BITS), with lo = remainder.  */
   unsigned long ulo = mpz_get_ui (mpz[0]);
   if (mpz_sgn (mpz[0]) < 0)
     ulo = -ulo;
   int lo = ulo & ((1 << LO_TIME_BITS) - 1);
   mpz_fdiv_q_2exp (mpz[0], mpz[0], LO_TIME_BITS);
+
   return list4 (make_integer_mpz (), make_fixnum (lo),
                make_fixnum (us), make_fixnum (ps));
 }
@@ -482,6 +492,7 @@ mpz_set_time (mpz_t rop, time_t t)
 static void
 timespec_mpz (struct timespec t)
 {
+  /* mpz[0] = sec * TIMESPEC_HZ + nsec.  */
   mpz_set_ui (mpz[0], t.tv_nsec);
   mpz_set_time (mpz[1], t.tv_sec);
   mpz_addmul_ui (mpz[0], mpz[1], TIMESPEC_HZ);
@@ -491,11 +502,14 @@ timespec_mpz (struct timespec t)
 static Lisp_Object
 timespec_ticks (struct timespec t)
 {
+  /* For speed, use intmax_t arithmetic if it will do.  */
   intmax_t accum;
   if (FASTER_TIMEFNS
       && !INT_MULTIPLY_WRAPV (t.tv_sec, TIMESPEC_HZ, &accum)
       && !INT_ADD_WRAPV (t.tv_nsec, accum, &accum))
     return make_int (accum);
+
+  /* Fall back on bignum arithmetic.  */
   timespec_mpz (t);
   return make_integer_mpz ();
 }
@@ -505,12 +519,19 @@ timespec_ticks (struct timespec t)
 static Lisp_Object
 lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz)
 {
+  /* The idea is to return the floor of ((T.ticks * HZ) / T.hz).  */
+
+  /* For speed, just return T.ticks if T.hz == HZ.  */
   if (FASTER_TIMEFNS && EQ (t.hz, hz))
     return t.ticks;
+
+  /* Check HZ for validity.  */
   if (FIXNUMP (hz))
     {
       if (XFIXNUM (hz) <= 0)
        invalid_hz (hz);
+
+      /* For speed, use intmax_t arithmetic if it will do.  */
       intmax_t ticks;
       if (FASTER_TIMEFNS && FIXNUMP (t.ticks) && FIXNUMP (t.hz)
          && !INT_MULTIPLY_WRAPV (XFIXNUM (t.ticks), XFIXNUM (hz), &ticks))
@@ -520,6 +541,7 @@ lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz)
   else if (! (BIGNUMP (hz) && 0 < mpz_sgn (*xbignum_val (hz))))
     invalid_hz (hz);
 
+  /* Fall back on bignum arithmetic.  */
   mpz_mul (mpz[0],
           *bignum_integer (&mpz[0], t.ticks),
           *bignum_integer (&mpz[1], hz));
@@ -531,11 +553,17 @@ lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz)
 static Lisp_Object
 lisp_time_seconds (struct lisp_time t)
 {
+  /* The idea is to return the floor of T.ticks / T.hz.  */
+
   if (!FASTER_TIMEFNS)
     return lisp_time_hz_ticks (t, make_fixnum (1));
+
+  /* For speed, use EMACS_INT arithmetic if it will do.  */
   if (FIXNUMP (t.ticks) && FIXNUMP (t.hz))
     return make_fixnum (XFIXNUM (t.ticks) / XFIXNUM (t.hz)
                        - (XFIXNUM (t.ticks) % XFIXNUM (t.hz) < 0));
+
+  /* For speed, inline what lisp_time_hz_ticks would do.  */
   mpz_fdiv_q (mpz[0],
              *bignum_integer (&mpz[0], t.ticks),
              *bignum_integer (&mpz[1], t.hz));
@@ -577,6 +605,7 @@ frac_to_double (Lisp_Object numerator, Lisp_Object 
denominator)
       && intmax_numerator % intmax_denominator == 0)
     return intmax_numerator / intmax_denominator;
 
+  /* Compute number of base-FLT_RADIX digits in numerator and denominator.  */
   mpz_t const *n = bignum_integer (&mpz[0], numerator);
   mpz_t const *d = bignum_integer (&mpz[1], denominator);
   ptrdiff_t ndig = mpz_sizeinbase (*n, FLT_RADIX);
@@ -588,7 +617,8 @@ frac_to_double (Lisp_Object numerator, Lisp_Object 
denominator)
   /* Scale with SCALE when doing integer division.  That is, compute
      (N * FLT_RADIX**SCALE) / D [or, if SCALE is negative, N / (D *
      FLT_RADIX**-SCALE)] as a bignum, convert the bignum to double,
-     then divide the double by FLT_RADIX**SCALE.  */
+     then divide the double by FLT_RADIX**SCALE.  First scale N
+     (or scale D, if SCALE is negative) ...  */
   ptrdiff_t scale = ddig - ndig + DBL_MANT_DIG;
   if (scale < 0)
     {
@@ -603,12 +633,12 @@ frac_to_double (Lisp_Object numerator, Lisp_Object 
denominator)
       mpz_mul_2exp (mpz[0], *n, scale * LOG2_FLT_RADIX);
       n = &mpz[0];
     }
-
+  /* ... and then divide, with quotient Q and remainder R.  */
   mpz_t *q = &mpz[2];
   mpz_t *r = &mpz[3];
   mpz_tdiv_qr (*q, *r, *n, *d);
 
-  /* The amount to add to the absolute value of *Q so that truncating
+  /* The amount to add to the absolute value of Q so that truncating
      it to double will round correctly.  */
   int incr;
 
@@ -647,6 +677,7 @@ frac_to_double (Lisp_Object numerator, Lisp_Object 
denominator)
   if (!FASTER_TIMEFNS || incr != 0)
     (mpz_sgn (*n) < 0 ? mpz_sub_ui : mpz_add_ui) (*q, *q, incr);
 
+  /* Rescale the integer Q back to double.  This step does not round.  */
   return scalbn (mpz_get_d (*q), -scale);
 }
 
@@ -895,6 +926,10 @@ lisp_to_timespec (struct lisp_time t)
   mpz_t *q = &mpz[0];
   mpz_t const *qt = q;
 
+  /* Floor-divide (T.ticks * TIMESPEC_HZ) by T.hz,
+     yielding quotient Q (tv_sec) and remainder NS (tv_nsec).
+     Return an invalid timespec if Q does not fit in time_t.
+     For speed, prefer fixnum arithmetic if it works.  */
   if (FASTER_TIMEFNS && EQ (t.hz, timespec_hz))
     {
       if (FIXNUMP (t.ticks))
@@ -938,8 +973,8 @@ lisp_to_timespec (struct lisp_time t)
       ns = mpz_fdiv_q_ui (*q, *q, TIMESPEC_HZ);
     }
 
-  /* With some versions of MinGW, tv_sec is a 64-bit type, whereas
-     time_t is a 32-bit type.  */
+  /* Check that Q fits in time_t, not merely in T.tv_sec.  With some versions
+     of MinGW, tv_sec is a 64-bit type, whereas time_t is a 32-bit type.  */
   time_t sec;
   if (mpz_time (*qt, &sec))
     {
@@ -1019,10 +1054,14 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool 
subtract)
     {
       if (EQ (b, make_fixnum (0)))
        return a;
+
+      /* For speed, use EMACS_INT arithmetic if it will do.  */
       if (FIXNUMP (a))
        return make_int (subtract
                         ? XFIXNUM (a) - XFIXNUM (b)
                         : XFIXNUM (a) + XFIXNUM (b));
+
+      /* For speed, use mpz_add_ui/mpz_sub_ui if it will do.  */
       if (eabs (XFIXNUM (b)) <= ULONG_MAX)
        {
          ((XFIXNUM (b) < 0) == subtract ? mpz_add_ui : mpz_sub_ui)
@@ -1031,6 +1070,7 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool 
subtract)
        }
     }
 
+  /* Fall back on bignum arithmetic if necessary.  */
   if (!mpz_done)
     (subtract ? mpz_sub : mpz_add) (mpz[0],
                                    *bignum_integer (&mpz[0], a),
@@ -1039,9 +1079,7 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool 
subtract)
 }
 
 /* Given Lisp operands A and B, add their values, and return the
-   result as a Lisp timestamp that is in (TICKS . HZ) form if either A
-   or B are in that form or are floats, (HI LO US PS) form otherwise.
-   Subtract instead of adding if SUBTRACT.  */
+   result as a Lisp timestamp.  Subtract instead of adding if SUBTRACT.  */
 static Lisp_Object
 time_arith (Lisp_Object a, Lisp_Object b, bool subtract)
 {
@@ -1124,21 +1162,22 @@ time_arith (Lisp_Object a, Lisp_Object b, bool subtract)
       (subtract ? mpz_submul : mpz_addmul) (*iticks, *fa, *nb);
 
       /* Normalize iticks/ihz by dividing both numerator and
-        denominator by ig = gcd (iticks, ihz).  However, if that
-        would cause the denominator to become less than hzmin,
-        rescale the denominator upwards from its ordinary value by
-        multiplying numerator and denominator so that the denominator
-        becomes at least hzmin.  This rescaling avoids returning a
-        timestamp that is less precise than both a and b, or a
-        timestamp that looks obsolete when that might be a problem.  */
+        denominator by ig = gcd (iticks, ihz).  For speed, though,
+        skip this division if ihz = 1.  */
       mpz_t *ig = &mpz[3];
       mpz_gcd (*ig, *iticks, *ihz);
-
       if (!FASTER_TIMEFNS || mpz_cmp_ui (*ig, 1) > 0)
        {
          mpz_divexact (*iticks, *iticks, *ig);
          mpz_divexact (*ihz, *ihz, *ig);
 
+         /* However, if dividing the denominator by ig would cause the
+            denominator to become less than hzmin, rescale the denominator
+            upwards by multiplying the normalized numerator and denominator
+            so that the resulting denominator becomes at least hzmin.
+            This rescaling avoids returning a timestamp that is less precise
+            than both a and b, or a timestamp that looks obsolete when that
+            might be a problem.  */
          if (!FASTER_TIMEFNS || mpz_cmp (*ihz, *hzmin) < 0)
            {
              /* Rescale straightforwardly.  Although this might not
@@ -1152,6 +1191,8 @@ time_arith (Lisp_Object a, Lisp_Object b, bool subtract)
              mpz_mul (*ihz, *ihz, *rescale);
            }
        }
+
+      /* mpz[0] and iticks now correspond to the (HZ . TICKS) pair.  */
       hz = make_integer_mpz ();
       mpz_swap (mpz[0], *iticks);
       ticks = make_integer_mpz ();
@@ -1213,6 +1254,8 @@ time_cmp (Lisp_Object a, Lisp_Object b)
   if (EQ (a, b))
     return 0;
 
+  /* Compare (ATICKS . AZ) to (BTICKS . BHZ) by comparing
+     ATICKS * BHZ to BTICKS * AHZ.  */
   struct lisp_time tb = lisp_time_struct (b, 0);
   mpz_t const *za = bignum_integer (&mpz[0], ta.ticks);
   mpz_t const *zb = bignum_integer (&mpz[1], tb.ticks);
@@ -1490,6 +1533,7 @@ SEC is always an integer between 0 and 59.)
 usage: (decode-time &optional TIME ZONE FORM)  */)
   (Lisp_Object specified_time, Lisp_Object zone, Lisp_Object form)
 {
+  /* Compute broken-down local time LOCAL_TM from SPECIFIED_TIME and ZONE.  */
   struct lisp_time lt = lisp_time_struct (specified_time, 0);
   struct timespec ts = lisp_to_timespec (lt);
   if (! timespec_valid_p (ts))
@@ -1504,6 +1548,7 @@ usage: (decode-time &optional TIME ZONE FORM)  */)
   if (!tm)
     time_error (localtime_errno);
 
+  /* Let YEAR = LOCAL_TM.tm_year + TM_YEAR_BASE.  */
   Lisp_Object year;
   if (FASTER_TIMEFNS
       && MOST_NEGATIVE_FIXNUM - TM_YEAR_BASE <= local_tm.tm_year
@@ -1520,12 +1565,15 @@ usage: (decode-time &optional TIME ZONE FORM)  */)
       year = make_integer_mpz ();
     }
 
+  /* Compute SEC from LOCAL_TM.tm_sec and HZ.  */
   Lisp_Object hz = lt.hz, sec;
   if (EQ (hz, make_fixnum (1)) || !EQ (form, Qt))
     sec = make_fixnum (local_tm.tm_sec);
   else
     {
-      Lisp_Object ticks; /* hz * tm_sec + mod (lt.ticks, hz) */
+      /* Let TICKS = HZ * LOCAL_TM.tm_sec + mod (LT.ticks, HZ)
+        and SEC = (TICKS . HZ).  */
+      Lisp_Object ticks;
       intmax_t n;
       if (FASTER_TIMEFNS && FIXNUMP (lt.ticks) && FIXNUMP (hz)
          && !INT_MULTIPLY_WRAPV (XFIXNUM (hz), local_tm.tm_sec, &n)
@@ -1655,6 +1703,7 @@ usage: (encode-time TIME &rest OBSOLESCENT-ARGUMENTS)  */)
       yeararg = args[5];
     }
 
+  /* Let SEC = floor (LT.ticks / HZ), with SUBSECTICKS the remainder.  */
   struct lisp_time lt;
   decode_lisp_time (secarg, 0, &lt, 0);
   Lisp_Object hz = lt.hz, sec, subsecticks;
diff --git a/src/w32.c b/src/w32.c
index cf1a3b3..698e10e 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3178,18 +3178,9 @@ fdutimens (int fd, char const *file, struct timespec 
const timespec[2])
       return _futime (fd, &_ut);
     }
   else
-    {
-      struct utimbuf ut;
-
-      ut.actime = timespec[0].tv_sec;
-      ut.modtime = timespec[1].tv_sec;
-      /* Call 'utime', which is implemented below, not the MS library
-        function, which fails on directories.  */
-      return utime (file, &ut);
-    }
+    return utimensat (fd, file, timespec, 0);
 }
 
-
 /* ------------------------------------------------------------------------- */
 /* IO support and wrapper functions for the Windows API. */
 /* ------------------------------------------------------------------------- */
@@ -4970,7 +4961,7 @@ convert_time (FILETIME ft)
 }
 
 static void
-convert_from_time_t (time_t time, FILETIME * pft)
+convert_from_timespec (struct timespec time, FILETIME * pft)
 {
   ULARGE_INTEGER tmp;
 
@@ -4981,7 +4972,8 @@ convert_from_time_t (time_t time, FILETIME * pft)
     }
 
   /* time in 100ns units since 1-Jan-1601 */
-  tmp.QuadPart = (ULONGLONG) time * 10000000L + utc_base;
+  tmp.QuadPart =
+    (ULONGLONG) time.tv_sec * 10000000L + time.tv_nsec / 100 + utc_base;
   pft->dwHighDateTime = tmp.HighPart;
   pft->dwLowDateTime = tmp.LowPart;
 }
@@ -5648,8 +5640,8 @@ fstatat (int fd, char const *name, struct stat *st, int 
flags)
   return stat_worker (name, st, ! (flags & AT_SYMLINK_NOFOLLOW));
 }
 
-/* Provide fstat and utime as well as stat for consistent handling of
-   file timestamps. */
+/* Provide fstat and utimensat as well as stat for consistent handling
+   of file timestamps. */
 int
 fstat (int desc, struct stat * buf)
 {
@@ -5760,23 +5752,65 @@ fstat (int desc, struct stat * buf)
   return 0;
 }
 
-/* A version of 'utime' which handles directories as well as
-   files.  */
+/* Emulate utimensat.  */
 
 int
-utime (const char *name, struct utimbuf *times)
+utimensat (int fd, const char *name, const struct timespec times[2], int flag)
 {
-  struct utimbuf deftime;
+  struct timespec ltimes[2];
   HANDLE fh;
   FILETIME mtime;
   FILETIME atime;
+  DWORD flags_and_attrs = FILE_FLAG_BACKUP_SEMANTICS;
+
+  /* Rely on a hack: an open directory is modeled as file descriptor 0.
+     This is good enough for the current usage in Emacs, but is fragile.
+
+     FIXME: Add proper support for utimensat.
+     Gnulib does this and can serve as a model.  */
+  char fullname[MAX_UTF8_PATH];
+
+  if (fd != AT_FDCWD)
+    {
+      char lastc = dir_pathname[strlen (dir_pathname) - 1];
+
+      if (_snprintf (fullname, sizeof fullname, "%s%s%s",
+                    dir_pathname, IS_DIRECTORY_SEP (lastc) ? "" : "/", name)
+         < 0)
+       {
+         errno = ENAMETOOLONG;
+         return -1;
+       }
+      name = fullname;
+    }
 
   if (times == NULL)
     {
-      deftime.modtime = deftime.actime = time (NULL);
-      times = &deftime;
+      memset (ltimes, 0, sizeof (ltimes));
+      ltimes[0] = ltimes[1] = current_timespec ();
+    }
+  else
+    {
+      if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT)
+       return 0;               /* nothing to do */
+      if ((times[0].tv_nsec != UTIME_NOW && times[0].tv_nsec != UTIME_OMIT
+          && !(0 <= times[0].tv_nsec && times[0].tv_nsec < 1000000000))
+         || (times[1].tv_nsec != UTIME_NOW && times[1].tv_nsec != UTIME_OMIT
+             && !(0 <= times[1].tv_nsec && times[1].tv_nsec < 1000000000)))
+       {
+         errno = EINVAL;       /* reject invalid timespec values */
+         return -1;
+       }
+
+      memcpy (ltimes, times, sizeof (ltimes));
+      if (ltimes[0].tv_nsec == UTIME_NOW)
+       ltimes[0] = current_timespec ();
+      if (ltimes[1].tv_nsec == UTIME_NOW)
+       ltimes[1] = current_timespec ();
     }
 
+  if (flag == AT_SYMLINK_NOFOLLOW)
+    flags_and_attrs |= FILE_FLAG_OPEN_REPARSE_POINT;
   if (w32_unicode_filenames)
     {
       wchar_t name_utf16[MAX_PATH];
@@ -5790,7 +5824,7 @@ utime (const char *name, struct utimbuf *times)
                           allows other processes to delete files inside it,
                           while we have the directory open.  */
                        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
-                       0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+                       0, OPEN_EXISTING, flags_and_attrs, NULL);
     }
   else
     {
@@ -5801,13 +5835,26 @@ utime (const char *name, struct utimbuf *times)
 
       fh = CreateFileA (name_ansi, FILE_WRITE_ATTRIBUTES,
                        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
-                       0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+                       0, OPEN_EXISTING, flags_and_attrs, NULL);
     }
   if (fh != INVALID_HANDLE_VALUE)
     {
-      convert_from_time_t (times->actime, &atime);
-      convert_from_time_t (times->modtime, &mtime);
-      if (!SetFileTime (fh, NULL, &atime, &mtime))
+      FILETIME *patime, *pmtime;
+      if (ltimes[0].tv_nsec == UTIME_OMIT)
+       patime = NULL;
+      else
+       {
+         convert_from_timespec (ltimes[0], &atime);
+         patime = &atime;
+       }
+      if (ltimes[1].tv_nsec == UTIME_OMIT)
+       pmtime = NULL;
+      else
+       {
+         convert_from_timespec (ltimes[1], &mtime);
+         pmtime = &mtime;
+       }
+      if (!SetFileTime (fh, NULL, patime, pmtime))
        {
          CloseHandle (fh);
          errno = EACCES;
@@ -6726,16 +6773,16 @@ w32_copy_file (const char *from, const char *to,
      FIXME?  */
   else if (!keep_time)
     {
-      struct timespec now;
+      struct timespec tnow[2];
       DWORD attributes;
 
+      tnow[0] = tnow[1] = current_timespec ();
       if (w32_unicode_filenames)
        {
          /* Ensure file is writable while its times are set.  */
          attributes = GetFileAttributesW (to_w);
          SetFileAttributesW (to_w, attributes & ~FILE_ATTRIBUTE_READONLY);
-         now = current_timespec ();
-         if (set_file_times (-1, to, now, now))
+         if (utimensat (AT_FDCWD, to, tnow, 0))
            {
              /* Restore original attributes.  */
              SetFileAttributesW (to_w, attributes);
@@ -6750,8 +6797,7 @@ w32_copy_file (const char *from, const char *to,
        {
          attributes = GetFileAttributesA (to_a);
          SetFileAttributesA (to_a, attributes & ~FILE_ATTRIBUTE_READONLY);
-         now = current_timespec ();
-         if (set_file_times (-1, to, now, now))
+         if (utimensat (AT_FDCWD, to, tnow, 0))
            {
              SetFileAttributesA (to_a, attributes);
              if (acl)
diff --git a/src/w32term.c b/src/w32term.c
index 4eb5045..f515f56 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4701,6 +4701,10 @@ static short temp_buffer[100];
 /* Temporarily store lead byte of DBCS input sequences.  */
 static char dbcs_lead = 0;
 
+/* Temporarily store pending UTF-16 high surrogate unit and the modifiers.  */
+static unsigned short utf16_high;
+static DWORD utf16_high_modifiers;
+
 /**
   mouse_or_wdesc_frame: When not dropping and the mouse was grabbed
   for DPYINFO, return the frame where the mouse was seen last.  If
@@ -4912,9 +4916,45 @@ w32_read_socket (struct terminal *terminal,
              XSETFRAME (inev.frame_or_window, f);
              inev.timestamp = msg.msg.time;
 
+             if (utf16_high
+                 && (msg.msg.message != WM_UNICHAR
+                     || UTF_16_HIGH_SURROGATE_P (msg.msg.wParam)))
+               {
+                 /* Flush the pending high surrogate if the low one
+                    isn't coming.  (This should never happen, but I
+                    have paranoia about this stuff.)  */
+                 struct input_event inev1;
+                 inev1.modifiers = utf16_high_modifiers;
+                 inev1.code = utf16_high;
+                 inev1.timestamp = inev.timestamp;
+                 inev1.arg = Qnil;
+                 kbd_buffer_store_event_hold (&inev1, hold_quit);
+                 utf16_high = 0;
+                 utf16_high_modifiers = 0;
+               }
+
               if (msg.msg.message == WM_UNICHAR)
                 {
-                  inev.code = msg.msg.wParam;
+                 /* Handle UTF-16 encoded codepoint above the BMP.
+                    This is needed to support Emoji input from input
+                    panel popped up by "Win+." shortcut.  */
+                 if (UTF_16_HIGH_SURROGATE_P (msg.msg.wParam))
+                   {
+                     utf16_high = msg.msg.wParam;
+                     utf16_high_modifiers = inev.modifiers;
+                     inev.kind = NO_EVENT;
+                     break;
+                   }
+                 else if (UTF_16_LOW_SURROGATE_P (msg.msg.wParam)
+                          && utf16_high)
+                   {
+                     inev.code = surrogates_to_codepoint (msg.msg.wParam,
+                                                          utf16_high);
+                     utf16_high = 0;
+                     utf16_high_modifiers = 0;
+                   }
+                 else
+                   inev.code = msg.msg.wParam;
                 }
               else if (msg.msg.wParam < 256)
                 {
diff --git a/src/xdisp.c b/src/xdisp.c
index c2aa314..3c594b5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -31441,6 +31441,10 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum 
draw_glyphs_face draw)
   struct window *w = XWINDOW (hlinfo->mouse_face_window);
   struct frame *f = XFRAME (WINDOW_FRAME (w));
 
+  /* Don't bother doing anything if we are on a wrong frame.  */
+  if (f != hlinfo->mouse_face_mouse_frame)
+    return;
+
   if (/* If window is in the process of being destroyed, don't bother
         to do anything.  */
       w->current_matrix != NULL
diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el
index a6c172a..0fece40 100644
--- a/test/lisp/emacs-lisp/rx-tests.el
+++ b/test/lisp/emacs-lisp/rx-tests.el
@@ -42,13 +42,24 @@
 (ert-deftest rx-or ()
   (should (equal (rx (or "ab" (| "c" nonl) "de"))
                  "ab\\|c\\|.\\|de"))
-  (should (equal (rx (or "ab" "abc" "a"))
+  (should (equal (rx (or "ab" "abc" ?a))
                  "\\(?:a\\(?:bc?\\)?\\)"))
+  (should (equal (rx (or "ab" (| (or "abcd" "abcde")) (or "a" "abc")))
+                 "\\(?:a\\(?:b\\(?:c\\(?:de?\\)?\\)?\\)?\\)"))
+  (should (equal (rx (or "a" (eval (string ?a ?b))))
+                 "\\(?:ab?\\)"))
   (should (equal (rx (| nonl "a") (| "b" blank))
                  "\\(?:.\\|a\\)\\(?:b\\|[[:blank:]]\\)"))
   (should (equal (rx (|))
                  "\\`a\\`")))
 
+(ert-deftest rx-def-in-or ()
+  (rx-let ((a b)
+           (b (or "abc" c))
+           (c ?a))
+    (should (equal (rx (or a (| "ab" "abcde") "abcd"))
+                   "\\(?:a\\(?:b\\(?:c\\(?:de?\\)?\\)?\\)?\\)"))))
+
 (ert-deftest rx-char-any ()
   "Test character alternatives with `]' and `-' (Bug#25123)."
   (should (equal
@@ -130,7 +141,10 @@
   (should (equal (rx (any "") (not (any "")))
                  "\\`a\\`[^z-a]"))
   (should (equal (rx (any space ?a digit space))
-                 "[a[:space:][:digit:]]")))
+                 "[a[:space:][:digit:]]"))
+  (should (equal (rx (not "\n") (not ?\n) (not (any "\n")) (not-char ?\n)
+                     (| (not (in "a\n")) (not (char ?\n (?b . ?b)))))
+          ".....")))
 
 (ert-deftest rx-pcase ()
   (should (equal (pcase "a 1 2 3 1 1 b"
@@ -298,7 +312,13 @@
                          (not (any "a-k"))))
                  "[^abh-k]"))
   (should (equal (rx (or ?f (any "b-e") "a") (not (or ?x "y" (any "s-w"))))
-                 "[a-f][^s-y]")))
+                 "[a-f][^s-y]"))
+  (should (equal (rx (not (or (in "abc") (char "bcd"))))
+                 "[^a-d]"))
+  (should (equal (rx (or (not (in "abc")) (not (char "bcd"))))
+                 "[^bc]"))
+  (should (equal (rx (or "x" (? "yz")))
+                 "x\\|\\(?:yz\\)?")))
 
 (ert-deftest rx-def-in-charset-or ()
   (rx-let ((a (any "badc"))
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index 39156fb..42d86ee 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -219,7 +219,8 @@ remote case we return always t."
   (or file-notify--library
       (file-remote-p temporary-file-directory)))
 
-(defvar file-notify--test-remote-enabled-checked nil
+(defvar file-notify--test-remote-enabled-checked
+  (if (getenv "EMACS_HYDRA_CI") '(t . nil))
   "Cached result of `file-notify--test-remote-enabled'.
 If the function did run, the value is a cons cell, the `cdr'
 being the result.")
@@ -771,9 +772,9 @@ delivered."
          (copy-file file-notify--test-tmpfile file-notify--test-tmpfile1)
          ;; The next two events shall not be visible.
          (file-notify--test-read-event)
-         (set-file-modes file-notify--test-tmpfile 000)
+         (set-file-modes file-notify--test-tmpfile 000 'nofollow)
          (file-notify--test-read-event)
-         (set-file-times file-notify--test-tmpfile '(0 0))
+         (set-file-times file-notify--test-tmpfile '(0 0) 'nofollow)
          (file-notify--test-read-event)
           (delete-directory file-notify--test-tmpdir 'recursive))
         (file-notify-rm-watch file-notify--test-desc)
@@ -864,9 +865,9 @@ delivered."
          (write-region
           "any text" nil file-notify--test-tmpfile nil 'no-message)
          (file-notify--test-read-event)
-         (set-file-modes file-notify--test-tmpfile 000)
+         (set-file-modes file-notify--test-tmpfile 000 'nofollow)
          (file-notify--test-read-event)
-         (set-file-times file-notify--test-tmpfile '(0 0))
+         (set-file-times file-notify--test-tmpfile '(0 0) 'nofollow)
          (file-notify--test-read-event)
          (delete-file file-notify--test-tmpfile))
         (file-notify-rm-watch file-notify--test-desc)
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index ac56a77..05d9cee 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -1003,9 +1003,9 @@ unquoted file names."
 
 (ert-deftest files-tests-file-name-non-special-set-file-times ()
   (files-tests--with-temp-non-special (tmpfile nospecial)
-    (set-file-times nospecial))
+    (set-file-times nospecial nil 'nofollow))
   (files-tests--with-temp-non-special-and-file-name-handler (tmpfile nospecial)
-    (should-error (set-file-times nospecial))))
+    (should-error (set-file-times nospecial nil 'nofollow))))
 
 (ert-deftest files-tests-file-name-non-special-set-visited-file-modtime ()
   (files-tests--with-temp-non-special (tmpfile nospecial)
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index be0f418..dcf376e 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -3743,7 +3743,8 @@ This tests also `make-symbolic-link', `file-truename' and 
`add-name-to-file'."
                            (file-attributes tmp-name1))))
            ;; Skip the test, if the remote handler is not able to set
            ;; the correct time.
-           (skip-unless (set-file-times tmp-name1 (seconds-to-time 1)))
+           (skip-unless (set-file-times tmp-name1 (seconds-to-time 1)
+                                        'nofollow))
            ;; Dumb remote shells without perl(1) or stat(1) are not
            ;; able to return the date correctly.  They say "don't know".
            (unless (tramp-compat-time-equal-p



reply via email to

[Prev in Thread] Current Thread [Next in Thread]