emacs-diffs
[Top][All Lists]
Advanced

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

feature/native-comp 44ef243 5/5: Merge remote-tracking branch 'savannah/


From: Andrea Corallo
Subject: feature/native-comp 44ef243 5/5: Merge remote-tracking branch 'savannah/master' into HEAD
Date: Sun, 4 Oct 2020 13:54:34 -0400 (EDT)

branch: feature/native-comp
commit 44ef24342fd8a2ac876212124ebf38673acda35a
Merge: afb765a d8665e6
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    Merge remote-tracking branch 'savannah/master' into HEAD
---
 ChangeLog.1                                        |   4 +-
 ChangeLog.2                                        |  48 +-
 ChangeLog.3                                        | 238 +++---
 admin/ChangeLog.1                                  |   4 +-
 admin/find-gc.el                                   |   4 +-
 configure.ac                                       |   2 +-
 doc/emacs/basic.texi                               |  15 +-
 doc/emacs/dired.texi                               |  11 +
 doc/emacs/search.texi                              |   9 +-
 doc/lispref/loading.texi                           |   4 +-
 doc/lispref/tips.texi                              |   2 +-
 doc/misc/calc.texi                                 |   8 +-
 doc/misc/cl.texi                                   |   2 +-
 doc/misc/edt.texi                                  |   2 +-
 doc/misc/emacs-mime.texi                           |   2 +-
 doc/misc/flymake.texi                              |   2 +-
 doc/misc/gnus.texi                                 |   2 +-
 doc/misc/tramp.texi                                |  18 +-
 doc/misc/widget.texi                               |  22 +
 etc/ChangeLog.1                                    |   4 +-
 etc/NEWS                                           |  31 +-
 etc/compilation.txt                                |   2 +-
 lib-src/ChangeLog.1                                |   8 +-
 lisp/ChangeLog.10                                  |   4 +-
 lisp/ChangeLog.13                                  |   4 +-
 lisp/ChangeLog.14                                  |   4 +-
 lisp/ChangeLog.15                                  |  14 +-
 lisp/ChangeLog.16                                  |  16 +-
 lisp/ChangeLog.17                                  |  14 +-
 lisp/ChangeLog.3                                   |   2 +-
 lisp/ChangeLog.6                                   |   2 +-
 lisp/ChangeLog.7                                   |   6 +-
 lisp/ChangeLog.8                                   |   4 +-
 lisp/ChangeLog.9                                   |  10 +-
 lisp/align.el                                      |   6 +-
 lisp/allout.el                                     |   6 +-
 lisp/ansi-color.el                                 |   2 +-
 lisp/autorevert.el                                 | 112 +--
 lisp/calc/calc-forms.el                            |  26 +-
 lisp/calc/calc-units.el                            |   8 +-
 lisp/calendar/calendar.el                          |   2 +-
 lisp/calendar/timeclock.el                         |   2 +-
 lisp/cedet/ChangeLog.1                             |   4 +-
 lisp/cedet/ede/autoconf-edit.el                    |   2 +-
 lisp/cedet/ede/detect.el                           |   2 +-
 lisp/cedet/semantic/bovine/scm.el                  |   2 +-
 lisp/cedet/semantic/java.el                        |   2 +-
 lisp/cedet/srecode/fields.el                       |   2 +-
 lisp/color.el                                      |   2 +-
 lisp/comint.el                                     |   2 +-
 lisp/completion.el                                 |   2 +-
 lisp/descr-text.el                                 |   2 +-
 lisp/dired.el                                      |  54 +-
 lisp/doc-view.el                                   |   6 +-
 lisp/double.el                                     |   2 +-
 lisp/ebuff-menu.el                                 |   1 +
 lisp/ehelp.el                                      |   4 +-
 lisp/electric.el                                   |   2 +-
 lisp/emacs-lisp/autoload.el                        | 138 ++--
 lisp/emacs-lisp/backtrace.el                       |  11 +-
 lisp/emacs-lisp/bytecomp.el                        |   3 +-
 lisp/emacs-lisp/cl-macs.el                         |   2 +-
 lisp/emacs-lisp/debug.el                           |  17 +
 lisp/emacs-lisp/eieio-base.el                      |   2 +-
 lisp/emacs-lisp/ert.el                             |   4 +-
 lisp/emacs-lisp/generic.el                         |   2 +-
 lisp/emacs-lisp/package.el                         |  11 +-
 lisp/emacs-lisp/re-builder.el                      |   4 +-
 lisp/emulation/cua-base.el                         |   7 +-
 lisp/emulation/cua-rect.el                         |   4 +-
 lisp/epa-mail.el                                   |  17 +-
 lisp/epa.el                                        |  51 +-
 lisp/erc/ChangeLog.1                               |   8 +-
 lisp/erc/erc-button.el                             |   4 +-
 lisp/erc/erc-track.el                              |   2 +-
 lisp/erc/erc.el                                    |   4 +-
 lisp/eshell/esh-util.el                            |   2 +-
 lisp/eshell/esh-var.el                             |   4 +-
 lisp/faces.el                                      |   2 +-
 lisp/ffap.el                                       |   2 +-
 lisp/filecache.el                                  |   2 +-
 lisp/files.el                                      |   4 +-
 lisp/filesets.el                                   |   2 +-
 lisp/find-file.el                                  |   4 +-
 lisp/follow.el                                     |   4 +-
 lisp/font-lock.el                                  |   2 +-
 lisp/forms.el                                      |   2 +-
 lisp/gnus/ChangeLog.2                              |  10 +-
 lisp/gnus/ChangeLog.3                              |  24 +-
 lisp/gnus/gnus-util.el                             |   8 +-
 lisp/gnus/message.el                               |   6 +-
 lisp/gnus/mm-util.el                               |   2 +-
 lisp/gnus/mml-sec.el                               |  68 +-
 lisp/gnus/nndiary.el                               |   2 +-
 lisp/gnus/nnmaildir.el                             |   2 +-
 lisp/gnus/nnrss.el                                 |   2 +-
 lisp/gnus/spam-stat.el                             |   2 +-
 lisp/hexl.el                                       |   4 +-
 lisp/hi-lock.el                                    |   1 +
 lisp/image-dired.el                                |  10 +-
 lisp/image.el                                      |   2 +-
 lisp/international/characters.el                   |   2 +-
 lisp/international/titdic-cnv.el                   |   4 +-
 lisp/international/ucs-normalize.el                |   6 +-
 lisp/isearch.el                                    |  98 +--
 lisp/jsonrpc.el                                    |   6 +-
 lisp/language/tibet-util.el                        |   2 +-
 lisp/ldefs-boot.el                                 | 178 +++--
 lisp/leim/quail/ipa.el                             |   2 +-
 lisp/mail/mail-extr.el                             |   4 +-
 lisp/mail/mailalias.el                             |   2 +-
 lisp/mail/rmail.el                                 |   2 +-
 lisp/mail/smtpmail.el                              |   2 +-
 lisp/master.el                                     |  10 +-
 lisp/menu-bar.el                                   |   2 +-
 lisp/mh-e/ChangeLog.1                              |  24 +-
 lisp/mh-e/mh-compat.el                             |   2 +-
 lisp/mh-e/mh-e.el                                  | 110 +--
 lisp/mh-e/mh-junk.el                               |   2 +-
 lisp/mh-e/mh-thread.el                             |   2 +-
 lisp/minibuffer.el                                 |  12 +-
 lisp/misearch.el                                   |   6 +-
 lisp/mouse.el                                      |   8 +-
 lisp/net/dbus.el                                   |   3 +
 lisp/net/eww.el                                    |   8 +-
 lisp/net/gnutls.el                                 |   7 +-
 lisp/net/net-utils.el                              |   2 +-
 lisp/net/newst-backend.el                          |  10 +-
 lisp/net/newsticker.el                             |   2 +-
 lisp/net/nsm.el                                    |   2 +-
 lisp/net/puny.el                                   |   8 +-
 lisp/net/secrets.el                                |   2 +-
 lisp/net/soap-client.el                            |   4 +-
 lisp/net/tramp-compat.el                           |   8 +
 lisp/net/tramp-sh.el                               |   4 +-
 lisp/notifications.el                              |   2 +-
 lisp/obsolete/erc-hecomplete.el                    |   2 +-
 lisp/org/ChangeLog.1                               |  78 +-
 lisp/org/ob-plantuml.el                            |   2 +-
 lisp/org/ob-ruby.el                                |   4 +-
 lisp/org/ob-sass.el                                |   2 +-
 lisp/org/ob-stan.el                                |   2 +-
 lisp/org/ol-bibtex.el                              |   2 +-
 lisp/org/org-num.el                                |   2 +-
 lisp/org/org-table.el                              |   4 +-
 lisp/org/org.el                                    |   2 +-
 lisp/org/ox.el                                     |   4 +-
 lisp/pcmpl-unix.el                                 |   2 +-
 lisp/play/bubbles.el                               |   2 +-
 lisp/play/gametree.el                              |   4 +-
 lisp/printing.el                                   |  10 +-
 lisp/progmodes/antlr-mode.el                       |   2 +-
 lisp/progmodes/bat-mode.el                         |   2 +-
 lisp/progmodes/cc-styles.el                        |   6 +-
 lisp/progmodes/cperl-mode.el                       |   2 +-
 lisp/progmodes/ebnf-abn.el                         |   2 +-
 lisp/progmodes/ebnf-dtd.el                         |   6 +-
 lisp/progmodes/ebnf-ebx.el                         |   2 +-
 lisp/progmodes/ebnf2ps.el                          |  14 +-
 lisp/progmodes/ebrowse.el                          |   2 +-
 lisp/progmodes/flymake-cc.el                       |   2 +-
 lisp/progmodes/flymake-proc.el                     |   2 +-
 lisp/progmodes/gdb-mi.el                           |   2 +-
 lisp/progmodes/gud.el                              |   2 +-
 lisp/progmodes/hideif.el                           |   2 +-
 lisp/progmodes/idlw-complete-structtag.el          |   2 +-
 lisp/progmodes/idlw-help.el                        |   2 +-
 lisp/progmodes/idlw-shell.el                       |   6 +-
 lisp/progmodes/idlw-toolbar.el                     |   2 +-
 lisp/progmodes/idlwave.el                          |   8 +-
 lisp/progmodes/perl-mode.el                        |   2 +-
 lisp/progmodes/python.el                           |  81 +-
 lisp/progmodes/ruby-mode.el                        |   2 +-
 lisp/progmodes/sh-script.el                        |   1 +
 lisp/progmodes/sql.el                              |  10 +-
 lisp/ps-def.el                                     |   2 +-
 lisp/ps-print.el                                   |   4 +-
 lisp/ps-samp.el                                    |   4 +-
 lisp/recentf.el                                    |  10 +-
 lisp/replace.el                                    |  18 +-
 lisp/ses.el                                        |   2 +-
 lisp/shell.el                                      |   2 +-
 lisp/simple.el                                     |  41 +-
 lisp/startup.el                                    |   2 +-
 lisp/strokes.el                                    |   6 +-
 lisp/subr.el                                       |   9 +-
 lisp/talk.el                                       |   2 +-
 lisp/tempo.el                                      |  20 +-
 lisp/term.el                                       |  10 +-
 lisp/term/internal.el                              |   6 +-
 lisp/textmodes/artist.el                           |   9 +-
 lisp/textmodes/css-mode.el                         |  24 +-
 lisp/textmodes/flyspell.el                         |   2 +-
 lisp/textmodes/ispell.el                           |   2 +-
 lisp/textmodes/table.el                            |  14 +-
 lisp/textmodes/tex-mode.el                         |   2 +-
 lisp/thingatpt.el                                  |   2 +-
 lisp/thumbs.el                                     |   2 +-
 lisp/url/ChangeLog.1                               |   2 +-
 lisp/url/url-auth.el                               |   2 +-
 lisp/url/url-cache.el                              |   4 +-
 lisp/url/url-irc.el                                |   2 +-
 lisp/url/url.el                                    |   2 +-
 lisp/vc/pcvs.el                                    |   3 +-
 lisp/wdired.el                                     |   8 +-
 lisp/whitespace.el                                 |   2 +-
 lisp/wid-edit.el                                   |  89 ++-
 lisp/window.el                                     |   4 +-
 lisp/xml.el                                        |   2 +-
 m4/pkg.m4                                          |   2 +-
 nextstep/ChangeLog.1                               |   2 +-
 src/ChangeLog.10                                   |  14 +-
 src/ChangeLog.11                                   |  20 +-
 src/ChangeLog.12                                   |  10 +-
 src/ChangeLog.13                                   |  32 +-
 src/ChangeLog.3                                    |   6 +-
 src/ChangeLog.8                                    |  10 +-
 src/ChangeLog.9                                    |   2 +-
 src/dbusbind.c                                     |  17 +-
 src/image.c                                        |  10 +-
 src/indent.c                                       |  30 +-
 src/w16select.c                                    |   2 +-
 src/w32.c                                          |   9 +-
 src/w32select.c                                    |   2 +-
 src/xdisp.c                                        |  95 ++-
 test/data/syntax-comments.txt                      |  68 ++
 test/lisp/calc/calc-tests.el                       | 116 +++
 test/lisp/electric-tests.el                        |   3 +-
 test/lisp/emacs-lisp/backtrace-tests.el            |   2 +-
 test/lisp/emacs-lisp/edebug-tests.el               |   2 +-
 test/lisp/files-tests.el                           |   4 +-
 test/lisp/gnus/gnus-util-tests.el                  |  13 +-
 test/lisp/gnus/mml-sec-tests.el                    |  32 -
 test/lisp/mail/uudecode-tests.el                   |   4 +-
 .../net/dbus-resources/org.gnu.Emacs.TestDBus.xml  |  49 ++
 test/lisp/net/dbus-tests.el                        | 816 ++++++++++++++++++++-
 test/lisp/obsolete/cl-tests.el                     |   3 +-
 test/lisp/progmodes/python-tests.el                |   4 +-
 test/lisp/simple-tests.el                          |   2 +-
 test/lisp/vc/vc-bzr-tests.el                       |   5 +-
 test/lisp/wdired-tests.el                          |  16 +
 test/manual/cedet/tests/testnsp.cpp                |   2 +-
 test/src/coding-tests.el                           |   2 +-
 test/src/indent-tests.el                           |  59 ++
 test/src/regex-resources/BOOST.tests               |   4 +-
 test/src/syntax-tests.el                           | 349 +++++++++
 246 files changed, 3014 insertions(+), 1196 deletions(-)

diff --git a/ChangeLog.1 b/ChangeLog.1
index 08343f0..1fb7b78 100644
--- a/ChangeLog.1
+++ b/ChangeLog.1
@@ -12,7 +12,7 @@
        "/usr/include/glib-2.0/glib/gmem.h: ... warning: unknown attribute
        '__alloc_size__' ignored".  Use -Werror when checking for -nopie;
        otherwise clang warns about -nopie instead of failing, and then
-       later it warns everytime the build uses -nopie.
+       later it warns every time the build uses -nopie.
 
 2015-04-03  Ulrich Müller  <ulm@gentoo.org>
 
@@ -1657,7 +1657,7 @@
 
 2013-12-08  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * configure.ac: Simplify supression of GTK deprecation warning.
+       * configure.ac: Simplify suppression of GTK deprecation warning.
        Move -DGDK_DISABLE_DEPRECATION_WARNINGS out of the command line
        and into config.h, to shorten the command line when doing 'make'.
        Don't AC_SUBST GTK_CFLAGS, as this is not needed.
diff --git a/ChangeLog.2 b/ChangeLog.2
index 9e875c5..ebaf384 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -485,7 +485,7 @@
        Clarify major mode switching
 
        * doc/emacs/modes.texi (Major Modes):
-       * doc/lispref/modes.texi (Modes, Major Modes): Explictly say that each
+       * doc/lispref/modes.texi (Modes, Major Modes): Explicitly say that each
        buffer has exactly one major mode and can't be "turned off", only
        switched away from (Bug#25357).
 
@@ -1661,7 +1661,7 @@
        `re_match_2_internal' uses pointers to the lisp objects that it
        searches.  Since it may call malloc when growing the "fail stack", these
        pointers may be invalidated while searching, resulting in memory
-       curruption (Bug #24358).
+       corruption (Bug #24358).
 
        To fix this, we check the pointer that the lisp object (as specified by
        re_match_object) points to before and after growing the stack, and
@@ -2681,7 +2681,7 @@
 
        * doc/misc/ses.texi (Quick Tutorial): Mention the '!'
        'ses-range' modifier as an alternative to 'ses+'.
-       (Advanced Features): Add a refernce to node 'Nonrelocatable
+       (Advanced Features): Add a reference to node 'Nonrelocatable
        references' concerning function 'ses-rename-cell'.
        (Standard formula functions): Mention the '!' 'ses-range'
        modifier as an alternative to 'ses-delete-blanks'.
@@ -3983,7 +3983,7 @@
 
 2016-05-10  Dmitry Gutov  <dgutov@yandex.ru>
 
-       Don't treat JS spread as contination method call
+       Don't treat JS spread as continuation method call
 
        * lisp/progmodes/js.el (js--indent-operator-re):
        Allow only one dot (bug#23492).
@@ -4530,7 +4530,7 @@
        cursor-type doc fix
 
        * src/buffer.c (syms_of_buffer): Mention that cursor-type's
-       WIDHT/HEIGHT can't exceed the frame char size (bug#19215).
+       WIDTH/HEIGHT can't exceed the frame char size (bug#19215).
 
        (cherry picked from commit 77c5f4554ebb3b7c7d49bc881e45a550f6c93987)
 
@@ -4599,7 +4599,7 @@
 
 2016-05-01  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Explictly explain that package-initialize loads the packages
+       Explicitly explain that package-initialize loads the packages
 
        * lisp/emacs-lisp/package.el (package-initialize): Be explicit
        in saying that `package-initialize' obviates adjusting the
@@ -5985,7 +5985,7 @@
 
 2016-03-30  Alan Mackenzie  <acm@muc.de>
 
-       Finish fixing a cacheing bug in CC Mode (see 2016-03-09)
+       Finish fixing a caching bug in CC Mode (see 2016-03-09)
 
        * lisp/progmodes/cc-cmds.el: (c-beginning-of-defun, c-end-of-defun): 
Remove
        superfluous invocations of c-self-bind-state-cache.
@@ -6609,7 +6609,7 @@
 
 2016-03-14  Alan Mackenzie  <acm@muc.de>
 
-       Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
+       Fix a caching bug, which led to inordinately slow c-beginning-of-defun.
 
        * lisp/progmodes/cc-defs.el (c-self-bind-state-cache): New macro.
 
@@ -6624,7 +6624,7 @@
 
 2016-03-14  Alan Mackenzie  <acm@muc.de>
 
-       Fix a cacheing bug, which led to inordinately slow c-beginning-of-defun.
+       Fix a caching bug, which led to inordinately slow c-beginning-of-defun.
 
        * lisp/progmodes/cc-defs.el (c-self-bind-state-cache): New macro.
 
@@ -7145,7 +7145,7 @@
 
        Prevent infinite loop on not-well-formed xml. (Bug#16344)
 
-       * lisp/xml.el (xml-parse-tag-1): Prevent inifinite loop. (Bug#16344)
+       * lisp/xml.el (xml-parse-tag-1): Prevent infinite loop. (Bug#16344)
        * test/automated/xml-parse-tests.el (xml-parse-tests--bad-data): Add
          test cases for Bug#16344.
 
@@ -9956,7 +9956,7 @@
        * lisp/files.el (dir-locals-find-file): Refactor return values
 
        Returning a cache remains unchanged, but the case of returning a
-       file (or pattern) is now changed to return the contaning
+       file (or pattern) is now changed to return the containing
        directory.
 
        (dir-locals-read-from-file): Rename to `dir-locals-read-from-dir'
@@ -10856,7 +10856,7 @@
 
 2016-01-18  Alan Mackenzie  <acm@muc.de>
 
-       Desktop: protect users against inadvertant upgrading of desktop file.
+       Desktop: protect users against inadvertent upgrading of desktop file.
 
        An upgraded (version 208) desktop file cannot be read in Emacs < 25.
 
@@ -11212,7 +11212,7 @@
 
 2016-01-13  Eli Zaretskii  <eliz@gnu.org>
 
-       Document the new deafault value of 'load-read-function'
+       Document the new default value of 'load-read-function'
 
        * doc/lispref/loading.texi (How Programs Do Loading): Document the
        change in the default value of 'load-read-function'.
@@ -19985,7 +19985,7 @@
        * src/intervals.h: Don’t include dispextern.h, composite.h.
        * src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h.
        Include coding.h.
-       * src/keyboard.h: Don’t incldue systime.h.
+       * src/keyboard.h: Don’t include systime.h.
        * src/keymap.c: Don’t include charset.h, frame.h.
        * src/lread.c: Include dispextern.h and systime.h.
        Don’t include frame.h.  Include systime.h.
@@ -21808,7 +21808,7 @@
 2015-09-26  Paul Eggert  <eggert@cs.ucla.edu>
 
        * admin/MAINTAINERS: Add self, plus list some more files
-       sans maintaners.
+       sans maintainers.
 
 2015-09-26  Zachary Kanfer  <zkanfer@gmail.com>  (tiny change)
 
@@ -22530,7 +22530,7 @@
 
        Omit unnecessary \ before paren in C docstrings
        Although \( is needed in docstrings in Elisp code, it is not needed in
-       docstrings in C code, since C function definitiions do not start with
+       docstrings in C code, since C function definitions do not start with
        a parenthesis.  The backslashes made the docstrings a bit harder to
        read and to format in columns.  Also, some C docstrings had ( in
        column 1 and this did not appear to be causing any problems.  So,
@@ -24607,7 +24607,7 @@
 
        Tweak startup screen quoting
        * lisp/startup.el (normal-splash-screen): Use standard
-       "M-" abbrevation rather than a confusingly-different one.
+       "M-" abbreviation rather than a confusingly-different one.
        (normal-no-mouse-startup-screen): Follow ‘text-quoting-style’.
 
 2015-08-27  Paul Eggert  <eggert@cs.ucla.edu>
@@ -27510,7 +27510,7 @@
        Allocate and use slightly-larger cost vectors, ones based on
        FRAME_TOTAL_LINES instead of FRAME_LINES.
 
-       Fix uninitalized value in encode_coding_object
+       Fix uninitialized value in encode_coding_object
        * src/coding.c (encode_coding_object): Also initialize
        coding->src_pos and coding->src_pos_byte when NILP (src_object).
        This avoids later use of uninitialized storage.
@@ -29884,7 +29884,7 @@
        file names due to deleted PWD.
 
        * src/xsmfns.c (x_session_initialize): Avoid libSM crash
-       when starup directory is missing.  (Bug#18851)
+       when startup directory is missing.  (Bug#18851)
        (errno.h): Include it.
 
 2015-06-13  Paul Eggert  <eggert@cs.ucla.edu>
@@ -30029,7 +30029,7 @@
        because '(format "%S" '(` FOO))' returns "(\\` FOO)".  A comment
        in src/lread.c's read1 function says that the backslash will be
        needed starting in Emacs 25, which implies that 'format' is
-       correct and the old pcase documention was wrong to omit the backslash.
+       correct and the old pcase documentation was wrong to omit the backslash.
        * lisp/emacs-lisp/nadvice.el (advice--make-docstring):
        * lisp/help-fns.el (help-fns--signature):
        * lisp/help.el (help-add-fundoc-usage):
@@ -30117,7 +30117,7 @@
        (bug#20730).
 
        * lisp/progmodes/sh-script.el: Better handle nested quotes.
-       (sh-here-doc-open-re): Don't mis-match the <<< operator (bug#20683).
+       (sh-here-doc-open-re): Don't mismatch the <<< operator (bug#20683).
        (sh-font-lock-quoted-subshell): Make sure double quotes within single
        quotes don't mistakenly end prematurely the surrounding string.
 
@@ -31364,7 +31364,7 @@
 
 2015-05-25  Eli Zaretskii  <eliz@gnu.org>
 
-       Fix last change in etags.c that broke tagging compresed files
+       Fix last change in etags.c that broke tagging compressed files
        * lib-src/etags.c (process_file_name) [MSDOS || DOS_NT]: Fix
        quoting of decompression shell command for MS-Windows/MS-DOS.
 
@@ -32680,7 +32680,7 @@
        (verilog-beg-of-statement): Fix indenting for some forms of
        constraintsm bug433.  Reported by Brad Parker.  Fix indentation of
        continued assignment incorrect if first line ends with ']', bug437.
-       Reported by Dan Dever.  Fix indention of cover inside an
+       Reported by Dan Dever.  Fix indentation of cover inside an
        ifdef, bug 862.  Reported by Bernd Beuster.  Fix labeling do-while
        blocks, bug842.
        (verilog-preprocessor-re): Fix fork/end UNMATCHED warning, bug859.
@@ -35272,7 +35272,7 @@
 2015-04-11  Artur Malabarba  <bruce.connor.am@gmail.com>
 
        Speed up byte-compilation and autoload generation by avoiding mode-hooks
-       This prevents emacs-lisp-mode-hook from being run everytime an
+       This prevents emacs-lisp-mode-hook from being run every time an
        autoload file is generated, which can account for a fraction of
        package installation time depending on the hooks the user has
        configured.
diff --git a/ChangeLog.3 b/ChangeLog.3
index 1a53011..16e74f4 100644
--- a/ChangeLog.3
+++ b/ChangeLog.3
@@ -1669,7 +1669,7 @@
 
 2020-04-20  Juri Linkov  <juri@linkov.net>
 
-       * doc/emacs/windows.texi (Window Convenience): Decribe more windmove 
features.
+       * doc/emacs/windows.texi (Window Convenience): Describe more windmove 
features.
 
        * doc/emacs/windows.texi (Window Convenience): Add descriptions of
        windmove-display-default-keybindings,
@@ -1904,7 +1904,7 @@
        Improve an example in w32 FAQ
 
        * doc/misc/efaq-w32.texi (Font names): Modify the expression to
-       insert a lits of all installed fonts so as to avoid producing too
+       insert a list of all installed fonts so as to avoid producing too
        long lines.  Suggested by ndame <ndame@protonmail.com>.
 
 2020-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -2253,7 +2253,7 @@
        * lisp/emacs-lisp/re-builder.el (reb-while): Take the current value of
        the counter instead of its name.
        (reb-mark-non-matching-parenthesis): Bind n-reb to 0 at the start and
-       don't wrongly treat it as dynamicly bound.
+       don't wrongly treat it as dynamically bound.
 
 2020-04-03  Philipp Stephani  <phst@google.com>
 
@@ -3447,7 +3447,7 @@
 
 2020-02-10  Alan Mackenzie  <acm@muc.de>
 
-       c-end-of-macro: Handle block coment lines with unescaped NLs correctly
+       c-end-of-macro: Handle block comment lines with unescaped NLs correctly
 
        * lisp/progmodes/cc-langs.el (c-last-open-c-comment-start-on-line-re): 
Make
        obsolete, and supersede by ...
@@ -4133,7 +4133,7 @@
 
 2020-01-17  Dmitry Gutov  <dgutov@yandex.ru>
 
-       Honor tags-case-fold-search during xref identifer completion
+       Honor tags-case-fold-search during xref identifier completion
 
        * etc/NEWS: New entry.
 
@@ -5245,10 +5245,10 @@
        Improve vc--add-line, vc--remove-regexp
 
        * lisp/vc/vc.el (vc--add-line): Create file if it does not exist.
-       Use existing buffer to avoid discrepancies with filesytem.  Make sure
+       Use existing buffer to avoid discrepancies with filesystem.  Make sure
        that the file ends with a newline.
        (vc--remove-line): Do not create file if it does not exist.  Use
-       existing buffer to avoid discrepancies with filesytem. (bug#37185)
+       existing buffer to avoid discrepancies with filesystem. (bug#37185)
 
 2019-12-24  Dmitry Gutov  <dgutov@yandex.ru>
 
@@ -5437,7 +5437,7 @@
 
        Fix bug in flex completion style's sorting and simplify
 
-       This previous commit targetting this function introduced a bug whereby
+       This previous commit targeting this function introduced a bug whereby
        the completion table's sorting function wouldn't be called.  That is
        fixed by this commit, which also simplifies the function further: it
        now skips re-sorting the completions completely if there is no
@@ -8423,7 +8423,7 @@
 
        When using this option and editing input, some transient situations
        may arise that lead to file-name shadowing, but that shouldn't
-       necessarily lead to auto-delete behaviour, which will be suprising.
+       necessarily lead to auto-delete behaviour, which will be surprising.
 
        In '/foo/x/bar', if the user deletes the 'x', shadowing occurs, but
        probably shouldn't.  So, somewhat like ido-mode, only auto-tidy
@@ -9718,7 +9718,7 @@
        'package-menu-refresh', make internal and non-interactive.
        (package-menu-mode-map, package-menu-mode-menu, package-menu-mode)
        (list-packages): Use the above.  (Bug#35504)
-       (package-menu-refresh): Redefine as obsolete fuction alias for
+       (package-menu-refresh): Redefine as obsolete function alias for
        'revert-buffer'.
        * doc/emacs/package.texi (Package Menu): Document it.
        * etc/NEWS: Announce it.
@@ -11191,7 +11191,7 @@
 
        * lisp/minibuffer.el (completions-common-part): Adjust
        description and change default value.
-       (completions-first-difference): Ajust docstring.
+       (completions-first-difference): Adjust docstring.
        (completion-pcm--hilit-commonality): Don't use
        completions-first-difference.
 
@@ -12738,7 +12738,7 @@
        * lisp/speedbar.el (speedbar-check-vc-this-line):
        Normalize boolean result.
        (speedbar-this-file-in-vc): Use `run-hook-with-args-until-success'
-       to check for files under versin control.  Doc fix.
+       to check for files under version control.  Doc fix.
 
 2019-10-16  Michael Albinus  <michael.albinus@gmx.de>
 
@@ -13701,7 +13701,7 @@
        "\\|\r" from regular expression.
 
        * lisp/progmodes/cc-mode.el (c-make-mode-syntax-table): Correct the 
name of
-       the hook normal-erase-is-backspace-MODE-hook from a non-existant hook 
name.
+       the hook normal-erase-is-backspace-MODE-hook from a non-existent hook 
name.
 
 2019-10-11  Lars Ingebrigtsen  <larsi@gnus.org>
 
@@ -15039,7 +15039,7 @@
 
 2019-10-04  Eric Abrahamsen  <eric@ericabrahamsen.net>
 
-       Don't manipulate gnus-newsrc-alist if it hasn't been initalized
+       Don't manipulate gnus-newsrc-alist if it hasn't been initialized
 
        * lisp/gnus/gnus-group.el (gnus-group-set-info): Packages that use
        Gnus summary mode without actually booting Gnus might end up in this
@@ -15458,7 +15458,7 @@
 
        * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): New variable
        got-function-name-prefix, which is set when an operator like * (but not 
&)
-       precedes the putative identifer in parentheses.  Test this variable when
+       precedes the putative identifier in parentheses.  Test this variable 
when
        deciding whether or not to "move the type backwards" to the previous
        identifier.
 
@@ -16583,7 +16583,7 @@
        Verilog-Mode collected updates.
 
        * lisp/progmodes/verilog-mode.el (verilog-auto-inst-param): Add regexp
-       paramter to AUTOINSTPARAM to select which parameters to export.  
Reported
+       parameter to AUTOINSTPARAM to select which parameters to export.  
Reported
        by Vish S.
        (verilog-build-defun-re): Fix `verilog-goto-defun' to find automatic
        function/tasks, bug1492.  Reported by Enze Chi.
@@ -22790,7 +22790,7 @@
 
 2019-08-03  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Tweak tango-dark-theme hightlight face
+       Tweak tango-dark-theme highlight face
 
        * etc/themes/tango-dark-theme.el (class): Make highlight a bit
        less yellow to make the cursor visible on it (bug#19189).
@@ -22940,7 +22940,7 @@
        CC Mode: Fix error in macro cache.  This fixes bug #36802
 
        * lisp/progmodes/cc-engine.el (c-invalidate-macro-cache): Add in a cond 
arm
-       to handle the change position being less than the recorded CPP contruct 
end.
+       to handle the change position being less than the recorded CPP 
construct end.
 
 2019-08-02  Basil L. Contovounesios  <contovob@tcd.ie>
 
@@ -23268,7 +23268,7 @@
        Add example for removing scroll bars/fringes from mini windows 
(Bug#8868)
 
        * doc/lispref/display.texi (Fringe Size/Pos): Mention example
-       for how to permenantly remove fringes from minibuffer windows.
+       for how to permanently remove fringes from minibuffer windows.
        (Scroll Bars): Add example for how to permanently remove
        scroll bars and fringes from minibuffer windows.
 
@@ -23719,7 +23719,7 @@
 
 2019-07-30  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Fix syntax error in previus calc-forms change
+       Fix syntax error in previous calc-forms change
 
        * lisp/calc/calc-forms.el (calc-time): Fix previous decoded time
        change.
@@ -29144,7 +29144,7 @@
        * lib/strnlen.c, m4/strnlen.m4: New files, copied from Gnulib.
        * lwlib/lwlib.c (lw_separator_p):
        * src/json.c (json_has_prefix):
-       Use strncmp to avoid unecessary work with strlen + memcmp.
+       Use strncmp to avoid unnecessary work with strlen + memcmp.
        * src/process.c (set_socket_option): Use SBYTES instead of strlen.
 
 2019-06-25  Emilio C. Lopes  <eclig@gmx.net>  (tiny change)
@@ -30260,7 +30260,7 @@
 
 2019-06-20  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Leave the emtpy info and lib/sys in extraclean
+       Leave the empty info and lib/sys in extraclean
 
        * lib/Makefile.in: Ditto.
 
@@ -30878,7 +30878,7 @@
 
 2019-06-19  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Tweak progess reporting in finder-compile-keywords
+       Tweak progress reporting in finder-compile-keywords
 
        * lisp/finder.el (finder-compile-keywords): Use progress reporter
        to report the processing.
@@ -31189,7 +31189,7 @@
        Output progress messages when scraping autoloads during bootstrap
 
        * lisp/emacs-lisp/byte-run.el (byte-compile-info-message): New
-       function to outout informational messages during byte compilation.
+       function to output informational messages during byte compilation.
 
        * lisp/emacs-lisp/autoload.el (update-directory-autoloads): Use it
        to report progress when scraping autoloads during bootstrap (which
@@ -32559,7 +32559,7 @@
 
        Fix compilation warnings in rfc2104
 
-       * lisp/net/rfc2104.el (rfc2104-hash): Remove superflous calls to
+       * lisp/net/rfc2104.el (rfc2104-hash): Remove superfluous calls to
        string-make-unibyte and avoid two compilation warnings.
 
 2019-06-12  Lars Ingebrigtsen  <larsi@gnus.org>
@@ -34140,7 +34140,7 @@
 
 2019-06-01  Alan Mackenzie  <acm@muc.de>
 
-       Debug and disentangle the literal cacheing in CC Mode
+       Debug and disentangle the literal caching in CC Mode
 
        (Final Commit)
 
@@ -34156,11 +34156,11 @@
 
 2019-06-01  Alan Mackenzie  <acm@muc.de>
 
-       * lisp/progmodes/cc-engine.el: Permute certain literal cacheing 
functions
+       * lisp/progmodes/cc-engine.el: Permute certain literal caching functions
 
 2019-06-01  Alan Mackenzie  <acm@muc.de>
 
-       Tidy up the literal cacheing in CC Mode, optimizing c-full-pp-to-literal
+       Tidy up the literal caching in CC Mode, optimizing c-full-pp-to-literal
 
        (Intermediate commit)
 
@@ -34424,7 +34424,7 @@
        if the sought position is in a literal, and lies between the literal 
start and
        the entry's position.
        (c-cache-to-parse-ps-state, c-parse-ps-state-below): Amend such that 
instead
-       of cacheing a state for a position after a backslash or first character 
of a
+       of caching a state for a position after a backslash or first character 
of a
        2-character comment delimiter, this is done for the previous character
        position.
 
@@ -35308,7 +35308,7 @@
 
        w32--os-description: Fix previous change
 
-       * lisp/w32-fns.el (w32--os-description): Fix inadvertant "o" added
+       * lisp/w32-fns.el (w32--os-description): Fix inadvertent "o" added
        to the end of the function name in the previous patch (bug#35807).
 
 2019-05-20  Lars Ingebrigtsen  <larsi@gnus.org>
@@ -36353,7 +36353,7 @@
 
 2019-05-15  John Shahid  <jvshahid@gmail.com>
 
-       Avoid infinitly looping in tramp-interrupt-process (bug#35506)
+       Avoid infinitely looping in tramp-interrupt-process (bug#35506)
 
        * lisp/net/tramp.el (tramp-interrupt-process): Remove with-timeout.
        Instead pass a timeout to tramp-accept-process-output.
@@ -38458,7 +38458,7 @@
        Fix some corner cases in the recognition of C++ raw strings.
 
        These are where changing the identifier in a raw string delimiter causes
-       different delimiters to match eachother.
+       different delimiters to match each other.
 
        * lisp/progmodes/cc-engine.el (c-raw-string-end-delim-disrupted): New
        variable.
@@ -40585,7 +40585,7 @@
        * lisp/printing.el: Use lexical-binding
 
        Require easy-menu instead of adding declarations.
-       Remove backward compatiblity.  Remove redundant ':group' args.
+       Remove backward compatibility.  Remove redundant ':group' args.
        (pr-region-active-p): Use use-region-p.
        (pr-set-keymap-name): Delete function and callers.
        (pr-set-keymap-parents): Delete function; use set-keymap-parent instead.
@@ -41012,7 +41012,7 @@
        this function can be used to find JSXExpressionContainers within JSX.
        Fix bug where an enclosing JSXElement couldn’t be found when point was
        at the start of its JSXClosingElement.  Return the JSXClosingElement’s
-       position as well, so the JSXClosingElement can be indentified when
+       position as well, so the JSXClosingElement can be identified when
        indenting and be indented like the matching JSXOpeningElement.
 
        (js-jsx--at-enclosing-tag-child-p): js-jsx--enclosing-tag-pos now
@@ -41930,7 +41930,7 @@
        Lisp_Fwd * and then back again, because the compiler can then assume
        that the pointer is aligned for union Lisp_Fwd * when accessing
        the struct Lisp_Objfwd * components, and this assumption might
-       be incorrect becase we don't force that alignment.
+       be incorrect because we don't force that alignment.
        * src/lisp.h (lispfwd): New type, replacing ...
        (union Lisp_Fwd): ... this type, which was removed.
        All uses changed.
@@ -45211,7 +45211,7 @@
 
        * 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'.
+       (sql-get-product-feature): Fetch variable value by `eval'.
        * test/lisp/progmodes/sql-tests.el (sql-test-feature-value-[a-d]):
        New test variables.
        (sql-test-product-feature-harness): New test macro.
@@ -46939,7 +46939,7 @@
        image-mode: Make parameters buffer-local
 
        Image parameters were treated as image specific, but because they
-       actually were global variables, their behaviour transfered to new
+       actually were global variables, their behaviour transferred to new
        images.
        * lisp/image-mode.el (image-transform-resize, image-transform-scale)
        (image-transform-rotation): Declare with defvar-local.  (Bug#33990)
@@ -47838,7 +47838,7 @@
        * src/frame.c (make_initial_frame): don't reset Vframe_list.
        (init_frame_once_for_pdumper, init_frame_once): new functions.
        (syms_of_frame): remove redundant staticpro.
-       * src/fringe.c (init_fringe_once_for_pdumper): new functin.
+       * src/fringe.c (init_fringe_once_for_pdumper): new function.
        (init_fringe_once): call it.
        * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper): new function.
        (syms_of_ftcrfont): call it.
@@ -47846,7 +47846,7 @@
        (syms_of_ftfont): call it.
        * src/ftxfont.c (syms_of_ftxfont_for_pdumper): new function.
        (syms_of_ftxfont): call it.
-       * src/gmalloc.c: adjust for pdumper througout
+       * src/gmalloc.c: adjust for pdumper throughout
        (DUMPED): remove weird custom dumped indicator.
        * src/gnutls.c (syms_of_gnutls): pdumper note for
        gnutls_global_initialized.
@@ -48290,7 +48290,7 @@
        signal an error (due to generating a too-large bignum) contrary
        to its documentation.  Fix things to remove the theoretical
        possibility, so that list lengths are always fixnums (and so
-       that list lenghts are always ptrdiff_t values too, since that
+       that list lengths are always ptrdiff_t values too, since that
        is assumed internally anyway).
        * src/alloc.c (Fcons): Do not allocate so many conses that
        a list length won’t fit into ptrdiff_t or into fixnum.
@@ -48686,7 +48686,7 @@
 
        Adapt test/README
 
-       * test/README: Speak about continous integration tests on hydra
+       * test/README: Speak about continuous integration tests on hydra
        and emba.
 
 2019-01-03  Andrey Kotlarski  <m00naticus@gmail.com>
@@ -50599,7 +50599,7 @@
        (tramp-gvfs-handle-file-writable-p)
        (tramp-gvfs-handle-write-region): Move to tramp.el.
 
-       * lisp/net/tramp-rclone.el: Dont't require `tramp-adb' and
+       * lisp/net/tramp-rclone.el: Don't require `tramp-adb' and
        `tramp-gvfs' anymore.
        (tramp-rclone-file-name-handler-alist):
        Use `tramp-handle-expand-file-name', `tramp-handle-file-local-copy',
@@ -53573,7 +53573,7 @@
        always inserts an expressions even if no abbrevs need to be saved and
        making only write-abbrev-file check that a table has any abbrevs to
        save before calling insert-abbrev-table-description.  This duplicates
-       the work of filtering the table for savable abbrevs, but the benefit
+       the work of filtering the table for saveable abbrevs, but the benefit
        of keeping the API is worth it.
 
        * doc/lispref/abbrevs.texi (Abbrev Tables): Update documentation.
@@ -56960,7 +56960,7 @@
 
        New 'configure' arg --with-mini-gmp
 
-       * configure.ac: It lets the builder override default of whther
+       * configure.ac: It lets the builder override default of whether
        mini-gmp is used.  Use AC_SEARCH_LIBS as per Autoconf manual.
 
 2018-08-11  Paul Eggert  <eggert@cs.ucla.edu>
@@ -57782,7 +57782,7 @@
        Fix some documentation formatting nits
 
        * doc/misc/ert.texi (Running Tests Interactively): Correct
-       Elisp manual titile in xref.
+       Elisp manual title in xref.
        * doc/lispref/edebug.texi (Edebug Misc): Use single argument
        form of xref.
        * doc/lispref/debugging.texi (Backtraces): Add comma and
@@ -57831,7 +57831,7 @@
 
        Add commands to go to source if available, and to show and hide
        Edebug's instrumentation.  Make Edebug pop to backtraces instead of
-       displaying them, which makes Edebug consistant with the behavior of
+       displaying them, which makes Edebug consistent with the behavior of
        ERT and the Lisp Debugger.
        * doc/lispref/edebug.texi (Edebug Misc): Document when and how you can
        jump to source code from an Edebug backtrace.  Document
@@ -58282,7 +58282,7 @@
 
        "******"
 
-       It's slighly easier to visually count the number of characters in the 
second
+       It's slightly easier to visually count the number of characters in the 
second
        string (Bug#32220).
 
        * lisp/subr.el (read-passwd): Prefer ?* as default char instead of ?.
@@ -59002,7 +59002,7 @@
        (epg-config--program-alist) <OpenPGP>: Require a version in 1.4.3..2.0
        or 2.1.6+., not just anything above 1.4.3.
        (epg-check-configuration): Accept a list of required version
-       intervals, in addtion to just a single minimum.
+       intervals, in addition to just a single minimum.
 
 2018-07-15  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
 
@@ -59562,7 +59562,7 @@
 
        * lisp/vc/smerge-mode.el (smerge-refine-regions): Bind
        write-region-inhibit-fsync to t.  This was reported in
-       https://github.com/magit/magit/pull/2834 to give a noticable speedup.
+       https://github.com/magit/magit/pull/2834 to give a noticeable speedup.
 
 2018-07-12  Noam Postavsky  <npostavs@gmail.com>
 
@@ -60247,7 +60247,7 @@
 
        Clean up redundant code from previous checkins
 
-       * src/gnutls.c (gnutls_verify_boot): Remove reduntant setting of
+       * src/gnutls.c (gnutls_verify_boot): Remove redundant setting of
        p->gnutls_certificates, which is now performed by
        gnutls_deinit_certificates.
 
@@ -61556,7 +61556,7 @@
 
        Don't have shr bug out on degenerate <img> tags
 
-       * lisp/net/shr.el (shr-tag-img): Protect against contructs like
+       * lisp/net/shr.el (shr-tag-img): Protect against constructs like
        <img src=" ">.
 
 2018-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -62100,7 +62100,7 @@
 
        Obsolete Flymake's flymake-diagnostic-types-alist
 
-       That varaiable was an association between symbols and properties,
+       That variable was an association between symbols and properties,
        effecively duplicating symbol's property lists.  It is simpler to just
        put properties on symbols.  Backward compatibility to the old variable
        has been kept.
@@ -62803,7 +62803,7 @@
        (tramp-smb-conf, tramp-smb-winexe-program)
        (tramp-smb-winexe-shell-command)
        (tramp-smb-winexe-shell-command-switch):
-       Dont't require 'tramp.  (Bug#31558)
+       Don't require 'tramp.  (Bug#31558)
 
        * lisp/net/tramp.el (tramp-ignored-file-name-regexp): Use type regexp.
 
@@ -63250,7 +63250,7 @@
        * lisp/eshell/esh-opt.el (eshell--process-args): Refactor usage of
        args to eshell--args, as we rely on modifications from
        eshell--process-option and vice versa.  These modifications were not
-       being propogated in the (if (= ai 0)) case, since popping the first
+       being propagated in the (if (= ai 0)) case, since popping the first
        element of a list doesn't destructively modify the underlying list
        object.
 
@@ -64089,7 +64089,7 @@
 
 2018-04-20  Michael Albinus  <michael.albinus@gmx.de>
 
-       Revert "* etc/HELLO: Add langugae Emoji.  Use utf-8 coding."
+       Revert "* etc/HELLO: Add language Emoji.  Use utf-8 coding."
 
        This reverts commit c4cfb5d20487f9912f5896b3f1d291fe7ccc9804.
 
@@ -64132,7 +64132,7 @@
 
        * lisp/international/mule-cmds.el (view-hello-file):  Use utf-8 coding.
 
-       * etc/HELLO: Add langugae Emoji.  Use utf-8 coding.
+       * etc/HELLO: Add language Emoji.  Use utf-8 coding.
 
 2018-04-19  Glenn Morris  <rgm@gnu.org>
 
@@ -65537,7 +65537,7 @@
 
 2018-04-11  Daniel Dehennin  <daniel.dehennin@baby-gnu.org>
 
-       Gnus Group Mail Spliting on mailing-list headers
+       Gnus Group Mail Splitting on mailing-list headers
 
        * doc/misc/gnus.texi: Document the new `list' split abbreviation and
        `match-list' group parameter (bug#25346).
@@ -65717,7 +65717,7 @@
        ‘sgml-quote’ do that.
 
        While at it, fix entiteis not being unquoted if they lack closing
-       semicolon (e.g. ‘&amp’) occuring at the very end of a region.
+       semicolon (e.g. ‘&amp’) occurring at the very end of a region.
        Even though unlikely, make ‘sgml-quote’ handle this scenario.
 
        * lisp/textmodes/sgml-mode.el (sgml-quote): Handle quotation marks and
@@ -69399,7 +69399,7 @@
        mode_line_help_echo.
        (wset_mode_line_help_echo): New function.
        * src/w32fns.c (Fx_show_tip): Normalize the FRAME argument
-       bevore storing it in tip_last_frame (Bug#30399).
+       before storing it in tip_last_frame (Bug#30399).
        * src/xdisp.c (display_mode_lines): Calculate mode line
        default help echo string here and store it in the window's
        mode_line_help_echo slot (Bug#30182).
@@ -69410,7 +69410,7 @@
        * src/xfns.c (x_hide_tip): Rewrite the GTK+ part to correctly
        handle the transition from GTK+ system to Emacs tooltips and
        vice-versa (Bug#30399).
-       (Fx_show_tip): Normalize the FRAME argument bevore storing it
+       (Fx_show_tip): Normalize the FRAME argument before storing it
        in tip_last_frame (Bug#30399).
 
 2018-02-10  Michael Albinus  <michael.albinus@gmx.de>
@@ -76433,7 +76433,7 @@
 
 2019-08-29  Michael Albinus  <michael.albinus@gmx.de>
 
-       Fix accidential change in tramp-tests; do not merge with master
+       Fix accidental change in tramp-tests; do not merge with master
 
        * lisp/net/trampver.el: Change version to "2.3.5.26.3".
        (customize-package-emacs-version-alist): Add Tramp version
@@ -76537,7 +76537,7 @@
 
        * lisp/subr.el (definition-prefixes): Reflow docstring.
 
-       * lisp/svg.el (svg-create): Doc fix to allow arg higlighting.
+       * lisp/svg.el (svg-create): Doc fix to allow arg highlighting.
        (svg-gradient, svg-rectangle): Improve docstring formatting.
 
 2019-06-15  Eli Zaretskii  <eliz@gnu.org>
@@ -82094,7 +82094,7 @@
        * lisp/eshell/esh-opt.el (eshell--process-args): Refactor usage of
        args to eshell--args, as we rely on modifications from
        eshell--process-option and vice versa.  These modifications were not
-       being propogated in the (if (= ai 0)) case, since popping the first
+       being propagated in the (if (= ai 0)) case, since popping the first
        element of a list doesn't destructively modify the underlying list
        object.
 
@@ -82609,7 +82609,7 @@
        (tramp-smb-conf, tramp-smb-winexe-program)
        (tramp-smb-winexe-shell-command)
        (tramp-smb-winexe-shell-command-switch):
-       Dont't require 'tramp.  (Bug#31558)
+       Don't require 'tramp.  (Bug#31558)
 
        * lisp/net/tramp.el (tramp-accept-process-output):
        * lisp/net/tramp-adb.el (tramp-adb-handle-start-file-process):
@@ -82939,7 +82939,7 @@
        Fix inaccuracies in "Shell Ring" node of Emacs manual
 
        * doc/emacs/misc.texi (Shell Ring): Don't mention 'M-s' and don't
-       insist on Shell history commands being "jsut like" similar
+       insist on Shell history commands being "just like" similar
        commands that operate on minibuffer history.  Reported by Jorge
        <jorge+list@disroot.org> in emacs-manual-bugs.
 
@@ -90003,7 +90003,7 @@
 
 2017-10-27  Eli Zaretskii  <eliz@gnu.org>
 
-       Improve documentation of how faces are applied to display stings
+       Improve documentation of how faces are applied to display strings
 
        * doc/lispref/display.texi (Displaying Faces): Describe how the
        faces of the "underlying" text affect overlay and display strings.
@@ -90156,7 +90156,7 @@
 
        Fix two js indentation problems
 
-       Fix intentation problems reported in
+       Fix indentation problems reported in
        https://github.com/mooz/js2-mode/issues/463.
        * lisp/progmodes/js.el (js--continued-expression-p):
        Check syntax state after /.
@@ -92604,7 +92604,7 @@
 
        flymake.el knows nothing about line/column diagnostics (except for
        backward-compatible flymake-ler-make-ler, which must yet be tested).
-       It’s also the backend’s reponsibility to compute a BEG and END
+       It’s also the backend’s responsibility to compute a BEG and END
        positions for the diagnostic in the relevant buffer.
 
        * lisp/progmodes/flymake-proc.el
@@ -92739,7 +92739,7 @@
 
        For essential properties like `severity', `priority', etc, a default
        value is produced.  Some properties like `evaporate' cannot be
-       overriden.
+       overridden.
 
        * lisp/progmodes/flymake.el (flymake--diag): Rename from
        flymake-ler.
@@ -93382,7 +93382,7 @@
 
        Bring back the busy wait after x_make_frame_visible (Bug#25521)
 
-       But wait specfically for a MapNotify event, and only for a
+       But wait specifically for a MapNotify event, and only for a
        configurable amount of time.
        * src/xterm.c (syms_of_xterm) [x-wait-for-event-timeout]: New
        variable.
@@ -94709,7 +94709,7 @@
        (tramp-test12-rename-file, tramp-test15-copy-directory)
        (tramp-test21-file-links): Extend tests.
        (tramp-test13-make-directory, tramp-test14-delete-directory):
-       Specifiy error symbol in `should-error'.
+       Specify error symbol in `should-error'.
 
 2017-09-12  Mark Oteiza  <mvoteiza@udel.edu>
 
@@ -94735,7 +94735,7 @@
 
        Include sxhash of object with printed bytecode
 
-       This printing, while succint, is rather opaque.  At least give an
+       This printing, while succinct, is rather opaque.  At least give an
        immediate clue of whether different byte code printouts are for the
        same or different byte code objects.
        * lisp/emacs-lisp/cl-print.el (cl-print-object): Add object sxhash to
@@ -95280,7 +95280,7 @@
 
        Problem reported by Angelo Graziosi in:
        https://lists.gnu.org/r/emacs-devel/2017-09/msg00045.html
-       * autogen.sh (git_config): Do not execut 'git' if $do_git fails.
+       * autogen.sh (git_config): Do not execute 'git' if $do_git fails.
 
 2017-09-07  Glenn Morris  <rgm@gnu.org>
 
@@ -97597,13 +97597,13 @@
 
 2017-08-09  Tino Calancha  <tino.calancha@gmail.com>
 
-       dired-delete-file:  Dont't ask for empty dirs
+       dired-delete-file:  Don't ask for empty dirs
 
        * lisp/dired.el (dired--yes-no-all-quit-help): New defun.
-       (dired-delete-file): Use it.  Dont't ask for empty dirs (Bug#27940).
+       (dired-delete-file): Use it.  Don't ask for empty dirs (Bug#27940).
 
        * test/lisp/dired-tests.el (dired-test-with-temp-dirs):
-       New auxiliar macro.
+       New auxiliary macro.
        (dired-test-bug27940): Add new test.
 
 2017-08-09  Tino Calancha  <tino.calancha@gmail.com>
@@ -97928,7 +97928,7 @@
        Show help message when user inputs 'help'.
        (dired-do-flagged-delete): Bind locally dired-recursive-deletes
        so that we can overwrite its global value.
-       Wrapp the loop within a catch '--delete-cancel to catch when
+       Wrap the loop within a catch '--delete-cancel to catch when
        the user abort the directtry deletion.
        * doc/emacs/dired.texi (Dired Deletion): Update manual.
        * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 26.1):
@@ -98908,7 +98908,7 @@
 
        * lisp/net/shr.el (shr-put-image): Display svg images as svg
        (bug#27799).  I suspect the previous change was checked in by
-       accident in conjuction with some other svg changes.
+       accident in conjunction with some other svg changes.
 
 2017-07-23  Michael Albinus  <michael.albinus@gmx.de>
 
@@ -99358,7 +99358,7 @@
        * doc/misc/ses.texi (Configuring what printer function
        applies): Add description of keys for completing local printer
        symbols and listing local printers in a help buffer.
-       (Formulas): Add decription for key to list the named cell
+       (Formulas): Add description for key to list the named cell
        symbols in a help buffer.
 
        * lisp/ses.el (ses-completion-keys): New constant.
@@ -100624,7 +100624,7 @@
        * src/image.c (xbm_scan):
        * src/lread.c (read_escape):
        * src/regex.c (ISXDIGIT) [emacs]:
-       Use char_hexdigit insted of doing it by hand.
+       Use char_hexdigit instead of doing it by hand.
 
 2017-07-06  Paul Eggert  <eggert@cs.ucla.edu>
 
@@ -100970,7 +100970,7 @@
        Fix bug in yesterday's CC Mode commit.
 
        * lisp/progmodes/cc-mode.el (c-quoted-number-head-before-point): Check a
-       search has succeded before using the match data.
+       search has succeeded before using the match data.
        (c-quoted-number-head-before-point, c-quoted-number-head-after-point):
        Specify that the position of the extremity of the head or tail is in the
        match data.
@@ -101677,13 +101677,13 @@
        * src/nsfns.m (frame_parm_handler): Add entry for
        x_set_no_special_glyphs.
        (Fx_create_frame): Handle 'no-special-glyphs' parameter.
-       Intitialize new cursor types for dragging frame borders.
+       Initialize new cursor types for dragging frame borders.
        * src/nsterm.h (struct ns_output): Add new cursor types for
        dragging frame borders.
        * src/w32fns.c (w32_frame_parm_handlers): Add entry for
        x_set_no_special_glyphs.
        (Fx_create_frame): Handle 'no-special-glyphs' parameter.
-       Intitialize new cursor types for dragging frame borders.
+       Initialize new cursor types for dragging frame borders.
        * src/w32term.h (struct w32_output): Add new cursor types for
        dragging frame borders.
        * src/window.c (coordinates_in_window)
@@ -103780,7 +103780,7 @@
        Correct and isolate the todo-mode test environment
 
        This avoids having to set todo-mode variables globally in the test
-       file and prevents any exisiting user todo-mode files from influencing
+       file and prevents any existing user todo-mode files from influencing
        the tests.
 
        * test/lisp/calendar/todo-mode-tests.el:
@@ -104671,7 +104671,7 @@
        Fix and improve UI of scroll bar menu (bug#27047)
 
        In addition, since the Emacs manual writes "scroll bar", "tool
-       bar" and "menu bar", use this convention in the Show/Hide menues
+       bar" and "menu bar", use this convention in the Show/Hide menus
        and tooltips as well.
 
        * lisp/menu-bar.el (menu-bar-showhide-scroll-bar-menu): Make
@@ -105415,7 +105415,7 @@
        specifies how emacs should use tramp to find remote files.
 
        * doc/emacs/misc.texi (TCP Emacs server): New subsection describing
-       the various knobs to tune server.el for TCP opereation.
+       the various knobs to tune server.el for TCP operation.
        (emacsclient Options): Reference "TCP Emacs server" from description of
        --server-file.  Document the new '--tramp' / '-T' options.
        * doc/emacs/emacs.texi (Top): Update the top-level menu.
@@ -107412,7 +107412,7 @@
        instead of the sexp beginning position.  Saving the
        CONTAINING-SEXP-START returned by `calculate-lisp-indent' is no longer
        needed.  Don't bother stopping if we don't descend below init-depth,
-       since we now alway scan the whole buffer (via syntax-ppss) anyway.
+       since we now always scan the whole buffer (via syntax-ppss) anyway.
        * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp): Add blank
        line to test case.
 
@@ -109144,7 +109144,7 @@
        * doc/lispref/records.texi (Records): reference it.  Document
        behavior when type slot is a record.
 
-       * admin/alloc-colors.c (Fmake_record, Frecord): mention type desciptors.
+       * admin/alloc-colors.c (Fmake_record, Frecord): mention type 
descriptors.
 
 2017-04-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
@@ -110325,7 +110325,7 @@
 
            * lisp/progmodes/sql.el: Version 3.6
 
-           (sql-login-params): Added :must-match for completition of
+           (sql-login-params): Added :must-match for completion of
            `server' and `database' login parameters.
            (sql-sqlite-login-params, sql-postgres-login-params): Set
            :must-match to `confirm'.
@@ -113373,7 +113373,7 @@
        casefiddle-tests-case-table, casefiddle-tests-casing-character,
        casefiddle-tests-casing, casefiddle-tests-casing-byte8,
        casefiddle-tests-casing-byte8-with-changes): New tests.
-       (casefiddle-tests--test-casing): New helper function for runnig
+       (casefiddle-tests--test-casing): New helper function for running
        some of the tests.
 
 2017-02-15  Michal Nazarewicz  <mina86@mina86.com>
@@ -113897,7 +113897,7 @@
 
        * lisp/eshell/esh-proc.el (eshell-sentinel): If called while still
        handling output of the process, make sure to close the pipes only later,
-       so that the next process in the pipeline recieves EOF only after getting
+       so that the next process in the pipeline receives EOF only after getting
        all its input (Bug#25549).
 
 2017-02-09  Katsumi Yamaoka  <yamaoka@jpl.org>
@@ -116519,7 +116519,7 @@
        Clarify major mode switching
 
        * doc/emacs/modes.texi (Major Modes):
-       * doc/lispref/modes.texi (Modes, Major Modes): Explictly say that each
+       * doc/lispref/modes.texi (Modes, Major Modes): Explicitly say that each
        buffer has exactly one major mode and can't be "turned off", only
        switched away from (Bug#25357).
 
@@ -119501,7 +119501,7 @@
 
        merge from trunk
 
-       this merges frmo trunk and fixes various build issues.
+       this merges from trunk and fixes various build issues.
        this needed a few ugly tweaks.
        this hangs in "make check" now
 
@@ -120142,7 +120142,7 @@
 
        Since 2016-06-26 "Fix test-completion with completion-regexp-list", when
        calling test-completion with an alist collection, the predicate was
-       recieving the string value instead of the alist entry (Bug#24966).
+       receiving the string value instead of the alist entry (Bug#24966).
 
        * src/minibuf.c (Ftest_completion): Don't modify the found element, just
        test STRING against `completion-regexp-list'.
@@ -124470,7 +124470,7 @@
 
 2016-09-12  Michal Nazarewicz  <mina86@mina86.com>
 
-       Fix compiler thinking width and height may be unitialized in frame.c
+       Fix compiler thinking width and height may be uninitialized in frame.c
 
        This fixes the following warning:
 
@@ -124486,7 +124486,7 @@
 
 2016-09-12  Michal Nazarewicz  <mina86@mina86.com>
 
-       Fix compiler thinking tmpdir may be unitialized in emacsclient
+       Fix compiler thinking tmpdir may be uninitialized in emacsclient
 
        This fixes the following warning:
 
@@ -124669,7 +124669,7 @@
 
        Invert y coord of NS image files (bug#7847)
 
-       * src/nsterm.m (ns_dumpglyphs_image): Invert y co-ordinate of the image
+       * src/nsterm.m (ns_dumpglyphs_image): Invert y coordinate of the image
        when compositing.
 
 2016-09-10  Noam Postavsky  <npostavs@gmail.com>
@@ -124701,7 +124701,7 @@
        determine which class is failing.  This happens when failure is caused
        by ‘(should (equal (point) (point-max)))’ not being met.
 
-       With per-character class tests, it is immidiatelly obvious which test
+       With per-character class tests, it is immediately obvious which test
        causes issues plus tests for all classes are run even if some of them
        fail.
 
@@ -125756,7 +125756,7 @@
 
        * lisp/emacs-lisp/map.el (map--dispatch): Fix docstring
 
-       The docstring referenced a non-existant parameter, as well as a
+       The docstring referenced a non-existent parameter, as well as a
        parameter that has been renamed since the docstring was written. Fix
        both errors, fixing (Bug#24182).
 
@@ -125828,7 +125828,7 @@
 
        * lisp/window.el (window--state-put-2): Set 'noforce argument
        when restoring a window's start position.  This avoids that the
-       effect of `set-window-point' gets overidden by that of
+       effect of `set-window-point' gets overridden by that of
        `set-window-start' (Bug#24240).
 
 2016-08-17  Alan Mackenzie  <acm@muc.de>
@@ -126205,7 +126205,7 @@
 
        * doc/misc/ses.texi (Quick Tutorial): Mention the '!'
        'ses-range' modifier as an alternative to 'ses+'.
-       (Advanced Features): Add a refernce to node 'Nonrelocatable
+       (Advanced Features): Add a reference to node 'Nonrelocatable
        references' concerning function 'ses-rename-cell'.
        (Standard formula functions): Mention the '!' 'ses-range'
        modifier as an alternative to 'ses-delete-blanks'.
@@ -126449,7 +126449,7 @@
 
 2016-08-06  Michael Albinus  <michael.albinus@gmx.de>
 
-       Add missing dcstrings in Tramp, remove chec for obsolee methods
+       Add missing dcstrings in Tramp, remove check for obsolee methods
 
        * lisp/net/tramp.el (tramp-progress-reporter-update)
        (tramp-unload-file-name-handlers, tramp-get-local-uid)
@@ -128859,7 +128859,7 @@
        Call `file-name-directory' also for remote NEWNAME.
 
        * test/lisp/net/tramp-tests.el (tramp-test15-copy-directory):
-       Do not skip for tramp-smb.el.  Test als COPY-CONTENTS case.
+       Do not skip for tramp-smb.el.  Test also COPY-CONTENTS case.
        (tramp-test24-file-name-completion): Improve check for
        hostname completion.
        (tramp--test-rsync-p): New defun.
@@ -129664,7 +129664,7 @@
 
        * lisp/international/ucs-normalize.el
        (ucs-normalize-hfs-nfd-pre-write-conversion):
-       Prevent compiler warning for unused arguments, add coment.
+       Prevent compiler warning for unused arguments, add comment.
 
 2016-06-10  Paul Eggert  <eggert@cs.ucla.edu>
 
@@ -130352,7 +130352,7 @@
 
        * lisp/wid-edit.el (link): Remove :follow-link property (bug#22434)
 
-       * lisp/recentf.el (recentf-dialog-mode-map): Remove unecessary mapping.
+       * lisp/recentf.el (recentf-dialog-mode-map): Remove unnecessary mapping.
 
 2016-05-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
@@ -131429,7 +131429,7 @@
        4c5a00b Make package-install-from-buffer not move point
        9596ea1 ; Revert "* emacs-lisp/lisp-mnt.el (lm-header): save-excursion"
        f79c352 Redo the fix for bug#21839
-       8d2f78c Don't treat JS spread as contination method call
+       8d2f78c Don't treat JS spread as continuation method call
 
 2016-05-12  Chris Feng  <chris.w.feng@gmail.com>
 
@@ -132526,7 +132526,7 @@
        cursor-type doc fix
 
        * src/buffer.c (syms_of_buffer): Mention that cursor-type's
-       WIDHT/HEIGHT can't exceed the frame char size (bug#19215).
+       WIDTH/HEIGHT can't exceed the frame char size (bug#19215).
 
 2016-04-30  Lars Ingebrigtsen  <larsi@gnus.org>
 
@@ -132608,7 +132608,7 @@
 
 2016-04-30  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Explictly explain that package-initialize loads the packages
+       Explicitly explain that package-initialize loads the packages
 
        * lisp/emacs-lisp/package.el (package-initialize): Be explicit
        in saying that `package-initialize' obviates adjusting the
@@ -132892,7 +132892,7 @@
        Fix definition of nobreak-space
 
        * lisp/faces.el (nobreak-space): The definition to
-       nobreak-space was inadvertantly changed by the previous checkin.
+       nobreak-space was inadvertently changed by the previous checkin.
 
 2016-04-28  Lars Ingebrigtsen  <larsi@gnus.org>
 
@@ -133217,9 +133217,9 @@
        calling `vc-state' on default-directory (VC state is undefined
        for directories).  Check that `vc-state' returns nil where it
        returned `unregistered' before.  Remove all checks comparing
-       invocations with the backend passed in explictly and without.
+       invocations with the backend passed in explicitly and without.
        (vc-test--working-revision): Remove all checks comparing
-       invocations with the backend passed in explictly and without.
+       invocations with the backend passed in explicitly and without.
        Update comments, and add a new one.
 
 2016-04-24  Paul Eggert  <eggert@cs.ucla.edu>
@@ -133845,7 +133845,7 @@
 
 2016-04-10  Etienne Prud'homme  <e.e.f.prudhomme@gmail.com>  (tiny change)
 
-       Fix alignement rule for CSS
+       Fix alignment rule for CSS
 
        * lisp/align.el (align-rules-list): Support CSS properties that have
        multiple words.
@@ -134121,7 +134121,7 @@
        a3daa34 Teach M-x disassemble a default argument.
        e30c3e9 Fix EOL decoding in vc-annotate with SVN back-end on MS-Windows
        df441b3 Fix OS X specific settings in tramp-tests
-       2244331 Finish fixing a cacheing bug in CC Mode (see 2016-03-09)
+       2244331 Finish fixing a caching bug in CC Mode (see 2016-03-09)
 
        # Conflicts:
        #       lisp/net/tramp-sh.el
@@ -134272,7 +134272,7 @@
        0403620 Don't misindent arguments of a method call inside continuation
        e6776f8 * src/keyboard.c (echo_keystrokes_p): Don't test cursor_in_ec...
        8475f3d ASCII-only etc/NEWS etc.
-       5cc6919 Fix a cacheing bug, which led to inordinately slow c-beginnin...
+       5cc6919 Fix a caching bug, which led to inordinately slow c-beginnin...
        0ce37ea Fix Isearch prompt when invoked with an argument
        f3033d4 Fix a typo in the Emacs manual
        4235d2d Curved quotes in etc/NEWS etc.
@@ -137965,7 +137965,7 @@
 
 2016-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       Remove som XEmacs compat code from message.el
+       Remove some XEmacs compat code from message.el
 
        * lisp/gnus/message.el: Remove some XEmacs compat code.
 
@@ -138403,7 +138403,7 @@
        a header while with nil argument moves to the indented text of header's
        value.
        (message-beginning-of-line): Function is now aware of folded headers and
-       either moves point to the indention of a header or, in visual-line-mode,
+       either moves point to the indentation of a header or, in 
visual-line-mode,
        searches for the beginning of the header.
 
 2016-02-08  Michal Nazarewicz  <mina86@mina86.com>
@@ -139254,7 +139254,7 @@
        (History): XEmacs support has been removed.
        (GVFS based methods, Remote processes): Do not use emacsgvfs flag.
        (Auto-save and Backup): Use both syntax versions.
-       (File name Syntax): Remark on IPv6 adresses is valid for
+       (File name Syntax): Remark on IPv6 addresses is valid for
        unified syntax only.
 
        * doc/misc/trampver.texi: Do not set emacsgvfs flag.
@@ -140661,7 +140661,7 @@
          put-text-property cannot be plainly (point), you need a
          ses-goto-print call before
 
-       - Second, the range itself was computed erronously, only the first
+       - Second, the range itself was computed erroneously, only the first
          char was affected instead of the full cell width. This was not
          noticeable prior to changes (Deprecate `intangible' and
          `point-entered' properties) made by Stefan on 2015-04-13T19:51:15Z
@@ -142220,7 +142220,7 @@
        the problems described in bug#20674 regarding the interaction with
        modes such as darkroom-mode and olivetti-mode.
 
-       A similar fix was commited to nlinum.el in ELPA.git's
+       A similar fix was committed to nlinum.el in ELPA.git's
        e7f5f549fbfb740b911fb7f33b42381ecece56d8
 
        * lisp/linum.el (linum-delete-overlays): Restore margins more
diff --git a/admin/ChangeLog.1 b/admin/ChangeLog.1
index 3cbc9eb..7a576a0 100644
--- a/admin/ChangeLog.1
+++ b/admin/ChangeLog.1
@@ -181,7 +181,7 @@
 
        * grammars/c.by (opt-brackets-after-symbol): New.
        (multi-stage-dereference): Use it.  Add rules for explicit
-       matching the last dereference.  We cannot just juse
+       matching the last dereference.  We cannot just use
        'namespace-symbol' as a single rule, since this would match too
        greedy and mess with parsing default values of variables.
 
@@ -1258,7 +1258,7 @@
 2012-06-13  Andreas Schwab  <schwab@linux-m68k.org>
 
        * make-emacs: Rename --union-type to --check-lisp-type.
-       Define CHECK_LISP_OBJECT_TYPE insted of USE_LISP_UNION_TYPE.
+       Define CHECK_LISP_OBJECT_TYPE instead of USE_LISP_UNION_TYPE.
        * CPP-DEFINES (DEBUG_LISP_OBJECT_TYPE): Rename from
        USE_LISP_UNION_TYPE.
 
diff --git a/admin/find-gc.el b/admin/find-gc.el
index 9bab377..7de2474 100644
--- a/admin/find-gc.el
+++ b/admin/find-gc.el
@@ -73,8 +73,8 @@ Also store it in `find-gc-unsafe-list'."
   (find-unsafe-funcs 'Fgarbage_collect)
   (setq find-gc-unsafe-list
        (sort find-gc-unsafe-list
-             (function (lambda (x y)
-                         (string-lessp (car x) (car y)))))))
+              (lambda (x y)
+                (string-lessp (car x) (car y))))))
 
 ;;; This does a depth-first search to find all functions that can
 ;;; ultimately call the function "target".  The result is an a-list
diff --git a/configure.ac b/configure.ac
index ead27d3..5aceac6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -454,7 +454,7 @@ OPTION_DEFAULT_ON([cairo],[don't compile with Cairo 
drawing])
 OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
 OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support])
 OPTION_DEFAULT_ON([native-image-api], [don't use native image APIs (GDI+ on 
Windows)])
-OPTION_DEFAULT_IFAVAILABLE([json], [don't compile with native JSON support])
+OPTION_DEFAULT_IFAVAILABLE([json], [compile with native JSON support])
 
 OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
 OPTION_DEFAULT_ON([harfbuzz],[don't use HarfBuzz for text shaping])
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index cde7b47..2e03d0c 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -464,13 +464,14 @@ Normally, this command undoes the last change, moving 
point back to
 where it was before the change.  The undo command applies only to
 changes in the buffer; you can't use it to undo cursor motion.
 
-  On a graphics terminal (including text-mode frames displayed by a
-terminal emulator, such as @command{xterm}), the easiest way to invoke
-@code{undo} is with @kbd{C-/}; that doesn't need the Shift key.  On a
-text terminal, @kbd{C-/} does not exist, but in many cases you can type
-@kbd{C-_} without the Shift key (in effect pressing @kbd{C--}) and it
-will work anyway, at least with keyboards that produce the US ASCII
-character set.
+  On a terminal that supports the @key{Control} modifier on all other
+keys, the easiest way to invoke @code{undo} is with @kbd{C-/}, since
+that doesn't need the @key{Shift} modifier.  On terminals which allow
+only the ASCII control characters, @kbd{C-/} does not exist, but for
+many of them @kbd{C-/} still works because it actually sends @kbd{C-_}
+to Emacs, while many others allow you to omit the @key{Shift} modifier
+when you type @kbd{C-_} (in effect pressing @kbd{C--}), making that
+the most convenient way to invoke @code{undo}.
 
   Although each editing command usually makes a separate entry in the
 undo records, very simple commands may be grouped together.
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 24fd02a..fdc4703 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -129,6 +129,17 @@ options (that is, single characters) requiring no 
arguments, and long
 options (starting with @samp{--}) whose arguments are specified with
 @samp{=}.
 
+@vindex dired-switches-in-mode-line
+  Dired displays in the mode line an indication of what were the
+switches used to invoke @command{ls}.  By default, Dired will try to
+determine whether the switches indicate sorting by name or date, and
+will say so in the mode line.  If the @code{dired-switches-in-mode-line}
+variable is @code{as-is}, the switches will be shown verbatim.  If
+this variable's value is an integer, the switch display will be
+truncated to that length.  This variable can also be a function, which
+will be called with @code{dired-actual-switches} as the only
+parameter, and should return a string to display in the mode line.
+
 @vindex dired-use-ls-dired
   If your @command{ls} program supports the @samp{--dired} option,
 Dired automatically passes it that option; this causes @command{ls} to
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index d44d7be..d982a9e 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1984,10 +1984,11 @@ the @code{search-highlight-submatches} variable.  If 
this variable's
 value is @code{nil}, no special highlighting is done, but if the value
 is non-@code{nil}, text that matches @samp{\( @dots{} \)} constructs
 (a.k.a.@: ``subexpressions'') in the regular expression will be
-highlighted with distinct faces, named @code{isearch-group-@var{n}}.
-For instance, when searching for @samp{foo-\([0-9]+\)}, the part
-matched by @samp{[0-9]+} will be highlighted with the
-@code{isearch-group-1} face.
+highlighted with distinct faces, named @code{isearch-group-odd}
+for the odd group matches, and @code{isearch-group-even}
+for the even group matches.  For instance, when searching for
+@samp{foo-\([0-9]+\)}, the part matched by @samp{[0-9]+} will be
+highlighted with the @code{isearch-group-odd} face.
 
 @cindex lazy highlighting customizations
 @vindex isearch-lazy-highlight
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 6833af9..aa6ef30 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -577,7 +577,7 @@ macro, then an error is signaled with data 
@code{"Autoloading failed to
 define function @var{function-name}"}.
 
 @findex update-file-autoloads
-@findex update-directory-autoloads
+@findex make-directory-autoloads
 @cindex magic autoload comment
 @cindex autoload cookie
 @anchor{autoload cookie}
@@ -590,7 +590,7 @@ writes a corresponding @code{autoload} call into 
@file{loaddefs.el}.
 file generated by @code{update-file-autoloads} can be changed from the
 above defaults, see below.)
 Building Emacs loads @file{loaddefs.el} and thus calls @code{autoload}.
-@kbd{M-x update-directory-autoloads} is even more powerful; it updates
+@kbd{M-x make-directory-autoloads} is even more powerful; it updates
 autoloads for all files in the current directory.
 
   The same magic comment can copy any kind of form into
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 1826e8f..aaef858 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -960,7 +960,7 @@ Using multiple top-level code sections has the advantage 
that it
 avoids introducing an additional nesting level but it also means that
 the section named @samp{Code} does not contain all the code, which is
 awkward.  To avoid that, you should put no code at all inside that
-section; that way it can be considered a seperator instead of a
+section; that way it can be considered a separator instead of a
 section heading.
 
 Finally, we recommend that you don't end headings with a colon or any
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 1dab29b..a356cec 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -34743,15 +34743,15 @@ is defined by
 
 @smallexample
 (put 'calcFunc-ln\' 'math-derivative-1
-     (function (lambda (u) (math-div 1 u))))
+     (lambda (u) (math-div 1 u)))
 @end smallexample
 
 The two-argument @code{log} function has two derivatives,
 @smallexample
 (put 'calcFunc-log\' 'math-derivative-2     ; d(log(x,b)) / dx
-     (function (lambda (x b) ... )))
+     (lambda (x b) ... ))
 (put 'calcFunc-log\'2 'math-derivative-2    ; d(log(x,b)) / db
-     (function (lambda (x b) ... )))
+     (lambda (x b) ... ))
 @end smallexample
 @end defun
 
@@ -34818,7 +34818,7 @@ as properties in a manner similar to derivatives:
 
 @smallexample
 (put 'calcFunc-ln 'math-inverse
-     (function (lambda (x) (list 'calcFunc-exp x))))
+     (lambda (x) (list 'calcFunc-exp x)))
 @end smallexample
 
 This function can call @samp{(math-solve-get-sign @var{x})} to create
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index b5f26e0..2b38544 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -4818,7 +4818,7 @@ For example:
 @example
 (defun make-adder (n)
   (lexical-let ((n n))
-    (function (lambda (m) (+ n m)))))
+    (lambda (m) (+ n m))))
 (setq add17 (make-adder 17))
 (funcall add17 4)
      @result{} 21
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index aeb5a26..b0200b4 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -841,7 +841,7 @@ keys, as well.  (For example, some people use it to bind 
the VT200
 seldom used back-tick key (@samp{`}) to the function @samp{ESC-prefix}
 so it will behave like an @key{ESC} key.)  The second function,
 @code{edt-bind-gold-key}, is used to bind emacs commands to gold key
-sequences involving alpha-numeric keys, special character keys, and
+sequences involving alphanumeric keys, special character keys, and
 control keys.
 
 The third function, @code{edt-bind-function-key}, is terminal dependent
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 9180b4e..316a1ba 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -476,7 +476,7 @@ to launch any external programs, set this variable to 
@code{nil} or
 @vindex mm-inline-font-lock
 If non-@code{nil}, inlined parts that support font locking (for
 instance, patches or code snippets) will be font-locked.  This may be
-overriden by callers that have their own ways of enabling/inhibiting
+overridden by callers that have their own ways of enabling/inhibiting
 font locking.
 
 @end table
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index c7bf99c..b475793 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -103,7 +103,7 @@ should also display a tool-tip with the same information.
 
 @code{flymake-goto-next-error} and @code{flymake-goto-prev-error} are
 commands that allow easy navigation to the next/previous erroneous
-regions, respectively.  If might be a good idea to map them to @kbd{M-n}
+regions, respectively.  It might be a good idea to map them to @kbd{M-n}
 and @kbd{M-p} in @code{flymake-mode}, by adding to your init file:
 
 @lisp
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a1c8b32..ee20d28 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -29422,7 +29422,7 @@ collection of @acronym{NOV} lines.
 @item @acronym{NOV}
 @cindex @acronym{NOV}
 @acronym{NOV} stands for News OverView, which is a type of news server
-header which provide datas containing the condensed header information
+header which provide data containing the condensed header information
 of articles.  They are produced by the server itself; in the @code{nntp}
 back end Gnus uses the ones that the @acronym{NNTP} server makes, but
 Gnus makes them by itself for some backends (in particular, @code{nnml}).
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 5e84a36..1b5339b 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -384,7 +384,7 @@ After one of the above commands, @file{~/emacs/tramp} will
 containing the latest version of @value{tramp}.
 
 @noindent
-To fetch updates from the repository, use git pull:
+To fetch updates from the repository, use @code{git pull}:
 
 @example
 @group
@@ -1709,9 +1709,9 @@ Integration for LXD containers.  A container is accessed 
via
 @item magit-tramp
 @cindex method @option{git}
 @cindex @option{git} method
-Browsing git repositories with @code{magit}.  A versioned file is
+Browsing Git repositories with @code{magit}.  A versioned file is
 accessed via @file{@trampfn{git,rev@@root-dir,/path/to/file}}.
-@samp{rev} is a git revision, and @samp{root-dir} is a virtual host
+@samp{rev} is a Git revision, and @samp{root-dir} is a virtual host
 name for the root directory, specified in
 @code{magit-tramp-hosts-alist}.
 
@@ -4867,6 +4867,18 @@ remote files}.
 
 
 @item
+I get a warning @samp{Tramp has been compiled with Emacs a.b, this is Emacs 
c.d}
+
+@value{tramp} comes with compatibility code for different Emacs
+versions.  When you see this warning, you don't use the Emacs built-in
+version of @value{tramp}.  In case you have installed @value{tramp}
+from GNU ELPA, you must delete and reinstall it.
+@ifset installchapter
+In case you have installed it from its Git repository, @ref{Recompilation}.
+@end ifset
+
+
+@item
 How to disable other packages from calling @value{tramp}?
 
 There are packages that call @value{tramp} without the user ever
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index bccfa0a..3ce27a1 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -1740,6 +1740,28 @@ Get the item which @var{widget} is assumed to toggle.
 This is only meaningful for radio buttons or checkboxes in a list.
 @end defun
 
+@defun widget-choose title items &optional event
+Prompt the user to choose an item from a list of options.
+
+@var{title} is the name of the list of options.  @var{items} should be
+a menu, with its items in the simple format or in the extended format.
+@xref{Defining Menus,, Defining Menus, elisp, the Emacs Lisp Reference
+Manual}.  Independently of the format, you don't have to provide a
+title for the menu, just pass the desired title in @var{title}.  The
+optional @var{event} is an input event.  If @var{event} is a mouse
+event and the number of elements in @var{items} is less than the user
+option @code{widget-menu-max-size}, then @code{widget-choose} uses a
+popup menu to prompt the user.  Otherwise, @code{widget-choose} uses
+the minibuffer.
+
+When @var{items} is a keymap menu, the returned value is the symbol in
+the key vector, as in the argument of @code{define-key}
+(@pxref{Changing Key Bindings,,,elisp, the Emacs Lisp Reference
+Manual}).  When @var{items} is a list whose selectable items are of
+the form (@var{name} . @var{value}) (i.e., the simplified format),
+then the return value is the @var{value} of the chosen element.
+@end defun
+
 @node  Widget Wishlist
 @chapter Wishlist
 @cindex todo
diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1
index 1229b8f..5a7cd59 100644
--- a/etc/ChangeLog.1
+++ b/etc/ChangeLog.1
@@ -1670,7 +1670,7 @@
        * images/icons/allout-widgets-light-bg: Icons for new
        allout-widgets.el.
 
-       * images/icons/README: Include coypright and GPL 3 license for
+       * images/icons/README: Include copyright and GPL 3 license for
        new icons.
 
 2011-02-16  Michael Albinus  <michael.albinus@gmx.de>
@@ -2203,7 +2203,7 @@
 
 2009-08-13  Kenichi Handa  <handa@m17n.org>
 
-       * NEWS: Mention the new coding systme `utf-8-hfs' and many
+       * NEWS: Mention the new coding system `utf-8-hfs' and many
        functions for Unicode normalization.
 
 2009-08-09  CHENG Gao  <chenggao@gmail.com>
diff --git a/etc/NEWS b/etc/NEWS
index 10b99f4..88957fb 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -152,6 +152,13 @@ your init file:
     (setq frame-title-format '(multiple-frames "%b"
                               ("" invocation-name "@" system-name)))
 
+** recentf
+
+---
+*** 'recentf-auto-cleanup' time string now repeats.
+When 'recentf-auto-cleanup' is set to a time string, it now repeats
+every day, rather than only running once after the mode is turned on.
+
 
 * Editing Changes in Emacs 28.1
 
@@ -318,6 +325,13 @@ time zones will use a form like "+0100" instead of "CET".
 
 ** Dired
 
++++
+*** New user option 'dired-switches-in-mode-line'.
+This variable controls how 'ls' switches are displayed in the mode
+line, and allows truncating them (to preserve space on the mode line)
+or showing them literally, either instead of, or in addition to,
+displaying "by name" or "by date" sort order.
+
 ---
 *** Broken and circular links are shown with the 'dired-broken-symlink' face.
 
@@ -1072,6 +1086,11 @@ based on the current window size.  In previous versions 
of Emacs, this
 was always done (and that could lead to odd displays when resizing the
 window after starting).  This variable defaults to nil.
 
+** Widget
+
++++
+*** 'widget-choose' now supports menus in extended format.
+
 ** Miscellaneous
 
 ---
@@ -1083,9 +1102,12 @@ keystrokes.
 
 +++
 *** Interactive regular expression search now uses faces for sub-groups.
-E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-1' face
+E.g., 'C-M-s foo-\([0-9]+\)' will now use the 'isearch-group-odd' face
 on the part of the regexp that matches the sub-expression "[0-9]+".
+The even group matches are highlighted with the 'isearch-group-even' face.
 This is controlled by the 'search-highlight-submatches' user option.
+This feature is available only on terminals that have enough colors to
+distinguish between sub-expression highlighting.
 
 ---
 *** New user option 'reveal-auto-hide'.
@@ -1453,6 +1475,13 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el.
 * Lisp Changes in Emacs 28.1
 
 +++
+*** New command 'make-directory-autoloads'.
+This does the same as the old command 'update-directory-autoloads',
+but has different semantics: Instead of passing in the output file via
+the dynamically bound 'generated-autoload-file' variable, the output
+file is now a explicit parameter.
+
++++
 *** New function 'string-search'.
 This function takes two string parameters and returns the position of
 the first instance of the former string in the latter.
diff --git a/etc/compilation.txt b/etc/compilation.txt
index df0b82e..7e40638 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -153,7 +153,7 @@ Failing Scenarios:
 cucumber foo/cucumber.feature:6 # Scenario: assertion false (Test::Unit)
 cucumber foo/cucumber.feature:9 # Scenario: assertion false (RSpec)
 cucumber foo/cucumber.feature:12 # Scenario: backtrace in step definition
-cucumber foo/cucumber.feature:15 # Scenario: deeep backtrace in step definition
+cucumber foo/cucumber.feature:15 # Scenario: deep backtrace in step definition
 
 5 scenarios (4 failed, 1 undefined)
 5 steps (4 failed, 1 undefined)
diff --git a/lib-src/ChangeLog.1 b/lib-src/ChangeLog.1
index 571eee4..16f5142 100644
--- a/lib-src/ChangeLog.1
+++ b/lib-src/ChangeLog.1
@@ -6944,10 +6944,10 @@
        when saving a tag in structtag.  Callers changed.
        (TOKEN): Structure changed.  Now used only in C_entries.
        (TOKEN_SAVED_P, SAVE_TOKEN, RESTORE_TOKEN): Delete.
-       (C_entries): nameb and savenameb deleted.  Use dinamic allocation.
+       (C_entries): nameb and savenameb deleted.  Use dynamic allocation.
        (pfcnt): Delete.  Users updated.
        (getit, Asm_labels, Pascal_functions, L_getit, get_scheme)
-       (TEX_getit, prolog_getit): Use dinamic allocation for storing
+       (TEX_getit, prolog_getit): Use dynamic allocation for storing
        the tag instead of a fixed size buffer.
 
 1995-01-10  Richard Stallman  <rms@mole.gnu.ai.mit.edu>
@@ -7609,7 +7609,7 @@
        (longopts, print_help, main, process_file): Put absolute filenames
        in the tag file if the -A --absolute-pathnames option is used.
        (print_help): Alphabetically order the options.
-       (malloc, realloc, strcpy, strncpy, strcmp): Remove extern declar.
+       (malloc, realloc, strcpy, strncpy, strcmp): Remove extern declare.
 
 1994-02-09  Richard Stallman  (rms@mole.gnu.ai.mit.edu)
 
@@ -8239,7 +8239,7 @@
 1993-03-22  Francesco Potortì  (pot@cnuce.cnr.it)
 
        * etags.c (YACC): Flag added to c_ext.
-       (c_ext): No more a synonim for c_ext&C_PLPL because of YACC.
+       (c_ext): No more a synonym for c_ext&C_PLPL because of YACC.
        (find_entries): Consistently use streq when reasonable.
        (find_entries): A .y file is a yacc file.
        (get_C_stab): c_ext becomes c_ext&C_PLPL.
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 5441222..177ca08 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -12772,7 +12772,7 @@
        (reftex-words-to-typekey-alist, reftex-key-to-index-macro-alist)
        (reftex-query-index-macro-prompt, reftex-query-index-macro-help)
        (reftex-no-follow-message, reftex-no-info-message): Likewise.
-       (reftex-mode): Define systax table for bibtex parsing.
+       (reftex-mode): Define syntax table for bibtex parsing.
        (reftex-syntax-table-for-bib): Syntax table for bibtex parsing.
 
        * textmodes/reftex-cite.el (reftex-format-names): %a as name
@@ -15993,7 +15993,7 @@
 
        * progmodes/cc-vars.el (c-offsets-alist): A more sane default
        for `inexpr-statement'.  This is not compatible, though.
-       I think the benefit of a good default style outweights that in
+       I think the benefit of a good default style outweighs that in
        this case.  Besides, `inexpr-statement' is not very common.
 
 2002-04-22  Martin Stjernholm  <mast@lysator.liu.se>
diff --git a/lisp/ChangeLog.13 b/lisp/ChangeLog.13
index 779a641..1a2863a 100644
--- a/lisp/ChangeLog.13
+++ b/lisp/ChangeLog.13
@@ -4765,7 +4765,7 @@
 2007-12-30  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/dbus.el (dbus-name-owner-changed-handler): Make the function
-       resistent towards wrong parameters.
+       resistant towards wrong parameters.
        (dbus-handle-event): Propagate D-Bus errors only in the debug case.
 
 2007-12-30  Richard Stallman  <rms@gnu.org>
@@ -5001,7 +5001,7 @@
 
        * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization;
        use completion-ignored-extensions to detect files that should be
-       ignorted in VC-Dired listings, heading off lots of expensive calls
+       ignored in VC-Dired listings, heading off lots of expensive calls
        to (vc-state).
 
        * vc.el (vc-dired-hook): Show unregistered file status as "?" in
diff --git a/lisp/ChangeLog.14 b/lisp/ChangeLog.14
index 00b6a6a..e9c8a8f 100644
--- a/lisp/ChangeLog.14
+++ b/lisp/ChangeLog.14
@@ -10889,7 +10889,7 @@
 
        * menu-bar.el (menu-set-font): New function.  Bind "Set Default
        Font" menu item to it.  Apply selected font to all frames, and
-       make it savable.
+       make it saveable.
        (menu-bar-options-save): Save `default' font if changed.
 
 2008-06-10  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -13625,7 +13625,7 @@
        (completion-emacs22-try-completion): Place cursor after the /, as was
        done in Emacs-22's minibuffer-complete-word.
        Fix bug reported by David Hansen <david.hansen@gmx.net>.
-       (completion-emacs22-try-completion): Merge all mergable text rather
+       (completion-emacs22-try-completion): Merge all mergeable text rather
        than just /.
        (completion-pcm--delim-wild-regex): New var.
        (completion-pcm-word-delimiters): New custom.
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index e66766e..3a578da 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -2803,7 +2803,7 @@
 2010-12-29  Karl Fogel  <kfogel@red-bean.com>
 
        * saveplace.el (save-place-alist-to-file): Save list sorted and
-       pretty-printed, so that it is mergable by line-based text merging,
+       pretty-printed, so that it is mergeable by line-based text merging,
        as suggested by Iain Dalton <iain.dalton {_AT_} gmail.com>.
 
 2010-12-28  Ken Manheimer  <ken.manheimer@gmail.com>
@@ -5135,10 +5135,10 @@
 
        * progmodes/verilog-mode.el (verilog-directive-re): Make this variable
        auto-built for efficiency of execution and updating.
-       (verilog-extended-complete-re): Support 'pure' fucntion & task
+       (verilog-extended-complete-re): Support 'pure' function & task
        declarations (these have no bodies).
        (verilog-beg-of-statement): General cleanup to enable support of
-       'pure' fucntion & task declarations (these have no bodies).
+       'pure' function & task declarations (these have no bodies).
        These efforts together fix Verilog bug210 from veripool; which was also
        noticed by Steve Pearlmutter.
        (verilog-directive-re, verilog-directive-begin, verilog-indent-re)
@@ -10689,7 +10689,7 @@
 2010-05-13  Agustín Martín  <agustin.martin@hispalinux.es>
 
        * textmodes/ispell.el (ispell-init-process): Do not kill ispell
-       process everytime when spellchecking from the minibuffer (bug#6143).
+       process every time when spellchecking from the minibuffer (bug#6143).
 
 2010-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 
@@ -12100,7 +12100,7 @@
 2010-03-31  Juri Linkov  <juri@jurta.org>
 
        * image.el (image-animated-p): Use `image-metadata' instead of
-       `image-extension-data'.  Get GIF extenstion data from metadata
+       `image-extension-data'.  Get GIF extension data from metadata
        property `extension-data'.
 
 2010-03-31  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -14907,7 +14907,7 @@
        Use complete-with-action rather than pascal-completion-response and
        let it apply the predicate as well.
        (pascal-goto-defun): Change buffer before calling pascal-comp-defun
-       when neded.
+       when needed.
 
 2009-12-02  Kenichi Handa  <handa@m17n.org>
 
@@ -18684,7 +18684,7 @@
 2009-09-24  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
 
        * whitespace.el: Does not highlight trailing spaces While point is
-       at end of line.  Does not highligt spaces at beginning of buffer
+       at end of line.  Does not highlight spaces at beginning of buffer
        while point is at beginning of buffer.  Does not highlight spaces
        at end of buffer while point is at end of buffer.  (Bug#4177)
        New version 12.0.
diff --git a/lisp/ChangeLog.16 b/lisp/ChangeLog.16
index b4da88e..6c09379 100644
--- a/lisp/ChangeLog.16
+++ b/lisp/ChangeLog.16
@@ -3018,7 +3018,7 @@
 
        * progmodes/sql.el: Use cl-lib and lexical-binding; various cleanup.
        (sql-signum): Remove.  Use `cl-signum' instead.
-       (sql-read-passwd): Remove; use read-passwd instread.
+       (sql-read-passwd): Remove; use read-passwd instead.
        (sql-get-login-ext): Use read-string.
        (sql-get-login): Use dolist and pcase.
        (sql--completion-table): Rename from sql-try-completion.
@@ -7833,7 +7833,7 @@
        the form for POSITION argument.
 
        * term/x-win.el (x-menu-bar-open):
-       Use the value returend from (posn-at-point) as position
+       Use the value returned from (posn-at-point) as position
        passed to `popup-menu'.
 
 2012-08-09  Jay Belanger  <jay.p.belanger@gmail.com>
@@ -11992,11 +11992,11 @@
        * progmodes/verilog-mode.el (verilog-pretty-expr): Don't line up
        assignment with tests in ifs and for loops.
        (verilog-extended-complete-re, verilog-complete-reg): Change so
-       that DPI inport functions don't look like function declarations.
+       that DPI import functions don't look like function declarations.
        (verilog-pretty-expr): Don't line up assignment
        operations to the test and increment in if and for loops
        (verilog-extended-complete-re, verilog-complete-reg): Change so
-       that DPI inport functions don't look like function declarations.
+       that DPI import functions don't look like function declarations.
 
 2012-05-03  Kenichi Handa  <handa@m17n.org>
 
@@ -15918,7 +15918,7 @@
        Rework verilog-pretty-expr to handle new assignment operators in system
        verilog, such as += *= and the like.
        (verilog-assignment-operator-re): Regular expression to find the
-       assigment operator in a verilog assignment.
+       assignment operator in a verilog assignment.
        (verilog-assignment-operation-re): Regular expression to find an
        assignment statement for pretty-expr.
        (verilog-in-attribute-p): Query returns true if point is in an
@@ -20442,7 +20442,7 @@
 2011-07-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * net/network-stream.el (open-network-stream): Use the
-       :end-of-capability command thoughout.
+       :end-of-capability command throughout.
 
 2011-07-03  Wolfgang Jenkner  <wjenkner@inode.at>  (tiny change)
 
@@ -21496,7 +21496,7 @@
        * net/network-stream.el (open-network-stream): Add the keyword
        :always-query-capabilities for the case where you want to force a
        `plain' network connection, but the protocol still requires the
-       capabilitiy command (i.e., SMTP and EHLO).
+       capability command (i.e., SMTP and EHLO).
 
        * subr.el (process-live-p): Rename from `process-alive-p' for
        consistency with other `-live-p' functions.
@@ -24707,7 +24707,7 @@
        * abbrev.el (abbrev-edit-save-to-file, abbrev-edit-save-buffer):
        New commands.
        (edit-abbrevs-map): Bind them here.
-       (write-abbrev-file): New optinal arg VERBOSE.  (Bug#5937)
+       (write-abbrev-file): New optional arg VERBOSE.  (Bug#5937)
 
 2011-03-29  Ken Manheimer  <ken.manheimer@gmail.com>
 
diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17
index a1a6363..1869f4e 100644
--- a/lisp/ChangeLog.17
+++ b/lisp/ChangeLog.17
@@ -8465,7 +8465,7 @@
 2014-07-28  Glenn Morris  <rgm@gnu.org>
 
        * files.el (toggle-read-only): Re-add basic doc-string.
-       * vc/vc-hooks.el (vc-toggle-read-only): Tweak obsolescence mesage.
+       * vc/vc-hooks.el (vc-toggle-read-only): Tweak obsolescence message.
 
        * progmodes/prolog.el (prolog-mode-keybindings-edit):
        Replace missing `switch-to-prolog' with `run-prolog'.
@@ -14399,7 +14399,7 @@
 
 2014-01-05  Martin Rudalics  <rudalics@gmx.at>
 
-       * window.el (balance-windows): Add mising t to fix Bug#16351.
+       * window.el (balance-windows): Add missing t to fix Bug#16351.
 
 2014-01-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
@@ -15098,7 +15098,7 @@
 2013-12-18  Juri Linkov  <juri@jurta.org>
 
        * help-mode.el (help-mode-map): Bind "l" to help-go-back,
-       and "r" to help-go-forward for compatibity with Info.  (Bug#16178)
+       and "r" to help-go-forward for compatibility with Info.  (Bug#16178)
 
 2013-12-18  Leo Liu  <sdl.web@gmail.com>
 
@@ -15729,7 +15729,7 @@
        (flymake-get-temp-dir): Remove.
        (flymake-popup-menu, flymake-nop, flymake-make-xemacs-menu)
        (flymake-current-row, flymake-selected-frame)
-       (flymake-get-point-pixel-pos): Remove xemacs compatibity and
+       (flymake-get-point-pixel-pos): Remove xemacs compatibility and
        related functions.  (Bug#16077)
 
 2013-12-07  Bozhidar Batsov  <bozhidar@batsov.com>
@@ -16822,7 +16822,7 @@
        * emacs-lisp/byte-run.el (defmacro, defun): Set their `indent' property.
 
        * electric.el (electric-indent-post-self-insert-function):
-       Only delete trailing whitepsace if it is indeed trailing (bug#15767).
+       Only delete trailing whitespace if it is indeed trailing (bug#15767).
 
 2013-11-04  Helmut Eller  <eller.helmut@gmail.com>
 
@@ -17770,7 +17770,7 @@
 2013-10-13  Kenichi Handa  <handa@gnu.org>
 
        * international/mule-cmds.el (select-safe-coding-system): Remove a
-       superfluous condition in chekcing whether a coding system is safe
+       superfluous condition in checking whether a coding system is safe
        or not.
 
 2013-10-13  Oleh Krehel  <ohwoeowho@gmail.com>
@@ -23495,7 +23495,7 @@
        * progmodes/cc-defs.el (c-set-region-active, c-beginning-of-defun-1)
        * progmodes/cc-mode.el (c-make-inherited-keymap): Use plain fboundp.
        * progmodes/cc-defs.el (zmacs-region-stays, zmacs-regions)
-       (lookup-syntax-properties): Remove unecessary cc-bytecomp-defvar.
+       (lookup-syntax-properties): Remove unnecessary cc-bytecomp-defvar.
 
        * progmodes/cc-vars.el (other): Emacs has this widget since
        at least 21.1, so don't (re)define it.
diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3
index 79bdbfd..ef0e423 100644
--- a/lisp/ChangeLog.3
+++ b/lisp/ChangeLog.3
@@ -6958,7 +6958,7 @@
 1991-10-04  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
 
        * rmail.el: Changed two regexps not to look specifically for 19yy
-       for years; look for yyyy instead.  Planning for the millenium.
+       for years; look for yyyy instead.  Planning for the millennium.
 
 1991-10-03  Roland McGrath  (roland@albert.gnu.ai.mit.edu)
 
diff --git a/lisp/ChangeLog.6 b/lisp/ChangeLog.6
index 3fe6aea..87ae38b 100644
--- a/lisp/ChangeLog.6
+++ b/lisp/ChangeLog.6
@@ -6742,7 +6742,7 @@
        quoted tab into a space.
        (sh-mode): Use new `skeleton-newline-indent-rigidly'.
        (sh-set-shell): Make maximum font-locking also highlight keywords
-       after ``' and `!'.  (The latter is for ksh '93 but should't hurt other
+       after ``' and `!'.  (The latter is for ksh '93 but shouldn't hurt other
        shells.)
 
 1995-08-18  Andre Spiegel  <spiegel@berlin.informatik.uni-stuttgart.de>
diff --git a/lisp/ChangeLog.7 b/lisp/ChangeLog.7
index a0d4250..58a7fa4 100644
--- a/lisp/ChangeLog.7
+++ b/lisp/ChangeLog.7
@@ -5774,7 +5774,7 @@
 
 1998-03-06  Dave Love  <d.love@dl.ac.uk>
 
-       * browse-url.el: Various doc fixes, mainly to remove innappropriate
+       * browse-url.el: Various doc fixes, mainly to remove inappropriate
        leading "*"s.
        (browse-url-new-window-p, browse-url-netscape-display)
        (browse-url-save-file, browse-url-generic-program):
@@ -10843,7 +10843,7 @@
 1997-09-06  Michael Kifer  <kifer@cs.sunysb.edu>
 
        * ediff-ptch.el (ediff-patch-buffer-internal):
-       now behaves uniformely, whether the buffer
+       now behaves uniformly, whether the buffer
        visits a file or not.
        * ediff-util.el (ediff-other-buffer): Smarter selection of
        suitable other buffer.
@@ -11291,7 +11291,7 @@
        the various new variables mentioned above.  Accept the `a' key to
        use all selected citations.
        (reftex-insert-bib-matches): New function.
-       (reftex-format-citation): Now interpretes % escapes.
+       (reftex-format-citation): Now interprets % escapes.
        (reftex-select-item): Emulate a search in the menu buffer.
        Interpret the 'cnt text property.
        (reftex-view-crossref): Allow more general label, cite and ref macros.
diff --git a/lisp/ChangeLog.8 b/lisp/ChangeLog.8
index 5c55597..e9b2138 100644
--- a/lisp/ChangeLog.8
+++ b/lisp/ChangeLog.8
@@ -7002,7 +7002,7 @@
 1999-01-13  Eli Zaretskii  <eliz@gnu.org>
 
        * international/codepage.el (cp850-decode-table): Replace nil
-       entries with codes of similary looking glyphs.  (
+       entries with codes of similarly looking glyphs.  (
        Suggested by Jason Rumney <jasonr@altavista.net>.)
 
 1999-01-13  Dave Love  <fx@gnu.org>
@@ -7469,7 +7469,7 @@
        (cperl-forward-re): Highlight the trailing / in s/foo// as string.
        Highlight the starting // in s//foo/ as function-name.
        Emit a meaningful error instead of a cryptic one for an
-       uncomplete REx near end-of-buffer.
+       incomplete REx near end-of-buffer.
 
        (cperl-electric-keyword): `qr' recognized.
        (cperl-electric-else): Likewise.
diff --git a/lisp/ChangeLog.9 b/lisp/ChangeLog.9
index c6bfb1b..5372b24 100644
--- a/lisp/ChangeLog.9
+++ b/lisp/ChangeLog.9
@@ -237,8 +237,8 @@
         After 4.28:
        (cperl-forward-re): Throw an error at proper moment REx unfinished.
         After 4.29:
-       (x-color-defined-p): Make an extra case to peacify the warning.
-       Toplevel: `defvar' to peacify the warnings.
+       (x-color-defined-p): Make an extra case to pacify the warning.
+       Toplevel: `defvar' to pacify the warnings.
        (cperl-find-pods-heres): Could access `font-lock-comment-face' in -nw.
        No -nw-compile time warnings now.
        (cperl-find-tags): TAGS file had too short substring-to-search.
@@ -1183,7 +1183,7 @@
 2001-09-07  Gerd Moellmann  <gerd@gnu.org>
 
        * isearch.el (isearch-intersects-p): New function.
-       (isearch-close-unnecessary-overlays): Rename from *unecessary*,
+       (isearch-close-unnecessary-overlays): Rename from *unnecessary*,
        use isearch-intersects-p, and clean up.
 
 2001-09-07  Eli Zaretskii  <eliz@is.elta.co.il>
@@ -12432,7 +12432,7 @@
        is not reached.  It is.
        (vc-cvs-merge): Set state to 'edited after merge.
        (vc-cvs-merge-news): Set workfile version to nil if not known.
-       (vc-cvs-latest-on-branch-p): Recommented.  Candidate for removal.
+       (vc-cvs-latest-on-branch-p): Recommended.  Candidate for removal.
 
        * vc-cvs.el, vc-rcs.el, vc-sccs.el (vc-*-checkout): Switch off
        coding systems for checkout via stdout. (Merge from main line.)
@@ -13371,7 +13371,7 @@
        if defined.  (Merged from main line, slightly adapted.)
 
        * vc-cvs.el (vc-cvs-annotate-difference): Handle possible
-       millenium problem (merged from mainline).
+       millennium problem (merged from mainline).
 
 2000-09-04  Martin Lorentzson  <martinl@gnu.org>
 
diff --git a/lisp/align.el b/lisp/align.el
index 61387b2..e3bdf77 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -389,7 +389,7 @@ The possible settings for `align-region-separate' are:
      (regexp   . "\\(^\\s-+[^( \t\n]\\|(\\(\\S-+\\)\\s-+\\)\\S-+\\(\\s-+\\)")
      (group    . 3)
      (modes    . align-lisp-modes)
-     (run-if   . ,(function (lambda () current-prefix-arg))))
+     (run-if   . ,(lambda () current-prefix-arg)))
 
     (lisp-alist-dot
      (regexp   . "\\(\\s-*\\)\\.\\(\\s-*\\)")
@@ -463,7 +463,7 @@ The possible settings for `align-region-separate' are:
      (regexp   . ",\\(\\s-*\\)[^/ \t\n]")
      (repeat   . t)
      (modes    . align-c++-modes)
-     (run-if   . ,(function (lambda () current-prefix-arg))))
+     (run-if   . ,(lambda () current-prefix-arg)))
                                        ;      (valid
                                        ;       . ,(function
                                        ;         (lambda ()
@@ -480,7 +480,7 @@ The possible settings for `align-region-separate' are:
      (regexp   . ",\\(\\s-*\\)[^# \t\n]")
      (repeat   . t)
      (modes    . (append align-perl-modes '(python-mode)))
-     (run-if   . ,(function (lambda () current-prefix-arg))))
+     (run-if   . ,(lambda () current-prefix-arg)))
 
     (c++-comment
      (regexp   . "\\(\\s-*\\)\\(//.*\\|/\\*.*\\*/\\s-*\\)$")
diff --git a/lisp/allout.el b/lisp/allout.el
index 044c82a..b56071d 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -245,7 +245,7 @@ prevails."
   "Allout-mode functions bound to keys without any added prefix.
 
 This is in contrast to the majority of allout-mode bindings on
-`allout-prefixed-bindings', whose bindings are created with a
+`allout-prefixed-keybindings', whose bindings are created with a
 preceding command key.
 
 Use vector format for the keys:
@@ -1510,7 +1510,7 @@ topic prefix.
 Entries must be symbols that are bound to the desired regexp values.
 
 Encryptions that result in matches will be retried, up to
-`allout-encryption-ciphertext-rejection-limit' times, after which
+`allout-encryption-ciphertext-rejection-ceiling' times, after which
 an error is raised.")
 
 (make-variable-buffer-local 'allout-encryption-ciphertext-rejection-regexps)
@@ -4721,7 +4721,7 @@ this function."
 
 This is a way to give restricted peek at a concealed locality without the
 expense of exposing its context, but can leave the outline with aberrant
-exposure.  `allout-show-offshoot' should be used after the peek to rectify
+exposure.  `allout-show-to-offshoot' should be used after the peek to rectify
 the exposure."
 
   (interactive)
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el
index 4130f5a..141ad23 100644
--- a/lisp/ansi-color.el
+++ b/lisp/ansi-color.el
@@ -536,7 +536,7 @@ codes.      Finally, the so changed list of codes is 
returned."
                     (cons new (remq new codes))))
                (2 (unless (memq new '(20 26 28 29))
                     ;; The standard says `21 doubly underlined' while
-                    ;; http://en.wikipedia.org/wiki/ANSI_escape_code claims
+                     ;; https://en.wikipedia.org/wiki/ANSI_escape_code claims
                     ;; `21 Bright/Bold: off or Underline: Double'.
                     (remq (- new 20) (pcase new
                                        (22 (remq 1 codes))
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 6e08176..046ea2b 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -871,6 +871,62 @@ This is an internal function used by Auto-Revert Mode."
       (restore-buffer-modified-p modified)))
   (set-visited-file-modtime))
 
+(defun auto-revert--buffer-candidates ()
+  "Return a prioritized list of buffers to maybe auto-revert.
+The differences between this return value and the reference
+variable `auto-revert-buffer-list' include: 1) this has more
+entries when in global-auto-revert-mode; 2) this prioritizes
+buffers not reverted last time due to user interruption. "
+  (let ((bufs (delq nil
+                    ;; Buffers with remote contents shall be reverted only
+                    ;; if the connection is established already.
+                    (mapcar
+                     (lambda (buf)
+                       (and (buffer-live-p buf)
+                            (with-current-buffer buf
+                              (and
+                               (or (not (file-remote-p default-directory))
+                                   (file-remote-p default-directory nil t))
+                               buf))))
+                     (auto-revert--polled-buffers))))
+        remaining new)
+    ;; Partition `bufs' into two halves depending on whether or not
+    ;; the buffers are in `auto-revert-remaining-buffers'.  The two
+    ;; halves are then re-joined with the "remaining" buffers at the
+    ;; head of the list.
+    (dolist (buf auto-revert-remaining-buffers)
+      (when (memq buf bufs)
+        (push buf remaining)))
+    (dolist (buf bufs)
+      (unless (memq buf remaining)
+        (push buf new)))
+    (nreverse (nconc new remaining))))
+
+(defun auto-revert-buffer (buf)
+  "Revert a single buffer.
+
+This is performed as specified by Auto-Revert and Global
+Auto-Revert Modes."
+  (if (not (buffer-live-p buf))
+      (auto-revert-remove-current-buffer buf)
+    (with-current-buffer buf
+      ;; Test if someone has turned off Auto-Revert Mode
+      ;; in a non-standard way, for example by changing
+      ;; major mode.
+      (when (and (not auto-revert-mode)
+                 (not auto-revert-tail-mode))
+        (auto-revert-remove-current-buffer))
+      (when (auto-revert-active-p)
+        ;; Enable file notification.
+        ;; Don't bother creating a notifier for non-file buffers
+        ;; unless it explicitly indicates that this works.
+        (when (and auto-revert-use-notify
+                   (not auto-revert-notify-watch-descriptor)
+                   (or buffer-file-name
+                       buffer-auto-revert-by-notification))
+          (auto-revert-notify-add-watch))
+        (auto-revert-handler)))))
+
 (defun auto-revert-buffers ()
   "Revert buffers as specified by Auto-Revert and Global Auto-Revert Mode.
 
@@ -894,67 +950,19 @@ are checked first the next time this function is called.
 This function is also responsible for removing buffers no longer in
 Auto-Revert Mode from `auto-revert-buffer-list', and for canceling
 the timer when no buffers need to be checked."
-
   (save-match-data
-    (let ((bufs (auto-revert--polled-buffers))
-         remaining new)
-      ;; Buffers with remote contents shall be reverted only if the
-      ;; connection is established already.
-      (setq bufs (delq nil
-                       (mapcar
-                        (lambda (buf)
-                          (and (buffer-live-p buf)
-                               (with-current-buffer buf
-                                 (and
-                                  (or (not (file-remote-p default-directory))
-                                      (file-remote-p default-directory nil t))
-                                      buf))))
-                        bufs)))
-      ;; Partition `bufs' into two halves depending on whether or not
-      ;; the buffers are in `auto-revert-remaining-buffers'.  The two
-      ;; halves are then re-joined with the "remaining" buffers at the
-      ;; head of the list.
-      (dolist (buf auto-revert-remaining-buffers)
-       (if (memq buf bufs)
-           (push buf remaining)))
-      (dolist (buf bufs)
-       (if (not (memq buf remaining))
-           (push buf new)))
-      (setq bufs (nreverse (nconc new remaining)))
+    (let ((bufs (auto-revert--buffer-candidates)))
       (while (and bufs
                  (not (and auto-revert-stop-on-user-input
                            (input-pending-p))))
-       (let ((buf (car bufs)))
-          (if (not (buffer-live-p buf))
-              ;; Remove dead buffer from `auto-revert-buffer-list'.
-              (auto-revert-remove-current-buffer buf)
-            (with-current-buffer buf
-              ;; Test if someone has turned off Auto-Revert Mode
-              ;; in a non-standard way, for example by changing
-              ;; major mode.
-              (if (and (not auto-revert-mode)
-                       (not auto-revert-tail-mode)
-                       (memq buf auto-revert-buffer-list))
-                  (auto-revert-remove-current-buffer))
-              (when (auto-revert-active-p)
-                ;; Enable file notification.
-                ;; Don't bother creating a notifier for non-file buffers
-                ;; unless it explicitly indicates that this works.
-                (when (and auto-revert-use-notify
-                           (not auto-revert-notify-watch-descriptor)
-                           (or buffer-file-name
-                               buffer-auto-revert-by-notification))
-                  (auto-revert-notify-add-watch))
-                (auto-revert-handler)))))
-       (setq bufs (cdr bufs)))
+        (auto-revert-buffer (pop bufs)))
       (setq auto-revert-remaining-buffers bufs)
       ;; Check if we should cancel the timer.
       (unless (auto-revert--need-polling-p)
-        (if (timerp auto-revert-timer)
-            (cancel-timer auto-revert-timer))
+        (when (timerp auto-revert-timer)
+          (cancel-timer auto-revert-timer))
        (setq auto-revert-timer nil)))))
 
-
 ;; The end:
 (provide 'autorevert)
 
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index 5a8f0a3..a2f6696 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -709,6 +709,10 @@ as measured in the number of days before December 31, 1 BC 
(Gregorian).")
   "The beginning of the Julian date calendar,
 as measured in the integer number of days before December 31, 1 BC 
(Gregorian).")
 
+(defconst math-unix-epoch 719163
+  "The beginning of Unix time: days from December 31, 1 BC (Gregorian)
+to Jan 1, 1970 AD.")
+
 (defun math-format-date-part (x)
   (cond ((stringp x)
         x)
@@ -730,7 +734,8 @@ as measured in the integer number of days before December 
31, 1 BC (Gregorian)."
                               (math-floor math-fd-date)
                               math-julian-date-beginning-int)))
        ((eq x 'U)
-        (math-format-number (nth 1 (math-date-parts math-fd-date 719164))))
+        (math-format-number (nth 1 (math-date-parts math-fd-date
+                                                     math-unix-epoch))))
         ((memq x '(IYYY Iww w))
          (progn
            (or math-fd-iso-dt
@@ -1173,7 +1178,7 @@ as measured in the integer number of days before December 
31, 1 BC (Gregorian)."
                      (setq num (math-match-substring math-pd-str 0)
                            math-pd-str (substring math-pd-str (match-end 0))
                            num (math-date-to-dt
-                                (math-add 719164
+                                (math-add math-unix-epoch
                                           (math-div (math-read-number num)
                                                     '(float 864 2))))
                            hour (nth 3 num)
@@ -1434,11 +1439,11 @@ as measured in the integer number of days before 
December 31, 1 BC (Gregorian)."
 (defun calcFunc-unixtime (date &optional zone)
   (if (math-realp date)
       (progn
-       (setq date (math-add 719163 (math-div date '(float 864 2))))
+       (setq date (math-add math-unix-epoch (math-div date '(float 864 2))))
        (list 'date (math-sub date (math-div (calcFunc-tzone zone date)
                                             '(float 864 2)))))
     (if (eq (car date) 'date)
-       (math-add (nth 1 (math-date-parts (nth 1 date) 719163))
+       (math-add (nth 1 (math-date-parts (nth 1 date) math-unix-epoch))
                  (calcFunc-tzone zone date))
       (math-reject-arg date 'datep))))
 
@@ -1870,8 +1875,8 @@ and ends on the last Sunday of October at 2 a.m."
       (and days (= day (car days))
           (setq holiday t)))
     (let* ((weekdays (nth 3 math-holidays-cache))
-          (weeks (1- (/ (+ day 6) 7)))
-          (wkday (- day 1 (* weeks 7))))
+           (weeks (/ day 7))
+           (wkday (mod day 7)))         ; Day of week: 0=Sunday, 6=Saturday
       (setq delta (+ delta (* weeks (length weekdays))))
       (while (and weekdays (< (car weekdays) wkday))
        (setq weekdays (cdr weekdays)
@@ -1905,14 +1910,15 @@ and ends on the last Sunday of October at 2 a.m."
        (setq delta (1+ delta)))
       (setq day (+ day delta)))
     (let* ((weekdays (nth 3 math-holidays-cache))
-          (bweek (- 7 (length weekdays)))
-          (weeks (1- (/ (+ day (1- bweek)) bweek)))
-          (wkday (- day 1 (* weeks bweek)))
+           (bweek (- 7 (length weekdays)))  ; Business days in a week, 1..7.
+           (weeks (/ day bweek))            ; Whole weeks.
+           (wkday (mod day bweek))      ; Business day in last week, 0..bweek-1
           (w 0))
       (setq day (+ day (* weeks (length weekdays))))
+      ;; Add business days in the last week; `w' is weekday, 0..6.
       (while (if (memq w weekdays)
                 (setq day (1+ day))
-              (> (setq wkday (1- wkday)) 0))
+               (>= (setq wkday (1- wkday)) 0))
        (setq w (1+ w)))
       (let ((hours (nth 7 math-holidays-cache)))
        (if hours
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 7b86eb0..709c09e 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -37,14 +37,14 @@
 ;;; Updated April 2002 by Jochen Küpper
 
 ;;; Updated August 2007, using
-;;;     CODATA (http://physics.nist.gov/cuu/Constants/index.html)
-;;;     NIST   (http://physics.nist.gov/Pubs/SP811/appenB9.html)
+;;;     CODATA (https://physics.nist.gov/cuu/Constants/index.html)
+;;;     NIST   (https://physics.nist.gov/Pubs/SP811/appenB9.html)
 ;;;     ESUWM  (Encyclopaedia of Scientific Units, Weights and
 ;;;             Measures, by François Cardarelli)
 ;;; All conversions are exact unless otherwise noted.
 
 ;; CODATA values updated February 2016, using 2014 adjustment
-;; http://arxiv.org/pdf/1507.07956.pdf
+;; https://arxiv.org/pdf/1507.07956.pdf
 
 ;; Updated November 2018 for the redefinition of the SI
 ;; https://www.bipm.org/utils/en/pdf/CGPM/Draft-Resolution-A-EN.pdf
@@ -59,7 +59,7 @@
     ( mi      "5280 ft"              "Mile" )
     ( au      "149597870691. m"      "Astronomical Unit" nil
               "149597870691 m (*)")
-              ;; (approx) NASA JPL (http://neo.jpl.nasa.gov/glossary/au.html)
+              ;; (approx) NASA JPL (https://neo.jpl.nasa.gov/glossary/au.html)
     ( lyr     "c yr"                 "Light Year" )
     ( pc      "3.0856775854*10^16 m" "Parsec  (**)" nil
               "3.0856775854 10^16 m (*)") ;; (approx) ESUWM
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 20887af..de9b1f3 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1096,7 +1096,7 @@ Otherwise, use symbolic time zones like \"CET\"."
   "Name of buffer used for sunrise/sunset times.")
 
 (defconst calendar-hebrew-yahrzeit-buffer "*Yahrzeits*"
-  "Name of the buffer used by `list-yahrzeit-dates'.")
+  "Name of the buffer used by `calendar-hebrew-list-yahrzeits'.")
 
 (defmacro calendar-increment-month (mon yr n &optional nmonths)
   "Increment the variables MON and YR by N months.
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el
index 2ee1d34..18ca05a 100644
--- a/lisp/calendar/timeclock.el
+++ b/lisp/calendar/timeclock.el
@@ -555,7 +555,7 @@ relative only to the time worked today, and not to past 
time."
 OLD-DEFAULT hours are set for every day that has no number indicated."
   (interactive "P")
   (if old-default (setq old-default (prefix-numeric-value old-default))
-    (error "`timelog-make-hours-explicit' requires an explicit argument"))
+    (error "`timeclock-make-hours-explicit' requires an explicit argument"))
   (let ((extant-timelog (find-buffer-visiting timeclock-file))
        current-date)
     (with-current-buffer (find-file-noselect timeclock-file t)
diff --git a/lisp/cedet/ChangeLog.1 b/lisp/cedet/ChangeLog.1
index 93bd587..a1c0e41 100644
--- a/lisp/cedet/ChangeLog.1
+++ b/lisp/cedet/ChangeLog.1
@@ -301,7 +301,7 @@
        manipulation of `ede-projects' with equivalent and better
        functions.
        (ede-proj-load): Replace call to test if dir has project to
-       explicity ask filesystem if Project.ede is there.
+       explicitly ask filesystem if Project.ede is there.
 
        * ede/config.el:
        * ede/detect.el: New files.
@@ -2101,7 +2101,7 @@
        by calling `srecode-cpp-apply-templates'.
 
        * srecode/compile.el (srecode-compile-templates): Fix directory
-       compare of built-in templates.  Give built-ins lower piority.
+       compare of built-in templates.  Give built-ins lower priority.
        Support special variable "project".
        (srecode-compile-template-table): Set :project slot of new tables.
        (srecode-compile-one-template-tag):
diff --git a/lisp/cedet/ede/autoconf-edit.el b/lisp/cedet/ede/autoconf-edit.el
index e9dd48c..409e35e 100644
--- a/lisp/cedet/ede/autoconf-edit.el
+++ b/lisp/cedet/ede/autoconf-edit.el
@@ -215,7 +215,7 @@ the ordering list `autoconf-preferred-macro-order'."
 (defun autoconf-insert-new-macro (macro &optional param)
   "Add a call to MACRO in the current autoconf file.
 Deals with macro order.  See `autoconf-preferred-macro-order' and
-`autoconf-multi-macros'.
+`autoconf-multiple-macros'.
 Optional argument PARAM is the parameter to pass to the macro as one string."
   (cond ((member macro autoconf-multiple-macros)
         ;; This occurs multiple times
diff --git a/lisp/cedet/ede/detect.el b/lisp/cedet/ede/detect.el
index f1152fd..fe23501 100644
--- a/lisp/cedet/ede/detect.el
+++ b/lisp/cedet/ede/detect.el
@@ -25,7 +25,7 @@
 ;;
 ;; Detection comes in multiple forms:
 ;;
-;; `ede-detect-scan-directory-for-project' -
+;; `ede--detect-scan-directory-for-project' -
 ;;        Scan for a project via the file system.
 ;; `ede-detect-directory-for-project' -
 ;;        Check our file cache for a project.  If that fails, use
diff --git a/lisp/cedet/semantic/bovine/scm.el 
b/lisp/cedet/semantic/bovine/scm.el
index 93ad275..b2a25bf 100644
--- a/lisp/cedet/semantic/bovine/scm.el
+++ b/lisp/cedet/semantic/bovine/scm.el
@@ -69,7 +69,7 @@ Attempts a simple prototype for calling or using TAG."
 ;; Note: Analyzer from Henry S. Thompson
 (define-lex-regex-analyzer semantic-lex-scheme-symbol
   "Detect and create symbol and keyword tokens."
-  "\\(\\sw\\([:]\\|\\sw\\|\\s_\\)*\\)"
+  "\\(\\sw\\|\\s_\\)+"
   ;; (message "symbol: %s" (match-string 0))
   (semantic-lex-push-token
    (semantic-lex-token
diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el
index 2aa0ab0..cc53f69 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -321,7 +321,7 @@ If NOSNARF is `lex', then return the semantic lex token."
 (defvar semantic-java-doc-line-tags nil
   "Valid javadoc line tags.
 Ordered following Sun's Tag Convention at
-<http://java.sun.com/products/jdk/javadoc/writingdoccomments/index.html>")
+<https://java.sun.com/products/jdk/javadoc/writingdoccomments/index.html>")
 
 (defvar semantic-java-doc-with-name-tags nil
   "Javadoc tags which have a name.")
diff --git a/lisp/cedet/srecode/fields.el b/lisp/cedet/srecode/fields.el
index e46c582..87c7c68 100644
--- a/lisp/cedet/srecode/fields.el
+++ b/lisp/cedet/srecode/fields.el
@@ -164,7 +164,7 @@ Has virtual :start and :end initializers.")
 
 (cl-defmethod srecode-overlaid-text ((olaid srecode-overlaid) &optional set-to)
   "Return the text under OLAID.
-If SET-TO is a string, then replace the text of OLAID wit SET-TO."
+If SET-TO is a string, then replace the text of OLAID with SET-TO."
   (let* ((ol (oref olaid overlay))
         (start (overlay-start ol)))
     (if (not (stringp set-to))
diff --git a/lisp/color.el b/lisp/color.el
index 560631a..48f150d 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -50,7 +50,7 @@ numbers, (RED GREEN BLUE), each between 0.0 and 1.0 inclusive.
 Optional argument FRAME specifies the frame where the color is to be
 displayed.  If FRAME is omitted or nil, use the selected frame.
 If FRAME cannot display COLOR, return nil."
-  ;; `colors-values' maximum value is either 65535 or 65280 depending on the
+  ;; `color-values' maximum value is either 65535 or 65280 depending on the
   ;; display system.  So we use a white conversion to get the max value.
   (let ((valmax (float (car (color-values "#ffffffffffff")))))
     (mapcar (lambda (x) (/ x valmax)) (color-values color frame))))
diff --git a/lisp/comint.el b/lisp/comint.el
index b966fae..6119476 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -1773,7 +1773,7 @@ Argument 0 is the command name."
               ((>= mth 0) (1- (- count mth)))
               (t          (1- (- mth))))))
       (mapconcat
-       (function (lambda (a) a)) (nthcdr n (nreverse (nthcdr m args))) " "))))
+       (lambda (a) a) (nthcdr n (nreverse (nthcdr m args))) " "))))
 
 ;;
 ;; Input processing stuff
diff --git a/lisp/completion.el b/lisp/completion.el
index e4a004f..8a4c167 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -2041,7 +2041,7 @@ Patched to remove the most recent completion."
 
 ;; All common separators (eg. space "(" ")" """) characters go through a
 ;; function to add new words to the list of words to complete from.
-;; If the character before this was an alpha-numeric then this adds the
+;; If the character before this was an alphanumeric then this adds the
 ;; symbol before point to the completion list (using ADD-COMPLETION).
 
 (defvar completion-separator-chars
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 9305664..ec9a968 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -210,7 +210,7 @@ multilingual development.
 
 This is a fairly large file, not typically present on GNU systems.
 At the time of writing it is at the URL
-`http://www.unicode.org/Public/UNIDATA/UnicodeData.txt'."
+`https://www.unicode.org/Public/UNIDATA/UnicodeData.txt'."
   :group 'mule
   :version "22.1"
   :type '(choice (const :tag "None" nil)
diff --git a/lisp/dired.el b/lisp/dired.el
index b4b3368..08b19a0 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -4227,22 +4227,50 @@ format, use `\\[universal-argument] \\[dired]'.")
   "Non-nil means the Dired sort command is disabled.
 The idea is to set this buffer-locally in special Dired buffers.")
 
+(defcustom dired-switches-in-mode-line nil
+  "How to indicate `dired-actual-switches' in mode-line.
+Possible values:
+ * `nil':    Indicate name-or-date sort order, if possible.
+             Else show full switches.
+ * `as-is':  Show full switches.
+ * Integer:  Show only the first N chars of full switches.
+ * Function: Pass `dired-actual-switches' as arg and show result."
+  :group 'Dired-Plus
+  :type '(choice
+          (const    :tag "Indicate by name or date, else full"   nil)
+          (const    :tag "Show full switches"                    as-is)
+          (integer  :tag "Show first N chars of switches" :value 10)
+          (function :tag "Format with function"           :value identity)))
+
 (defun dired-sort-set-mode-line ()
-  ;; Set mode line display according to dired-actual-switches.
-  ;; Mode line display of "by name" or "by date" guarantees the user a
-  ;; match with the corresponding regexps.  Non-matching switches are
-  ;; shown literally.
+  "Set mode-line according to option `dired-switches-in-mode-line'."
   (when (eq major-mode 'dired-mode)
     (setq mode-name
-         (let (case-fold-search)
-           (cond ((string-match-p
-                   dired-sort-by-name-regexp dired-actual-switches)
-                  "Dired by name")
-                 ((string-match-p
-                   dired-sort-by-date-regexp dired-actual-switches)
-                  "Dired by date")
-                 (t
-                  (concat "Dired " dired-actual-switches)))))
+         (let ((case-fold-search  nil))
+            (if dired-switches-in-mode-line
+                (concat
+                 "Dired"
+                 (cond ((integerp dired-switches-in-mode-line)
+                        (let* ((l1 (length dired-actual-switches))
+                               (xs (substring
+                                    dired-actual-switches
+                                    0 (min l1 dired-switches-in-mode-line)))
+                               (l2 (length xs)))
+                          (if (zerop l2)
+                              xs
+                            (concat " " xs (and (< l2  l1) "…")))))
+                       ((functionp dired-switches-in-mode-line)
+                        (format " %s" (funcall
+                                       dired-switches-in-mode-line
+                                       dired-actual-switches)))
+                       (t (concat " " dired-actual-switches))))
+              (cond ((string-match-p dired-sort-by-name-regexp
+                                     dired-actual-switches)
+                     "Dired by name")
+                    ((string-match-p dired-sort-by-date-regexp
+                                     dired-actual-switches)
+                     "Dired by date")
+                    (t (concat "Dired " dired-actual-switches))))))
     (force-mode-line-update)))
 
 (define-obsolete-function-alias 'dired-sort-set-modeline
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 60f6d63..8aaf38a 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -24,8 +24,8 @@
 
 ;; doc-view.el requires GNU Emacs 22.1 or newer.  You also need Ghostscript,
 ;; `dvipdf' (comes with Ghostscript) or `dvipdfm' (comes with teTeX or TeXLive)
-;; and `pdftotext', which comes with xpdf (http://www.foolabs.com/xpdf/) or
-;; poppler (http://poppler.freedesktop.org/).
+;; and `pdftotext', which comes with xpdf (https://www.foolabs.com/xpdf/) or
+;; poppler (https://poppler.freedesktop.org/).
 
 ;;; Commentary:
 
@@ -514,7 +514,7 @@ Typically \"page-%s.png\".")
     ;; Toggle between text and image display or editing
     (define-key map (kbd "C-c C-c") 'doc-view-toggle-display)
     map)
-  "Keymap used by `doc-minor-view-mode'.")
+  "Keymap used by `doc-view-minor-mode'.")
 
 ;;;; Navigation Commands
 
diff --git a/lisp/double.el b/lisp/double.el
index 639d041..8e50900 100644
--- a/lisp/double.el
+++ b/lisp/double.el
@@ -99,7 +99,7 @@ but not `C-u X' or `ESC X' since the X is not the prefix key."
     (load-library "isearch"))
 
 (define-key isearch-mode-map [ignore]
-  (function (lambda () (interactive) (isearch-update))))
+  (lambda () (interactive) (isearch-update)))
 
 (defun double-translate-key (prompt)
   ;; Translate input events using double map.
diff --git a/lisp/ebuff-menu.el b/lisp/ebuff-menu.el
index 7285021..079fce8 100644
--- a/lisp/ebuff-menu.el
+++ b/lisp/ebuff-menu.el
@@ -162,6 +162,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
        (message "")))
     (when select
       (set-buffer buffer)
+      (goto-char select)
       (let ((opoint (point-marker)))
        (Buffer-menu-execute)
        (goto-char (point-min))
diff --git a/lisp/ehelp.el b/lisp/ehelp.el
index ad39116..8137320 100644
--- a/lisp/ehelp.el
+++ b/lisp/ehelp.el
@@ -219,7 +219,7 @@ BUFFER is put back into its original major mode."
                             'electric-help-retain))))
       (Electric-command-loop
         'exit
-       (function (lambda ()
+        (lambda ()
          (sit-for 0) ;necessary if last command was end-of-buffer or
                      ;beginning-of-buffer - otherwise pos-visible-in-window-p
                      ;will yield a wrong result.
@@ -241,7 +241,7 @@ BUFFER is put back into its original major mode."
                  (t
                   (cond (standard "Press SPC to scroll, DEL to scroll back, q 
to exit, r to retain ")
                         (both)
-                        (t (setq both (substitute-command-keys "Press 
\\[scroll-up] to scroll, \\[scroll-down] to scroll back, \\[electric-help-exit] 
to exit, \\[electric-help-retain] to retain ")))))))))
+                         (t (setq both (substitute-command-keys "Press 
\\[scroll-up] to scroll, \\[scroll-down] to scroll back, \\[electric-help-exit] 
to exit, \\[electric-help-retain] to retain "))))))))
                    t))))
 
 
diff --git a/lisp/electric.el b/lisp/electric.el
index 7038b91..50ddf52 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -424,7 +424,7 @@ If multiple rules match, only first one is executed.")
                   ;;
                   ;; FIXME: when `newline'ing, we exceptionally
                   ;; prevent a specific behavior of
-                  ;; `eletric-pair-mode', that of opening an extra
+                  ;; `electric-pair-mode', that of opening an extra
                   ;; newline between newly inserted matching paris.
                   ;; In theory that behavior should be provided by
                   ;; `electric-layout-mode' instead, which should be
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 5ee0a14..2c63b44 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -256,13 +256,12 @@ expression, in which case we want to handle forms 
differently."
 ;; the doc-string in FORM.
 ;; Those properties are now set in lisp-mode.el.
 
-(defun autoload-find-generated-file ()
+(defun autoload-find-generated-file (file)
   "Visit the autoload file for the current buffer, and return its buffer."
   (let ((enable-local-variables :safe)
         (enable-local-eval nil)
         (find-file-hook nil)
-        (delay-mode-hooks t)
-        (file (autoload-generated-file)))
+        (delay-mode-hooks t))
     ;; We used to use `raw-text' to read this file, but this causes
     ;; problems when the file contains non-ASCII characters.
     (with-current-buffer (find-file-noselect
@@ -270,18 +269,20 @@ expression, in which case we want to handle forms 
differently."
       (if (zerop (buffer-size)) (insert (autoload-rubric file nil t)))
       (current-buffer))))
 
-(defun autoload-generated-file ()
-  "Return `generated-autoload-file' as an absolute name.
-If local to the current buffer, expand using the default directory;
-otherwise, using `source-directory'/lisp."
-  (expand-file-name generated-autoload-file
+(defun autoload-generated-file (outfile)
+  "Return OUTFILE as an absolute name.
+If `generated-autoload-file' is bound locally in the current
+buffer, that is used instead, and it is expanded using the
+default directory; otherwise, `source-directory'/lisp is used."
+  (expand-file-name (if (local-variable-p 'generated-autoload-file)
+                        generated-autoload-file
+                      outfile)
                     ;; File-local settings of generated-autoload-file should
                     ;; be interpreted relative to the file's location,
                     ;; of course.
                     (if (not (local-variable-p 'generated-autoload-file))
                         (expand-file-name "lisp" source-directory))))
 
-
 (defun autoload-read-section-header ()
   "Read a section header form.
 Since continuation lines have been marked as comments,
@@ -456,13 +457,12 @@ which lists the file name and which functions are in it, 
etc."
 (defvar no-update-autoloads nil
   "File local variable to prevent scanning this file for autoload cookies.")
 
-(defun autoload-file-load-name (file)
+(defun autoload-file-load-name (file outfile)
   "Compute the name that will be used to load FILE."
   ;; OUTFILE should be the name of the global loaddefs.el file, which
   ;; is expected to be at the root directory of the files we're
   ;; scanning for autoloads and will be in the `load-path'.
-  (let* ((outfile (default-value 'generated-autoload-file))
-         (name (file-relative-name file (file-name-directory outfile)))
+  (let* ((name (file-relative-name file (file-name-directory outfile)))
          (names '())
          (dir (file-name-directory outfile)))
     ;; If `name' has directory components, only keep the
@@ -492,8 +492,9 @@ If FILE is being visited in a buffer, the contents of the 
buffer
 are used.
 Return non-nil in the case where no autoloads were added at point."
   (interactive "fGenerate autoloads for file: ")
-  (let ((generated-autoload-file buffer-file-name))
-    (autoload-generate-file-autoloads file (current-buffer))))
+  (let ((autoload-modified-buffers nil))
+    (autoload-generate-file-autoloads file (current-buffer) buffer-file-name)
+    autoload-modified-buffers))
 
 (defvar autoload-compute-prefixes t
   "If non-nil, autoload will add code to register the prefixes used in a file.
@@ -610,7 +611,7 @@ Don't try to split prefixes that are already longer than 
that.")
         `(register-definition-prefixes ,file ',(sort (delq nil strings)
                                                     'string<))))))
 
-(defun autoload--setup-output (otherbuf outbuf absfile load-name)
+(defun autoload--setup-output (otherbuf outbuf absfile load-name output-file)
   (let ((outbuf
          (or (if otherbuf
                  ;; A file-local setting of
@@ -618,7 +619,7 @@ Don't try to split prefixes that are already longer than 
that.")
                  ;; should ignore OUTBUF.
                  nil
                outbuf)
-             (autoload-find-destination absfile load-name)
+             (autoload-find-destination absfile load-name output-file)
              ;; The file has autoload cookies, but they're
              ;; already up-to-date. If OUTFILE is nil, the
              ;; entries are in the expected OUTBUF,
@@ -675,23 +676,16 @@ Don't try to split prefixes that are already longer than 
that.")
 More specifically those definitions will not be considered for the
 `register-definition-prefixes' call.")
 
-;; When called from `generate-file-autoloads' we should ignore
-;; `generated-autoload-file' altogether.  When called from
-;; `update-file-autoloads' we don't know `outbuf'.  And when called from
-;; `update-directory-autoloads' it's in between: we know the default
-;; `outbuf' but we should obey any file-local setting of
-;; `generated-autoload-file'.
 (defun autoload-generate-file-autoloads (file &optional outbuf outfile)
   "Insert an autoload section for FILE in the appropriate buffer.
 Autoloads are generated for defuns and defmacros in FILE
 marked by `generate-autoload-cookie' (which see).
+
 If FILE is being visited in a buffer, the contents of the buffer are used.
 OUTBUF is the buffer in which the autoload statements should be inserted.
-If OUTBUF is nil, it will be determined by `autoload-generated-file'.
 
-If provided, OUTFILE is expected to be the file name of OUTBUF.
-If OUTFILE is non-nil and FILE specifies a `generated-autoload-file'
-different from OUTFILE, then OUTBUF is ignored.
+If OUTBUF is nil, the output will go to OUTFILE, unless there's a
+buffer-local setting of `generated-autoload-file' in FILE.
 
 Return non-nil if and only if FILE adds no autoloads to OUTFILE
 \(or OUTBUF if OUTFILE is nil).  The actual return value is
@@ -719,16 +713,19 @@ FILE's modification time."
                   (setq load-name
                         (if (stringp generated-autoload-load-name)
                             generated-autoload-load-name
-                          (autoload-file-load-name absfile)))
+                          (autoload-file-load-name absfile outfile)))
                   ;; FIXME? Comparing file-names for equality with just equal
                   ;; is fragile, eg if one has an automounter prefix and one
                   ;; does not, but both refer to the same physical file.
                   (when (and outfile
+                             (not outbuf)
                              (not
                               (if (memq system-type '(ms-dos windows-nt))
                                   (equal (downcase outfile)
-                                         (downcase (autoload-generated-file)))
-                                (equal outfile (autoload-generated-file)))))
+                                         (downcase (autoload-generated-file
+                                                    outfile)))
+                                (equal outfile (autoload-generated-file
+                                                outfile)))))
                     (setq otherbuf t))
                   (save-excursion
                     (save-restriction
@@ -742,7 +739,8 @@ FILE's modification time."
                                                  (file-name-sans-extension
                                                   (file-name-nondirectory 
file))))
                                (setq output-start (autoload--setup-output
-                                                   otherbuf outbuf absfile 
load-name))
+                                                   otherbuf outbuf absfile
+                                                   load-name outfile))
                                (let ((standard-output (marker-buffer 
output-start))
                                      (print-quoted t))
                                  (princ `(push (purecopy
@@ -760,7 +758,8 @@ FILE's modification time."
                             ;; If not done yet, figure out where to insert 
this text.
                             (unless output-start
                               (setq output-start (autoload--setup-output
-                                                  otherbuf outbuf absfile 
load-name)))
+                                                  otherbuf outbuf absfile
+                                                  load-name outfile)))
                             (autoload--print-cookie-text output-start 
load-name file))
                            ((= (following-char) ?\;)
                             ;; Don't read the comment.
@@ -791,7 +790,7 @@ FILE's modification time."
                ((not otherbuf)
                 (unless output-start
                   (setq output-start (autoload--setup-output
-                                      nil outbuf absfile load-name)))
+                                      nil outbuf absfile load-name outfile)))
                 (let ((autoload-print-form-outbuf
                        (marker-buffer output-start)))
                   (autoload-print-form form)))
@@ -803,9 +802,8 @@ FILE's modification time."
                         ;; then passing otherbuf=nil is enough, but if
                         ;; outbuf is nil, that won't cut it, so we
                         ;; locally bind generated-autoload-file.
-                        (let ((generated-autoload-file
-                               (default-value 'generated-autoload-file)))
-                          (autoload--setup-output nil outbuf absfile 
load-name)))
+                        (autoload--setup-output nil outbuf absfile load-name
+                                                outfile))
                        (autoload-print-form-outbuf
                         (marker-buffer other-output-start)))
                   (autoload-print-form form)
@@ -927,19 +925,23 @@ Return FILE if there was no autoload cookie in it, else 
nil."
   (interactive (list (read-file-name "Update autoloads for file: ")
                     current-prefix-arg
                     (read-file-name "Write autoload definitions to file: ")))
-  (let* ((generated-autoload-file (or outfile generated-autoload-file))
-        (autoload-modified-buffers nil)
+  (setq outfile (or outfile generated-autoload-file))
+  (let* ((autoload-modified-buffers nil)
         ;; We need this only if the output file handles more than one input.
         ;; See https://debbugs.gnu.org/22213#38 and subsequent.
         (autoload-timestamps t)
-         (no-autoloads (autoload-generate-file-autoloads file)))
+         (no-autoloads (autoload-generate-file-autoloads
+                        file nil
+                        (if (local-variable-p 'generated-autoload-file)
+                            generated-autoload-file
+                          outfile))))
     (if autoload-modified-buffers
         (if save-after (autoload-save-buffers))
       (if (called-interactively-p 'interactive)
           (message "Autoload section for %s is up to date." file)))
     (if no-autoloads file)))
 
-(defun autoload-find-destination (file load-name)
+(defun autoload-find-destination (file load-name output-file)
   "Find the destination point of the current buffer's autoloads.
 FILE is the file name of the current buffer.
 LOAD-NAME is the name as it appears in the output.
@@ -949,12 +951,12 @@ removes any prior now out-of-date autoload entries."
   (catch 'up-to-date
     (let* ((buf (current-buffer))
            (existing-buffer (if buffer-file-name buf))
-           (output-file (autoload-generated-file))
+           (output-file (autoload-generated-file output-file))
            (output-time (if (file-exists-p output-file)
                             (file-attribute-modification-time
                             (file-attributes output-file))))
            (found nil))
-      (with-current-buffer (autoload-find-generated-file)
+      (with-current-buffer (autoload-find-generated-file output-file)
         ;; This is to make generated-autoload-file have Unix EOLs, so
         ;; that it is portable to all platforms.
         (or (eq 0 (coding-system-eol-type buffer-file-coding-system))
@@ -1035,12 +1037,31 @@ The function does NOT recursively descend into 
subdirectories of the
 directory or directories specified.
 
 In an interactive call, prompt for a default output file for the
-autoload definitions, and temporarily bind the variable
-`generated-autoload-file' to this value.  When called from Lisp,
-use the existing value of `generated-autoload-file'.  If any Lisp
-file binds `generated-autoload-file' as a file-local variable,
-write its autoloads into the specified file instead."
+autoload definitions.  When called from Lisp, use the existing
+value of `generated-autoload-file'.  If any Lisp file binds
+`generated-autoload-file' as a file-local variable, write its
+autoloads into the specified file instead."
+  (declare (obsolete make-directory-autoloads "28.1"))
   (interactive "DUpdate autoloads from directory: ")
+  (make-directory-autoloads
+   dirs
+   (if (called-interactively-p 'interactive)
+       (read-file-name "Write autoload definitions to file: ")
+     generated-autoload-file)))
+
+;;;###autoload
+(defun make-directory-autoloads (dir output-file)
+  "Update autoload definitions for Lisp files in the directories DIRS.
+DIR can be either a single directory or a list of
+directories.  (The latter usage is discouraged.)
+
+The autoloads will be written to OUTPUT-FILE.  If any Lisp file
+binds `generated-autoload-file' as a file-local variable, write
+its autoloads into the specified file instead.
+
+The function does NOT recursively descend into subdirectories of the
+directory or directories specified."
+  (interactive "DUpdate autoloads from directory: \nFWrite to file: ")
   (let* ((files-re (let ((tmp nil))
                     (dolist (suf (get-load-suffixes))
                        ;; We don't use module-file-suffix below because
@@ -1051,10 +1072,10 @@ write its autoloads into the specified file instead."
                          (push suf tmp)))
                      (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'")))
         (files (apply #'nconc
-                      (mapcar (lambda (dir)
-                                (directory-files (expand-file-name dir)
-                                                 t files-re))
-                              dirs)))
+                      (mapcar (lambda (d)
+                                (directory-files (expand-file-name d)
+                                                  t files-re))
+                              (if (consp dir) dir (list dir)))))
          (done ())                      ;Files processed; to remove duplicates.
          (changed nil)                  ;Non-nil if some change occurred.
         (last-time)
@@ -1062,16 +1083,12 @@ write its autoloads into the specified file instead."
          ;; files because of file-local autoload-generated-file settings.
         (no-autoloads nil)
          (autoload-modified-buffers nil)
-        (generated-autoload-file
-         (if (called-interactively-p 'interactive)
-             (read-file-name "Write autoload definitions to file: ")
-           generated-autoload-file))
         (output-time
-         (if (file-exists-p generated-autoload-file)
-             (file-attribute-modification-time
-              (file-attributes generated-autoload-file)))))
+         (and (file-exists-p output-file)
+              (file-attribute-modification-time
+                (file-attributes output-file)))))
 
-    (with-current-buffer (autoload-find-generated-file)
+    (with-current-buffer (autoload-find-generated-file output-file)
       (save-excursion
        ;; Canonicalize file names and remove the autoload file itself.
        (setq files (delete (file-relative-name buffer-file-name)
@@ -1128,8 +1145,7 @@ write its autoloads into the specified file instead."
             (progress (make-progress-reporter
                        (byte-compile-info
                         (concat "Scraping files for "
-                                (file-relative-name
-                                 generated-autoload-file)))
+                                (file-relative-name output-file)))
                        0 (length files) nil 10))
             (file-count 0)
             file-time)
@@ -1207,7 +1223,7 @@ should be non-nil)."
   (let ((args command-line-args-left))
     (batch-update-autoloads--summary args)
     (setq command-line-args-left nil)
-    (apply #'update-directory-autoloads args)))
+    (make-directory-autoloads args generated-autoload-file)))
 
 (provide 'autoload)
 
diff --git a/lisp/emacs-lisp/backtrace.el b/lisp/emacs-lisp/backtrace.el
index 37dad8d..5874ba7 100644
--- a/lisp/emacs-lisp/backtrace.el
+++ b/lisp/emacs-lisp/backtrace.el
@@ -922,11 +922,15 @@ Output stream used is value of `standard-output'."
   (princ (backtrace-to-string (backtrace-get-frames 'backtrace)))
   nil)
 
-(defun backtrace-to-string(&optional frames)
+(defun backtrace-to-string (&optional frames)
   "Format FRAMES, a list of `backtrace-frame' objects, for output.
 Return the result as a string.  If FRAMES is nil, use all
 function calls currently active."
-  (unless frames (setq frames (backtrace-get-frames 'backtrace-to-string)))
+  (substring-no-properties
+   (backtrace--to-string
+    (or frames (backtrace-get-frames 'backtrace-to-string)))))
+
+(defun backtrace--to-string (frames)
   (let ((backtrace-fontify nil))
     (with-temp-buffer
       (backtrace-mode)
@@ -934,8 +938,7 @@ function calls currently active."
             backtrace-frames frames
             backtrace-print-function #'cl-prin1)
       (backtrace-print)
-      (substring-no-properties (filter-buffer-substring (point-min)
-                                                        (point-max))))))
+      (filter-buffer-substring (point-min) (point-max)))))
 
 (provide 'backtrace)
 
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index b0e3158..b1e27a4 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -3255,7 +3255,8 @@ for symbols generated by the byte compiler itself."
                                   (t "."))))
         (if (eq (car-safe (symbol-function (car form))) 'macro)
             (byte-compile-report-error
-             (format "Forgot to expand macro %s in %S" (car form) form)))
+             (format "`%s' defined after use in %S (missing `require' of a 
library file?)"
+                     (car form) form)))
         (if (and handler
                  ;; Make sure that function exists.
                  (and (functionp handler)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 8571cca..86d99a9 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2999,7 +2999,7 @@ Supported keywords for slots are:
               constrs))
     (pcase-dolist (`(,cname ,args ,doc) constrs)
       (let* ((anames (cl--arglist-args args))
-            (make (cl-mapcar (function (lambda (s d) (if (memq s anames) s d)))
+             (make (cl-mapcar (lambda (s d) (if (memq s anames) s d))
                              slots defaults))
             ;; `cl-defsubst' is fundamentally broken: it substitutes
              ;; its arguments into the body's `sexp' much too naively
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 1bdb2a3..0e4135b 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -320,6 +320,17 @@ the debugger will not be entered."
      (message "Error in debug printer: %S" err)
      (prin1 obj stream))))
 
+(make-obsolete 'debugger-insert-backtrace
+               "use a `backtrace-mode' buffer or `backtrace-to-string'."
+               "Emacs 27.1")
+
+(defun debugger-insert-backtrace (frames do-xrefs)
+  "Format and insert the backtrace FRAMES at point.
+Make functions into cross-reference buttons if DO-XREFS is non-nil."
+  (insert (if do-xrefs
+              (backtrace--to-string frames)
+            (backtrace-to-string frames))))
+
 (defun debugger-setup-buffer (args)
   "Initialize the `*Backtrace*' buffer for entry to the debugger.
 That buffer should be current already and in debugger-mode."
@@ -527,6 +538,9 @@ The environment used is the one when entering the 
activation frame at point."
           (let ((str (eval-expression-print-format val)))
             (if str (princ str t))))))))
 
+(define-obsolete-function-alias 'debugger-toggle-locals
+  'backtrace-toggle-locals "28.1")
+
 
 (defvar debugger-mode-map
   (let ((map (make-keymap)))
@@ -621,6 +635,9 @@ Complete list of commands:
             (buffer-substring (line-beginning-position 0)
                               (line-end-position 0)))))
 
+(define-obsolete-function-alias 'debug-help-follow
+  'backtrace-help-follow-symbol "28.1")
+
 
 ;; When you change this, you may also need to change the number of
 ;; frames that the debugger skips.
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index 39ad30a..a484c2f 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -201,7 +201,7 @@ This is used with the `object-write' method.")
               "Saving this object should make backup files.
 Setting to nil will mean no backups are made."))
   "This special class enables persistence through save files
-Use the `object-save' method to write this object to disk.  The save
+Use the `object-write' method to write this object to disk.  The save
 format is Emacs Lisp code which calls the constructor for the saved
 object.  For this reason, only slots which do not have an `:initarg'
 specified will not be saved."
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 3c347c0..ebb27e8 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -736,7 +736,7 @@ run.  ARGS are the arguments to `debugger'."
               ;; This means we have to limit `print-level' and
               ;; `print-length' when printing result objects.  That
               ;; might not be worth while when we can also use
-              ;; `ert-results-rerun-test-debugging-errors-at-point',
+              ;; `ert-results-rerun-test-at-point-debugging-errors',
               ;; (i.e., when running interactively) but having the
               ;; backtrace ready for printing is important for batch
               ;; use.
@@ -958,7 +958,7 @@ Selectors that do not, such as (member ...), just return the
 set implied by them without checking whether it is really
 contained in UNIVERSE."
   ;; This code needs to match the cases in
-  ;; `ert-insert-human-readable-selector'.
+  ;; `ert--insert-human-readable-selector'.
   (pcase-exhaustive selector
     ('nil nil)
     ('t (pcase-exhaustive universe
diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el
index a9328a6..3bc6d02 100644
--- a/lisp/emacs-lisp/generic.el
+++ b/lisp/emacs-lisp/generic.el
@@ -117,7 +117,7 @@ instead (which see).")
   "Create a new generic mode MODE.
 
 A \"generic\" mode is a simple major mode with basic support for
-comment syntax and Font Lock mode, but otherwise do not have a
+comment syntax and Font Lock mode, but otherwise does not have
 any special keystrokes or functionality available.
 
 MODE is the name of the command for the generic mode; don't quote it.
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 81e1400..ac1396f 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1013,7 +1013,6 @@ untar into a directory named DIR; otherwise, signal an 
error."
     (write-region (autoload-rubric file "package" nil) nil file nil 'silent))
   file)
 
-(defvar generated-autoload-file)
 (defvar autoload-timestamps)
 (defvar version-control)
 
@@ -1021,14 +1020,14 @@ untar into a directory named DIR; otherwise, signal an 
error."
   "Generate autoloads in PKG-DIR for package named NAME."
   (let* ((auto-name (format "%s-autoloads.el" name))
          ;;(ignore-name (concat name "-pkg.el"))
-         (generated-autoload-file (expand-file-name auto-name pkg-dir))
+         (output-file (expand-file-name auto-name pkg-dir))
          ;; We don't need 'em, and this makes the output reproducible.
          (autoload-timestamps nil)
          (backup-inhibited t)
          (version-control 'never))
-    (package-autoload-ensure-default-file generated-autoload-file)
-    (update-directory-autoloads pkg-dir)
-    (let ((buf (find-buffer-visiting generated-autoload-file)))
+    (package-autoload-ensure-default-file output-file)
+    (make-directory-autoloads pkg-dir output-file)
+    (let ((buf (find-buffer-visiting output-file)))
       (when buf (kill-buffer buf)))
     auto-name))
 
@@ -3623,7 +3622,7 @@ This is used for `tabulated-list-format' in 
`package-menu-mode'."
       (string< a b))))
 
 (defun package-menu--populate-new-package-list ()
-  "Decide which packages are new in `package-archives-contents'.
+  "Decide which packages are new in `package-archive-contents'.
 Store this list in `package-menu--new-package-list'."
   ;; Find which packages are new.
   (when package-menu--old-archive-contents
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index fbcd7b8..78ae3a8 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -301,7 +301,7 @@ Except for Lisp syntax this is the same as `reb-regexp'.")
   "Keymap used by the RE Builder for the subexpression mode.")
 
 (defun reb-mode-common ()
-  "Setup functions common to functions `reb-mode' and `reb-mode-lisp'."
+  "Setup functions common to functions `reb-mode' and `reb-lisp-mode'."
 
   (setq        reb-mode-string  ""
        reb-valid-string ""
@@ -513,7 +513,7 @@ If SUBEXP is non-nil mark only the corresponding 
sub-expressions."
   (reb-update-overlays subexp))
 
 (defun reb-auto-update (_beg _end _lenold &optional force)
-  "Called from `after-update-functions' to update the display.
+  "Called from `after-change-functions' to update the display.
 BEG, END and LENOLD are passed in from the hook.
 An actual update is only done if the regexp has changed or if the
 optional fourth argument FORCE is non-nil."
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index c4dcb76..926305e 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1379,9 +1379,10 @@ the prefix fallback behavior."
 
   (cond
    (cua-mode
-    (setq cua--saved-state
-         (list
-          (and (boundp 'delete-selection-mode) delete-selection-mode)))
+    (unless cua--saved-state
+      (setq cua--saved-state
+           (list
+            (and (boundp 'delete-selection-mode) delete-selection-mode))))
     (if cua-delete-selection
         (delete-selection-mode 1)
       (if (and (boundp 'delete-selection-mode) delete-selection-mode)
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index d2c6dd0..9c3251e 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -735,7 +735,7 @@ If command is repeated at same position, delete the 
rectangle."
     (setq cua--last-killed-rectangle (cons (and kill-ring (car kill-ring)) 
killed-rectangle))
     (if ring
         (kill-new (mapconcat
-                   (function (lambda (row) (concat row "\n")))
+                   (lambda (row) (concat row "\n"))
                    killed-rectangle "")))))
 
 (defun cua--activate-rectangle ()
@@ -1071,7 +1071,7 @@ The text previously in the rectangle is overwritten by 
the blanks."
         (cua--copy-rectangle-to-global-mark t))
     (let* ((rect (cua--extract-rectangle))
            (text (mapconcat
-                  (function (lambda (row) (concat row "\n")))
+                  (lambda (row) (concat row "\n"))
                   rect "")))
       (setq arg (cua--prefix-arg arg))
       (if cua--register
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el
index 6e6c0a4..3ad4da1 100644
--- a/lisp/epa-mail.el
+++ b/lisp/epa-mail.el
@@ -49,6 +49,13 @@
 (defvar epa-mail-mode-on-hook nil)
 (defvar epa-mail-mode-off-hook nil)
 
+(defcustom epa-mail-offer-skip t
+  "If non-nil, when a recipient has no key, ask whether to skip it.
+Otherwise, signal an error."
+  :type 'boolean
+  :version "28.1"
+  :group 'epa-mail)
+
 ;;;###autoload
 (define-minor-mode epa-mail-mode
   "A minor-mode for composing encrypted/clearsigned mails."
@@ -218,10 +225,12 @@ If no one is selected, symmetric encryption will be 
performed.  "
                                  recipient))
                               'encrypt)))
                         (unless (or recipient-key
-                                    (y-or-n-p
-                                     (format
-                                      "No public key for %s; skip it? "
-                                      recipient)))
+                                     (and epa-mail-offer-skip
+                                         (y-or-n-p
+                                           (format
+                                            "No public key for %s; skip it? "
+                                            recipient)))
+                                     )
                           (error "No public key for %s" recipient))
                         (if recipient-key (list recipient-key))))
                       default-recipients)))))
diff --git a/lisp/epa.el b/lisp/epa.el
index 609ac5d..25e055c 100644
--- a/lisp/epa.el
+++ b/lisp/epa.el
@@ -435,33 +435,34 @@ q  trust status questionable.  -  trust status 
unspecified.
   (unless (and epa-keys-buffer
                (buffer-live-p epa-keys-buffer))
     (setq epa-keys-buffer (generate-new-buffer "*Keys*")))
-  (with-current-buffer epa-keys-buffer
-    (epa-key-list-mode)
-    ;; C-c C-c is the usual way to finish the selection (bug#11159).
-    (define-key (current-local-map) "\C-c\C-c" 'exit-recursive-edit)
-    (let ((inhibit-read-only t)
-         buffer-read-only)
-      (erase-buffer)
-      (insert prompt "\n"
-             (substitute-command-keys "\
+  (save-window-excursion
+    (with-current-buffer epa-keys-buffer
+      (epa-key-list-mode)
+      ;; C-c C-c is the usual way to finish the selection (bug#11159).
+      (define-key (current-local-map) "\C-c\C-c" 'exit-recursive-edit)
+      (let ((inhibit-read-only t)
+           buffer-read-only)
+        (erase-buffer)
+        (insert prompt "\n"
+               (substitute-command-keys "\
 - `\\[epa-mark-key]' to mark a key on the line
 - `\\[epa-unmark-key]' to unmark a key on the line\n"))
-      (insert-button "[Cancel]"
-                     'action (lambda (_button) (abort-recursive-edit)))
-      (insert " ")
-      (insert-button "[OK]"
-                     'action (lambda (_button) (exit-recursive-edit)))
-      (insert "\n\n")
-      (epa--insert-keys keys)
-      (setq epa-exit-buffer-function #'abort-recursive-edit)
-      (goto-char (point-min))
-      (let ((display-buffer-mark-dedicated 'soft))
-        (pop-to-buffer (current-buffer))))
-    (unwind-protect
-       (progn
-         (recursive-edit)
-         (epa--marked-keys))
-      (kill-buffer epa-keys-buffer))))
+        (insert-button "[Cancel]"
+                       'action (lambda (_button) (abort-recursive-edit)))
+        (insert " ")
+        (insert-button "[OK]"
+                       'action (lambda (_button) (exit-recursive-edit)))
+        (insert "\n\n")
+        (epa--insert-keys keys)
+        (setq epa-exit-buffer-function #'abort-recursive-edit)
+        (goto-char (point-min))
+        (let ((display-buffer-mark-dedicated 'soft))
+          (pop-to-buffer (current-buffer))))
+      (unwind-protect
+         (progn
+           (recursive-edit)
+           (epa--marked-keys))
+        (kill-buffer epa-keys-buffer)))))
 
 ;;;###autoload
 (defun epa-select-keys (context prompt &optional names secret)
diff --git a/lisp/erc/ChangeLog.1 b/lisp/erc/ChangeLog.1
index ef813bd..90bd8bd 100644
--- a/lisp/erc/ChangeLog.1
+++ b/lisp/erc/ChangeLog.1
@@ -7296,7 +7296,7 @@
        again.
        (erc): Require cl for delete-if.
        (erc-button-remove-old-buttons): Rewrote using delete-if to
-       prevent excesive consing.  Having the marker list is still ugly,
+       prevent excessive consing.  Having the marker list is still ugly,
        so another solution needs to be found.
 
 2003-01-17  Jorgen Schaefer  <forcer@users.sourceforge.net>
@@ -10260,7 +10260,7 @@
        Upcased the command defuns (erc-cmd-join is now erc-cmd-JOIN)
        Fixed erc-complete to not require erc-command-table.
        Implemented erc-cmd-HELP
-         (You have to try that, its tooo coool!)
+         (You have to try that, its too coool!)
          e.g. /help auto-q
        fixed autoloads for erc-add-pal and so on to be interactive.
 
@@ -11242,7 +11242,7 @@
 2001-10-29  Mario Lang  <mlang@delysid.org>
 
        * erc.el:
-       Imenu fixed somehow, added IRC services interactive function for 
indentify to NickServ. Read the diff
+       Imenu fixed somehow, added IRC services interactive function for 
identify to NickServ. Read the diff
 
 2001-10-26  Gergely Nagy  <algernon@debian.org>
 
@@ -11316,7 +11316,7 @@
 
        * erc-speak.el:
        * Very important fix! Now erc-speak is really complete. Messages don't 
get cut anymore. Be sure to use auditory icons,
-         it's reallllly cool now!!!
+         it's really cool now!!!
 
        * erc-speak.el: *** empty log message ***
 
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 5e6f7c8..b799b24 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -198,12 +198,12 @@ PAR is a number of a regexp grouping whose text will be 
passed to
                         :inline t
                         (integer :tag "Regexp section number")))))
 
-(defcustom erc-emacswiki-url "http://www.emacswiki.org/cgi-bin/wiki.pl?";
+(defcustom erc-emacswiki-url "https://www.emacswiki.org/cgi-bin/wiki.pl?";
   "URL of the EmacsWiki Homepage."
   :group 'erc-button
   :type 'string)
 
-(defcustom erc-emacswiki-lisp-url "http://www.emacswiki.org/elisp/";
+(defcustom erc-emacswiki-lisp-url "https://www.emacswiki.org/elisp/";
   "URL of the EmacsWiki ELisp area."
   :group 'erc-button
   :type 'string)
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 3398c8b..60f0cfa 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -860,7 +860,7 @@ is in `erc-mode'."
 
 (defvar erc-track-last-non-erc-buffer nil
   "Stores the name of the last buffer you were in before activating
-`erc-track-switch-buffers'.")
+`erc-track-switch-buffer'.")
 
 (defun erc-track-sort-by-activest ()
   "Sort erc-modified-channels-alist by activity.
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index e7e43f8..1d5506e 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -5039,7 +5039,7 @@ information if it is not already present in the user or 
channel
 lists.
 
 If, and only if, changes are made, or the user is added,
-`erc-channel-members-updated-hook' is run, and t is returned.
+`erc-channel-members-changed-hook' is run, and t is returned.
 
 See also: `erc-update-user' and `erc-update-channel-member'."
   (let* (changed user-changed
@@ -6072,7 +6072,7 @@ Sets the buffer local variables:
 - `erc-session-connector'
 - `erc-session-server'
 - `erc-session-port'
-- `erc-session-full-name'
+- `erc-session-user-full-name'
 - `erc-server-current-nick'"
   (setq erc-session-connector erc-server-connect-function
         erc-session-server (erc-compute-server server)
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 0122f9b..9268921 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -534,7 +534,7 @@ list."
        string)))
 
 (defun eshell-directory-files-and-attributes (dir &optional full match nosort 
id-format)
-  "Make sure to use the handler for `directory-file-and-attributes'."
+  "Make sure to use the handler for `directory-files-and-attributes'."
   (let* ((dir (expand-file-name dir)))
     (if (string-equal (file-remote-p dir 'method) "ftp")
        (let ((files (directory-files dir full match nosort)))
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index 96838d4..7388279 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -463,8 +463,8 @@ Possible options are:
                    (eshell-as-subcommand ,(eshell-parse-command cmd))
                    (ignore
                     (nconc eshell-this-command-hook
-                           (list (function (lambda ()
-                                              (delete-file ,temp))))))
+                           (list (lambda ()
+                                   (delete-file ,temp)))))
                    (quote ,temp)))
             (goto-char (1+ end)))))))
    ((eq (char-after) ?\()
diff --git a/lisp/faces.el b/lisp/faces.el
index 7c23e58..5b7e0a5 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1770,7 +1770,7 @@ If FRAME is nil, that stands for the selected frame."
 (defun defined-colors-with-face-attributes (&optional frame)
   "Return a list of colors supported for a particular frame.
 See `defined-colors' for arguments and return value. In contrast
-to `define-colors' the elements of the returned list are color
+to `defined-colors' the elements of the returned list are color
 strings with text properties, that make the color names render
 with the color they represent as background color."
   (mapcar
diff --git a/lisp/ffap.el b/lisp/ffap.el
index a1d80f5..ccba291 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -172,7 +172,7 @@ well-formed, such as \"user@host\" or \"<user@host>\"."
   :version "25.2")                      ; nil -> t
 
 (defcustom ffap-ftp-default-user "anonymous"
-  "User name in FTP file names generated by `ffap-host-to-path'.
+  "User name in FTP file names generated by `ffap-host-to-filename'.
 Note this name may be omitted if it equals the default
 \(either `efs-default-user' or `ange-ftp-default-user')."
   :type 'string
diff --git a/lisp/filecache.el b/lisp/filecache.el
index 113d28c..00c5313 100644
--- a/lisp/filecache.el
+++ b/lisp/filecache.el
@@ -46,7 +46,7 @@
 ;;   * `file-cache-add-file-list': Adds a list of files to the cache
 ;;
 ;; The following functions use the regular expressions in
-;; `file-cache-delete-regexps' to eliminate unwanted files:
+;; `file-cache-filter-regexps' to eliminate unwanted files:
 ;;
 ;;   * `file-cache-add-directory': Adds the files in a directory to the
 ;;     cache.  You can also specify a regular expression to match the files
diff --git a/lisp/files.el b/lisp/files.el
index dc9633f..833a188 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1395,7 +1395,7 @@ it means chase no more than that many links and then 
stop."
     newname))
 
 ;; A handy function to display file sizes in human-readable form.
-;; See http://en.wikipedia.org/wiki/Kibibyte for the reference.
+;; See https://en.wikipedia.org/wiki/Kibibyte for the reference.
 (defun file-size-human-readable (file-size &optional flavor space unit)
   "Produce a string showing FILE-SIZE in human-readable form.
 
@@ -7779,7 +7779,7 @@ Otherwise, trash FILENAME using the freedesktop.org 
conventions,
           (let (delete-by-moving-to-trash)
             (rename-file fn new-fn))))
        ;; Otherwise, use the freedesktop.org method, as specified at
-       ;; http://freedesktop.org/wiki/Specifications/trash-spec
+        ;; https://freedesktop.org/wiki/Specifications/trash-spec
        (t
         (let* ((xdg-data-dir
                 (directory-file-name
diff --git a/lisp/filesets.el b/lisp/filesets.el
index 1ec0d24..4f23faa 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -52,7 +52,7 @@
 
 ;; BTW, if you close a fileset, files, which have been changed, will
 ;; be silently saved.  Change this behavior by setting
-;; `filesets-save-buffer-fn'.
+;; `filesets-save-buffer-function'.
 
 ;;; Supported modes for inclusion groups (`filesets-ingroup-patterns'):
 ;; - Elisp
diff --git a/lisp/find-file.el b/lisp/find-file.el
index 7e0127d..84d02cb 100644
--- a/lisp/find-file.el
+++ b/lisp/find-file.el
@@ -109,8 +109,8 @@
 ;; file.
 
 ;; CREDITS:
-;; Many thanks go to TUSC Computer Systems Pty Ltd for providing an environ-
-;; ment that made the development of this package possible.
+;; Many thanks go to TUSC Computer Systems Pty Ltd for providing an
+;; environment that made the development of this package possible.
 ;;
 ;; Many thanks also go to all those who provided valuable feedback throughout
 ;; the development of this package:
diff --git a/lisp/follow.el b/lisp/follow.el
index d499da7..f1d823d 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -113,7 +113,7 @@
 ;; whatever you would like to do.  These functions are then added to
 ;; a hook.
 ;;
-;; The keymap `follow-key-map' contains key bindings activated by
+;; The keymap `follow-mode-map' contains key bindings activated by
 ;; `follow-mode'.
 ;;
 ;; Example:
@@ -356,7 +356,7 @@ property `follow-mode-use-cache' to non-nil.")
 Used by `follow-window-size-change'.")
 
 (defvar follow-windows-start-end-cache nil
-  "Cache used by `follow-window-start-end'.")
+  "Cache used by `follow-window-start' and `follow-window-end'.")
 
 (defvar follow-fixed-window nil
   "If non-nil, the current window must not be scrolled.
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index c633877..e708e69 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -822,7 +822,7 @@ happens, so the major mode can be corrected."
             ;; `font-lock-keywords-alist'.
             (when top-cell
               (dolist (keyword-list-how-pair (cdr top-cell))
-                ;; `keywords-list-how-pair' is a cons with a list of
+                 ;; `keyword-list-how-pair' is a cons with a list of
                 ;; keywords in the car top-cell and the original how
                 ;; argument in the cdr top-cell.
                 (setcar keyword-list-how-pair
diff --git a/lisp/forms.el b/lisp/forms.el
index 83daabd..e9242ce 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -286,7 +286,7 @@
 ;; record.
 ;;
 ;; `write-file-functions' is defined to save the actual data file
-;; instead of the buffer data, `revert-file-hook' is defined to
+;; instead of the buffer data, `revert-buffer-function' is defined to
 ;; revert a forms to original.
 
 ;;; Code:
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index 2f5dd22..533ceb8 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -3378,7 +3378,7 @@
 
        * gnus-async.el (gnus-asynchronous): Move defcustom of
        gnus-asynchronous away from defgroup of gnus-asynchronous.
-       This seems to fix an intermittant error in which loading gnus-async
+       This seems to fix an intermittent error in which loading gnus-async
        fails to define gnus-asynchronous (the variable).
 
        * gnus-sum.el: Concur with Steve Young, 5th argument to 'load' is
@@ -7096,7 +7096,7 @@
        * nnimap.el (nnimap-callback-callback-function):
        (nnimap-callback-buffer): Remove, these cannot be global but must
        be embedded into the callback.
-       (nnimap-make-callback): New.  Embedd article number, callback and
+       (nnimap-make-callback): New.  Embed article number, callback and
        buffer in function.
        (nnimap-callback, nnimap-request-article-part): Update.
 
@@ -8031,7 +8031,7 @@
        (message-xpost-fup2-header, message-xpost-insert-note)
        (message-xpost-fup2, message-reduce-to-to-cc): New functions
        adopted from message-utils.el.  Add functions to the keymap, mode
-       describtion and menu.
+       description and menu.
        (message-change-subject, message-xpost-fup2): Signal error if
        current header is empty.
        (message-xpost-insert-note): Change insert position.
@@ -8612,7 +8612,7 @@
 2002-06-11  Simon Josefsson  <jas@extundo.com>
 
        * gnus-int.el (gnus-request-move-article): Agent expire article if
-       successfuly moved.
+       successfully moved.
 
 2002-06-11  Niklas Morberg  <niklas.morberg@axis.com>
 
@@ -9073,7 +9073,7 @@
 
 2002-04-13  Josh Huber  <huber@alum.wpi.edu>
 
-       * mml-sec.el (mml-secure-message): Change to support arbritrary
+       * mml-sec.el (mml-secure-message): Change to support arbitrary
        modes.
        * mml-sec.el (mml-secure-message-encrypt-(smime|pgp|pgpmime)):
        changed to support "signencrypt" mode.
diff --git a/lisp/gnus/ChangeLog.3 b/lisp/gnus/ChangeLog.3
index 70eaeb5..582c9bd 100644
--- a/lisp/gnus/ChangeLog.3
+++ b/lisp/gnus/ChangeLog.3
@@ -170,7 +170,7 @@
 2015-02-09  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * mm-decode.el (mm-convert-shr-links): Don't overwrite the faces from
-       shr, beacause that breaks folding.
+       shr, because that breaks folding.
        (mm-shr): Don't shorten the width when using fonts.
 
 2015-02-05  Teodor Zlatanov  <tzz@lifelogs.com>
@@ -596,7 +596,7 @@
 
 2014-06-05  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * gnus-art.el (gnus-article-edit-part): Don't modifiy markers.
+       * gnus-art.el (gnus-article-edit-part): Don't modify markers.
        (gnus-article-read-summary-keys):
        Don't bug out when there is no article in the summary buffer.
        (gnus-mime-buttonize-attachments-in-header):
@@ -1318,7 +1318,7 @@
 2013-08-06  Jan Tatarik  <jan.tatarik@gmail.com>
 
        * gnus-icalendar.el (gnus-icalendar-event-from-ical): Replace pcase
-       with cond for backwards compatability.
+       with cond for backwards compatibility.
 
 2013-08-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 
@@ -2221,7 +2221,7 @@
 
 2013-04-04  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * mml.el (mml-minibuffer-read-description): Use `default' insted of
+       * mml.el (mml-minibuffer-read-description): Use `default' instead of
        `initial-input' for the argument name.
        Suggested by Stefan Monnier <monnier@iro.umontreal.ca>.
 
@@ -5541,7 +5541,7 @@
        (registry-prune-hard): Use it.
 
        * gnus-registry.el (gnus-registry-fixup-registry): Set prune-factor to
-       0.1 expicitly.
+       0.1 explicitly.
 
 2011-05-13  Glenn Morris  <rgm@gnu.org>
 
@@ -8758,7 +8758,7 @@
 
        * shr.el (shr-generic): The text nodes should be text, not :text.
 
-       * nnir.el (nnir-search-engine): Ressurect variable, since it's used
+       * nnir.el (nnir-search-engine): Resurrect variable, since it's used
        later in the file.
 
 2010-10-30  Andrew Cohen  <cohen@andy.bu.edu>
@@ -9481,7 +9481,7 @@
        nil.
 
        * gnus-start.el (gnus-get-unread-articles): Require gnus-agent before
-       bidning gnus-agent variables.
+       binding gnus-agent variables.
 
        * shr.el (shr-render-td): Use a cache for the table rendering function
        to avoid getting an exponential rendering behavior in nested tables.
@@ -11849,7 +11849,7 @@
 
 2010-08-13  Teodor Zlatanov  <tzz@lifelogs.com>
 
-       Doc fixes and keep unknown groups (ammended for nunion bug fix).
+       Doc fixes and keep unknown groups (amended for nunion bug fix).
 
        * gnus-sync.el: Fix docs.
        (gnus-sync-save): Keep unknown groups in `gnus-sync-newsrc-loader'.
@@ -18925,7 +18925,7 @@
        * message.el: Autoload gmm-image-load-path.
        (message-tool-bar-retro): Prepend "gnus/" subdirectory to some
        icon file names.  Use old Emacs 21 "mail_send.xpm" icon for
-       consitency.
+       consistency.
 
        * gmm-utils.el (gmm-image-load-path): Also search in
        "../etc/images".  Don't set gmm-image-load-path if we don't find
@@ -19523,7 +19523,7 @@
 
        * nnml.el: Don't require gnus-bcklg.  Autoload it.
        (nnml-use-compressed-files, nnml-save-mail): Support other
-       comression programs such as bzip2.
+       compression programs such as bzip2.
 
 2005-12-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
@@ -21227,7 +21227,7 @@
        (nntp-with-open-group): Allow debugging.
 
        * nnheader.el (mail-header-set-extra): Make into a function
-       because I just could't understand how to quote the list properly.
+       because I just couldn't understand how to quote the list properly.
 
        * dns.el (query-dns-cached): New function.
 
@@ -24966,7 +24966,7 @@
        functions as needing (default), or not needing,
        gnus-convert-old-newsrc's "backup before upgrading warning".
        (gnus-convert-converter-needs-prompt): Tests whether the user
-       should be protected from potentially irreversable changes by the
+       should be protected from potentially irreversible changes by the
        function.
 
        * legacy-gnus-agent.el: New.  Provides converters that are only
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 0e15ebc..684c535 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1368,7 +1368,11 @@ CRLF (RFC 5321 SMTP)."
   ;;   input (3.1, 3.3)
   ;; - if line-length is set, error on input exceeding the limit (3.1)
   ;; - reject characters outside base encoding (3.3, also section 12)
-  (let ((splitstr (split-string str "[\n\r \t]+" t)))
+  ;;
+  ;; RFC 5322 section 2.2.3 consideration:
+  ;; Because base 64-encoded strings can appear in long header fields, remove
+  ;; folding whitespace while still observing the RFC 4648 decisions above.
+  (let ((splitstr (split-string str "[ \t]*[\r\n]+[ \t]?" t)))
     (when (and reject-newlines (> (length splitstr) 1))
       (error "Invalid Base64 string"))
     (dolist (substr splitstr)
@@ -1424,7 +1428,7 @@ SPEC is a predicate specifier that contains stuff like 
`or', `and',
 (autoload 'ido-completing-read "ido")
 (defun gnus-ido-completing-read (prompt collection &optional require-match
                                         initial-input history def)
-  "Call `ido-completing-read-function'."
+  "Call `ido-completing-read'."
   (ido-completing-read prompt collection nil require-match
                       initial-input history def))
 
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index ef010d6..77856ae 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -5659,7 +5659,7 @@ The result is a fixnum."
               (mail-file-babyl-p filename))
          ;; gnus-output-to-mail does the wrong thing with live, mbox
          ;; Rmail buffers in Emacs 23.
-         ;; http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597255
+          ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597255
          (let ((buff (find-buffer-visiting filename)))
            (and buff (with-current-buffer buff
                        (eq major-mode 'rmail-mode)))))
@@ -8100,7 +8100,7 @@ See `gmm-tool-bar-from-list' for the format of the list."
                  (library image &optional path no-error))
 
 (defun message-make-tool-bar (&optional force)
-  "Make a message mode tool bar from `message-tool-bar-list'.
+  "Make a message mode tool bar from `message-tool-bar'.
 When FORCE, rebuild the tool bar."
   (when (and (boundp 'tool-bar-mode)
             tool-bar-mode
@@ -8591,7 +8591,7 @@ Meant for use on `completion-at-point-functions'."
 
 ;; FIXME: What is the most common term (circular letter, form letter, serial
 ;; letter, standard letter) for such kind of letter?  See also
-;; <http://en.wikipedia.org/wiki/Form_letter>
+;; <https://en.wikipedia.org/wiki/Form_letter>
 
 ;; FIXME: Maybe extent message-mode's font-lock support to recognize
 ;; `message-form-letter-separator', i.e. highlight each message like a single
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index 2824657..958e24c 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -70,7 +70,7 @@
                 (mm-coding-system-p 'cp932))
        '((windows-31j . cp932)))
     ;; Charset name: GBK, Charset aliases: CP936, MS936, windows-936
-    ;; http://www.iana.org/assignments/charset-reg/GBK
+    ;; https://www.iana.org/assignments/charset-reg/GBK
     ;; Emacs 22.1 has cp936, but not gbk, so we alias it:
     ,@(when (and (not (mm-coding-system-p 'gbk))
                 (mm-coding-system-p 'cp936))
diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el
index 69852c3..74af99d 100644
--- a/lisp/gnus/mml-sec.el
+++ b/lisp/gnus/mml-sec.el
@@ -938,9 +938,47 @@ If no one is selected, symmetric encryption will be 
performed.  "
        (signal (car error) (cdr error))))
     cipher))
 
-;; Should probably be removed and the interface should be different.
-(defvar mml-secure-allow-signing-with-unknown-recipient nil
-  "Variable to bind to allow automatic recipient selection.")
+(defun mml-secure-sender-sign-query (protocol sender)
+  "Query whether to use SENDER to sign when using PROTOCOL.
+PROTOCOL will be `OpenPGP' or `CMS' (smime).
+This can also save the resulting value of
+`mml-secure-smime-sign-with-sender' or
+`mml-secure-openpgp-sign-with-sender' via Customize.
+Returns non-nil if the user has chosen to use SENDER."
+  (let ((buffer (get-buffer-create "*MML sender signing options*"))
+        (options '((?a "always" "Sign using this sender now and sign with 
message sender in future.")
+                   (?s "session only" "Sign using this sender now, and sign 
with message sender for this session only.")
+                   (?n "no" "Do not sign this message (and error out)")))
+        answer done val)
+    (save-window-excursion
+      (pop-to-buffer buffer)
+      (erase-buffer)
+      (insert (format "No %s signing key was found for this message.\nThe 
sender of this message is \"%s\".\nWould you like to attempt looking up a 
signing key based on it?"
+                      (if (eq protocol 'OpenPGP)
+                          "openpgp" "smime")
+                      sender))
+      (while (not done)
+        (setq answer (read-multiple-choice "Sign this message using the 
sender?" options))
+        (cl-case (car answer)
+          (?a
+           (if (eq protocol 'OpenPGP)
+               (progn
+                 (setq mml-secure-openpgp-sign-with-sender t)
+                 (customize-save-variable
+                 'mml-secure-openpgp-sign-with-sender t))
+             (setq mml-secure-smime-sign-with-sender t)
+             (customize-save-variable 'mml-secure-smime-sign-with-sender t))
+           (setq done t
+                 val t))
+          (?s
+           (if (eq protocol 'OpenPGP)
+               (setq mml-secure-openpgp-sign-with-sender t)
+             (setq mml-secure-smime-sign-with-sender t))
+           (setq done t
+                 val t))
+          (?n
+           (setq done t)))))
+    val))
 
 (defun mml-secure-epg-sign (protocol mode)
   ;; Based on code appearing inside mml2015-epg-sign.
@@ -950,15 +988,21 @@ If no one is selected, symmetric encryption will be 
performed.  "
         (signers (mml-secure-signers context signer-names))
         signature micalg)
     (unless signers
-      (let ((maybe-msg
-             (if mml-secure-smime-sign-with-sender
-                 "."
-               "; try setting `mml-secure-smime-sign-with-sender'.")))
-        ;; If `mml-secure-smime-sign-with-sender' is already non-nil
-        ;; then there's no point advising the user to examine it.  If
-        ;; there are any other variables worth examining, please
-        ;; improve this error message by having it mention them.
-       (unless mml-secure-allow-signing-with-unknown-recipient
+      (if (and (not noninteractive)
+              (mml-secure-sender-sign-query protocol sender))
+          (setq signer-names (mml-secure-signer-names protocol sender)
+                signers (mml-secure-signers context signer-names)))
+      (unless signers
+        (let ((maybe-msg
+               (if (or mml-secure-smime-sign-with-sender
+                       mml-secure-openpgp-sign-with-sender)
+                   "."
+                 "; try setting `mml-secure-smime-sign-with-sender' or 
'mml-secure-openpgp-sign-with-sender'.")))
+          ;; If `mml-secure-smime-sign-with-sender' or
+          ;; `mml-secure-openpgp-sign-with-sender' are already non-nil
+          ;; then there's no point advising the user to examine them.
+          ;; If there are any other variables worth examining, please
+          ;; improve this error message by having it mention them.
           (error "Couldn't find any signer names%s" maybe-msg))))
     (when (eq 'OpenPGP protocol)
       (setf (epg-context-armor context) t)
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index a43eee4..ccd1774 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -178,7 +178,7 @@ The hook functions will be called with the full group name 
as argument."
 (define-obsolete-variable-alias 'nndiary-request-update-info-hooks
   'nndiary-request-update-info-functions "24.3")
 (defcustom nndiary-request-update-info-functions nil
-  "Hook run after `nndiary-request-update-info-group' is executed.
+  "Hook run after `nndiary-request-update-info' is executed.
 The hook functions will be called with the full group name as argument."
   :group 'nndiary
   :type 'hook)
diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el
index 81a148d..68c31dc 100644
--- a/lisp/gnus/nnmaildir.el
+++ b/lisp/gnus/nnmaildir.el
@@ -1767,7 +1767,7 @@ This variable is set by `nnmaildir-request-article'.")
          nnmaildir--cur-server nil)
 
     ;; This slightly obscure invocation of `alist-get' removes SERVER from
-    ;; `nnmaildir-servers'.
+    ;; `nnmaildir--servers'.
     (setf (alist-get (nnmaildir--srv-address server)
                     nnmaildir--servers server 'remove #'equal)
          server))
diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el
index 116d7ee..48c07da 100644
--- a/lisp/gnus/nnrss.el
+++ b/lisp/gnus/nnrss.el
@@ -450,7 +450,7 @@ nnrss: %s: Not valid XML %s and libxml-parse-html-region 
doesn't work %s"
 (defun nnrss-normalize-date (date)
   "Return a date string of DATE in the style of RFC 822 and its successors.
 This function handles the ISO 8601 date format described in
-URL `http://www.w3.org/TR/NOTE-datetime', and also the RFC 822 style
+URL `https://www.w3.org/TR/NOTE-datetime', and also the RFC 822 style
 which RSS 2.0 allows."
   (let (case-fold-search vector year month day time zone cts given)
     (cond ((null date))                        ; do nothing for this case
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 3da45a2..bf59386 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -4,7 +4,7 @@
 
 ;; Author: Alex Schroeder <alex@gnu.org>
 ;; Keywords: network
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SpamStat
+;; URL: https://www.emacswiki.org/cgi-bin/wiki.pl?SpamStat
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 38eca77..0c31d96 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -886,7 +886,7 @@ and their encoded form is inserted byte by byte."
              (when (null encoded)
               (setq internal (encode-coding-string internal 'utf-8-emacs)
                     internal-hex
-                    (mapconcat (function (lambda (c) (format "%x" c)))
+                     (mapconcat (lambda (c) (format "%x" c))
                                internal " "))
               (if (yes-or-no-p
                    (format-message
@@ -899,7 +899,7 @@ and their encoded form is inserted byte by byte."
                  (substitute-command-keys "try \\[hexl-insert-hex-string]"))))
             (while (> num 0)
               (mapc
-               (function (lambda (c) (hexl-insert-char c 1))) encoded)
+                (lambda (c) (hexl-insert-char c 1)) encoded)
               (setq num (1- num))))))))
 
 (defun hexl-self-insert-command (arg)
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 1c55a23..a81cefa 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -820,6 +820,7 @@ SPACES-REGEXP is a regexp to substitute spaces in font-lock 
search."
     (font-lock-add-keywords nil hi-lock-file-patterns t)
     (font-lock-flush)))
 
+;;;###autoload
 (defun hi-lock-find-patterns ()
   "Add patterns from the current buffer to the list of hi-lock patterns."
   (interactive)
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 6f29767..a29adde 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -60,12 +60,12 @@
 ;; =============
 ;;
 ;; * The ImageMagick package.  Currently, `convert' and `mogrify' are
-;; used.  Find it here: http://www.imagemagick.org.
+;; used.  Find it here: https://www.imagemagick.org.
 ;;
 ;; * For non-lossy rotation of JPEG images, the JpegTRAN program is
 ;; needed.
 ;;
-;; * For `image-dired-get-exif-data' and `image-dired-write-exif-data' to work,
+;; * For `image-dired-get-exif-data' and `image-dired-set-exif-data' to work,
 ;; the command line tool `exiftool' is needed.  It can be found here:
 ;; http://www.sno.phy.queensu.ca/~phil/exiftool/.  These two functions
 ;; are, among other things, used for writing comments to image files
@@ -205,7 +205,7 @@ the index.html page that image-dired creates."
   :group 'image-dired)
 
 (defcustom image-dired-gallery-image-root-url
-"http://your.own.server/image-diredpics";
+"https://your.own.server/image-diredpics";
   "URL where the full size images are to be found.
 Note that this path has to be configured in your web server.  Image-Dired
 expects to find pictures in this directory."
@@ -213,7 +213,7 @@ expects to find pictures in this directory."
   :group 'image-dired)
 
 (defcustom image-dired-gallery-thumb-image-root-url
-"http://your.own.server/image-diredthumbs";
+"https://your.own.server/image-diredthumbs";
   "URL where the thumbnail images are to be found.
 Note that this path has to be configured in your web server.  Image-Dired
 expects to find pictures in this directory."
@@ -309,7 +309,7 @@ temporary file name (typically generated by pnqnq)."
   :group 'image-dired)
 
 (defcustom image-dired-cmd-optipng-options '("-o5" "%t")
-  "Arguments passed to `image-dired-optipng-program'.
+  "Arguments passed to `image-dired-cmd-optipng-program'.
 Available format specifiers are described in
 `image-dired-cmd-create-thumbnail-options'."
   :version "26.1"
diff --git a/lisp/image.el b/lisp/image.el
index 4b2faa9..9ebb603 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -841,7 +841,7 @@ multiplication factor for the current value."
 N=0 refers to the initial animation frame.
 COUNT is the total number of frames in the animation.
 TIME-ELAPSED is the total time that has elapsed since
-`image-animate-start' was called.
+`image-animate' was called.
 LIMIT determines when to stop.  If t, loop forever.  If nil, stop
  after displaying the last animation frame.  Otherwise, stop
  after LIMIT seconds have elapsed.
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index b7656d9..0b6920c 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -60,7 +60,7 @@ Vietnamese")
 ;; For each group (row) of 2-byte character sets.
 
 (define-category ?A "2-byte alnum
-Alpha-numeric characters of 2-byte character sets")
+Alphanumeric characters of 2-byte character sets")
 (define-category ?C "2-byte han
 Chinese (Han) characters of 2-byte character sets")
 (define-category ?G "2-byte Greek
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el
index a6dcd02..2da8635 100644
--- a/lisp/international/titdic-cnv.el
+++ b/lisp/international/titdic-cnv.el
@@ -795,7 +795,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\"."
            (forward-line 1)))
        (maphash #'(lambda (key val) (setq dic (cons (cons key val) dic)))
                 table)))
-    (setq dic (sort dic (function (lambda (x y) (string< (car x ) (car y))))))
+    (setq dic (sort dic (lambda (x y) (string< (car x ) (car y)))))
     (dolist (elt dic)
       (insert (format "(%S\t%S)\n" (car elt) (cdr elt))))
     (let ((punctuation '((";" "$(0!'!2!"!#!.!/(B" "$(G!'!2!"!#!.!/(B")
@@ -956,7 +956,7 @@ method `chinese-tonepy' with which you must specify tones 
by digits
                             (setq trans (mapconcat 'identity trans "")))))
                     (setq dic (cons (cons key trans) dic)))
                 table)))
-    (setq dic (sort dic (function (lambda (x y) (string< (car x) (car y))))))
+    (setq dic (sort dic (lambda (x y) (string< (car x) (car y)))))
     (goto-char (point-max))
     (insert (format "%S\n" "$A::WVJdHk!K!>WTH;!?!K(B
 
diff --git a/lisp/international/ucs-normalize.el 
b/lisp/international/ucs-normalize.el
index 6b7419f..33d0f0d 100644
--- a/lisp/international/ucs-normalize.el
+++ b/lisp/international/ucs-normalize.el
@@ -25,8 +25,8 @@
 ;; This program has passed the NormalizationTest-5.2.0.txt.
 ;;
 ;; References:
-;; http://www.unicode.org/reports/tr15/
-;; http://www.unicode.org/review/pr-29.html
+;; https://www.unicode.org/reports/tr15/
+;; https://www.unicode.org/review/pr-29.html
 ;;
 ;; HFS-Normalization:
 ;; Reference:
@@ -131,7 +131,7 @@
       #x1D1BF #x1D1C0)
    "Composition Exclusion List.
   This list is taken from
-    http://www.unicode.org/Public/UNIDATA/5.2/CompositionExclusions.txt";)
+    https://www.unicode.org/Public/UNIDATA/5.2/CompositionExclusions.txt";)
 
   ;; Unicode ranges that decompositions & combining characters are defined.
   (defvar check-range nil)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 4e964b3..781a8c5 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -271,9 +271,8 @@ are `word-search-regexp' \(`\\[isearch-toggle-word]'), 
`isearch-symbol-regexp'
 
 (defcustom search-highlight-submatches t
   "Whether to highlight regexp subexpressions of the current regexp match.
-
-The faces used to do the highlights are named `isearch-group-1',
-`isearch-group-2', and so on."
+The faces used to do the highlights are named `isearch-group-odd' and
+`isearch-group-even'."
   :type 'boolean
   :version "28.1")
 
@@ -3664,97 +3663,26 @@ since they have special meaning in a regexp."
 (defvar isearch-overlay nil)
 (defvar isearch-submatches-overlays nil)
 
-(defface isearch-group-1
+(defface isearch-group-odd
   '((((class color) (min-colors 88) (background light))
      (:background "#ff00ff" :foreground "lightskyblue1"))
     (((class color) (min-colors 88) (background dark))
      (:background "palevioletred3" :foreground "brown4"))
     (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (first sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-2
-  '((((class color) (min-colors 88) (background light))
-     (:background "#d000d0" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#be698f" :foreground "black"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (second sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-3
-  '((((class color) (min-colors 88) (background light))
-     (:background "#a000a0" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#a06080" :foreground "brown4"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (third sub-group)."
+  "Face for highlighting Isearch the odd group matches."
   :group 'isearch
   :version "28.1")
 
-(defface isearch-group-4
+(defface isearch-group-even
   '((((class color) (min-colors 88) (background light))
      (:background "#800080" :foreground "lightskyblue1"))
     (((class color) (min-colors 88) (background dark))
      (:background "#905070" :foreground "brown4"))
     (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (fourth sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-5
-  '((((class color) (min-colors 88) (background light))
-     (:background "#600060" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#804060" :foreground "black"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (fifth sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-6
-  '((((class color) (min-colors 88) (background light))
-     (:background "#500050" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#703050" :foreground "white"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (sixth sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-7
-  '((((class color) (min-colors 88) (background light))
-     (:background "#400040" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#602050" :foreground "white"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (seventh sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-(defface isearch-group-8
-  '((((class color) (min-colors 88) (background light))
-     (:background "#300030" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#501050" :foreground "white"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (eighth sub-group)."
+  "Face for highlighting Isearch the even group matches."
   :group 'isearch
   :version "28.1")
 
-(defface isearch-group-9
-  '((((class color) (min-colors 88) (background light))
-     (:background "#200020" :foreground "lightskyblue1"))
-    (((class color) (min-colors 88) (background dark))
-     (:background "#400040" :foreground "white"))
-    (t (:inherit isearch)))
-  "Face for highlighting Isearch sub-group matches (ninth sub-group)."
-  :group 'isearch
-  :version "28.1")
-
-
 (defun isearch-highlight (beg end)
   (if search-highlight
       (if isearch-overlay
@@ -3769,14 +3697,14 @@ since they have special meaning in a regexp."
             isearch-regexp)
     (mapc 'delete-overlay isearch-submatches-overlays)
     (setq isearch-submatches-overlays nil)
-    (let ((i 0) ov)
-      (while (<= i 9)
-       (when (match-beginning i)
-         (setq ov (make-overlay (match-beginning i) (match-end i)))
-         (overlay-put ov 'face (intern-soft (format "isearch-group-%d" i)))
+    (dotimes (i (/ (length (match-data)) 2))
+      (unless (zerop i)
+       (let ((ov (make-overlay (match-beginning i) (match-end i))))
+         (overlay-put ov 'face (if (zerop (mod i 2))
+                                   'isearch-group-even
+                                 'isearch-group-odd))
          (overlay-put ov 'priority 1002)
-         (push ov isearch-submatches-overlays))
-       (setq i (1+ i))))))
+         (push ov isearch-submatches-overlays))))))
 
 (defun isearch-dehighlight ()
   (when isearch-overlay
diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el
index b319bf6..ffbc253 100644
--- a/lisp/jsonrpc.el
+++ b/lisp/jsonrpc.el
@@ -239,8 +239,8 @@ JSON object.
 The caller can expect SUCCESS-FN or ERROR-FN to be called with a
 JSONRPC `:result' or `:error' object, respectively.  If this
 doesn't happen after TIMEOUT seconds (defaults to
-`jsonrpc-request-timeout'), the caller can expect TIMEOUT-FN to be
-called with no arguments. The default values of SUCCESS-FN,
+`jrpc-default-request-timeout'), the caller can expect TIMEOUT-FN
+to be called with no arguments. The default values of SUCCESS-FN,
 ERROR-FN and TIMEOUT-FN simply log the events into
 `jsonrpc-events-buffer'.
 
@@ -649,7 +649,7 @@ TIMEOUT is nil)."
       (if (jsonrpc-connection-ready-p connection deferred)
           ;; Server is ready, we jump below and send it immediately.
           (remhash (list deferred buf) (jsonrpc--deferred-actions connection))
-        ;; Otherwise, save in `eglot--deferred-actions' and exit non-locally
+        ;; Otherwise, save in `jsonrpc--deferred-actions' and exit non-locally
         (unless old-id
           (jsonrpc--debug connection `(:deferring ,method :id ,id :params
                                                   ,params)))
diff --git a/lisp/language/tibet-util.el b/lisp/language/tibet-util.el
index 8684cdb..04369f6 100644
--- a/lisp/language/tibet-util.el
+++ b/lisp/language/tibet-util.el
@@ -275,7 +275,7 @@ The returned string has no composition information."
            (compose-region from to components)))))))
 
 (defvar tibetan-decompose-precomposition-alist
-  (mapcar (function (lambda (x) (cons (string-to-char (cdr x)) (car x))))
+  (mapcar (lambda (x) (cons (string-to-char (cdr x)) (car x)))
          tibetan-precomposition-rule-alist))
 
 ;;;###autoload
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 40a4150..3260b67 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -1528,7 +1528,7 @@ ENTRY is the name of a password-store entry.
 The key used to retrieve the password is the symbol `secret'.
 
 The convention used as the format for a password-store file is
-the following (see http://www.passwordstore.org/#organization):
+the following (see https://www.passwordstore.org/#organization):
 
 secret
 key1: value1
@@ -5950,12 +5950,12 @@ Variables controlling indentation style:
  `cperl-min-label-indent'
     Minimal indentation for line that is a label.
 
-Settings for classic indent-styles: K&R BSD=C++ GNU PerlStyle=Whitesmith
-  `cperl-indent-level'                5   4       2   4
-  `cperl-brace-offset'                0   0       0   0
-  `cperl-continued-brace-offset'     -5  -4       0   0
-  `cperl-label-offset'               -5  -4      -2  -4
-  `cperl-continued-statement-offset'  5   4       2   4
+Settings for classic indent-styles: K&R BSD=C++ GNU PBP PerlStyle=Whitesmith
+  `cperl-indent-level'                5   4       2   4   4
+  `cperl-brace-offset'                0   0       0   0   0
+  `cperl-continued-brace-offset'     -5  -4       0   0   0
+  `cperl-label-offset'               -5  -4      -2  -2  -4
+  `cperl-continued-statement-offset'  5   4       2   4   4
 
 CPerl knows several indentation styles, and may bulk set the
 corresponding variables.  Use \\[cperl-set-style] to do this.  Use
@@ -6726,7 +6726,7 @@ Create a new data-debug buffer with NAME.
 (autoload 'dbus-handle-event "dbus" "\
 Handle events from the D-Bus.
 EVENT is a D-Bus event, see `dbus-check-event'.  HANDLER, being
-part of the event, is called with arguments ARGS.
+part of the event, is called with arguments ARGS (without type information).
 If the HANDLER returns a `dbus-error', it is propagated as return message.
 
 \(fn EVENT)" t nil)
@@ -7762,6 +7762,23 @@ Keybindings:
 \(fn &optional DIRNAME SWITCHES)" nil nil)
  (put 'dired-find-alternate-file 'disabled t)
 
+(autoload 'dired-jump "dired" "\
+Jump to Dired buffer corresponding to current buffer.
+If in a file, Dired the current directory and move to file's line.
+If in Dired already, pop up a level and goto old directory's line.
+In case the proper Dired file line cannot be found, refresh the dired
+buffer and try again.
+When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
+When FILE-NAME is non-nil, jump to its line in Dired.
+Interactively with prefix argument, read FILE-NAME.
+
+\(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
+
+(autoload 'dired-jump-other-window "dired" "\
+Like \\[dired-jump] (`dired-jump') but in other window.
+
+\(fn &optional FILE-NAME)" t nil)
+
 (register-definition-prefixes "dired" '("dired-"))
 
 ;;;***
@@ -8300,9 +8317,6 @@ BODY contains code to execute each time the mode is 
enabled or disabled.
   the minor mode is global):
 
 :group GROUP   Custom group name to use in all generated `defcustom' forms.
-               Defaults to MODE without the possible trailing \"-mode\".
-               Don't use this default group name unless you have written a
-               `defgroup' to define that group properly.
 :global GLOBAL If non-nil specifies that the minor mode is not meant to be
                buffer-local, so don't make the variable MODE buffer-local.
                By default, the mode is buffer-local.
@@ -10028,7 +10042,7 @@ It creates an autoload function for CNAME's constructor.
 
 ;;;### (autoloads nil "eldoc" "emacs-lisp/eldoc.el" (0 0 0 0))
 ;;; Generated autoloads from emacs-lisp/eldoc.el
-(push (purecopy '(eldoc 1 9 0)) package--builtin-versions)
+(push (purecopy '(eldoc 1 10 0)) package--builtin-versions)
 
 ;;;***
 
@@ -10292,7 +10306,7 @@ displayed." t nil)
 ;;;;;;  (0 0 0 0))
 ;;; Generated autoloads from eshell/em-unix.el
 
-(register-definition-prefixes "em-unix" '("eshell" "nil-blank-string" 
"pcomplete/"))
+(register-definition-prefixes "em-unix" '("eshell" "nil-blank-string"))
 
 ;;;***
 
@@ -10300,7 +10314,7 @@ displayed." t nil)
 ;;;;;;  (0 0 0 0))
 ;;; Generated autoloads from eshell/em-xtra.el
 
-(register-definition-prefixes "em-xtra" '("eshell/" "pcomplete/bcc"))
+(register-definition-prefixes "em-xtra" '("eshell/"))
 
 ;;;***
 
@@ -10349,7 +10363,15 @@ Already submitted bugs can be found in the Emacs bug 
tracker:
 
 (set-advertised-calling-convention 'report-emacs-bug '(topic) '"24.5")
 
-(register-definition-prefixes "emacsbug" '("report-emacs-bug-"))
+(autoload 'submit-emacs-patch "emacsbug" "\
+Send an Emacs patch to the Emacs maintainers.
+Interactively, you will be prompted for SUBJECT and a patch FILE
+name (which will be attached to the mail).  You will end up in a
+Message buffer where you can explain more about the patch.
+
+\(fn SUBJECT FILE)" t nil)
+
+(register-definition-prefixes "emacsbug" '("emacs-bug--system-description" 
"report-emacs-bug-"))
 
 ;;;***
 
@@ -11106,6 +11128,14 @@ Interactively select a server to connect to using 
`erc-server-alist'." t nil)
 
 ;;;***
 
+;;;### (autoloads "actual autoloads are elsewhere" "erc-status-sidebar"
+;;;;;;  "erc/erc-status-sidebar.el" (0 0 0 0))
+;;; Generated autoloads from erc/erc-status-sidebar.el
+
+(register-definition-prefixes "erc-status-sidebar" '("erc-status-sidebar-"))
+
+;;;***
+
 ;;;### (autoloads "actual autoloads are elsewhere" "erc-track" 
"erc/erc-track.el"
 ;;;;;;  (0 0 0 0))
 ;;; Generated autoloads from erc/erc-track.el
@@ -11253,6 +11283,11 @@ Emacs shell interactive mode.
 
 \(fn)" t nil)
 
+(autoload 'eshell-bookmark-jump "esh-mode" "\
+Default bookmark handler for Eshell buffers.
+
+\(fn BOOKMARK)" nil nil)
+
 (register-definition-prefixes "esh-mode" '("eshell"))
 
 ;;;***
@@ -11599,7 +11634,7 @@ Do `query-replace-regexp' of FROM with TO on all files 
listed in tags table.
 Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
 If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
 with the command \\[tags-loop-continue].
-For non-interactive use, superceded by `fileloop-initialize-replace'.
+For non-interactive use, superseded by `fileloop-initialize-replace'.
 
 \(fn FROM TO &optional DELIMITED FILES)" t nil)
 
@@ -12818,6 +12853,9 @@ The command run (after changing into DIR) is essentially
 except that the car of the variable `find-ls-option' specifies what to
 use in place of \"-ls\" as the final argument.
 
+Collect output in the \"*Find*\" buffer.  To kill the job before
+it finishes, type \\[kill-find].
+
 \(fn DIR ARGS)" t nil)
 
 (autoload 'find-name-dired "find-dired" "\
@@ -14112,6 +14150,10 @@ instead (which see).")
 (autoload 'define-generic-mode "generic" "\
 Create a new generic mode MODE.
 
+A \"generic\" mode is a simple major mode with basic support for
+comment syntax and Font Lock mode, but otherwise does not have
+any special keystrokes or functionality available.
+
 MODE is the name of the command for the generic mode; don't quote it.
 The optional DOCSTRING is the documentation for the mode command.  If
 you do not supply it, `define-generic-mode' uses a default
@@ -17590,7 +17632,7 @@ The main features of this mode are
    \\[idlwave-info] to display (complain to your sysadmin if that does
    not work).  For Postscript, PDF, and HTML versions of the
    documentation, check IDLWAVE's homepage at URL
-   `http://github.com/jdtsmith/idlwave'.
+   `https://github.com/jdtsmith/idlwave'.
    IDLWAVE has customize support - see the group `idlwave'.
 
 10.Keybindings
@@ -21608,7 +21650,7 @@ upper atmosphere.  These cause momentary pockets of 
higher-pressure
 air to form, which act as lenses that deflect incoming cosmic rays,
 focusing them to strike the drive platter and flip the desired bit.
 You can type `M-x butterfly C-M-c' to run it.  This is a permuted
-variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'." t nil)
+variation of `C-x M-c M-butterfly' from url `https://xkcd.com/378/'." t nil)
 
 (autoload 'list-dynamic-libraries "misc" "\
 Display a list of all dynamic libraries known to Emacs.
@@ -22130,6 +22172,12 @@ different buffer menu using the function `msb'.
 ;;;### (autoloads nil "mspools" "mail/mspools.el" (0 0 0 0))
 ;;; Generated autoloads from mail/mspools.el
 
+(autoload 'mspools-show "mspools" "\
+Show the list of non-empty spool files in the *spools* buffer.
+Buffer is not displayed if SHOW is non-nil.
+
+\(fn &optional NOSHOW)" t nil)
+
 (register-definition-prefixes "mspools" '("mspools-"))
 
 ;;;***
@@ -22848,7 +22896,7 @@ This command does not work if you use short group 
names." t nil)
 ;;;### (autoloads nil "nnir" "gnus/nnir.el" (0 0 0 0))
 ;;; Generated autoloads from gnus/nnir.el
 
-(register-definition-prefixes "nnir" '("gnus-" "nnir-"))
+(register-definition-prefixes "nnir" '("nnir-"))
 
 ;;;***
 
@@ -22927,6 +22975,13 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 
+;;;### (autoloads nil "nnselect" "gnus/nnselect.el" (0 0 0 0))
+;;; Generated autoloads from gnus/nnselect.el
+
+(register-definition-prefixes "nnselect" '("gnus-" "ids-by-group" "nnselect-" 
"numbers-by-group"))
+
+;;;***
+
 ;;;### (autoloads nil "nnspool" "gnus/nnspool.el" (0 0 0 0))
 ;;; Generated autoloads from gnus/nnspool.el
 
@@ -25502,7 +25557,12 @@ Completion rules for the `ssh' command." nil nil)
 Completion rules for the `scp' command.
 Includes files as well as host names followed by a colon." nil nil)
 
-(register-definition-prefixes "pcmpl-unix" '("pcmpl-"))
+(autoload 'pcomplete/telnet "pcmpl-unix" nil nil nil)
+
+(autoload 'pcomplete/rsh "pcmpl-unix" "\
+Complete `rsh', which, after the user and hostname, is like xargs." nil nil)
+
+(register-definition-prefixes "pcmpl-unix" '("pcmpl-" "pcomplete/"))
 
 ;;;***
 
@@ -25522,6 +25582,11 @@ long options." nil nil)
 (autoload 'pcomplete/ag "pcmpl-x" "\
 Completion for the `ag' command." nil nil)
 
+(autoload 'pcomplete/bcc32 "pcmpl-x" "\
+Completion function for Borland's C++ compiler." nil nil)
+
+(defalias 'pcomplete/bcc 'pcomplete/bcc32)
+
 (register-definition-prefixes "pcmpl-x" '("pcmpl-x-"))
 
 ;;;***
@@ -26573,7 +26638,7 @@ Open profile FILENAME.
 
 ;;;### (autoloads nil "project" "progmodes/project.el" (0 0 0 0))
 ;;; Generated autoloads from progmodes/project.el
-(push (purecopy '(project 0 5 1)) package--builtin-versions)
+(push (purecopy '(project 0 5 2)) package--builtin-versions)
 
 (autoload 'project-current "project" "\
 Return the project instance in DIRECTORY, defaulting to `default-directory'.
@@ -26622,7 +26687,8 @@ Run project command, displaying resultant buffer in a 
new tab.
 The following commands are available:
 
 \\{project-prefix-map}" t nil)
- (define-key tab-prefix-map "p" #'project-other-tab-command)
+
+(when (bound-and-true-p tab-prefix-map) (define-key tab-prefix-map "p" 
#'project-other-tab-command))
 
 (autoload 'project-find-regexp "project" "\
 Find all matches for REGEXP in the current project's roots.
@@ -26742,7 +26808,7 @@ identical.  Only the buffers that match a condition in
 `project-kill-buffer-conditions' will be killed.  If NO-CONFIRM
 is non-nil, the command will not ask the user for confirmation.
 NO-CONFIRM is always nil when the command is invoked
-interactivly.
+interactively.
 
 \(fn &optional NO-CONFIRM)" t nil)
 
@@ -28249,6 +28315,8 @@ disabled.
 Reveal mode is a buffer-local minor mode.  When enabled, it
 reveals invisible text around point.
 
+Also see the `reveal-auto-hide' variable.
+
 \(fn &optional ARG)" t nil)
 
 (defvar global-reveal-mode nil "\
@@ -28873,7 +28941,7 @@ to use for finding the schema.
 ;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (0 0 0 0))
 ;;; Generated autoloads from nxml/rng-xsd.el
 
-(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
#'rng-xsd-compile)
+(put 'https://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
#'rng-xsd-compile)
 
 (autoload 'rng-xsd-compile "rng-xsd" "\
 Provide W3C XML Schema as a RELAX NG datatypes library.
@@ -30414,7 +30482,7 @@ and `default-sendmail-coding-system',
 but lower priority than the local value of `buffer-file-coding-system'.
 See also the function `select-message-coding-system'.")
 
-(defvar default-sendmail-coding-system 'iso-latin-1 "\
+(defvar default-sendmail-coding-system 'utf-8 "\
 Default coding system for encoding the outgoing mail.
 This variable is used only when `sendmail-coding-system' is nil.
 
@@ -31479,7 +31547,7 @@ Use \\[so-long-customize] to configure the behaviour.
 
 ;;;### (autoloads nil "soap-client" "net/soap-client.el" (0 0 0 0))
 ;;; Generated autoloads from net/soap-client.el
-(push (purecopy '(soap-client 3 1 5)) package--builtin-versions)
+(push (purecopy '(soap-client 3 2 0)) package--builtin-versions)
 
 (register-definition-prefixes "soap-client" '("soap-"))
 
@@ -32718,6 +32786,27 @@ Studlify-case the current buffer." t nil)
 ;;;### (autoloads nil "subr-x" "emacs-lisp/subr-x.el" (0 0 0 0))
 ;;; Generated autoloads from emacs-lisp/subr-x.el
 
+(autoload 'if-let "subr-x" "\
+Bind variables according to SPEC and evaluate THEN or ELSE.
+Evaluate each binding in turn, as in `let*', stopping if a
+binding value is nil.  If all are non-nil return the value of
+THEN, otherwise the last form in ELSE.
+
+Each element of SPEC is a list (SYMBOL VALUEFORM) that binds
+SYMBOL to the value of VALUEFORM.  An element can additionally be
+of the form (VALUEFORM), which is evaluated and checked for nil;
+i.e. SYMBOL can be omitted if only the test result is of
+interest.  It can also be of the form SYMBOL, then the binding of
+SYMBOL is checked for nil.
+
+As a special case, interprets a SPEC of the form (SYMBOL SOMETHING)
+like ((SYMBOL SOMETHING)).  This exists for backward compatibility
+with an old syntax that accepted only one binding.
+
+\(fn SPEC THEN &rest ELSE)" nil t)
+
+(function-put 'if-let 'lisp-indent-function '2)
+
 (autoload 'when-let "subr-x" "\
 Bind variables according to SPEC and conditionally evaluate BODY.
 Evaluate each binding in turn, stopping if a binding value is nil.
@@ -32734,7 +32823,7 @@ Truncate STRING to LENGTH, replacing initial surplus 
with \"...\".
 
 \(fn STRING LENGTH)" nil nil)
 
-(register-definition-prefixes "subr-x" '("and-let*" "hash-table-" "if-let" 
"internal--" "replace-region-contents" "string-" "thread-" "when-let*"))
+(register-definition-prefixes "subr-x" '("and-let*" "hash-table-" "if-let*" 
"internal--" "replace-region-contents" "string-" "thread-" "when-let*"))
 
 ;;;***
 
@@ -32880,7 +32969,7 @@ and `sc-post-hook' is run after the guts of this 
function." nil nil)
 
 ;;;### (autoloads nil "svg" "svg.el" (0 0 0 0))
 ;;; Generated autoloads from svg.el
-(push (purecopy '(svg 1 0)) package--builtin-versions)
+(push (purecopy '(svg 1 1)) package--builtin-versions)
 
 (register-definition-prefixes "svg" '("svg-"))
 
@@ -33383,7 +33472,7 @@ buffer, and leaves the previous contents of the buffer 
untouched.
 References used for this implementation:
 
 HTML:
-        URL `http://www.w3.org'
+        URL `https://www.w3.org'
 
 LaTeX:
         URL `http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Tables.html'
@@ -34597,7 +34686,7 @@ runs the normal hook `display-time-hook' after each 
update.
 
 \(fn &optional ARG)" t nil)
 
-(defalias 'display-time-world #'world-clock)
+(define-obsolete-function-alias 'display-time-world #'world-clock "28.1")
 
 (autoload 'world-clock "time" "\
 Display a world clock buffer with times in various time zones.
@@ -34608,8 +34697,10 @@ To turn off the world time display, go to the window 
and type `\\[quit-window]'.
 Return a string giving the uptime of this instance of Emacs.
 FORMAT is a string to format the result, using `format-seconds'.
 For example, the Unix uptime command format is \"%D, %z%2h:%.2m\".
+If the optional argument HERE is non-nil, insert string at
+point.
 
-\(fn &optional FORMAT)" t nil)
+\(fn &optional FORMAT HERE)" t nil)
 
 (autoload 'emacs-init-time "time" "\
 Return a string giving the duration of the Emacs initialization." t nil)
@@ -38441,6 +38532,11 @@ See also `warning-series', `warning-prefix-function',
 `warning-fill-prefix', and `warning-fill-column' for additional
 programming features.
 
+This will also display buttons allowing the user to permanently
+disable automatic display of the warning or disable the warning
+entirely by setting `warning-suppress-types' or
+`warning-suppress-log-types' on their behalf.
+
 \(fn TYPE MESSAGE &optional LEVEL BUFFER-NAME)" nil nil)
 
 (autoload 'lwarn "warnings" "\
@@ -39601,16 +39697,16 @@ Zone out, completely." t nil)
 ;;;;;;  "erc/erc-notify.el" "erc/erc-page.el" "erc/erc-pcomplete.el"
 ;;;;;;  "erc/erc-replace.el" "erc/erc-ring.el" "erc/erc-services.el"
 ;;;;;;  "erc/erc-sound.el" "erc/erc-speedbar.el" "erc/erc-spelling.el"
-;;;;;;  "erc/erc-stamp.el" "erc/erc-track.el" "erc/erc-truncate.el"
-;;;;;;  "erc/erc-xdcc.el" "eshell/em-alias.el" "eshell/em-banner.el"
-;;;;;;  "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
-;;;;;;  "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
-;;;;;;  "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
-;;;;;;  "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
-;;;;;;  "eshell/em-tramp.el" "eshell/em-unix.el" "eshell/em-xtra.el"
-;;;;;;  "facemenu.el" "faces.el" "files.el" "font-core.el" "font-lock.el"
-;;;;;;  "format.el" "frame.el" "help.el" "hfy-cmap.el" "ibuf-ext.el"
-;;;;;;  "indent.el" "international/characters.el" "international/charprop.el"
+;;;;;;  "erc/erc-stamp.el" "erc/erc-status-sidebar.el" "erc/erc-track.el"
+;;;;;;  "erc/erc-truncate.el" "erc/erc-xdcc.el" "eshell/em-alias.el"
+;;;;;;  "eshell/em-banner.el" "eshell/em-basic.el" "eshell/em-cmpl.el"
+;;;;;;  "eshell/em-dirs.el" "eshell/em-glob.el" "eshell/em-hist.el"
+;;;;;;  "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el"
+;;;;;;  "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el"
+;;;;;;  "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el"
+;;;;;;  "eshell/em-xtra.el" "facemenu.el" "faces.el" "files.el" "font-core.el"
+;;;;;;  "font-lock.el" "format.el" "frame.el" "help.el" "hfy-cmap.el"
+;;;;;;  "ibuf-ext.el" "indent.el" "international/characters.el" 
"international/charprop.el"
 ;;;;;;  "international/charscript.el" "international/cp51932.el"
 ;;;;;;  "international/eucjp-ms.el" "international/mule-cmds.el"
 ;;;;;;  "international/mule-conf.el" "international/mule.el" 
"international/uni-bidi.el"
diff --git a/lisp/leim/quail/ipa.el b/lisp/leim/quail/ipa.el
index d417056..cbc555d 100644
--- a/lisp/leim/quail/ipa.el
+++ b/lisp/leim/quail/ipa.el
@@ -340,7 +340,7 @@ See http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf for a 
full definition
 of the mapping.")
 
 (quail-define-rules
- ;; Table taken from http://en.wikipedia.org/wiki/X-SAMPA, checked with
+ ;; Table taken from https://en.wikipedia.org/wiki/X-SAMPA, checked with
  ;; http://www.phon.ucl.ac.uk/home/sampa/ipasam-x.pdf
 
  ("d`" "ɖ")    ;; Voiced retroflex plosive             U+0256
diff --git a/lisp/mail/mail-extr.el b/lisp/mail/mail-extr.el
index f1a455d..bd9aef1 100644
--- a/lisp/mail/mail-extr.el
+++ b/lisp/mail/mail-extr.el
@@ -1852,8 +1852,8 @@ place.  It affects how `mail-extract-address-components' 
works."
 ;;
 ;; Source: ISO 3166 Maintenance Agency
 ;; 
http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1-semic.txt
-;; http://www.iana.org/domain-names.htm
-;; http://www.iana.org/cctld/cctld-whois.htm
+;; https://www.iana.org/domain-names.htm
+;; https://www.iana.org/cctld/cctld-whois.htm
 ;; Latest change: 2007/11/15
 
 (defconst mail-extr-all-top-level-domains
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el
index 1f68873..2b76539 100644
--- a/lisp/mail/mailalias.el
+++ b/lisp/mail/mailalias.el
@@ -517,7 +517,7 @@ PREFIX is the string we want to complete."
            (setq mail-names
                  (sort (append (if (consp mail-aliases)
                                    (mapcar
-                                    (function (lambda (a) (list (car a))))
+                                     (lambda (a) (list (car a)))
                                     mail-aliases))
                                (if (consp mail-local-names)
                                    mail-local-names)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 8bcb9af..7ff7db3 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -2786,7 +2786,7 @@ The current mail message becomes the message displayed."
        (with-current-buffer rmail-view-buffer
          ;; We give the view buffer a buffer-local value of
          ;; rmail-header-style based on the binding in effect when
-         ;; this function is called; `rmail-toggle-headers' can
+          ;; this function is called; `rmail-toggle-header' can
          ;; inspect this value to determine how to toggle.
          (set (make-local-variable 'rmail-header-style) header-style)
           ;; In case viewing the previous message sets the paragraph
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 1786608..63c8f14 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -50,7 +50,7 @@
 
 ;; Modified by Simon Josefsson <jas@pdc.kth.se>, 22/2/99, to support SMTP
 ;; Authentication by the AUTH mechanism.
-;; See http://www.ietf.org/rfc/rfc2554.txt
+;; See https://www.ietf.org/rfc/rfc2554.txt
 
 ;;; Code:
 ;;; Dependencies
diff --git a/lisp/master.el b/lisp/master.el
index 387116a..32556a5 100644
--- a/lisp/master.el
+++ b/lisp/master.el
@@ -36,12 +36,12 @@
 ;; SQL buffer.
 ;;
 ;; (add-hook 'sql-mode-hook
-;;        (function (lambda ()
-;;                    (master-mode t)
-;;                    (master-set-slave sql-buffer))))
+;;            (lambda ()
+;;              (master-mode t)
+;;              (master-set-slave sql-buffer)))
 ;; (add-hook 'sql-set-sqli-hook
-;;        (function (lambda ()
-;;                    (master-set-slave sql-buffer))))
+;;            (lambda ()
+;;              (master-set-slave sql-buffer)))
 
 ;;; Thanks to all the people who helped me out:
 ;;
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index d3e434a..1b3e102 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -671,7 +671,7 @@ PROPS are additional properties."
                                         &rest body)
   "Define a menu-bar toggle command.
 See `menu-bar-make-toggle-command', for which this is a
-compatability wrapper.  BODY is passed in as SETTING-SEXP in that macro."
+compatibility wrapper.  BODY is passed in as SETTING-SEXP in that macro."
   (declare (obsolete menu-bar-make-toggle-command "28.1"))
   `(menu-bar-make-toggle-command ,command ,variable ,item-name ,message ,help
                                  ,(and body
diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1
index dad3d1e..d30441f 100644
--- a/lisp/mh-e/ChangeLog.1
+++ b/lisp/mh-e/ChangeLog.1
@@ -324,7 +324,7 @@
 
        * mh-customize.el (mh-show-pgg-good-face)
        (mh-show-pgg-unknown-face, mh-show-pgg-bad-face): Faces added to
-       highlight buttons introduced for encrpted or signed MIME parts.
+       highlight buttons introduced for encrypted or signed MIME parts.
 
 2005-03-19  Bill Wohler  <wohler@newt.com>
 
@@ -428,7 +428,7 @@
 2004-11-28  Jeffrey C Honig  <jch@honig.net>
 
        * mh-comp.el (mh-complete-word): Kill the *Completions* buffer in
-       any cases where we belive we are done with it.  Not perfect, but
+       any cases where we believe we are done with it.  Not perfect, but
        better than just leaving it around.
 
 2004-11-08  Satyaki Das  <satyaki@theforce.stanford.edu>
@@ -818,7 +818,7 @@
 
        * Makefile:
        (mh-e-autoloads.el): Add target to make `mh-e-autoloads.el', a
-       file containg usual entry commands into MH-E to be used for users
+       file containing usual entry commands into MH-E to be used for users
        installing MH-E separately from Emacs.
        (XEMACS_LOADDEFS_FILE): New.  Used to generate mh-loaddefs.el
        in XEmacs.
@@ -1201,7 +1201,7 @@
 
 2003-11-01  Peter S Galbraith  <psg@debian.org>
 
-       * Makefile: Add target to make `mh-startup.el', a file containg
+       * Makefile: Add target to make `mh-startup.el', a file containing
        usual entry commands into MH-E to be used for users installing
        MH-E separately from Emacs.
 
@@ -1914,7 +1914,7 @@
 2003-08-18  Peter S Galbraith  <psg@debian.org>
 
        * mh-comp.el (mh-letter-mode): Call `mh-find-path unconditionally,
-       like elsewehere in MH-E.
+       like elsewhere in MH-E.
 
        * mh-utils.el (mh-find-path): Run setup code only if
        `mh-find-path-run' is nil such that this is only done once.
@@ -2588,7 +2588,7 @@
 2003-07-24  Satyaki Das  <satyakid@stanford.edu>
 
        * mh-e.el (mh-folder-message-menu, mh-folder-folder-menu): Use the
-       predicate mh-outstanding-commands-p instead of its exapansion.
+       predicate mh-outstanding-commands-p instead of its expansion.
        Also use the same label in both menus.
        (mh-outstanding-commands-p): Generalized so that it will work in
        mh-show-mode buffers as well.
@@ -3915,7 +3915,7 @@
 2003-04-22  Satyaki Das  <satyaki@theforce.stanford.edu>
 
        * mh-utils.el (mh-normalize-folder-name): Make the completion
-       code work properly with XEmacs. This change is neeeded since
+       code work properly with XEmacs. This change is needed since
        split-string behaves differently in XEmacs than it does in GNU
        Emacs.
        (mh-exec-cmd-error): Add a comment, so that we change it later on.
@@ -7391,7 +7391,7 @@
        numbers.
        (mh-cmd-note): Mention mh-set-cmd-note in docstring. Also suggest
        that it is updated dynamically only if mh-scan-format-file is t.
-       (mh-set-cmd-note): Grammer fix in docstring.
+       (mh-set-cmd-note): Grammar fix in docstring.
        (mh-cmd-note): Noted that the first column is column number 0.
 
        * mh-e.el (mh-scan-format-file): Added information about
@@ -7696,7 +7696,7 @@
 
        * mh-identity.el: New file.  Multiple Identify support for MH-E.
        Used to easily set different fields such as From and Organization,
-       as well as diffrent signature files.  This file won't be included
+       as well as different signature files.  This file won't be included
        with V7.0.
 
 2002-11-02  Bill Wohler  <wohler@newt.com>
@@ -9458,10 +9458,10 @@
 
 2002-07-15  Mark D. Baushke  <mdb@gnu.org>
 
-       * mh-utils.el (mm-decode): Use load for the Non-fatal depencency
+       * mh-utils.el (mm-decode): Use load for the Non-fatal dependency
        on the mm-decode library.
        * mh-mime.el (mm-decode, mm-uu, mm-view): Use load for the
-       Non-fatal depencencies on the mm-decode, mm-uu and mm-view
+       Non-fatal dependencies on the mm-decode, mm-uu and mm-view
        libraries.
 
 2002-07-15  Satyaki Das  <satyaki@theforce.stanford.edu>
@@ -11356,7 +11356,7 @@
        4 was silly for my case.
        * mh-e.el (mh-update-sequences): Check for nil value of
        mh-current-folder, which happens if mh-summary-height < 4
-       although I haven't tracked doen why that happens.
+       although I haven't tracked down why that happens.
 
 2001-10-22  Peter S Galbraith  <psg@debian.org>
 
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 92b7d80..c02b095 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -134,7 +134,7 @@ introduced in Emacs 22."
 
 (defmacro mh-face-background (face &optional frame inherit)
   "Return the background color name of face, or nil if unspecified.
-See documentation for `back-foreground' for a description of the
+See documentation for `face-background' for a description of the
 arguments FACE, FRAME, and INHERIT.
 This macro is used by Emacs versions that lack an INHERIT argument,
 introduced in Emacs 22."
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index dd05d69..3ac5c8f 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -1550,7 +1550,7 @@ as the result is undefined."
                                ,(append
                                  '(radio)
                                  (mapcar
-                                  (function (lambda (arg) `(const ,arg)))
+                                  (lambda (arg) `(const ,arg))
                                   (mapcar 'car mh-identity-list))))
                          (cons :tag "Fcc Field"
                                (const "fcc")
@@ -1577,7 +1577,7 @@ See `mh-identity-list'."
   :type (append
          '(radio)
          (cons '(const :tag "None" nil)
-               (mapcar (function (lambda (arg) `(const ,arg)))
+               (mapcar (lambda (arg) `(const ,arg))
                        (mapcar 'car mh-identity-list))))
   :group 'mh-identity
   :package-version '(MH-E . "7.1"))
@@ -1914,7 +1914,7 @@ of images into \"X-Face:\" header fields (see URL
 
 Use the \"make-face\" script to convert a JPEG image to the higher
 resolution, color, \"Face:\" header field (see URL
-`http://quimby.gnus.org/circus/face/make-face').
+`https://quimby.gnus.org/circus/face/make-face').
 
 The URL of any image can be used for the \"X-Image-URL:\" field and no
 processing of the image is required.
@@ -2420,11 +2420,11 @@ of citations entirely, choose \"None\"."
 
 ;; These entries have been intentionally excluded by the developers.
 ;;  "Comments:"                         ; RFC 822 (or later) - show this one
-;;  "Fax:"                              ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-;;  "Mail-System-Version:"              ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-;;  "Mailer:"                           ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Fax:"                              ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Mail-System-Version:"              ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Mailer:"                           ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
 ;;  "Organization:"                     ;
-;;  "Phone:"                            ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+;;  "Phone:"                            ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
 ;;  "Reply-By:"                         ; RFC 2156
 ;;  "Reply-To:"                         ; RFC 822 (or later)
 ;;  "Sender:"                           ;
@@ -2437,13 +2437,13 @@ of citations entirely, choose \"None\"."
 ;; Mention source, if known.
 (defvar mh-invisible-header-fields-internal
   '(
-    "Abuse-Reports-To:"                 ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Abuse-Reports-To:"                 ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Accept-Language:"
     "AcceptLanguage:"
     "Accreditor:"                       ; Habeas
     "Also-Control:"                     ; H. Spencer: News Article Format and 
Transmission, June 1994
     "Alternate-recipient:"              ; RFC 2156
-    "Approved-By:"                      ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Approved-By:"                      ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Approved:"                         ; RFC 1036
     "Article-Names:"                    ; H. Spencer: News Article Format and 
Transmission, June 1994
     "Article-Updates:"                  ; H. Spencer: News Article Format and 
Transmission, June 1994
@@ -2454,7 +2454,7 @@ of citations entirely, choose \"None\"."
     "Bounces-To:"
     "Bounces_to:"
     "Bytes:"
-    "Cancel-Key:"                       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Cancel-Key:"                       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Cancel-Lock:"                      ; NNTP posts
     "Comment:"                          ; Shows up with DomainKeys
     "Content-"                          ; RFC 2045, 1123, 1766, 1864, 2045, 
2110, 2156, 2183, 2912
@@ -2475,14 +2475,14 @@ of citations entirely, choose \"None\"."
     "DomainKey-Signature:"
     "Encoding:"                         ; RFC 1505
     "Envelope-to:"
-    "Errors-To:"                        ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Errors-To:"                        ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Expires:"                          ; RFC 1036
     "Expiry-Date:"                      ; RFC 2156
     "Face:"                             ; Gnus Face header
     "Followup-To:"                      ; RFC 1036
-    "For-Approval:"                     ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "For-Comment:"                      ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "For-Handling:"                     ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "For-Approval:"                     ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "For-Comment:"                      ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "For-Handling:"                     ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Forwarded:"                        ; MH
     "From "                             ; sendmail
     "Generate-Delivery-Report:"         ; RFC 2156
@@ -2493,12 +2493,12 @@ of citations entirely, choose \"None\"."
     "Language:"                         ; RFC 2156
     "Lines:"                            ; RFC 1036
     "List-"                             ; RFC 2369, 2919
-    "Mail-Copies-To:"                   ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "Mail-Followup-To:"                 ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Mail-Copies-To:"                   ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Mail-Followup-To:"                 ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Mail-from:"                        ; MH
-    "Mail-Reply-To:"                    ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Mail-Reply-To:"                    ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Mailing-List:"                     ; Egroups/yahoogroups mailing list 
manager
-    "Message-Content:"                  ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Message-Content:"                  ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Message-ID:"                       ; RFC 822 (or later)
     "Message-Type:"                     ; RFC 2156
     "Mime-Version"                      ; RFC 2045
@@ -2516,42 +2516,42 @@ of citations entirely, choose \"None\"."
     "Original-Recipient:"               ; RFC 2298
     "Original-To:"                      ; mail to news
     "Original-X-"                       ; mail to news
-    "Origination-Client:"               ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "Originator:"                       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Origination-Client:"               ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Originator:"                       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "P1-Content-Type:"                  ; X400
     "P1-Message-Id:"                    ; X400
     "P1-Recipient:"                     ; X400
     "Path:"                             ; RFC 1036
     "Pics-Label:"                       ; W3C
-    "Posted-To:"                        ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "Precedence:"                       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Posted-To:"                        ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Precedence:"                       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Prev-Resent"                       ; MH
     "Prevent-NonDelivery-Report:"       ; RFC 2156
     "Priority:"                         ; RFC 2156
-    "Read-Receipt-To:"                  ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Read-Receipt-To:"                  ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Received-SPF:"                     ; Gmail
     "Received:"                         ; RFC 822 (or later)
     "References:"                       ; RFC 822 (or later)
-    "Registered-Mail-Reply-Requested-By:"       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Registered-Mail-Reply-Requested-By:"       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Remailed-"                         ; MH
-    "Replaces:"                         ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Replaces:"                         ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Replied:"                          ; MH
     "Resent-"                           ; RFC 822 (or later)
     "Return-Path:"                      ; RFC 822 (or later)
-    "Return-Receipt-Requested:"         ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "Return-Receipt-To:"                ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Return-Receipt-Requested:"         ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Return-Receipt-To:"                ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Seal-Send-Time:"
     "See-Also:"                         ; H. Spencer: News Article Format and 
Transmission, June 1994
     "Sensitivity:"                      ; RFC 2156, 2421
-    "Speech-Act:"                       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Speech-Act:"                       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Status:"                           ; sendmail
     "Supersedes:"                       ; H. Spencer: News Article Format and 
Transmission, June 1994
-    "Telefax:"                          ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Telefax:"                          ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Thread-"
     "Thread-Index:"
     "Thread-Topic:"
-    "Translated-By:"                    ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "Translation-Of:"                   ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Translated-By:"                    ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "Translation-Of:"                   ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "Ua-Content-Id:"                    ; X400
     "Via:"                              ; MH
     "X-Abuse-and-DMCA-"
@@ -2559,7 +2559,7 @@ of citations entirely, choose \"None\"."
     "X-Accept-Language:"                ; Netscape/Mozilla
     "X-Ack:"
     "X-ACL-Warn:"                      ; http://www.exim.org
-    "X-Admin:"                          ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Admin:"                          ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Administrivia-To:"
     "X-AMAZON"                          ; Amazon.com
     "X-AnalysisOut:"                    ; Exchange
@@ -2594,9 +2594,9 @@ of citations entirely, choose \"None\"."
     "X-CanIt-Geo:"                      ; IEEE spam filter
     "X-Cloudmark-SP-"                  ; Cloudmark (www.cloudmark.com)
     "X-Comment:"                        ; AT&T Mailennium
-    "X-Complaints-To:"                  ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Complaints-To:"                  ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Completed:"
-    "X-Confirm-Reading-To:"             ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Confirm-Reading-To:"             ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Content-Filtered-By:"
     "X-ContentStamp:"                   ; NetZero
     "X-Country-Chain:"                  ; http://www.declude.com/x-note.htm
@@ -2622,13 +2622,13 @@ of citations entirely, choose \"None\"."
     "X-Email-Type-Id:"                 ; Paypal http://www.paypal.com
     "X-Enigmail-Version:"
     "X-Envelope-Date:"                  ; GNU mailutils
-    "X-Envelope-From:"                  ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Envelope-From:"                  ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Envelope-Sender:"
-    "X-Envelope-To:"                    ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Envelope-To:"                    ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-EviteMessageId:"                 ; evite.com
     "X-Evolution:"                      ; Evolution mail client
     "X-ExtLoop"
-    "X-Face:"                           ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Face:"                           ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Facebook"                        ; Facebook
     "X-FB-SS:"
     "X-fmx-"
@@ -2652,7 +2652,7 @@ of citations entirely, choose \"None\"."
     "X-Identity:"                       ; http://www.declude.com/x-note.htm
     "X-IEEE-UCE-"                       ; IEEE spam filter
     "X-Image-URL:"
-    "X-IMAP:"                           ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-IMAP:"                           ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Info:"                           ; NTMail
     "X-IronPort-"                       ; IronPort AV
     "X-ISI-4-30-3-MailScanner:"
@@ -2662,12 +2662,12 @@ of citations entirely, choose \"None\"."
     "X-Juno-"                           ; Juno
     "X-Key:"
     "X-Launchpad-"                      ; plaunchpad.net
-    "X-List-Host:"                      ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-List-Host:"                      ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-List-Subscribe:"                 ; Unknown mailing list managers
     "X-List-Unsubscribe:"               ; Unknown mailing list managers
     "X-Listprocessor-"                  ; ListProc(tm) by CREN
-    "X-Listserver:"                     ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "X-Loop:"                           ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Listserver:"                     ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Loop:"                           ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Lrde-Mailscanner:"
     "X-Lumos-SenderID:"                 ; Roving ConstantContact
     "X-mail_abuse_inquiries:"          ; http://www.salesforce.com
@@ -2693,18 +2693,18 @@ of citations entirely, choose \"None\"."
     "X-MessageWall-Score:"              ; Unknown mailing list manager, AUC TeX
     "X-MHE-Checksum:"                   ; Checksum added during index search
     "X-MIME-Autoconverted:"             ; sendmail
-    "X-MIMEOLE:"                        ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/sendmail
+    "X-MIMEOLE:"                        ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/sendmail
     "X-MIMETrack:"
     "X-Mms-"                            ; T-Mobile pictures
     "X-Mozilla-Status:"                 ; Netscape/Mozilla
     "X-MS-"                             ; MS Outlook
     "X-Msmail-"                         ; MS Outlook
-    "X-MSMail-Priority"                 ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-MSMail-Priority"                 ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-MXL-Hash:"
     "X-NAI-Spam-"                       ; Network Associates Inc. SpamKiller
     "X-News:"                           ; News
-    "X-Newsreader:"                     ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "X-No-Archive:"                     ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Newsreader:"                     ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-No-Archive:"                     ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Notes-Item:"                     ; Lotus Notes Domino structured header
     "X-Notification-"                   ; Google+
     "X-Notifications:"                  ; Google+
@@ -2713,7 +2713,7 @@ of citations entirely, choose \"None\"."
     "X-ORBL:"
     "X-Orcl-Content-Type:"
     "X-Organization:"
-    "X-Original-Arrival-Type:"          ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Original-Arrival-Type:"          ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Original-Complaints-To:"
     "X-Original-Date:"                  ; SourceForge mailing list manager
     "X-Original-To:"
@@ -2733,10 +2733,10 @@ of citations entirely, choose \"None\"."
     "X-Provags-ID:"
     "X-PSTN-"
     "X-Qotd-"                           ; User added
-    "X-RCPT-TO:"                        ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-RCPT-TO:"                        ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Received-Date:"
     "X-Received:"
-    "X-Report-Abuse-To:"                ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Report-Abuse-To:"                ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Request-"
     "X-Resolved-to:"                    ; fastmail.fm
     "X-Return-Path-Hint:"               ; Roving ConstantContact
@@ -2753,7 +2753,7 @@ of citations entirely, choose \"None\"."
     "X-SBRule:"                         ; Spam
     "X-Scanned-By:"
     "X-Sender-ID:"                      ; Google+
-    "X-Sender:"                         ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-Sender:"                         ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Sendergroup:"                   ; Cisco Email Security (formerly 
IronPort; http://www.ironport.com)
     "X-Server-Date:"
     "X-Server-Uuid:"
@@ -2776,11 +2776,11 @@ of citations entirely, choose \"None\"."
     "X-TM-IMSS-Message-ID:"            ; http://www.trendmicro.com
     "X-Trace:"
     "X-UID"
-    "X-UIDL:"                           ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-UIDL:"                           ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-Unity"
     "X-UNTD-"                           ; NetZero
-    "X-URI:"                            ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
-    "X-URL:"                            ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-URI:"                            ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-URL:"                            ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-USANET-"                         ; usa.net
     "X-Usenet-Provider"
     "X-UserInfo1:"
@@ -2792,7 +2792,7 @@ of citations entirely, choose \"None\"."
     "X-VSMLoop:"                        ; NTMail
     "X-WebTV-Signature:"
     "X-Wss-Id:"                         ; Worldtalk gateways
-    "X-X-Sender:"                       ; 
http://people.dsv.su.se/~jpalme/ietf/mail-headers/
+    "X-X-Sender:"                       ; 
https://people.dsv.su.se/~jpalme/ietf/mail-headers/
     "X-XPT-XSL-Name:"                  ; Paypal http://www.paypal.com
     "X-xsi-"
     "X-XWALL-"                         ; 
http://www.dataenter.co.at/doc/xwall_undocumented_config.htm
@@ -3036,7 +3036,7 @@ supports it.
 The first header field used, if present, is the Gnus-specific
 \"Face:\" field. The \"Face:\" field appeared in GNU Emacs 21 and
 XEmacs. For more information, see URL
-`http://quimby.gnus.org/circus/face/'. Next is the traditional
+`https://quimby.gnus.org/circus/face/'. Next is the traditional
 \"X-Face:\" header field. The display of this field requires the
 \"uncompface\" program (see URL
 `ftp://ftp.cs.indiana.edu/pub/faces/compface/compface.tar.z'). Recent
@@ -3049,7 +3049,7 @@ header field if neither the \"Face:\" nor the \"X-Face:\" 
fields are
 present. The display of the images requires \"wget\" (see URL
 `https://www.gnu.org/software/wget/wget.html'), \"fetch\", or \"curl\"
 to fetch the image and the \"convert\" program from the ImageMagick
-suite (see URL `http://www.imagemagick.org/'). Of the three header
+suite (see URL `https://www.imagemagick.org/'). Of the three header
 fields this is the most efficient in terms of network usage since the
 image doesn't need to be transmitted with every single mail.
 
diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el
index eea04c6..ebc5038 100644
--- a/lisp/mh-e/mh-junk.el
+++ b/lisp/mh-e/mh-junk.el
@@ -58,7 +58,7 @@ program, see:
 (defun mh-blacklist-a-msg (message)
   "Blacklist MESSAGE.
 If MESSAGE is nil then the message at point is blacklisted.
-The hook `mh-blacklisted-msg-hook' is called after you mark a message
+The hook `mh-blacklist-msg-hook' is called after you mark a message
 for blacklisting."
   (save-excursion
     (if (numberp message)
diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el
index fc30187..43a589a 100644
--- a/lisp/mh-e/mh-thread.el
+++ b/lisp/mh-e/mh-thread.el
@@ -26,7 +26,7 @@
 
 ;; The threading portion of this files tries to implement the
 ;; algorithm described at:
-;;   http://www.jwz.org/doc/threading.html
+;;   https://www.jwz.org/doc/threading.html
 ;; It also begins to implement the threading section of the IMAP -
 ;; SORT and THREAD Extensions RFC at:
 ;;   http://tools.ietf.org/html/rfc5256
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 3e23c05..427636e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -3110,12 +3110,12 @@ or a symbol, see `completion-pcm--merge-completions'."
     (while p
       (pcase p
         (`(,(or 'any 'any-delim) point . ,rest) (setq p `(point . ,rest)))
-        ;; This is not just a performance improvement: it also turns
-        ;; a terminating `point' into an implicit `any', which
-        ;; affects the final position of point (because `point' gets
-        ;; turned into a non-greedy ".*?" regexp whereas we need
-        ;; it the be greedy when it's at the end, see bug#38458).
-        (`(,(pred symbolp)) (setq p nil)) ;Implicit terminating `any'.
+        ;; This is not just a performance improvement: it turns a
+        ;; terminating `point' into an implicit `any', which affects
+        ;; the final position of point (because `point' gets turned
+        ;; into a non-greedy ".*?" regexp whereas we need it to be
+        ;; greedy when it's at the end, see bug#38458).
+        (`(point) (setq p nil)) ;Implicit terminating `any'.
         (_ (push (pop p) n))))
     (nreverse n)))
 
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 958c10a..6ec10fe 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -236,11 +236,7 @@ set in `multi-isearch-buffers' or 
`multi-isearch-buffers-regexp'."
         (buf nil)
         (ido-ignore-item-temp-list bufs))
     (while (not (string-equal
-                (setq buf (read-buffer
-                           (if (eq read-buffer-function #'ido-read-buffer)
-                               "Next buffer to search (C-j to end): "
-                             "Next buffer to search (RET to end): ")
-                           nil t))
+                (setq buf (read-buffer (multi-occur--prompt) nil t))
                 ""))
       (add-to-list 'bufs buf)
       (setq ido-ignore-item-temp-list bufs))
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 06fdca1..9e7eee6 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -2206,8 +2206,8 @@ and selects that window."
          ;; Sort the list to put the most popular major modes first.
          (setq split-by-major-mode
                (sort split-by-major-mode
-                     (function (lambda (elt1 elt2)
-                                 (> (length elt1) (length elt2))))))
+                      (lambda (elt1 elt2)
+                        (> (length elt1) (length elt2)))))
          ;; Make a separate submenu for each major mode
          ;; that has more than one buffer,
          ;; unless all the remaining buffers are less than 1/10 of them.
@@ -2248,8 +2248,8 @@ and selects that window."
        head)
     (setq buffers
          (sort buffers
-               (function (lambda (elt1 elt2)
-                           (string< (buffer-name elt1) (buffer-name elt2))))))
+                (lambda (elt1 elt2)
+                  (string< (buffer-name elt1) (buffer-name elt2)))))
     (setq tail buffers)
     (while tail
       (or (eq ?\s (aref (buffer-name (car tail)) 0))
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index 23ba191..48712a9 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -165,6 +165,9 @@ See URL 
`https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-b
 ;;   </signal>
 ;; </interface>
 
+(defconst dbus-annotation-deprecated (concat dbus-interface-dbus ".Deprecated")
+  "An annotation indicating a deprecated interface, method, signal, or 
property.")
+
 
 ;;; Default D-Bus errors.
 
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 1ed87c6..fd9fe98 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -450,11 +450,11 @@ killed after rendering."
 
 ;;;###autoload
 (defun eww-search-words ()
-  "Search the web for the text between BEG and END.
+  "Search the web for the text in the region.
 If region is active (and not whitespace), search the web for
-the text between BEG and END.  Else, prompt the user for a search
-string.  See the `eww-search-prefix' variable for the search
-engine used."
+the text between region beginning and end.  Else, prompt the
+user for a search string.  See the variable `eww-search-prefix'
+for the search engine used."
   (interactive)
   (if (use-region-p)
       (let ((region-string (buffer-substring (region-beginning) (region-end))))
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index e713c94..8ad7219 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -348,8 +348,11 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
                             (t nil))))
          (min-prime-bits (or min-prime-bits gnutls-min-prime-bits)))
 
-    (when verify-hostname-error
-      (push :hostname verify-error))
+    ;; Only add :hostname if `verify-error' is not t, since t
+    ;; means "include :hostname" Bug#38602.
+    (and verify-hostname-error
+         (not (eq verify-error t))
+         (push :hostname verify-error))
 
     `(:priority ,priority-string
                 :hostname ,hostname
diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el
index ef3651b..8c7d33a 100644
--- a/lisp/net/net-utils.el
+++ b/lisp/net/net-utils.el
@@ -771,7 +771,7 @@ This command uses `smbclient-program' to connect to HOST."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;; Full list is available at:
-;; http://www.iana.org/assignments/port-numbers
+;; https://www.iana.org/assignments/port-numbers
 (defvar network-connection-service-alist
   (list
     (cons 'echo          7)
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index b8f1bcc..f45abf7 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -68,9 +68,6 @@ considered to be running if the newsticker timer list is not 
empty."
 ;; Hard-coding URLs like this is a recipe for propagating obsolete info.
 (defconst newsticker--raw-url-list-defaults
   '(
-    ;; 2017/12: no response.
-;;;    ("CNET News.com"
-;;;     "http://export.cnet.com/export/feeds/news/rss/1,11176,,00.xml";)
     ("Debian Security Advisories"
     "http://www.debian.org/security/dsa.en.rdf";)
     ("Debian Security Advisories - Long format"
@@ -81,11 +78,6 @@ considered to be running if the newsticker timer list is not 
empty."
     3600)
     ("LWN (Linux Weekly News)"
     "https://lwn.net/headlines/rss";)
-    ;; Not updated since 2010.
-;;;    ("NY Times: Technology"
-;;;    "http://www.nytimes.com/services/xml/rss/userland/Technology.xml";)
-;;;    ("NY Times"
-;;;    "http://www.nytimes.com/services/xml/rss/userland/HomePage.xml";)
     ("Quote of the day"
     "http://feeds.feedburner.com/quotationspage/qotd";
     "07:00"
@@ -898,7 +890,7 @@ Argument BUFFER is the buffer of the retrieval process."
                   ;; Atom 1.0 feed.
 
                   ;; (and (eq 'feed (xml-node-name topnode))
-                  ;;      (string= "http://www.w3.org/2005/Atom";
+                  ;;      (string= "https://www.w3.org/2005/Atom";
                   ;;               (xml-get-attribute topnode 'xmlns)))
                   (setq image-url (newsticker--get-logo-url-atom-1.0 topnode))
                   (setq icon-url (newsticker--get-icon-url-atom-1.0 topnode))
diff --git a/lisp/net/newsticker.el b/lisp/net/newsticker.el
index 6329e76..535122a 100644
--- a/lisp/net/newsticker.el
+++ b/lisp/net/newsticker.el
@@ -54,7 +54,7 @@
 ;; as well as the following Atom formats:
 ;;  * Atom 0.3
 ;;  * Atom 1.0
-;;    (see 
http://www.ietf.org/internet-drafts/draft-ietf-atompub-format-11.txt)
+;;    (see 
https://www.ietf.org/internet-drafts/draft-ietf-atompub-format-11.txt)
 ;; That makes Newsticker.el an "Atom aggregator, "RSS reader", "RSS
 ;; aggregator", and "Feed Reader".
 
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index cc22427..2b30040 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -164,7 +164,7 @@ STATUS SETTINGS.  HOST is the host domain, PORT is a TCP 
port
 number, STATUS is the peer status returned by
 `gnutls-peer-status', and SETTINGS is the persistent and session
 settings for the host HOST.  Please refer to the contents of
-`nsm-setting-file' for details.  If a problem is found, the check
+`nsm-settings-file' for details.  If a problem is found, the check
 function is required to return an error message, and nil
 otherwise.
 
diff --git a/lisp/net/puny.el b/lisp/net/puny.el
index cc40607..5c58fe0 100644
--- a/lisp/net/puny.el
+++ b/lisp/net/puny.el
@@ -23,7 +23,7 @@
 ;;; Commentary:
 
 ;; Written by looking at
-;; 
http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion
+;; 
https://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion
 
 ;;; Code:
 
@@ -196,12 +196,12 @@ For instance \"xn--bcher-kva\" => \"bücher\"."
         (cl-incf i)))
     (buffer-string)))
 
-;; http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
-;; 
http://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Inclusion_in_Identifiers
+;; https://www.unicode.org/reports/tr39/#Restriction_Level_Detection
+;; 
https://www.unicode.org/reports/tr31/#Table_Candidate_Characters_for_Inclusion_in_Identifiers
 
 (defun puny-highly-restrictive-string-p (string)
   "Say whether STRING is \"highly restrictive\" in the Unicode IDNA sense.
-See http://www.unicode.org/reports/tr39/#Restriction_Level_Detection
+See https://www.unicode.org/reports/tr39/#Restriction_Level_Detection
 for details.  The main idea is that if you're mixing
 scripts (like latin and cyrillic), you may confuse the user by
 using homographs."
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 10d061f..dc1b468 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -23,7 +23,7 @@
 ;;; Commentary:
 
 ;; This package provides an implementation of the Secret Service API
-;; <http://www.freedesktop.org/wiki/Specifications/secret-storage-spec>.
+;; <https://www.freedesktop.org/wiki/Specifications/secret-storage-spec>.
 ;; This API is meant to make GNOME-Keyring- and KWallet-like daemons
 ;; available under a common D-BUS interface and thus increase
 ;; interoperability between GNOME, KDE and other applications having
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index f07d214..241ce9e 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -2078,7 +2078,7 @@ This is a specialization of `soap-decode-type' for
   soap-headers                          ; list of (message part use)
   soap-body                             ;  message parts present in the body
   use                                   ; 'literal or 'encoded, see
-                                        ; http://www.w3.org/TR/wsdl#_soap:body
+                                        ; https://www.w3.org/TR/wsdl#_soap:body
   )
 
 (cl-defstruct (soap-binding (:include soap-element))
@@ -2111,6 +2111,8 @@ This is a specialization of `soap-decode-type' for
 
     ;; Add the XSD types to the wsdl document
     (let ((ns (soap-make-xs-basic-types
+               ;; The following string is a name and not an URL, so
+               ;; the "http:" should not be changed.
                "http://www.w3.org/2001/XMLSchema"; "xsd")))
       (soap-wsdl-add-namespace ns wsdl)
       (soap-wsdl-add-alias "xsd" (soap-namespace-name ns) wsdl))
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index 218594b..c554a8d 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -45,6 +45,14 @@
 (declare-function tramp-handle-temporary-file-directory "tramp")
 (defvar tramp-temp-name-prefix)
 
+(defconst tramp-compat-emacs-compiled-version (eval-when-compile emacs-version)
+  "The Emacs version used for compilation.")
+
+(unless (= emacs-major-version
+          (car (version-to-list tramp-compat-emacs-compiled-version)))
+  (warn "Tramp has been compiled with Emacs %s, this is Emacs %s"
+       tramp-compat-emacs-compiled-version emacs-version))
+
 ;; For not existing functions, obsolete functions, or functions with a
 ;; changed argument list, there are compiler warnings.  We want to
 ;; avoid them in cases we know what we do.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index a51edae..15eab0a 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -756,7 +756,7 @@ for($i = 0; $i < $n; $i++)
         $stat[1]);
 }
 printf(\")\\n\");' \"$1\" \"$2\" 2>/dev/null"
-  "Perl script implementing `directory-files-attributes' as Lisp `read'able
+  "Perl script implementing `directory-files-and-attributes' as Lisp `read'able
 output.
 Escape sequence %s is replaced with name of Perl binary.
 This string is passed to `format', so percent characters need to be doubled.")
@@ -4408,7 +4408,7 @@ process to set up.  VEC specifies the connection."
 
     ;; IRIX64 bash expands "!" even when in single quotes.  This
     ;; destroys our shell functions, we must disable it.  See
-    ;; 
<http://stackoverflow.com/questions/3291692/irix-bash-shell-expands-expression-in-single-quotes-yet-shouldnt>.
+    ;; 
<https://stackoverflow.com/questions/3291692/irix-bash-shell-expands-expression-in-single-quotes-yet-shouldnt>.
     (when (string-match-p "^IRIX64" uname)
       (tramp-send-command vec "set +H" t))
 
diff --git a/lisp/notifications.el b/lisp/notifications.el
index e6ce9a5..3c2a8cf 100644
--- a/lisp/notifications.el
+++ b/lisp/notifications.el
@@ -108,7 +108,7 @@
        (setq notifications-on-action-object nil)))))
 
 (defun notifications-on-closed-signal (id &optional reason)
-  "Dispatch signals to callback functions from `notifications-on-closed-map'."
+  "Dispatch signals to callback functions from `notifications-on-close-map'."
   ;; notification-daemon prior 0.4.0 does not send a reason.  So we
   ;; make it optional, and assume `undefined' as default.
   (let* ((bus (dbus-event-bus-name last-input-event))
diff --git a/lisp/obsolete/erc-hecomplete.el b/lisp/obsolete/erc-hecomplete.el
index 8f55428..cd26ede 100644
--- a/lisp/obsolete/erc-hecomplete.el
+++ b/lisp/obsolete/erc-hecomplete.el
@@ -4,7 +4,7 @@
 ;; Inc.
 
 ;; Author: Alex Schroeder <alex@gnu.org>
-;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion
+;; URL: https://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion
 ;; Obsolete-since: 24.1
 
 ;; This file is part of GNU Emacs.
diff --git a/lisp/org/ChangeLog.1 b/lisp/org/ChangeLog.1
index 65d60be..ef62ae7 100644
--- a/lisp/org/ChangeLog.1
+++ b/lisp/org/ChangeLog.1
@@ -1615,7 +1615,7 @@
        (org-babel-load-in-session-maybe, org-babel-pop-to-session-maybe):
        Use it.
        (org-babel-execute-src-block): Use `copy-tree' to prevent setf
-       from modifying users variables withing let-bound `info' variable.
+       from modifying users variables within let-bound `info' variable.
 
        * ob-exp.el (org-export-babel-evaluate): Add a 'inline-only
        option.
@@ -1821,7 +1821,7 @@
        it is an ARRAY ref, otherwise print it without a final newline.
        (org-babel-perl-preface): Content of this variable is prepended to
        body before invocation of perl.  Rename input parameter body to
-       ibody and let-bind body to concatentation of
+       ibody and let-bind body to concatenation of
        `org-babel-perl-preface' and ibody.  Implement results
        interpretation so that tables are easier to produce.
 
@@ -3142,7 +3142,7 @@
        relatively to the current timestamp, not to today's date.
 
        * org-agenda.el (org-agenda-filter-apply):
-       Deactive `org-agenda-entry-text-mode' when filtering.
+       Deactivate `org-agenda-entry-text-mode' when filtering.
        (org-agenda-entry-text-mode): Don't allow in filtered views.
        Don't show the maximum number of lines when turning off.
 
@@ -3439,7 +3439,7 @@
        (org-edit-src-exit): Cancel the timer.
        (org-edit-src-save): Prevent saving when editing fixed-width
        buffer, exiting will save already.
-       (org-edit-src-exit): Inconditionally kill the src/example
+       (org-edit-src-exit): Unconditionally kill the src/example
        editing buffer.
 
        * org-pcomplete.el (pcomplete/org-mode/file-option):
@@ -3490,7 +3490,7 @@
 
        * org-pcomplete.el (pcomplete/org-mode/file-option/x):
        Resurrect.  Use `org-default-options' to initialize completion
-       fonctions for the most important keywords.
+       functions for the most important keywords.
 
        * org-macs.el (org-default-options): Rename and adapt from
        `org-get-current-options'.
@@ -3588,7 +3588,7 @@
        new sorting strategies.
        (org-agenda-get-todos, org-agenda-get-timestamps)
        (org-agenda-get-deadlines, org-agenda-get-scheduled): Add a
-       `ts-date' text property with scheduled, deadline or timetamp
+       `ts-date' text property with scheduled, deadline or timestamp
        date.
        (org-cmp-ts): New function to compare timestamps.
        (org-em): Add a docstring.
@@ -4800,7 +4800,7 @@
        (org-element-timestamp-interpreter): Parse warning delays.
 
        * ox-beamer.el (org-beamer--format-section): Fix regression which
-       prevents frames from being propely exported.
+       prevents frames from being properly exported.
 
        * ox.el (org-export-with-backend): Ensure function will use
        provided back-end.
@@ -4888,7 +4888,7 @@
        which is always nil in this back-end.
 
        * org.el (org-adaptive-fill-function): Look for a fill prefix at
-       the beginning of the paragraph and subsquently on its second line
+       the beginning of the paragraph and subsequently on its second line
        instead of the current line.
 
        * ob-core.el (org-babel-get-src-block-info): Look for indentation
@@ -5595,7 +5595,7 @@
        (org-export-async-start): Do not call `org-mode' since this is done
        already in the previous function.
 
-       * ox-beamer.el (org-beamer-keyword): Remove frame arount toc when
+       * ox-beamer.el (org-beamer-keyword): Remove frame around toc when
        generated from a TOC keyword.
 
        * org.el (org-export-backends): Do not reset list of loaded
@@ -5629,7 +5629,7 @@
        during a body-only export.
 
        * ox.el (org-export-as): Store export options in :export-options
-       porperty within communication channel.
+       property within communication channel.
 
        * ox-latex.el (org-latex-item): Fix wrong behavior when a counter
        is set in an ordered list while its parent is not ordered.
@@ -5714,7 +5714,7 @@
        (org-create-formula-image-with-dvipng)
        (org-create-formula-image-with-imagemagick): Use new function.
 
-       * ox.el (org-export-get-previous-element): Change order of retured
+       * ox.el (org-export-get-previous-element): Change order of returned
        elements in `org-export-get-previous-element'.
 
        * org-element.el (org-element-all-successors): Add `plain-link'
@@ -5839,10 +5839,10 @@
        Remove reference to now renamed `e-ascii' back-end.
 
        * ox-beamer.el (org-beamer-template): Allow to span documentclass
-       options accross multiple lines in template.
+       options across multiple lines in template.
 
        * ox-latex.el (org-latex-template): Allow to span documentclass
-       options accross multiple lines in template.
+       options across multiple lines in template.
 
        * ox-texinfo.el (org-texinfo--get-node): Upcase property name.
        (org-texinfo--get-node): New function.
@@ -6524,7 +6524,7 @@
        * org.el (org-open-at-point): The new code is being run in the
        same spot as `org-open-link-functions'.  In case they failed,
        check if link matches "^id:" and if so, load the id interface and
-       follwo the link.
+       follow the link.
 
 2013-11-12  Rasmus Pank Roulund  <rasmus@gmx.us>  (tiny change)
 
@@ -6717,7 +6717,7 @@
 2013-11-12  Vitalie Spinu  <spinuvit@gmail.com>
 
        * ob-tangle.el (org-babel-find-file-noselect-refresh):
-       Call `find-file-noselect' with 'nowarn argument to surpress
+       Call `find-file-noselect' with 'nowarn argument to suppress
        `yes-or-no-p' reversion message.
 
        * ob-core.el (org-babel-where-is-src-block-head):
@@ -6990,7 +6990,7 @@
        docstrings.  Also fix typos.
 
        * org-list.el (org-list-struct-fix-box): When a checkbox has to be
-       resetted because of a non-nil ORDERED property value, make sure it
+       reset because of a non-nil ORDERED property value, make sure it
        had a checkbox already.
 
 2013-02-07  Tokuya Kameshima  <kametoku@gmail.com>  (tiny change)
@@ -9533,7 +9533,7 @@
        * org-latex.el (org-export-latex-make-header): Ditto.
 
        * org-clock.el (org-clocktable-write-default): Temporarily disable
-       `delete-active-region' so that we don't accidently delete an
+       `delete-active-region' so that we don't accidentally delete an
        active region when exporting a subtree/region.
 
        * org-clock.el (org-program-exists): Remove.
@@ -10419,7 +10419,7 @@
        space character when auto-filling.
 
        * org.el (org-mode): Call external initalizers.  Now both filling
-       code and comments code have their own independant part in org.el.
+       code and comments code have their own independent part in org.el.
        (org-setup-filling): Rename from `org-set-autofill-regexps'.
        (org-setup-comments-handling): New function.
 
@@ -10652,7 +10652,7 @@
        (org-list-struct-apply-struct, org-insert-item): Remove rule
        check.
 
-       * org-footnote.el (org-footnote-normalize): Fix positionning in
+       * org-footnote.el (org-footnote-normalize): Fix positioning in
        HTML export without a footnote section.
 
        * org-list.el (org-list-struct-indent):
@@ -11318,7 +11318,7 @@
 2012-04-01  Shaun Johnson  <shaun@slugfest.demon.co.uk>  (tiny change)
 
        * org-exp-blocks.el (org-ditaa-jar-path): Better heuristic to find
-       the libary name.
+       the library name.
 
 2012-04-01  Suvayu Ali  <fatkasuvayu+linux@gmail.com>
 
@@ -11917,7 +11917,7 @@
 2012-04-01  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-footnote.el (org-footnote-at-definition-p): Make sure to
-       move point at the beginning of the separator before skiping white
+       move point at the beginning of the separator before skipping white
        spaces.  Refactor code.
 
 2012-04-01  Eric Schulte  <eric.schulte@gmx.com>
@@ -13692,7 +13692,7 @@
 2012-01-03  Carsten Dominik  <carsten.dominik@gmail.com>
 
        * org-publish.el (org-publish-cache-file-needs-publishing):
-       Fix regexp to not inlcude newlines.
+       Fix regexp to not include newlines.
 
 2012-01-03  Carsten Dominik  <carsten.dominik@gmail.com>
 
@@ -14560,7 +14560,7 @@
 2012-01-03  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-footnote.el (org-footnote-normalize): Effectively remove
-       any footnote tag in non Org buffers, as detailled in the
+       any footnote tag in non Org buffers, as detailed in the
        docstring of `org-footnote-tag-for-non-org-mode-files'.
 
 2012-01-03  Nicolas Goaziou  <n.goaziou@gmail.com>
@@ -15622,7 +15622,7 @@
 2011-07-28  David Maus  <dmaus@ictsoc.de>
 
        * ob-haskell.el (org-babel-haskell-export-to-lhs):
-       Call `kill-buffer' with argument indiciating to kill current
+       Call `kill-buffer' with argument indicating to kill current
        buffer.  Emacs 22 compatibility.
 
 2011-07-28  David Maus  <dmaus@ictsoc.de>
@@ -18049,7 +18049,7 @@
 
        * org-table.el (org-table-fedit-finish): Read more general LHS of
        formulas.
-       (org-table-formula-handle-@L): New function to hanle @L references.
+       (org-table-formula-handle-@L): New function to handle @L references.
        (org-table-current-ncol): New variable.
        (org-table-line-to-dline): New function.
        (org-table-get-stored-formulas): Accept range formulas as matches.
@@ -18058,7 +18058,7 @@
        only the region marked by the range, not the content.
        (org-table-recalculate): Call `org-table-expand-lhs-ranges' to expand
        range targets.  Also check for duplicate access to fields.
-       (org-table-expand-lhs-ranges): New funktion.
+       (org-table-expand-lhs-ranges): New function.
        (org-table-get-remote-range): Bind `org-table-current-ncol' to protect
        the caller's value.
        (org-table-edit-formulas): Support highlighting of range targets.
@@ -19339,8 +19339,8 @@
 
        * org-crypt.el (org-encrypt-string): New function.
        (org-encrypt-entry): Use org-encrypt-string to encrypt, so we use
-       cached crypted values.
-       (org-decrypt-entry): Store crypted text in decrypted text.
+       cached encrypted values.
+       (org-decrypt-entry): Store encrypted text in decrypted text.
 
 2011-07-28  Dan Davison  <dandavison7@gmail.com>
 
@@ -20331,7 +20331,7 @@
 2010-12-11  Carsten Dominik  <carsten.dominik@gmail.com>
 
        * org-clock.el (org-quarter-to-date): Define variables.
-       (org-clock-special-range): Defin variables.  Use org-floor*.
+       (org-clock-special-range): Define variables.  Use org-floor*.
        (org-clocktable-write-default): Define tcol.
 
        * org-compat.el (org-floor*): New function.
@@ -22854,7 +22854,7 @@
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
        * org-list.el (org-cycle-item-indentation): Do return t if and
-       only if cycling is possible and succeded.
+       only if cycling is possible and succeeded.
 
 2010-11-11  Nicolas Goaziou  <n.goaziou@gmail.com>
 
@@ -28181,7 +28181,7 @@
        * org-src.el (org-src-lang-modes): New variable.
        (org-edit-src-code): Translate language.
 
-       * org-exp.el (org-export-format-source-code-or-example): Deal wit
+       * org-exp.el (org-export-format-source-code-or-example): Deal with
        the new structure of the `org-export-latex-listings-langs'
        variable.
 
@@ -28529,7 +28529,7 @@
 
        * org.el (org-adapt-indentation): Slightly improve the docstring.
        (org-occur): Sends an error when the user inputs an empty string.
-       (org-priority): Bugfix: the tag alignement should happen within
+       (org-priority): Bugfix: the tag alignment should happen within
        save-excursion.
 
 2009-08-06  Bastien Guerry  <bzg@gnu.org>
@@ -28830,7 +28830,7 @@
 
        * org-agenda.el (org-agenda-mode): Reset list of marks.
        (org-agenda-mode-map): Define new keys for refile and bulk action.
-       (org-agenda-menu): Add menu itesm for refile and bulk action.
+       (org-agenda-menu): Add menu items for refile and bulk action.
        (org-agenda-refile): New function.
        (org-agenda-set-tags): Optional arguments TAG and ONOFF.
        (org-agenda-marked-entries): New variable.
@@ -29490,7 +29490,7 @@
        New functions.
        (org-protocol-check-filename-for-protocol): Call `server-edit'.
 
-       * org.el (org-default-properties): New default properteis for
+       * org.el (org-default-properties): New default properties for
        completion.
 
        * org-exp.el (org-export-add-subtree-options): Add new properties
@@ -29842,7 +29842,7 @@
        * org-faces.el (org-checkbox): New face.
 
        * org-exp.el (org-export-html-preprocess): Only create LaTeX
-       fragement images if there is an export file.
+       fragment images if there is an export file.
 
 2009-08-06  Carsten Dominik  <carsten.dominik@gmail.com>
 
@@ -30465,7 +30465,7 @@
        workings of `org-toggle-heading'.
        (org-toggle-item): Rename from `org-toggle-region-items'.
        No longer needs a region defined, but will use it if there is one.
-       (org-ctrl-c-minus): Simplify, relying more on the inernal
+       (org-ctrl-c-minus): Simplify, relying more on the internal
        workings of `org-toggle-item'.
 
        * org-export-latex.el (org-export-latex-preprocess): Fix bug in
@@ -30674,7 +30674,7 @@
        converter.
 
        * org-exp.el (org-export-preprocess-string): Remove clock lines
-       and timestamps already in the preprocesor.
+       and timestamps already in the preprocessor.
        (org-export-remove-timestamps, org-export-remove-clock-lines):
        New functions.
        (org-export-as-ascii, org-export-as-html): Add the timestamps
@@ -31158,14 +31158,14 @@
 2008-11-24  Carsten Dominik  <carsten.dominik@gmail.com>
 
        * org-agenda.el (org-get-closed): Re-apply changes
-       accidentially overwritten by last commit to Emacs.
+       accidentally overwritten by last commit to Emacs.
 
        * org.el (org-outline-path-complete-in-steps): New option.
        (org-refile-get-location):
        Honor `org-outline-path-complete-in-steps'.
        (org-agenda-change-all-lines, org-tags-sparse-tree)
        (org-time-string-to-absolute, org-small-year-to-year)
-       (org-link-escape): Re-apply changes accidentially overwritten
+       (org-link-escape): Re-apply changes accidentally overwritten
        by last commit to Emacs.
 
 2008-11-23  Carsten Dominik  <carsten.dominik@gmail.com>
diff --git a/lisp/org/ob-plantuml.el b/lisp/org/ob-plantuml.el
index 5bf9e2b..49886e2 100644
--- a/lisp/org/ob-plantuml.el
+++ b/lisp/org/ob-plantuml.el
@@ -26,7 +26,7 @@
 ;; Org-Babel support for evaluating plantuml script.
 ;;
 ;; Inspired by Ian Yang's org-export-blocks-format-plantuml
-;; http://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el
+;; https://www.emacswiki.org/emacs/org-export-blocks-format-plantuml.el
 
 ;;; Requirements:
 
diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el
index 9095627..1b8088e 100644
--- a/lisp/org/ob-ruby.el
+++ b/lisp/org/ob-ruby.el
@@ -30,10 +30,10 @@
 ;; - ruby and irb executables :: http://www.ruby-lang.org/
 ;;
 ;; - ruby-mode :: Can be installed through ELPA, or from
-;;   http://github.com/eschulte/rinari/raw/master/util/ruby-mode.el
+;;   https://github.com/eschulte/rinari/raw/master/util/ruby-mode.el
 ;;
 ;; - inf-ruby mode :: Can be installed through ELPA, or from
-;;   http://github.com/eschulte/rinari/raw/master/util/inf-ruby.el
+;;   https://github.com/eschulte/rinari/raw/master/util/inf-ruby.el
 
 ;;; Code:
 (require 'ob)
diff --git a/lisp/org/ob-sass.el b/lisp/org/ob-sass.el
index 60c081d..c101574 100644
--- a/lisp/org/ob-sass.el
+++ b/lisp/org/ob-sass.el
@@ -35,7 +35,7 @@
 
 ;;; Requirements:
 
-;; - sass-mode :: http://github.com/nex3/haml/blob/master/extra/sass-mode.el
+;; - sass-mode :: https://github.com/nex3/haml/blob/master/extra/sass-mode.el
 
 ;;; Code:
 (require 'ob)
diff --git a/lisp/org/ob-stan.el b/lisp/org/ob-stan.el
index c563a6c..678047c 100644
--- a/lisp/org/ob-stan.el
+++ b/lisp/org/ob-stan.el
@@ -41,7 +41,7 @@
 ;; For more information and usage examples, visit
 ;; https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html
 ;;
-;; [1] http://mc-stan.org/
+;; [1] https://mc-stan.org/
 
 ;;; Code:
 (require 'ob)
diff --git a/lisp/org/ol-bibtex.el b/lisp/org/ol-bibtex.el
index ad66227..f139d64 100644
--- a/lisp/org/ol-bibtex.el
+++ b/lisp/org/ol-bibtex.el
@@ -318,7 +318,7 @@ is non-nil."
   "Controls whether inherited tags are converted to bibtex keywords.
 It is relevant only if `org-bibtex-tags-are-keywords' is non-nil.
 Tag inheritance itself is controlled by `org-use-tag-inheritance'
-and `org-exclude-tags-from-inheritance'."
+and `org-tags-exclude-from-inheritance'."
   :group 'org-bibtex
   :version "26.1"
   :package-version '(Org . "8.3")
diff --git a/lisp/org/org-num.el b/lisp/org/org-num.el
index a6ddce7..5b8e1db 100644
--- a/lisp/org/org-num.el
+++ b/lisp/org/org-num.el
@@ -131,7 +131,7 @@ For example, add \"ARCHIVE\" to this list to avoid numbering
 archived sub-trees.
 
 Tag in this list prevent numbering the whole sub-tree,
-irrespective to `org-use-tags-inheritance', or other means to
+irrespective to `org-use-tag-inheritance', or other means to
 control tag inheritance."
   :group 'org-appearance
   :package-version '(Org . "9.3")
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index abba299..5c37cb1 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -6122,7 +6122,7 @@ which will prompt for the width."
 ;; Here are two examples of different styles.
 
 ;; Unicode block characters are used to give a smooth effect.
-;; See http://en.wikipedia.org/wiki/Block_Elements
+;; See https://en.wikipedia.org/wiki/Block_Elements
 ;; Use one of those drawing functions
 ;; - orgtbl-ascii-draw   (the default ascii)
 ;; - orgtbl-uc-draw-grid (unicode with a grid effect)
@@ -6136,7 +6136,7 @@ which will prompt for the width."
 It is a variant of orgtbl-ascii-draw with Unicode block
 characters, for a smooth display.  Bars appear as grids (to the
 extent the font allows)."
-  ;; http://en.wikipedia.org/wiki/Block_Elements
+  ;; https://en.wikipedia.org/wiki/Block_Elements
   ;; best viewed with the "DejaVu Sans Mono" font.
   (orgtbl-ascii-draw value min max width
                     " \u258F\u258E\u258D\u258C\u258B\u258A\u2589"))
diff --git a/lisp/org/org.el b/lisp/org/org.el
index f1a7f61..7733198 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -2059,7 +2059,7 @@ taken from the (otherwise obsolete) variable 
`org-todo-interpretation'."
                   (choice
                    :tag "Interpretation"
                    ;;Quick and dirty way to see
-                   ;;`org-todo-interpretations'.  This takes the
+                    ;;`org-todo-interpretation'.  This takes the
                    ;;place of item arguments
                    :convert-widget
                    (lambda (widget)
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 797efb9..2f8fd0c 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -5459,7 +5459,7 @@ transcoding it."
      (apostrophe :utf-8 "’" :html "&rsquo;"))
     ("da"
      ;; one may use: »...«, "...", ›...‹, or '...'.
-     ;; 
http://sproget.dk/raad-og-regler/retskrivningsregler/retskrivningsregler/a7-40-60/a7-58-anforselstegn/
+     ;; 
https://sproget.dk/raad-og-regler/retskrivningsregler/retskrivningsregler/a7-40-60/a7-58-anforselstegn/
      ;; LaTeX quotes require Babel!
      (primary-opening
       :utf-8 "»" :html "&raquo;" :latex ">>" :texinfo "@guillemetright{}")
@@ -5553,7 +5553,7 @@ transcoding it."
      (secondary-closing :utf-8 "’" :html "&rsquo;" :latex "'" :texinfo "'")
      (apostrophe :utf-8 "’" :html "&rsquo;"))
     ("ru"
-     ;; 
http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B2%D1%8B%D1%87%D0%BA%D0%B8#.D0.9A.D0.B0.D0.B2.D1.8B.D1.87.D0.BA.D0.B8.2C_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B5.D0.BC.D1.8B.D0.B5_.D0.B2_.D1.80.D1.83.D1.81.D1.81.D0.BA.D0.BE.D0.BC_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B5
+     ;; 
https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B2%D1%8B%D1%87%D0%BA%D0%B8#.D0.9A.D0.B0.D0.B2.D1.8B.D1.87.D0.BA.D0.B8.2C_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D1.83.D0.B5.D0.BC.D1.8B.D0.B5_.D0.B2_.D1.80.D1.83.D1.81.D1.81.D0.BA.D0.BE.D0.BC_.D1.8F.D0.B7.D1.8B.D0.BA.D0.B5
      ;; http://www.artlebedev.ru/kovodstvo/sections/104/
      (primary-opening :utf-8 "«" :html "&laquo;" :latex "{}<<"
                      :texinfo "@guillemetleft{}")
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el
index 9d346cf..13de4b6 100644
--- a/lisp/pcmpl-unix.el
+++ b/lisp/pcmpl-unix.el
@@ -148,7 +148,7 @@ documentation), this function returns nil."
 
 
 ;; ssh support by Phil Hagelberg.
-;; http://www.emacswiki.org/cgi-bin/wiki/pcmpl-ssh.el
+;; https://www.emacswiki.org/cgi-bin/wiki/pcmpl-ssh.el
 
 (defun pcmpl-ssh-known-hosts ()
   "Return a list of hosts found in `pcmpl-ssh-known-hosts-file'."
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
index 903c068..d512a71 100644
--- a/lisp/play/bubbles.el
+++ b/lisp/play/bubbles.el
@@ -28,7 +28,7 @@
 ;; possible in as few moves as possible.
 
 ;; Bubbles is an implementation of the "Same Game", similar to "Same
-;; GNOME" and many others, see <http://en.wikipedia.org/wiki/SameGame>.
+;; GNOME" and many others, see <https://en.wikipedia.org/wiki/SameGame>.
 
 ;; Installation
 ;; ------------
diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el
index ba74afc..a9417e9 100644
--- a/lisp/play/gametree.el
+++ b/lisp/play/gametree.el
@@ -121,8 +121,8 @@ Has to contain \"%d\" to output the actual number."
   :group 'gametree)
 
 (defcustom gametree-make-heading-function
-  (function (lambda (level)
-              (insert (make-string level ?*))))
+  (lambda (level)
+    (insert (make-string level ?*)))
   "A function of one numeric argument, LEVEL, to insert a heading at point.
 You should change this if you change `outline-regexp'."
   :type 'function
diff --git a/lisp/printing.el b/lisp/printing.el
index 86a2434..90ef02f 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -5,7 +5,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;; Keywords: wp, print, PostScript
 ;; Version: 6.9.3
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
 (defconst pr-version "6.9.3"
   "printing.el, v 6.9.3 <2007/12/09 vinicius>
@@ -64,7 +64,7 @@ Please send all bug fixes and enhancements to
 ;; interface to ps-print package and it also provides some extra stuff.
 ;;
 ;; To download the latest ps-print package see
-;; `http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage'.
+;; `https://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage'.
 ;; Please, see README file for ps-print installation instructions.
 ;;
 ;; `printing' was inspired by:
@@ -944,8 +944,8 @@ Please send all bug fixes and enhancements to
 ;;
 ;; * For `printing' package:
 ;;
-;;    printing `http://www.emacswiki.org/cgi-bin/emacs/download/printing.el'
-;;    ps-print `http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage'
+;;    printing `https://www.emacswiki.org/cgi-bin/emacs/download/printing.el'
+;;    ps-print `https://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage'
 ;;
 ;; * For GNU or Unix system:
 ;;
@@ -4721,7 +4721,7 @@ Each element has the form:
 
    (MENU-PART . NUMBER-OF-ITEMS)
 
-See `pr-visible-entry-alist'.")
+See `pr-visible-entry-list'.")
 
 
 (defun pr-menu-index (entry index)
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 29adf3b..00fcb80 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -1874,7 +1874,7 @@ cell where the two values determine the area inside the 
braces."
 (defun antlr-option-spec (level option specs existsp)
   "Return version correct option value specification.
 Return specification for option OPTION of kind level LEVEL.  SPECS
-should correspond to the VALUE-SPEC... in `antlr-option-alists'.
+should correspond to the VALUE-SPEC... in `antlr-options-alists'.
 EXISTSP determines whether the option already exists."
   (let (value)
     (while (and specs (>= antlr-tool-version (caar specs)))
diff --git a/lisp/progmodes/bat-mode.el b/lisp/progmodes/bat-mode.el
index 87e8816..98e58be 100644
--- a/lisp/progmodes/bat-mode.el
+++ b/lisp/progmodes/bat-mode.el
@@ -42,7 +42,7 @@
 ;; See documentation of function `bat-mode'.
 ;;
 ;; Separate package `dos-indent' (Matthew Fidler) provides rudimentary
-;; indentation, see http://www.emacswiki.org/emacs/dos-indent.el.
+;; indentation, see https://www.emacswiki.org/emacs/dos-indent.el.
 ;;
 ;; Acknowledgements:
 ;;
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index 36be9f6..855e467 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -395,8 +395,7 @@ a null operation."
       ;; remain.  This is not necessary for c-offsets-alist, since
       ;; c-get-style-variables contains every valid offset type in the
       ;; fallback entry.
-      (setq c-special-indent-hook
-           (default-value 'c-special-indent-hook)))
+      (kill-local-variable 'c-special-indent-hook))
     (mapc (lambda (elem)
            (c-set-style-1 elem dont-override))
          ;; Need to go through the variables backwards when we
@@ -644,7 +643,7 @@ CC Mode by making sure the proper entries are present on
 
 (defun c-make-styles-buffer-local (&optional this-buf-only-p)
   "Make all CC Mode style variables buffer local.
-If `this-buf-only-p' is non-nil, the style variables will be made
+If THIS-BUF-ONLY-P is non-nil, the style variables will be made
 buffer local only in the current buffer.  Otherwise they'll be made
 permanently buffer local in any buffer that changes their values.
 
@@ -662,7 +661,6 @@ any reason to call this function directly."
     ;; Hooks must be handled specially
     (if this-buf-only-p
        (if (featurep 'xemacs) (make-local-hook 'c-special-indent-hook))
-      (with-no-warnings (make-variable-buffer-local 'c-special-indent-hook))
       (setq c-style-variables-are-local-p t))
     ))
 
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index c62fbab..2e4b9d4 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -33,7 +33,7 @@
 ;; support.
 
 ;; The latest version is available from
-;; http://github.com/jrockway/cperl-mode
+;; https://github.com/jrockway/cperl-mode
 ;;
 ;; (perhaps in the moosex-declare branch)
 
diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el
index bf9b0e9..be82c72 100644
--- a/lisp/progmodes/ebnf-abn.el
+++ b/lisp/progmodes/ebnf-abn.el
@@ -38,7 +38,7 @@
 ;; -----------
 ;;
 ;;     See the URL:
-;;     `http://www.ietf.org/rfc/rfc2234.txt'
+;;     `https://www.ietf.org/rfc/rfc2234.txt'
 ;;     or
 ;;     `http://www.faqs.org/rfcs/rfc2234.html'
 ;;     or
diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el
index bdebf0d..ddddb27 100644
--- a/lisp/progmodes/ebnf-dtd.el
+++ b/lisp/progmodes/ebnf-dtd.el
@@ -38,11 +38,11 @@
 ;; ----------
 ;;
 ;;     See the URLs:
-;;     `http://www.w3.org/TR/2004/REC-xml-20040204/'
+;;     `https://www.w3.org/TR/2004/REC-xml-20040204/'
 ;;     (Extensible Markup Language (XML) 1.0 (Third Edition))
-;;     `http://www.w3.org/TR/html40/'
+;;     `https://www.w3.org/TR/html40/'
 ;;     (HTML 4.01 Specification)
-;;     `http://www.w3.org/TR/NOTE-html-970421'
+;;     `https://www.w3.org/TR/NOTE-html-970421'
 ;;     (HTML DTD with support for Style Sheets)
 ;;
 ;;
diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el
index 20e2d4c..546f1f8 100644
--- a/lisp/progmodes/ebnf-ebx.el
+++ b/lisp/progmodes/ebnf-ebx.el
@@ -38,7 +38,7 @@
 ;; ------------
 ;;
 ;;     See the URL:
-;;     `http://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
+;;     `https://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
 ;;     (Extensible Markup Language (XML) 1.0 (Third Edition))
 ;;
 ;;
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 22c70bf..991cd6f 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -5,7 +5,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;; Keywords: wp, ebnf, PostScript
 ;; Version: 4.4
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
 ;; This file is part of GNU Emacs.
 
@@ -326,7 +326,7 @@ Please send all bug fixes and enhancements to
 ;;                     `ebnf-lex-comment-char' and `ebnf-lex-eop-char'.
 ;;
 ;;    `abnf'           ebnf2ps recognizes the syntax described in the URL:
-;;                     `http://www.ietf.org/rfc/rfc2234.txt'
+;;                     `https://www.ietf.org/rfc/rfc2234.txt'
 ;;                     ("Augmented BNF for Syntax Specifications: ABNF").
 ;;
 ;;    `iso-ebnf'       ebnf2ps recognizes the syntax described in the URL:
@@ -342,11 +342,11 @@ Please send all bug fixes and enhancements to
 ;;                     `ebnf-yac-ignore-error-recovery'.
 ;;
 ;;    `ebnfx'          ebnf2ps recognizes the syntax described in the URL:
-;;                  `http://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
+;;                  `https://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
 ;;                  ("Extensible Markup Language (XML) 1.0 (Third Edition)")
 ;;
 ;;    `dtd'            ebnf2ps recognizes the syntax described in the URL:
-;;                     `http://www.w3.org/TR/2004/REC-xml-20040204/'
+;;                     `https://www.w3.org/TR/2004/REC-xml-20040204/'
 ;;                  ("Extensible Markup Language (XML) 1.0 (Third Edition)")
 ;;
 ;; Any other value is treated as `ebnf'.
@@ -1779,7 +1779,7 @@ Valid values are:
                `ebnf-lex-comment-char' and `ebnf-lex-eop-char'.
 
    `abnf'      ebnf2ps recognizes the syntax described in the URL:
-               `http://www.ietf.org/rfc/rfc2234.txt'
+                `https://www.ietf.org/rfc/rfc2234.txt'
                (\"Augmented BNF for Syntax Specifications: ABNF\").
 
    `iso-ebnf'  ebnf2ps recognizes the syntax described in the URL:
@@ -1795,11 +1795,11 @@ Valid values are:
                `ebnf-yac-ignore-error-recovery'.
 
    `ebnfx'     ebnf2ps recognizes the syntax described in the URL:
-               `http://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
+                `https://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation'
                (\"Extensible Markup Language (XML) 1.0 (Third Edition)\")
 
    `dtd'       ebnf2ps recognizes the syntax described in the URL:
-               `http://www.w3.org/TR/2004/REC-xml-20040204/'
+                `https://www.w3.org/TR/2004/REC-xml-20040204/'
                (\"Extensible Markup Language (XML) 1.0 (Third Edition)\")
 
 Any other value is treated as `ebnf'."
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index 1c9e805..ffd7d03 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -3544,7 +3544,7 @@ completion."
 ;;; Tags query replace & search
 
 (defvar ebrowse-tags-loop-call '(ignore)
-  "Function call for `ebrowse-loop-continue'.
+  "Function call for `ebrowse-tags-loop-continue'.
 Passed to `apply' for each file in the tree.  If it returns nil, proceed
 with the next file.")
 
diff --git a/lisp/progmodes/flymake-cc.el b/lisp/progmodes/flymake-cc.el
index 19565ef..d1985b4 100644
--- a/lisp/progmodes/flymake-cc.el
+++ b/lisp/progmodes/flymake-cc.el
@@ -88,7 +88,7 @@ SOURCE."
              (cond ((derived-mode-p 'c++-mode) "c++")
                    (t "c")))))
 
-(defvar-local flymake-cc--proc nil "Internal variable for `flymake-gcc'")
+(defvar-local flymake-cc--proc nil "Internal variable for `flymake-cc'")
 
 ;; forward declare this to shoosh compiler (instead of requiring
 ;; flymake-proc)
diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el
index 62f6d1a..152dc72 100644
--- a/lisp/progmodes/flymake-proc.el
+++ b/lisp/progmodes/flymake-proc.el
@@ -37,7 +37,7 @@
 ;;; Bugs/todo:
 
 ;; - Only uses "Makefile", not "makefile" or "GNUmakefile"
-;;   (from http://bugs.debian.org/337339).
+;;   (from https://bugs.debian.org/337339).
 
 ;;; Code:
 
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 086f0b6..79df970 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -8,7 +8,7 @@
 
 ;; This file is part of GNU Emacs.
 
-;; Homepage: http://www.emacswiki.org/emacs/GDB-MI
+;; Homepage: https://www.emacswiki.org/emacs/GDB-MI
 
 ;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 84c473d..81021bc 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1845,7 +1845,7 @@ and source-file directory for your debugger."
 ;; JDB command will get out of the debugger.  There is some truly
 ;; pathetic JDB documentation available at:
 ;;
-;;     http://java.sun.com/products/jdk/1.1/debugging/
+;;     https://java.sun.com/products/jdk/1.1/debugging/
 ;;
 ;; KNOWN PROBLEMS AND FIXME's:
 ;;
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 9177b13..25e7523 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -250,7 +250,7 @@ Effective only if 
`hide-ifdef-expand-reinclusion-protection' is t."
 
 (defvar hide-ifdef-env-backup nil
   "This variable is a backup of the previously cleared `hide-ifdef-env'.
-This backup prevents any accidental clearance of `hide-fidef-env' by
+This backup prevents any accidental clearance of `hide-ifdef-env' by
 `hif-clear-all-ifdef-defined'.")
 
 (defvar hif-outside-read-only nil
diff --git a/lisp/progmodes/idlw-complete-structtag.el 
b/lisp/progmodes/idlw-complete-structtag.el
index b0542a9..3bc3971 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -49,7 +49,7 @@
 ;;
 ;; New versions of IDLWAVE, documentation, and more information available
 ;; from:
-;;                 http://github.com/jdtsmith/idlwave
+;;                 https://github.com/jdtsmith/idlwave
 ;;
 ;; INSTALLATION
 ;; ============
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index ec4fd58..2d4ea46 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -32,7 +32,7 @@
 ;; along with new versions of IDLWAVE, documentation, and more
 ;; information, at:
 ;;
-;;           http://github.com/jdtsmith/idlwave
+;;           https://github.com/jdtsmith/idlwave
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index 99ac087..38127fc 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -40,7 +40,7 @@
 ;;
 ;; New versions of IDLWAVE, documentation, and more information
 ;; available from:
-;;                 http://github.com/jdtsmith/idlwave
+;;                 https://github.com/jdtsmith/idlwave
 ;;
 ;; INSTALLATION:
 ;; =============
@@ -58,7 +58,7 @@
 ;;   The newest version of this file can be found on the maintainers
 ;;   web site.
 ;;
-;;     http://github.com/jdtsmith/idlwave
+;;     https://github.com/jdtsmith/idlwave
 ;;
 ;; DOCUMENTATION
 ;; =============
@@ -896,7 +896,7 @@ IDL has currently stepped.")
    Info documentation for this package is available.  Use \\[idlwave-info]
    to display (complain to your sysadmin if that does not work).
    For PostScript and HTML versions of the documentation, check IDLWAVE's
-   homepage at URL `http://github.com/jdtsmith/idlwave'.
+   homepage at URL `https://github.com/jdtsmith/idlwave'.
    IDLWAVE has customize support - see the group `idlwave'.
 
 8. Keybindings
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index 23c129c..1866e50 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -29,7 +29,7 @@
 
 ;; New versions of IDLWAVE, documentation, and more information
 ;; available from:
-;;                 http://github.com/jdtsmith/idlwave
+;;                 https://github.com/jdtsmith/idlwave
 
 
 ;;; Code:
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 121f5d6..86f9f33 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -44,7 +44,7 @@
 ;;
 ;; New versions of IDLWAVE, documentation, and more information
 ;; available from:
-;;                 http://github.com/jdtsmith/idlwave
+;;                 https://github.com/jdtsmith/idlwave
 ;;
 ;; INSTALLATION
 ;; ============
@@ -64,7 +64,7 @@
 ;; The newest version of this file is available from the maintainer's
 ;; Webpage:
 ;;
-;;   http://github.com/jdtsmith/idlwave
+;;   https://github.com/jdtsmith/idlwave
 ;;
 ;; DOCUMENTATION
 ;; =============
@@ -164,7 +164,7 @@
   "Major mode for editing IDL .pro files."
   :tag "IDLWAVE"
   :link '(url-link :tag "Home Page"
-                  "http://github.com/jdtsmith/idlwave";)
+                   "https://github.com/jdtsmith/idlwave";)
   :link '(emacs-commentary-link :tag "Commentary in idlw-shell.el"
                                "idlw-shell.el")
   :link '(emacs-commentary-link :tag "Commentary in idlwave.el" "idlwave.el")
@@ -1846,7 +1846,7 @@ The main features of this mode are
    \\[idlwave-info] to display (complain to your sysadmin if that does
    not work).  For Postscript, PDF, and HTML versions of the
    documentation, check IDLWAVE's homepage at URL
-   `http://github.com/jdtsmith/idlwave'.
+   `https://github.com/jdtsmith/idlwave'.
    IDLWAVE has customize support - see the group `idlwave'.
 
 10.Keybindings
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 127b24c..7265aee 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -258,7 +258,7 @@
       ;; (or some similar separator), or by one of the special keywords
       ;; corresponding to builtin functions that can take their first arg
       ;; without parentheses.  Of course, that presume we're looking at the
-      ;; *opening* slash.  We can afford to mis-match the closing ones
+      ;; *opening* slash.  We can afford to mismatch the closing ones
       ;; here, because they will be re-treated separately later in
       ;; perl-font-lock-special-syntactic-constructs.
       ((concat perl--syntax-exp-intro-regexp "\\(/\\)")
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 95b6a03..76baa44 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2078,7 +2078,7 @@ virtualenv."
   :group 'python)
 
 (defcustom python-shell-setup-codes nil
-  "List of code run by `python-shell-send-setup-codes'."
+  "List of code run by `python-shell-send-setup-code'."
   :type '(repeat symbol)
   :group 'python)
 
@@ -2378,9 +2378,11 @@ regexps: `python-shell-prompt-regexp',
 
 (defun python-shell-prompt-set-calculated-regexps ()
   "Detect and set input and output prompt regexps.
-Build and set the values for `python-shell-input-prompt-regexp'
-and `python-shell-output-prompt-regexp' using the values from
-`python-shell-prompt-regexp', `python-shell-prompt-block-regexp',
+Build and set the values for
+`python-shell--prompt-calculated-input-regexp' and
+`python-shell--prompt-calculated-output-regexp' using the values
+from `python-shell-prompt-regexp',
+`python-shell-prompt-block-regexp',
 `python-shell-prompt-pdb-regexp',
 `python-shell-prompt-output-regexp',
 `python-shell-prompt-input-regexps',
@@ -2442,7 +2444,7 @@ of `python-shell-buffer-name'."
 
 (defun python-shell-internal-get-process-name ()
   "Calculate the appropriate process name for Internal Python process.
-The name is calculated from `python-shell-global-buffer-name' and
+The name is calculated from `python-shell-buffer-name' and
 the `buffer-name'."
   (format "%s[%s]" python-shell-internal-buffer-name (buffer-name)))
 
@@ -3074,7 +3076,7 @@ Returns the output.  See 
`python-shell-send-string-no-output'."
 (define-obsolete-function-alias
   'python-send-string 'python-shell-internal-send-string "24.3")
 
-(defun python-shell-buffer-substring (start end &optional nomain)
+(defun python-shell-buffer-substring (start end &optional nomain no-cookie)
   "Send buffer substring from START to END formatted for shell.
 This is a wrapper over `buffer-substring' that takes care of
 different transformations for the code sent to be evaluated in
@@ -3100,12 +3102,13 @@ the python shell:
                               (goto-char start)
                               (python-util-forward-comment 1)
                               (current-indentation))))
-         (fillstr (when (not starts-at-point-min-p)
-                    (concat
-                     (format "# -*- coding: %s -*-\n" encoding)
-                     (make-string
-                      ;; Subtract 2 because of the coding cookie.
-                      (- (line-number-at-pos start) 2) ?\n)))))
+         (fillstr (and (not no-cookie)
+                       (not starts-at-point-min-p)
+                       (concat
+                        (format "# -*- coding: %s -*-\n" encoding)
+                        (make-string
+                         ;; Subtract 2 because of the coding cookie.
+                         (- (line-number-at-pos start) 2) ?\n)))))
     (with-temp-buffer
       (python-mode)
       (when fillstr
@@ -3144,7 +3147,8 @@ the python shell:
            (line-beginning-position) (line-end-position))))
       (buffer-substring-no-properties (point-min) (point-max)))))
 
-(defun python-shell-send-region (start end &optional send-main msg)
+(defun python-shell-send-region (start end &optional send-main msg
+                                       no-cookie)
   "Send the region delimited by START and END to inferior Python process.
 When optional argument SEND-MAIN is non-nil, allow execution of
 code inside blocks delimited by \"if __name__== \\='__main__\\=':\".
@@ -3154,7 +3158,8 @@ non-nil, forces display of a user-friendly message if 
there's no
 process running; defaults to t when called interactively."
   (interactive
    (list (region-beginning) (region-end) current-prefix-arg t))
-  (let* ((string (python-shell-buffer-substring start end (not send-main)))
+  (let* ((string (python-shell-buffer-substring start end (not send-main)
+                                                no-cookie))
          (process (python-shell-get-process-or-error msg))
          (original-string (buffer-substring-no-properties start end))
          (_ (string-match "\\`\n*\\(.*\\)" original-string)))
@@ -3178,7 +3183,7 @@ interactively."
     (python-shell-send-region
      (save-excursion (python-nav-beginning-of-statement))
      (save-excursion (python-nav-end-of-statement))
-     send-main msg)))
+     send-main msg t)))
 
 (defun python-shell-send-buffer (&optional send-main msg)
   "Send the entire buffer to inferior Python process.
@@ -3200,27 +3205,29 @@ optional argument MSG is non-nil, forces display of a
 user-friendly message if there's no process running; defaults to
 t when called interactively."
   (interactive (list current-prefix-arg t))
-  (save-excursion
-    (python-shell-send-region
-     (progn
-       (end-of-line 1)
-       (while (and (or (python-nav-beginning-of-defun)
-                       (beginning-of-line 1))
-                   (> (current-indentation) 0)))
-       (when (not arg)
-         (while (and
-                 (eq (forward-line -1) 0)
-                 (if (looking-at (python-rx decorator))
-                     t
-                   (forward-line 1)
-                   nil))))
-       (point-marker))
-     (progn
-       (or (python-nav-end-of-defun)
-           (end-of-line 1))
-       (point-marker))
-     nil  ;; noop
-     msg)))
+  (let ((starting-pos (point)))
+    (save-excursion
+      (python-shell-send-region
+       (progn
+         (end-of-line 1)
+         (while (and (or (python-nav-beginning-of-defun)
+                         (beginning-of-line 1))
+                     (> (current-indentation) 0)))
+         (when (not arg)
+           (while (and
+                   (eq (forward-line -1) 0)
+                   (if (looking-at (python-rx decorator))
+                       t
+                     (forward-line 1)
+                     nil))))
+         (point-marker))
+       (progn
+         (goto-char starting-pos)
+         (or (python-nav-end-of-defun)
+             (end-of-line 1))
+         (point-marker))
+       nil ;; noop
+       msg))))
 
 (defun python-shell-send-file (file-name &optional process temp-file-name
                                          delete msg)
@@ -4712,7 +4719,7 @@ customize how labels are formatted."
 (defun python-imenu-create-flat-index (&optional alist prefix)
   "Return flat outline of the current Python buffer for Imenu.
 Optional argument ALIST is the tree to be flattened; when nil
-`python-imenu-build-index' is used with
+`python-imenu-create-index' is used with
 `python-imenu-format-parent-item-jump-label-function'
 `python-imenu-format-parent-item-label-function'
 `python-imenu-format-item-label-function' set to
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index a11634b..14f0059 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -4,7 +4,7 @@
 
 ;; Authors: Yukihiro Matsumoto
 ;;     Nobuyoshi Nakada
-;; URL: http://www.emacswiki.org/cgi-bin/wiki/RubyMode
+;; URL: https://www.emacswiki.org/cgi-bin/wiki/RubyMode
 ;; Created: Fri Feb  4 14:49:13 JST 1994
 ;; Keywords: languages ruby
 ;; Version: 1.2
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 3c249b7..a8c0e04 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -386,6 +386,7 @@ name symbol."
        ?~ "_"
        ?, "_"
        ?= "."
+        ?/ "."
        ?\; "."
        ?| "."
        ?& "."
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index c31c5dd..bfef2a6 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -2808,8 +2808,8 @@ See `sql-product-alist' for a list of products and 
supported features."
 
 The KEYWORDS-ONLY flag is passed to font-lock to specify whether
 only keywords should be highlighted and syntactic highlighting
-skipped.  The IMENU flag indicates whether `imenu-mode' should
-also be configured."
+skipped.  The IMENU flag indicates whether `imenu' should also be
+configured."
 
   (let
       ;; Get the product-specific syntax-alist.
@@ -4293,14 +4293,14 @@ Here is an example for your init file.  It keeps the 
SQLi buffer a
 certain length.
 
 \(add-hook \\='sql-interactive-mode-hook
-    (function (lambda ()
-        (setq comint-output-filter-functions #\\='comint-truncate-buffer))))
+    (lambda ()
+        (setq comint-output-filter-functions #\\='comint-truncate-buffer)))
 
 Here is another example.  It will always put point back to the statement
 you entered, right above the output it created.
 
 \(setq comint-output-filter-functions
-       (function (lambda (STR) (comint-show-output))))"
+       (lambda (STR) (comint-show-output)))"
   :syntax-table sql-mode-syntax-table
   ;; FIXME: The doc above uses `setq' on `comint-output-filter-functions',
   ;; whereas hooks should be manipulated with things like `add/remove-hook'.
diff --git a/lisp/ps-def.el b/lisp/ps-def.el
index 65e8011..571e1a6 100644
--- a/lisp/ps-def.el
+++ b/lisp/ps-def.el
@@ -5,7 +5,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;;     Kenichi Handa <handa@gnu.org> (multi-byte characters)
 ;; Keywords: wp, print, PostScript
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 ;; Package: ps-print
 
 ;; This file is part of GNU Emacs.
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 67ee4d2..351c489 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -9,7 +9,7 @@
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;; Keywords: wp, print, PostScript
 ;; Version: 7.3.5
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
 (eval-when-compile (require 'cl-lib))
 
@@ -2198,7 +2198,7 @@ The values for `ps-line-number-start':
      `ps-line-number-step' inclusive.
 
    * If `ps-line-number-step' is set to `zebra', must be between 1 and the
-     value of `ps-zebra-strip-height' inclusive.  Use this combination if you
+     value of `ps-zebra-stripe-height' inclusive.  Use this combination if you
      wish that line number be relative to zebra stripes."
   :type '(integer :tag "Start Step Interval")
   :version "20"
diff --git a/lisp/ps-samp.el b/lisp/ps-samp.el
index 7c688d5..c5dcf49 100644
--- a/lisp/ps-samp.el
+++ b/lisp/ps-samp.el
@@ -8,7 +8,7 @@
 ;;     Kenichi Handa <handa@gnu.org> (multi-byte characters)
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;; Keywords: wp, print, PostScript
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 ;; Package: ps-print
 
 ;; This file is part of GNU Emacs.
@@ -57,7 +57,7 @@
   (interactive)
   (ps-print-message-from-summary 'rmail-summary-buffer "RMAIL"))
 
-;; Used in `ps-rmail-print-article-from-summary',
+;; Used in `ps-rmail-print-message-from-summary',
 ;; `ps-gnus-print-article-from-summary' and `ps-vm-print-message-from-summary'.
 (defun ps-print-message-from-summary (summary-buffer summary-default)
   (let ((ps-buf (or (and (boundp summary-buffer)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 877edd4..61c39de 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -245,7 +245,10 @@ The following values can be set:
 - A number
     Cleanup each time Emacs has been idle that number of seconds.
 - A time string
-    Cleanup at specified time string, for example at \"11:00pm\".
+    Cleanup at specified time string daily, for example at \"11:00pm\".
+
+If a time string is provided and it is already past the specified time
+for the current day, the first cleanup happens immediately as for `mode'.
 
 Setting this variable directly does not take effect;
 use \\[customize].
@@ -257,7 +260,7 @@ cleanup the list."
                         :value mode)
                 (const  :tag "Never"
                         :value never)
-                (number :tag "When idle that seconds"
+                (number :tag "When idle after (seconds)"
                         :value 300)
                 (string :tag "At time"
                         :value "11:00pm"))
@@ -371,7 +374,8 @@ See also the option `recentf-auto-cleanup'.")
              recentf-auto-cleanup t 'recentf-cleanup))
            ((stringp recentf-auto-cleanup)
             (run-at-time
-             recentf-auto-cleanup nil 'recentf-cleanup))))))
+             ;; Repeat every 24 hours.
+             recentf-auto-cleanup (* 24 60 60) 'recentf-cleanup))))))
 
 ;;; File functions
 ;;
diff --git a/lisp/replace.el b/lisp/replace.el
index 035031a..2d17ec9 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1572,6 +1572,18 @@ is not modified."
 
 (defvar ido-ignore-item-temp-list)
 
+(defun multi-occur--prompt ()
+  (concat
+   "Next buffer to search "
+   (cond
+    ((eq read-buffer-function #'ido-read-buffer)
+     (substitute-command-keys
+      "(\\<ido-completion-map>\\[ido-select-text] to end): "))
+    ((bound-and-true-p fido-mode)
+     (substitute-command-keys
+      "(\\<icomplete-fido-mode-map>\\[icomplete-fido-exit] to end): "))
+    (t "(RET to end): "))))
+
 (defun multi-occur (bufs regexp &optional nlines)
   "Show all lines in buffers BUFS containing a match for REGEXP.
 Optional argument NLINES specifies the number of context lines to show
@@ -1587,11 +1599,7 @@ See also `multi-occur-in-matching-buffers'."
           (buf nil)
           (ido-ignore-item-temp-list bufs))
       (while (not (string-equal
-                  (setq buf (read-buffer
-                             (if (eq read-buffer-function #'ido-read-buffer)
-                                 "Next buffer to search (C-j to end): "
-                               "Next buffer to search (RET to end): ")
-                             nil t))
+                  (setq buf (read-buffer (multi-occur--prompt) nil t))
                   ""))
        (cl-pushnew buf bufs)
        (setq ido-ignore-item-temp-list bufs))
diff --git a/lisp/ses.el b/lisp/ses.el
index 64d03a7..bfafc13 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -395,7 +395,7 @@ left-justification of the result.  Set to error-signal if 
`ses-call-printer'
 encountered an error during printing.  Otherwise nil.")
 
 (defvar ses-start-time nil
-  "Time when current operation started.  Used by `ses-time-check' to decide
+  "Time when current operation started.  Used by `ses--time-check' to decide
 when to emit a progress message.")
 
 
diff --git a/lisp/shell.el b/lisp/shell.el
index 6129e5e..226bdf4 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -1208,7 +1208,7 @@ Returns t if successful."
         (cwd (file-name-as-directory (expand-file-name default-directory)))
         (ignored-extensions
          (and comint-completion-fignore
-              (mapconcat (function (lambda (x) (concat (regexp-quote x) 
"\\'")))
+               (mapconcat (lambda (x) (concat (regexp-quote x) "\\'"))
                          comint-completion-fignore "\\|")))
         (dir "") (comps-in-dir ())
         (file "") (abs-file-name "") (completions ()))
diff --git a/lisp/simple.el b/lisp/simple.el
index fef22c2..b6d4e06 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2067,13 +2067,18 @@ invoking, give a prefix argument to 
`execute-extended-command'."
   ;; BEWARE: Called directly from the C code.
   "Execute CMD as an editor command.
 CMD must be a symbol that satisfies the `commandp' predicate.
-Optional second arg RECORD-FLAG non-nil
-means unconditionally put this command in the variable `command-history'.
-Otherwise, that is done only if an arg is read using the minibuffer.
-The argument KEYS specifies the value to use instead of (this-command-keys)
-when reading the arguments; if it is nil, (this-command-keys) is used.
-The argument SPECIAL, if non-nil, means that this command is executing
-a special event, so ignore the prefix argument and don't clear it."
+
+Optional second arg RECORD-FLAG non-nil means unconditionally put
+this command in the variable `command-history'.  Otherwise, that
+is done only if an arg is read using the minibuffer.
+
+The argument KEYS specifies the value to use instead of the
+return value of the `this-command-keys' function when reading the
+arguments; if it is nil, `this-command-keys' is used.
+
+The argument SPECIAL, if non-nil, means that this command is
+executing a special event, so ignore the prefix argument and
+don't clear it."
   (setq debug-on-next-call nil)
   (let ((prefixarg (unless special
                      ;; FIXME: This should probably be done around
@@ -7275,15 +7280,16 @@ Mode' for details."
   :lighter " Wrap"
   (if visual-line-mode
       (progn
-       (set (make-local-variable 'visual-line--saved-state) nil)
-       ;; Save the local values of some variables, to be restored if
-       ;; visual-line-mode is turned off.
-       (dolist (var '(line-move-visual truncate-lines
-                      truncate-partial-width-windows
-                      word-wrap fringe-indicator-alist))
-         (if (local-variable-p var)
-             (push (cons var (symbol-value var))
-                   visual-line--saved-state)))
+        (unless visual-line--saved-state
+         (setq-local visual-line--saved-state (list nil))
+         ;; Save the local values of some variables, to be restored if
+         ;; visual-line-mode is turned off.
+         (dolist (var '(line-move-visual truncate-lines
+                                         truncate-partial-width-windows
+                                         word-wrap fringe-indicator-alist))
+           (if (local-variable-p var)
+               (push (cons var (symbol-value var))
+                     visual-line--saved-state))))
        (set (make-local-variable 'line-move-visual) t)
        (set (make-local-variable 'truncate-partial-width-windows) nil)
        (setq truncate-lines nil
@@ -7297,7 +7303,8 @@ Mode' for details."
     (kill-local-variable 'truncate-partial-width-windows)
     (kill-local-variable 'fringe-indicator-alist)
     (dolist (saved visual-line--saved-state)
-      (set (make-local-variable (car saved)) (cdr saved)))
+      (when (car saved)
+        (set (make-local-variable (car saved)) (cdr saved))))
     (kill-local-variable 'visual-line--saved-state)))
 
 (defun turn-on-visual-line-mode ()
diff --git a/lisp/startup.el b/lisp/startup.el
index e39df75..89b1d59 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1506,7 +1506,7 @@ Consider using a subdirectory instead, e.g.: %s"
 (defun x-apply-session-resources ()
   "Apply X resources which specify initial values for Emacs variables.
 This is called from a window-system initialization function, such
-as `x-initialize-window-system' for X, either at startup (prior
+as `window-system-initialization' for X, either at startup (prior
 to reading the init file), or afterwards when the user first
 opens a graphical frame.
 
diff --git a/lisp/strokes.el b/lisp/strokes.el
index 08a3818..c2f03ca 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -102,7 +102,7 @@
 ;; The default value (9) should be fine for most decent computers.
 ;; NOTE: This variable should not be set to a number less than 3.
 
-;; `strokes-display-strokes-buffer' will allow you to hide the strokes
+;; `strokes-use-strokes-buffer' will allow you to hide the strokes
 ;; buffer when doing simple strokes.  This is a speedup for slow
 ;; computers as well as people who don't want to see their strokes.
 
@@ -581,7 +581,7 @@ The grid is a square whose dimension is 
[0,GRID-RESOLUTION)."
 
 (defun strokes-fill-stroke (unfilled-stroke &optional force)
   "Fill in missing grid locations in the list of UNFILLED-STROKE.
-If FORCE is non-nil, then fill the stroke even if it's `stroke-click'.
+If FORCE is non-nil, then fill the stroke even if it's `strokes-click-p'.
 NOTE: This is where the global variable `strokes-last-stroke' is set."
   (setq strokes-last-stroke            ; this is global
        (if (and (strokes-click-p unfilled-stroke)
@@ -1629,7 +1629,7 @@ Optional FORCE non-nil will ignore the buffer's read-only 
status."
          ;; The comment below is what I'd have to do if I wanted to
          ;; deal with random newlines in the midst of the compressed
          ;; strings.  If I do this, I'll also have to change
-         ;; `strokes-xpm-to-compress-string' to deal with the newline,
+          ;; `strokes-xpm-to-compressed-string' to deal with the newline,
          ;; and possibly other whitespace stuff.  YUCK!
          ;;      (while (re-search-forward "\\+/\\(\\w\\|\\)+/" nil t nil 
(get-buffer buffer))
          (while (with-current-buffer buffer
diff --git a/lisp/subr.el b/lisp/subr.el
index 55217bd..b1e382b 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -284,8 +284,11 @@ Then evaluate RESULT to get return value, default nil.
 (defmacro dotimes (spec &rest body)
   "Loop a certain number of times.
 Evaluate BODY with VAR bound to successive integers running from 0,
-inclusive, to COUNT, exclusive.  Then evaluate RESULT to get
-the return value (nil if RESULT is omitted).  Its use is deprecated.
+inclusive, to COUNT, exclusive.
+
+Finally RESULT is evaluated to get the return value (nil if
+RESULT is omitted).  Using RESULT is deprecated, and may result
+in compilation warnings about unused variables.
 
 \(fn (VAR COUNT [RESULT]) BODY...)"
   (declare (indent 1) (debug dolist))
@@ -3253,7 +3256,7 @@ See Info node `(elisp)Security Considerations'."
 
     ;; First, quote argument so that CommandLineToArgvW will
     ;; understand it.  See
-    ;; http://msdn.microsoft.com/en-us/library/17w5ykft%28v=vs.85%29.aspx
+    ;; https://msdn.microsoft.com/en-us/library/17w5ykft%28v=vs.85%29.aspx
     ;; After we perform that level of quoting, escape shell
     ;; metacharacters so that cmd won't mangle our argument.  If the
     ;; argument contains no double quote characters, we can just
diff --git a/lisp/talk.el b/lisp/talk.el
index 5541b0a..a18cf26 100644
--- a/lisp/talk.el
+++ b/lisp/talk.el
@@ -90,7 +90,7 @@ Each element has the form (DISPLAY FRAME BUFFER).")
       (let ((frame (nth 1 (car tail)))
            (this-buffer (nth 2 (car tail)))
            (buffers
-            (mapcar (function (lambda (elt) (nth 2 elt)))
+             (mapcar (lambda (elt) (nth 2 elt))
                     talk-display-alist)))
        ;; Put this display's own talk buffer
        ;; at the front of the list.
diff --git a/lisp/tempo.el b/lisp/tempo.el
index bc398e7..f661235 100644
--- a/lisp/tempo.el
+++ b/lisp/tempo.el
@@ -75,7 +75,7 @@
 ;; ftp.lysator.liu.se in the directory /pub/emacs
 
 ;; There is also a WWW page at
-;; http://www.lysator.liu.se/~davidk/elisp/ which has some information
+;; https://www.lysator.liu.se/~davidk/elisp/ which has some information
 
 ;;; Known bugs:
 
@@ -306,8 +306,8 @@ mode, ON-REGION is ignored and assumed true if the region 
is active."
            (goto-char tempo-region-start))
        (save-excursion
          (tempo-insert-mark (point-marker))
-         (mapc (function (lambda (elt)
-                           (tempo-insert elt on-region)))
+          (mapc (lambda (elt)
+                  (tempo-insert elt on-region))
                (symbol-value template))
          (tempo-insert-mark (point-marker)))
        (tempo-forward-mark))
@@ -449,9 +449,9 @@ never prompted."
   "Tries all the user-defined element handlers in `tempo-user-elements'."
   ;; Sigh... I need (some list)
   (catch 'found
-    (mapc (function (lambda (handler)
-                     (let ((result (funcall handler element)))
-                       (if result (throw 'found result)))))
+    (mapc (lambda (handler)
+            (let ((result (funcall handler element)))
+              (if result (throw 'found result))))
          tempo-user-elements)
     (throw 'found nil)))
 
@@ -542,7 +542,7 @@ and insert the results."
 ;;; tempo-forward-mark
 
 (defun tempo-forward-mark ()
-  "Jump to the next mark in `tempo-forward-mark-list'."
+  "Jump to the next mark in `tempo-marks'."
   (interactive)
   (let ((next-mark (catch 'found
                     (mapc
@@ -560,7 +560,7 @@ and insert the results."
 ;;; tempo-backward-mark
 
 (defun tempo-backward-mark ()
-  "Jump to the previous mark in `tempo-back-mark-list'."
+  "Jump to the previous mark in `tempo-marks'."
   (interactive)
   (let ((prev-mark (catch 'found
                     (let (last)
@@ -640,11 +640,11 @@ If `tempo-dirty-collection' is nil, the old collection is 
reused."
               tempo-collection)
          (setq tempo-collection
                (apply (function append)
-                      (mapcar (function (lambda (tag-list)
+                       (mapcar (lambda (tag-list)
                                        ; If the format for
                                        ; tempo-local-tags changes,
                                        ; change this
-                                          (eval (car tag-list))))
+                                 (eval (car tag-list)))
                               tempo-local-tags))))
     (setq tempo-dirty-collection nil)))
 
diff --git a/lisp/term.el b/lisp/term.el
index f0470d8..ff8b3f0 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -554,7 +554,7 @@ See also `term-dynamic-complete'.
 This is a good thing to set in mode hooks.")
 
 (defvar term-input-filter
-  (function (lambda (str) (not (string-match "\\`\\s *\\'" str))))
+  (lambda (str) (not (string-match "\\`\\s *\\'" str)))
   "Predicate for filtering additions to input history.
 Only inputs answering true to this function are saved on the input
 history list.  Default is to save anything that isn't all whitespace.")
@@ -860,6 +860,7 @@ is buffer-local."
     (define-key map [prior] 'term-send-prior)
     (define-key map [next] 'term-send-next)
     (define-key map [xterm-paste] #'term--xterm-paste)
+    (define-key map [?\C-/] #'term-send-C-_)
     map)
   "Keyboard map for sending characters directly to the inferior process.")
 
@@ -1282,6 +1283,7 @@ without any interpretation."
 (defun term-send-next  () (interactive) (term-send-raw-string "\e[6~"))
 (defun term-send-del   () (interactive) (term-send-raw-string "\e[3~"))
 (defun term-send-backspace  () (interactive) (term-send-raw-string "\C-?"))
+(defun term-send-C-_  () (interactive) (term-send-raw-string "\C-_"))
 
 (defun term-char-mode ()
   "Switch to char (\"raw\") sub-mode of term mode.
@@ -3638,8 +3640,8 @@ The top-most line is line 0."
   (message "Terminal-emulator pager break help...")
   (sit-for 0)
   (with-electric-help
-    (function (lambda ()
-               (princ (substitute-command-keys
+    (lambda ()
+      (princ (substitute-command-keys
 "\\<term-pager-break-map>\
 Terminal-emulator MORE break.\n\
 Type one of the following keys:\n\n\
@@ -3657,7 +3659,7 @@ Type one of the following keys:\n\n\
 Any other key is passed through to the program
 running under the terminal emulator and disables pager processing until
 all pending output has been dealt with."))
-               nil))))
+      nil)))
 
 (defun term-pager-continue (new-count)
   (let ((process (get-buffer-process (current-buffer))))
diff --git a/lisp/term/internal.el b/lisp/term/internal.el
index 5e22c0f..c54481a 100644
--- a/lisp/term/internal.el
+++ b/lisp/term/internal.el
@@ -400,9 +400,9 @@ If TABLE is nil or omitted, `standard-display-table' is 
used."
 ;; The following alist was compiled from:
 ;;
 ;; Ralf Brown's Interrupt List. file INTERRUP.F, D-2138, Table 01400
-;; http://www.ethnologue.com/country_index.asp (official languages)
-;; http://unicode.org/onlinedat/languages.html
-;; http://unicode.org/onlinedat/countries.html
+;; https://www.ethnologue.com/country_index.asp (official languages)
+;; https://unicode.org/onlinedat/languages.html
+;; https://unicode.org/onlinedat/countries.html
 ;;
 ;; Only the official languages listed for each country.
 ;;
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index 75b13bd..8068288 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -593,7 +593,7 @@ This variable is initialized by the 
`artist-make-prev-next-op-alist' function.")
     (define-key map "\C-c\C-a\C-b" 'artist-submit-bug-report)
     (define-key map [menu-bar artist] (cons "Artist" artist-menu-map))
     map)
-  "Keymap for `artist-minor-mode'.")
+  "Keymap for `artist-mode'.")
 
 (defvar artist-replacement-table (make-vector 256 0)
   "Replacement table for `artist-replace-char'.")
@@ -1958,7 +1958,8 @@ Return a list (RETURN-CODE STDOUT STDERR)."
 
 (defsubst artist-get-char-at-xy (x y)
   "Return the character found at column X, row Y.
-Also updates the variables `artist-draw-min-y' and `artist-draw-max-y'."
+Also updates the variables `artist-draw-region-min-y' and
+`artist-draw-region-max-y'."
   (artist-move-to-xy x y)
   (let ((curr-y (artist-current-line)))
     (setq artist-draw-region-min-y (min curr-y artist-draw-region-min-y))
@@ -5575,8 +5576,8 @@ The event, EV, is the mouse event."
 ;;         - artist-key-set-point-xxx for setting a point in the
 ;;           mode, to be called from `artist-key-set-point-common'.
 ;;
-;;         - artist-key-do-continuously-xxx to be called from
-;;           `artist-key-do-continuously-common' whenever the user
+;;         - artist-key-do-continously-xxx to be called from
+;;           `artist-key-do-continously-common' whenever the user
 ;;           moves around.
 ;;
 ;;         As for the artist-mouse-draw-xxx, these two functions must
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 03edd47..0d1eeed 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -100,7 +100,7 @@
   "Identifiers for types of media.")
 
 (defconst css-property-alist
-  ;; CSS 2.1 properties (http://www.w3.org/TR/CSS21/propidx.html).
+  ;; CSS 2.1 properties (https://www.w3.org/TR/CSS21/propidx.html).
   ;;
   ;; Properties duplicated by any of the CSS3 modules below have been
   ;; removed.
@@ -190,7 +190,7 @@
     ("z-index" "auto" integer)
 
     ;; CSS Animations
-    ;; (http://www.w3.org/TR/css3-animations/#property-index)
+    ;; (https://www.w3.org/TR/css3-animations/#property-index)
     ("animation" single-animation-name time single-timing-function
      single-animation-iteration-count single-animation-direction
      single-animation-fill-mode single-animation-play-state)
@@ -204,7 +204,7 @@
     ("animation-timing-function" single-timing-function)
 
     ;; CSS Backgrounds and Borders Module Level 3
-    ;; (http://www.w3.org/TR/css3-background/#property-index)
+    ;; (https://www.w3.org/TR/css3-background/#property-index)
     ("background" bg-layer final-bg-layer)
     ("background-attachment" attachment)
     ("background-clip" box)
@@ -249,7 +249,7 @@
     ("box-shadow" "none" shadow)
 
     ;; CSS Basic User Interface Module Level 3 (CSS3 UI)
-    ;; (http://www.w3.org/TR/css3-ui/#property-index)
+    ;; (https://www.w3.org/TR/css3-ui/#property-index)
     ("box-sizing" "content-box" "border-box")
     ("caret-color" "auto" color)
     ("cursor" uri x y "auto" "default" "none" "context-menu" "help"
@@ -272,7 +272,7 @@
     ("text-overflow" "clip" "ellipsis" string)
 
     ;; CSS Color Module Level 3
-    ;; (http://www.w3.org/TR/css3-color/#property)
+    ;; (https://www.w3.org/TR/css3-color/#property)
     ("color" color)
     ("opacity" alphavalue)
 
@@ -304,7 +304,7 @@
     ("grid-template-rows" "none" track-list auto-track-list)
 
     ;; CSS Flexible Box Layout Module Level 1
-    ;; (http://www.w3.org/TR/css-flexbox-1/#property-index)
+    ;; (https://www.w3.org/TR/css-flexbox-1/#property-index)
     ("align-content" "flex-start" "flex-end" "center" "space-between"
      "space-around" "stretch")
     ("align-items" "flex-start" "flex-end" "center" "baseline"
@@ -323,7 +323,7 @@
     ("order" integer)
 
     ;; CSS Fonts Module Level 3
-    ;; (http://www.w3.org/TR/css3-fonts/#property-index)
+    ;; (https://www.w3.org/TR/css3-fonts/#property-index)
     ("font" font-style font-variant-css21 font-weight font-stretch
      font-size line-height font-family "caption" "icon" "menu"
      "message-box" "small-caption" "status-bar")
@@ -419,7 +419,7 @@
     ("columns" column-width column-count)
 
     ;; CSS Overflow Module Level 3
-    ;; (http://www.w3.org/TR/css-overflow-3/#property-index)
+    ;; (https://www.w3.org/TR/css-overflow-3/#property-index)
     ("max-lines" "none" integer)
     ("overflow" "visible" "hidden" "scroll" "auto" "paged-x" "paged-y"
      "paged-x-controls" "paged-y-controls" "fragments")
@@ -448,7 +448,7 @@
     ("text-underline-position" "auto" "under" "left" "right")
 
     ;; CSS Text Module Level 3
-    ;; (http://www.w3.org/TR/css3-text/#property-index)
+    ;; (https://www.w3.org/TR/css3-text/#property-index)
     ("hanging-punctuation" "none" "first" "force-end" "allow-end"
      "last")
     ("hyphens" "none" "manual" "auto")
@@ -470,7 +470,7 @@
     ("word-wrap" "normal" "break-word")
 
     ;; CSS Transforms Module Level 1
-    ;; (http://www.w3.org/TR/css3-2d-transforms/#property-index)
+    ;; (https://www.w3.org/TR/css3-2d-transforms/#property-index)
     ("backface-visibility" "visible" "hidden")
     ("perspective" "none" length)
     ("perspective-origin" "left" "center" "right" "top" "bottom"
@@ -481,7 +481,7 @@
     ("transform-style" "flat" "preserve-3d")
 
     ;; CSS Transitions
-    ;; (http://www.w3.org/TR/css3-transitions/#property-index)
+    ;; (https://www.w3.org/TR/css3-transitions/#property-index)
     ("transition" single-transition)
     ("transition-delay" time)
     ("transition-duration" time)
@@ -503,7 +503,7 @@
     ("writing-mode" "horizontal-tb" "vertical-rl" "vertical-lr")
 
     ;; Filter Effects Module Level 1
-    ;; (http://www.w3.org/TR/filter-effects/#property-index)
+    ;; (https://www.w3.org/TR/filter-effects/#property-index)
     ("color-interpolation-filters" "auto" "sRGB" "linearRGB")
     ("filter" "none" filter-function-list)
     ("flood-color" color)
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index e862e35..65702d0 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -524,7 +524,7 @@ invoking `ispell-change-dictionary'.
 
 Consider using the `ispell-parser' to check your text.  For instance
 consider adding:
-\(add-hook \\='tex-mode-hook (function (lambda () (setq ispell-parser 
\\='tex))))
+\(add-hook \\='tex-mode-hook (lambda () (setq ispell-parser \\='tex)))
 in your init file.
 
 \\[flyspell-region] checks all words inside a region.
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index a99dfe4..05a4bd0 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -3937,7 +3937,7 @@ in your init file:
 
 You can bind this to the key C-c i in GNUS or mail by adding to
 `news-reply-mode-hook' or `mail-mode-hook' the following lambda expression:
-   (function (lambda () (local-set-key \"\\C-ci\" \\='ispell-message)))"
+   (lambda () (local-set-key \"\\C-ci\" \\='ispell-message))"
   (interactive)
   (save-excursion
     (goto-char (point-min))
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index c7bf687..25aa580 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -339,8 +339,8 @@
 ;; When using `table-cell-map-hook' do not use `local-set-key'.
 ;;
 ;;   (add-hook 'table-cell-map-hook
-;;     (function (lambda ()
-;;       (local-set-key [<key sequence>] '<function>))))
+;;     (lambda ()
+;;       (local-set-key [<key sequence>] '<function>)))
 ;;
 ;; Adding the above to your init file is a common way to customize a
 ;; mode specific keymap.  However it does not work for this package.
@@ -349,8 +349,8 @@
 ;; explicitly.  The correct way of achieving above task is:
 ;;
 ;;   (add-hook 'table-cell-map-hook
-;;     (function (lambda ()
-;;       (define-key table-cell-map [<key sequence>] '<function>))))
+;;     (lambda ()
+;;       (define-key table-cell-map [<key sequence>] '<function>)))
 ;;
 ;; -----
 ;; Menu:
@@ -2929,7 +2929,7 @@ buffer, and leaves the previous contents of the buffer 
untouched.
 References used for this implementation:
 
 HTML:
-        URL `http://www.w3.org'
+        URL `https://www.w3.org'
 
 LaTeX:
         URL `http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/Tables.html'
@@ -3503,9 +3503,9 @@ column must consists from cells of same width."
       (let ((cell-list (table--vertical-cell-list 'top-to-bottom)))
        (unless
            (and (table--uniform-list-p
-                 (mapcar (function (lambda (cell) (car (table--get-coordinate 
(car cell))))) cell-list))
+                  (mapcar (lambda (cell) (car (table--get-coordinate (car 
cell)))) cell-list))
                 (table--uniform-list-p
-                 (mapcar (function (lambda (cell) (car (table--get-coordinate 
(cdr cell))))) cell-list)))
+                  (mapcar (lambda (cell) (car (table--get-coordinate (cdr 
cell)))) cell-list)))
          (error "Cells in this column are not in uniform width"))
        (unless lu-coord
          (setq lu-coord (table--get-coordinate (caar cell-list))))
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index a905d14..11db25c 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -422,7 +422,7 @@ An alternative value is \" . \", if you use a font with a 
narrow period."
        (push (cons "--" (match-beginning 0)) menu))
 
       ;; Sort in increasing buffer position order.
-      (sort menu (function (lambda (a b) (< (cdr a) (cdr b))))))))
+      (sort menu (lambda (a b) (< (cdr a) (cdr b)))))))
 
 ;;;;
 ;;;; Outline support
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 3c2d766..558a3fd 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -278,7 +278,7 @@ If nil, construct the regexp from 
`thing-at-point-uri-schemes'.")
   "Regexp matching a URI without a scheme component.")
 
 (defvar thing-at-point-uri-schemes
-  ;; Officials from http://www.iana.org/assignments/uri-schemes.html
+  ;; Officials from https://www.iana.org/assignments/uri-schemes.html
   '("aaa://" "about:" "acap://" "apt:" "bzr://" "bzr+ssh://"
     "attachment:/" "chrome://" "cid:" "content://" "crid://" "cvs://"
     "data:" "dav:" "dict://" "doi:" "dns:" "dtn:" "feed:" "file:/"
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index dd259ec..3aa7ff0 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -30,7 +30,7 @@
 ;; your images, use image-dired.el
 ;;
 ;; The 'convert' program from 'ImageMagick'
-;; [URL:http://www.imagemagick.org/] is required.
+;; [URL:https://www.imagemagick.org/] is required.
 ;;
 ;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some
 ;;         time.  The peoples at #emacs@freenode.net for numerous help.  RMS
diff --git a/lisp/url/ChangeLog.1 b/lisp/url/ChangeLog.1
index cf168eb..0309440 100644
--- a/lisp/url/ChangeLog.1
+++ b/lisp/url/ChangeLog.1
@@ -449,7 +449,7 @@
 
 2012-04-10  William Xu  <william.xwl@gmail.com>  (tiny change)
 
-       * url.el (url-retrieve-internal): Hexify multibye URL string first
+       * url.el (url-retrieve-internal): Hexify multibyte URL string first
        when necessary (bug#7017).
 
 2012-04-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
diff --git a/lisp/url/url-auth.el b/lisp/url/url-auth.el
index f204461..8f39b5a 100644
--- a/lisp/url/url-auth.el
+++ b/lisp/url/url-auth.el
@@ -39,7 +39,7 @@
 ;;; ------------------------
 ;;; This implements the BASIC authorization type.  See the online
 ;;; documentation at
-;;; http://www.w3.org/hypertext/WWW/AccessAuthorization/Basic.html
+;;; https://www.w3.org/hypertext/WWW/AccessAuthorization/Basic.html
 ;;; for the complete documentation on this type.
 ;;;
 ;;; This is very insecure, but it works as a proof-of-concept
diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el
index a67e5dc..056ad1e 100644
--- a/lisp/url/url-cache.el
+++ b/lisp/url/url-cache.el
@@ -125,8 +125,8 @@ The actual return value is the last modification time of 
the cache file."
 
        (setq fname (and fname
                         (mapconcat
-                         (function (lambda (x)
-                                     (if (= x ?~) "" (char-to-string x))))
+                          (lambda (x)
+                            (if (= x ?~) "" (char-to-string x)))
                          fname ""))
              fname (cond
                     ((null fname) nil)
diff --git a/lisp/url/url-irc.el b/lisp/url/url-irc.el
index 03a3b37..9647df1 100644
--- a/lisp/url/url-irc.el
+++ b/lisp/url/url-irc.el
@@ -22,7 +22,7 @@
 ;;; Commentary:
 
 ;; IRC URLs are defined in
-;; http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt
+;; https://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt
 
 ;;; Code:
 
diff --git a/lisp/url/url.el b/lisp/url/url.el
index 321e79c..33a5ebc 100644
--- a/lisp/url/url.el
+++ b/lisp/url/url.el
@@ -24,7 +24,7 @@
 
 ;;; Commentary:
 
-;; Registered URI schemes: http://www.iana.org/assignments/uri-schemes
+;; Registered URI schemes: https://www.iana.org/assignments/uri-schemes
 
 ;;; Code:
 
diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el
index cb0494e..1e4343c 100644
--- a/lisp/vc/pcvs.el
+++ b/lisp/vc/pcvs.el
@@ -1624,8 +1624,7 @@ With prefix argument, prompt for cvs flags."
 (defun-cvs-mode (cvs-mode-diff . DOUBLE) (flags)
   "Diff the selected files against the repository.
 This command compares the files in your working area against the
-revision which they are based upon.
-See also `cvs-diff-ignore-marks'."
+revision which they are based upon."
   (interactive
    (list (cvs-add-branch-prefix
          (cvs-add-secondary-branch-prefix
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 6defbf8..40f4cd9 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -344,7 +344,7 @@ non-nil means return old filename."
        ;; Don't unquote the old name, it wasn't quoted in the first place
         (and file (setq file (wdired-normalize-filename file (not old)))))
       (if (or no-dir old)
-         file
+         (if no-dir (file-relative-name file) file)
        (and file (> (length file) 0)
              (concat (dired-current-directory) file))))))
 
@@ -913,9 +913,9 @@ Like original function but it skips read-only words."
         (if (= (length perms-new) 10)
             (progn
               (setq perm-tmp
-                    (int-to-string (wdired-perms-to-number perms-new)))
-              (unless (equal 0 (process-file dired-chmod-program
-                                            nil nil nil perm-tmp filename))
+                    (string-to-number
+                     (int-to-string (wdired-perms-to-number perms-new)) 8))
+              (unless (set-file-modes filename perm-tmp)
                 (setq errors (1+ errors))
                 (dired-log "%s %s `%s' failed\n\n"
                            dired-chmod-program perm-tmp filename)))
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 2e05d93..6690578 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -5,7 +5,7 @@
 ;; Author: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
 ;; Keywords: data, wp
 ;; Version: 13.2.2
-;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
+;; X-URL: https://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
 
 ;; This file is part of GNU Emacs.
 
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 0a2ddb0..6568cd2 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -203,27 +203,100 @@ nil means read a single character."
   :group 'widgets
   :type 'boolean)
 
+(defun widget--simplify-menu (extended)
+  "Convert the EXTENDED menu into a menu composed of simple menu items.
+
+Each item in the simplified menu is of the form (ITEM-STRING . REAL-BINDING),
+where both elements are taken from the EXTENDED MENU.  ITEM-STRING is the
+correspondent ITEM-NAME in the menu-item entry:
+ (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST), and REAL-BINDING is
+the symbol in the key vector, as in `define-key'.
+ (See `(elisp)Defining Menus' for more information.)
+
+Only visible, enabled and meaningful menu items make their way into
+the returned simplified menu.  That is:
+For the menu item to be visible, it has to either lack a :visible form in its
+item-property-list, or the :visible form has to evaluate to a non-nil value.
+For the menu item to be enabled, it has to either lack a :enabled form in its
+item-property-list, or the :enable form has to evaluate to a non-nil value.
+Additionally, if the menu item is a radio button, then its selected form has
+to evaluate to nil for the menu item to be meaningful."
+  (let (simplified)
+    (map-keymap (lambda (ev def)
+                  (when (and (eq (nth 0 def) 'menu-item)
+                             (nth 2 def)) ; Only menu-items with a real 
binding.
+                    ;; Loop through the item-property-list, looking for
+                    ;; :visible, :enable (or :active) and :button properties.
+                    (let ((plist (nthcdr 3 def))
+                          (enable t) ; Enabled by default.
+                          (visible t) ; Visible by default.
+                          selected keyword value)
+                      (while (and plist (cdr plist)
+                                  (keywordp (setq keyword (car plist))))
+                        (setq value (cadr plist))
+                        (cond ((memq keyword '(:visible :included))
+                               (setq visible value))
+                              ((memq keyword '(:enable :active))
+                               (setq enable value))
+                              ((and (eq keyword :button)
+                                    (eq (car value) :radio))
+                               (setq selected (cdr value))))
+                        (setq plist (cddr plist)))
+                      (when (and (eval visible)
+                                 (eval enable)
+                                 (or (not selected)
+                                     (not (eval selected))))
+                        (push (cons (nth 1 def) ev) simplified)))))
+                extended)
+    (reverse simplified)))
+
 (defun widget-choose (title items &optional event)
   "Choose an item from a list.
 
 First argument TITLE is the name of the list.
-Second argument ITEMS is a list whose members are either
+Second argument ITEMS should be a menu, either with simple item definitions,
+or with extended item definitions.
+When ITEMS has simple item definitions, it is a list whose members are either
  (NAME . VALUE), to indicate selectable items, or just strings to
  indicate unselectable items.
+
+When ITEMS is a menu that uses an extended format, then ITEMS should be a
+keymap, and each binding should look like this:
+ (menu-item ITEM-NAME REAL-BINDING . ITEM-PROPERTY-LIST)
+or like this: (menu-item ITEM-NAME) to indicate a non-selectable item.
+REAL-BINDING should be a symbol, and should not be a keymap, because submenus
+are not supported.
+
 Optional third argument EVENT is an input event.
 
-The user is asked to choose between each NAME from the items alist,
-and the VALUE of the chosen element will be returned.  If EVENT is a
-mouse event, and the number of elements in items is less than
+If EVENT is a mouse event, and the number of elements in items is less than
 `widget-menu-max-size', a popup menu will be used, otherwise the
-minibuffer."
+minibuffer.
+
+The user is asked to choose between each NAME from ITEMS.
+If ITEMS has simple item definitions, then this function returns the VALUE of
+the chosen element.  If ITEMS is a keymap, then the return value is the symbol
+in the key vector, as in the argument of `define-key'."
   (cond ((and (< (length items) widget-menu-max-size)
              event (display-popup-menus-p))
         ;; Mouse click.
-        (x-popup-menu event
-                      (list title (cons "" items))))
+         (if (keymapp items)
+             ;; Modify the keymap prompt, and then restore the old one, if any.
+             (let ((prompt (keymap-prompt items)))
+               (unwind-protect
+                   (progn
+                     (setq items (delete prompt items))
+                     (push title (cdr items))
+                     ;; Return just the first element of the list of events.
+                     (car (x-popup-menu event items)))
+                 (setq items (delete title items))
+                 (when prompt
+                   (push prompt (cdr items)))))
+          (x-popup-menu event (list title (cons "" items)))))
        ((or widget-menu-minibuffer-flag
             (> (length items) widget-menu-max-shortcuts))
+         (when (keymapp items)
+           (setq items (widget--simplify-menu items)))
         ;; Read the choice of name from the minibuffer.
         (setq items (cl-remove-if 'stringp items))
         (let ((val (completing-read (concat title ": ") items nil t)))
@@ -233,6 +306,8 @@ minibuffer."
                   (setq val try))
                 (cdr (assoc val items))))))
        (t
+         (when (keymapp items)
+           (setq items (widget--simplify-menu items)))
         ;; Construct a menu of the choices
         ;; and then use it for prompting for a single character.
         (let* ((next-digit ?0)
diff --git a/lisp/window.el b/lisp/window.el
index 9aca94d..1fcfffc 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5480,7 +5480,7 @@ frame.  The selected window is not changed by this 
function."
                (set-window-parameter
                 (window-parent new) 'window-side window-side))))
           ((eq window-combination-resize 'atom)
-           ;; Make sure `window--check-frame' won't destroy an existing
+            ;; Make sure `window--check' won't destroy an existing
            ;; atomic window in case the new window gets nested inside.
            (unless (window-parameter window 'window-atom)
              (set-window-parameter window 'window-atom t))
@@ -7712,7 +7712,7 @@ indirectly called by the latter."
                (with-current-buffer (window-buffer window)
                  (cond ((memq major-mode allowed-modes)
                         'same)
-                       ((derived-mode-p allowed-modes)
+                       ((apply #'derived-mode-p allowed-modes)
                         'derived)))))
           (when (and mode?
                      (not (and inhibit-same-window-p
diff --git a/lisp/xml.el b/lisp/xml.el
index 236d9cb..c96ff80 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -655,7 +655,7 @@ Leave point at the first non-blank character after the tag."
       (setq name (xml-maybe-do-ns (match-string-no-properties 1) nil xml-ns))
       (goto-char end-pos)
 
-      ;; See also: http://www.w3.org/TR/2000/REC-xml-20001006#AVNormalize
+      ;; See also: https://www.w3.org/TR/2000/REC-xml-20001006#AVNormalize
 
       ;; Do we have a string between quotes (or double-quotes),
       ;;  or a simple word ?
diff --git a/m4/pkg.m4 b/m4/pkg.m4
index 13a8890..f9075e5 100644
--- a/m4/pkg.m4
+++ b/m4/pkg.m4
@@ -86,7 +86,7 @@ dnl Check to see whether a particular set of modules exists. 
Similar to
 dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
 dnl
 dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-dnl only at the first occurence in configure.ac, so if the first place
+dnl only at the first occurrence in configure.ac, so if the first place
 dnl it's called might be skipped (such as if it is within an "if", you
 dnl have to call PKG_CHECK_EXISTS manually
 AC_DEFUN([PKG_CHECK_EXISTS],
diff --git a/nextstep/ChangeLog.1 b/nextstep/ChangeLog.1
index 463705a..5d866e6 100644
--- a/nextstep/ChangeLog.1
+++ b/nextstep/ChangeLog.1
@@ -14,7 +14,7 @@
 
 2014-11-03  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * INSTALL: Remove univeral binary section.
+       * INSTALL: Remove universal binary section.
 
 2014-10-20  Glenn Morris  <rgm@gnu.org>
 
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
index 1c954b2..fbbd360 100644
--- a/src/ChangeLog.10
+++ b/src/ChangeLog.10
@@ -9344,7 +9344,7 @@
        * dispextern.h (struct glyph_row): New member overlay_arrow_bitmap.
        It replaces the corresponding member from struct window, as a
        window may now show multiple overlay arrows.
-       Remove member overlay_arrow_p, superseeded by overlay_arrow_bitmap.
+       Remove member overlay_arrow_p, superseded by overlay_arrow_bitmap.
 
        * dispnew.c (row_equal_p, update_window_line, scrolling_window):
        Compare overlay_arrow_bitmap than overlay_arrow_p members.
@@ -11141,7 +11141,7 @@
        * eval.c (Fdefun, Fdefmacro): Use (defun . FN_NAME) in LOADHIST_ATTACH.
        (Fdefvaralias, Fdefvar, Fdefconst): Use just SYM in LOADHIST_ATTACH.
        (Qdefvar): Var deleted.
-       (syms_of_eval): Don't initialze it.
+       (syms_of_eval): Don't initialize it.
 
        * lread.c (syms_of_lread) <load-history>: Doc fix.
 
@@ -18716,7 +18716,7 @@
        and line_height, and use corresponding new members in struct
        frame.  All uses changed.
        (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros;
-       superseeded by corresponding macros in frame.h.
+       superseded by corresponding macros in frame.h.
 
        * msdos.c: Make (several) trivial substitutions for renamed and
        new macros in dispextern.h, frame.h and window.h.
@@ -19145,7 +19145,7 @@
        (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp variable.
 
        * lread.c (read1): Before calling index, check if the 2nd
-       arguemnt is in ASCII range.
+       argument is in ASCII range.
 
 2003-04-08  Richard M. Stallman  <rms@gnu.org>
 
@@ -19945,7 +19945,7 @@
 2003-03-09  David Kastrup  <dak@gnu.org>
 
        * process.c (read_process_output): We have allocated enough space
-       for readmax and carryover, so actually use the alloted space.
+       for readmax and carryover, so actually use the allotted space.
 
 2003-03-09  Jan Djärv  <jan.h.d@swipnet.se>
 
@@ -24638,7 +24638,7 @@
        * w32gui.h (struct XImage): Define.
 
        * w32term.c (w32_read_socket) <WM_XBUTTONUP>: Use XFASTINT to
-       extract mouse co-ordinates.
+       extract mouse coordinates.
 
 2002-03-20  Jason Rumney  <jasonr@gnu.org>
 
@@ -25377,7 +25377,7 @@
        Handle literal output of strings by sharing the
        main-line code for strings, using local var `literal'.
        Handle :propertize feature.
-       (syms_of_xdisp): Initialze and staticpro QCpropertize and
+       (syms_of_xdisp): Initialize and staticpro QCpropertize and
        mode_line_proptrans_alist.
 
 2002-02-11  Kim F. Storm  <storm@cua.dk>
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11
index 2942d35..1086d11 100644
--- a/src/ChangeLog.11
+++ b/src/ChangeLog.11
@@ -947,7 +947,7 @@
        (c_string_pos, number_of_chars, message_dolog):
        (message_log_check_duplicate, set_message_1, store_mode_line_noprop):
        (display_mode_element, display_string):
-       Switch between char * and unsigned char * to stay compatible wth
+       Switch between char * and unsigned char * to stay compatible with
        C89 pointer rules.
 
        * regex.c: Conform to C89 pointer rules.
@@ -9492,7 +9492,7 @@
        * coding.c (decode_coding_ccl): Fix previous change for the
        multibyte case.
        (encode_coding_ccl): Don't setup ccl program here.  Fix for the
-       case that the output buffer is fullfilled.
+       case that the output buffer is fulfilled.
        (encode_coding): Setup ccl program here.
 
 2010-03-23  Dan Nicolaescu  <dann@ics.uci.edu>
@@ -9772,10 +9772,10 @@
 2010-02-17  Kenichi Handa  <handa@m17n.org>
 
        * coding.c (decode_coding_ccl): Don't setup ccl program here.
-       Fix for the case that the output buffer is fullfilled.
+       Fix for the case that the output buffer is fulfilled.
        (decode_coding): Setup ccl program here.  Keep looping when the
        decoder stopped because the output buffer is
-       fullfilled (bug#5534).
+       fulfilled (bug#5534).
 
        * ccl.c (ccl_driver): Never reset ic to CCL_HEADER_MAIN.
 
@@ -23923,7 +23923,7 @@
 
 2008-02-01  Kenichi Handa  <handa@m17n.org>
 
-       * alloc.c (NSTATICS): Increas to 0x600.
+       * alloc.c (NSTATICS): Increase to 0x600.
 
 2008-02-01  Kenichi Handa  <handa@m17n.org>
 
@@ -25309,12 +25309,12 @@
 
        * coding.c (enum iso_code_class_type): Delete ISO_carriage_return.
        (CODING_GET_INFO): Delete argument eol_type.  Change callers.
-       (decode_coding_utf_8): Don't do eol converion.
+       (decode_coding_utf_8): Don't do eol conversion.
        (detect_coding_utf_16): Check coding->src_chars, not
        coding->src_bytes.  Add heuristics for those that have no signature.
        (decode_coding_emacs_mule, decode_coding_iso_2022)
        (decode_coding_sjis, decode_coding_big5, decode_coding_charset):
-       Don't do eol converion.
+       Don't do eol conversion.
        (adjust_coding_eol_type): Return a new coding system.
        (detect_coding): Don't detect eol.  Fix for utf-16 detection.
        (decode_eol): In case of CRLF->LF conversion, use del_range_2 on
@@ -25952,7 +25952,7 @@
        (font_list): The argument REGISTRY is now a list of registry names.
        (choose_face_font): If we are choosing an ASCII font, and ATTRS
        specifies an explicit font name, return the name as is.  Make a
-       list of registy names.
+       list of registry names.
 
        * xfns.c (x_set_font, x_create_tip_frame): Adjust for the change
        of x_new_fontset.
@@ -26647,7 +26647,7 @@
        (fontset_set): Delete.
        (fontset_face): New arg FACE.  Return face ID, not face.
        Complete re-write to handle new fontset structure.  Change caller.
-       (free_face_fontset): Use ASET istead of AREF (X) = Y.
+       (free_face_fontset): Use ASET instead of AREF (X) = Y.
        (face_for_char): Don't call lookup_face.
        (make_fontset_for_ascii_face): New arg FACE.
        (fs_load_font): New arg CHARSET_ID.  Don't check
@@ -31141,7 +31141,7 @@
        * term.c (term_mouse_highlight): Remove unused variables.
        (Fterm_open_connection): Set gpm_zerobased to 1.
        (term_mouse_movement, term_mouse_click, handle_one_term_event):
-       Use zero based co-ordinates.
+       Use zero based coordinates.
        (handle_one_term_event): Report a drag as mouse movement too.
 
        * Makefile.in (MOUSE_SUPPORT): Define for HAVE_GPM.
diff --git a/src/ChangeLog.12 b/src/ChangeLog.12
index 0397a49..04983fe 100644
--- a/src/ChangeLog.12
+++ b/src/ChangeLog.12
@@ -239,7 +239,7 @@
 
        * lisp.h (find_next_newline_no_quit): Rename to find_next_newline.
        * xdisp.c (back_to_previous_line_start, forward_to_next_line_start)
-       (get_visually_first_element, move_it_vertically_backward): Ajust users.
+       (get_visually_first_element, move_it_vertically_backward): Adjust users.
        * bidi.c (bidi_find_paragraph_start): Likewise.
        * indent.c (vmotion): Likewise.
 
@@ -7335,7 +7335,7 @@
 
 2012-08-17  Chong Yidong  <cyd@gnu.org>
 
-       * xfaces.c (merge_face_vectors): If the target font specfies a
+       * xfaces.c (merge_face_vectors): If the target font specifies a
        font spec, make the font's attributes take precedence over
        directly-specified attributes.
        (merge_face_ref): Recognize :font.
@@ -9265,7 +9265,7 @@
 
        * nsmenu.m (ns_update_menubar, ns_menu_show, process_dialog)
        (initFromContents): Use SSDATA where appropriate.
-       (ns_update_menubar): Add braces to ambigous if-else.
+       (ns_update_menubar): Add braces to ambiguous if-else.
        (initWithTitle): Put () around assignment in if statement.
        (ns_menu_show): Remove unused variables window and keymap.
        (update_frame_tool_bar): Remove unused variable selected_p.
@@ -14333,7 +14333,7 @@
 
 2011-11-21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
-       * process.c (wait_reading_process_output): Fix asynchrounous
+       * process.c (wait_reading_process_output): Fix asynchronous
        GnuTLS socket handling on some versions of the GnuTLS library.
        (wait_reading_process_output): Add comment and URL.
 
@@ -21271,7 +21271,7 @@
        not the number of arguments given.  This is simpler and lets GCC
        4.6.0 generate slightly better code.
 
-       * ftfont.c: Distingish more carefully between FcChar8 and char.
+       * ftfont.c: Distinguish more carefully between FcChar8 and char.
        The previous code passed unsigned char * to a functions like
        strlen and xstrcasecmp that expect char *, which does not
        conform to the C standard.
diff --git a/src/ChangeLog.13 b/src/ChangeLog.13
index 791de9a..87055d7 100644
--- a/src/ChangeLog.13
+++ b/src/ChangeLog.13
@@ -580,7 +580,7 @@
        (x_intersect_rectangles, clear_mouse_face, display_tty_menu_item):
        * lisp.h (setup_echo_area_for_printing, message_with_string)
        (pos_visible_p): Use bool for boolean.
-       * xdisp.c: Use bool, true, false intstead of int, 1, 0.
+       * xdisp.c: Use bool, true, false instead of int, 1, 0.
        Remove unnecessary forward decls.
        (trace_move) [DEBUG_TRACE_MOVE]: Now static.
        (CHECK_IT, CHECK_WINDOW_END):
@@ -685,7 +685,7 @@
        Inhibit resizing fullwidth-/height frames in one direction only.
        Update frame_size_history.
        (adjust_frame_size): Call frame_size_history_add.
-       (make_frame): Initalize after_make_frame slot.
+       (make_frame): Initialize after_make_frame slot.
        (Fmake_terminal_frame): Adjust adjust_frame_size call.
        (Fcan_run_window_configuration_change_hook): Rename to
        Fframe_after_make_frame.  Set after_make_frame slot.
@@ -1419,7 +1419,7 @@
 
 2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 
-       Port to 32-bit MingGW --with-wide-int
+       Port to 32-bit MinGW --with-wide-int
        Problem reported by Eli Zaretskii in:
        https://lists.gnu.org/r/emacs-devel/2015-01/msg00265.html
        * lisp.h (struct Lisp_Sub_Char_Table): Check that offset matches
@@ -1635,7 +1635,7 @@
 2015-01-06  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (x_set_window_size): Call updateFrameSize to get real
-       size instead of using widht/height.  The frame may be
+       size instead of using width/height.  The frame may be
        constrained (Bug#19482).
 
 2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
@@ -2102,7 +2102,7 @@
        Partially disabled previous change.
 
        * image.c (svg_load): Temporarily disabled filename thing for
-       not-a-file case as it can cause crashs.
+       not-a-file case as it can cause crashes.
 
 2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
 
@@ -2807,7 +2807,7 @@
        * nsselect.m (QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME)
        (NXPrimaryPboard, NXSecondaryPboard): Declare static.
        (Qforeign_selection): Remove.
-       (ns_get_local_selection): Identation fix.
+       (ns_get_local_selection): Indentation fix.
        (syms_of_nsselect): Remove Qforeign_selection, ns-lost-selection-hooks
 
        * nsselect.m (ns_get_local_selection): Remove calling of
@@ -5162,7 +5162,7 @@
 2014-07-27  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange):
-       Reinstate code removed by the prevoius commit to this file.
+       Reinstate code removed by the previous commit to this file.
 
 2014-07-27  Martin Rudalics  <rudalics@gmx.at>
 
@@ -7847,11 +7847,11 @@
        * w32.c (unsetenv): Remove unused var `retval'.
        (emacs_gnutls_pull): Remove unused vars `fdset' and `timeout'.
 
-       * w32notify.c (watch_worker): Remove unnecesary var sleep_result.
+       * w32notify.c (watch_worker): Remove unnecessary var sleep_result.
        (start_watching): Remove unused var `thr'.
 
        * w32proc.c (sys_spawnve): Comment out unused vars `first', `last'.
-       (find_child_console): Remove unnecesary var `thread_id'.
+       (find_child_console): Remove unnecessary var `thread_id'.
 
        * w32term.c (w32_read_socket): Comment out unused vars `row', `columns'.
        (x_focus_frame): #ifdef 0 unused variable `dpyinfo'.
@@ -9004,7 +9004,7 @@
        * widget.c (pixel_to_text_size): New function.
        (update_wm_hints): Have size hints respect value of
        frame_resize_pixelwise.
-       (EmacsFrameResize): Alway process resize requests pixelwise.
+       (EmacsFrameResize): Always process resize requests pixelwise.
        * window.c (grow_mini_window): Make sure mini window is at least
        one line tall.
        * xdisp.c (display_menu_bar): Make sure menubar extends till
@@ -10768,7 +10768,7 @@
 
        * search.c (find_newline): Rewrite to prefer offsets to pointers.
        This avoids undefined behavior when subtracting pointers into
-       different aways.  On my platform it also makes the code a tad
+       different always.  On my platform it also makes the code a tad
        smaller and presumably faster.
 
 2013-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>
@@ -13849,7 +13849,7 @@
 
 2013-08-13  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * nsterm.m (ns_set_vertical_scroll_bar): Fix breakage intruduced by
+       * nsterm.m (ns_set_vertical_scroll_bar): Fix breakage introduced by
        2013-08-13 checkin below.  Change bool to BOOL, rule is:
        All Obj-C code uses BOOL, except for interfaces callable from C.
 
@@ -14041,7 +14041,7 @@
        the caller.  Do not lock the temp file.  Unwind-protect the file
        and the file-descriptor.
        (Fcall_process_region): If the input is /dev/null, unwind-protect it.
-       If an asynchrounous process, record it here, not in call_process.
+       If an asynchronous process, record it here, not in call_process.
        (syms_of_callproc) [MSDOS]: Initialize synch_process_tempfile.
        * eval.c (set_unwind_protect): New function.
        * fileio.c (write_region): New function, generalized from the
@@ -14764,7 +14764,7 @@
        All callers changed.
        (create_process): Recover pty_flag from process, not from volatile 
local.
        (create_pty): Stay inside array even when pty allocation fails.
-       (Fmake_serial_process): Omit unnecessary initializaiton of pty_flag.
+       (Fmake_serial_process): Omit unnecessary initialization of pty_flag.
 
        * lread.c (Fload): Avoid initialization only when lint checking.
        Mention that it's needed only for older GCCs.
@@ -17372,7 +17372,7 @@
 2013-03-31  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * frame.h (struct frame): Drop scroll_bottom_vpos
-       member becaue all real users are dead long ago.
+       member because all real users are dead long ago.
        (FRAME_SCROLL_BOTTOM_VPOS): Remove.
        * xdisp.c (redisplay_internal): Adjust user.
 
@@ -17394,7 +17394,7 @@
        (menuNeedsUpdate:): Add check for ! COCOA || OSX < 10.5 (Bug#12698).
 
        * nsterm.m (menu_will_open_state, menu_mouse_point)
-       (menu_pending_title): New varaibles.
+       (menu_pending_title): New variables.
        (ns_get_pending_menu_title, ns_check_menu_open)
        (ns_check_pending_open_menu): New functions.
 
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index 9732518..4e40305 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -11656,8 +11656,8 @@
        pixel_to_glyph_translation, and rewritten.  Just get coordinates,
        don't return anything.
        (buffer_posn_from_coords): New function - given a window and
-       co-ordinates on the screen, find the buffer position at those
-       co-ordinates.
+       coordinates on the screen, find the buffer position at those
+       coordinates.
 
 1991-01-08  Jim Blandy  (jimb@geech.ai.mit.edu)
 
@@ -16140,7 +16140,7 @@
        New format %S converts everything (even strings) with prin1.
        * doprnt.c (doprnt): Treat %s like %S.
 
-       * print.c (Fprin1_to_string): Opt 3nd arg non-nil does princ.
+       * print.c (Fprin1_to_string): Opt 3rd arg non-nil does princ.
 
 1988-12-31  Richard Stallman  (rms@sugar-bombs.ai.mit.edu)
 
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 17522e4..c7b99a4 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -1572,7 +1572,7 @@
        (wait_reading_process_input): Use emacs_strerror, not strerror.
 
        * process.c (status_message, sigchld_handler): Synchronize locale,
-       then use strsignal istead of sys_siglist.
+       then use strsignal instead of sys_siglist.
        * w32proc.c (sys_wait): Likewise.
 
        * s/aix3-1.h, s/bsd4-1.h, s/dgux.h, s/gnu-linux.h, s/hiuxmpp.h:
@@ -7560,7 +7560,7 @@
        (recompute_basic_faces): Realize basic faces only if face cache is
        allocated, i.e. after init_frame_faces has been called.
 
-       * frame.c (make_frame): Initialze face cache with null.
+       * frame.c (make_frame): Initialize face cache with null.
 
        * xfaces.c (same_size_fonts): Remove.
 
@@ -9810,7 +9810,7 @@
 1997-10-13  Gerd Moellmann  <gerd@acm.org>
 
        * xdisp.c (redisplay_window): Use available current matrix to
-       skip faster when only point is moved withing the window.
+       skip faster when only point is moved within the window.
 
        * intervals.c: Include stdio.h.
        (find_interval): Trace to stderr to catch some nasty error
@@ -9859,7 +9859,7 @@
        * emacs.c: FreeBSD headers for profiling removed.
 
        * dispnew.c (direct_output_for_insert): Don't use PT-1 for
-       display cursor, use DEC_POS instread.
+       display cursor, use DEC_POS instead.
 
        * xfaces.c (load_font): Use x_load_font to load fonts so that
        all fonts are in the font table.
@@ -11940,7 +11940,7 @@
        This avoids a conflict with a system header file paths.h on GNU/Linux.
 
        * callproc.c, lread.c, w32fns.c, xfns.c, xrdb.c:
-       Use epaths.h istead of paths.h.
+       Use epaths.h instead of paths.h.
 
 1999-02-26  Andreas Schwab  <schwab@gnu.org>
 
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index 9f12748..0c1f72a 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -10388,7 +10388,7 @@
        ISO_control_0 and ISO_control_1.
 
        * coding.h (enum iso_code_class_type): Member ISO_control_code is
-       devided into ISO_control_0 and ISO_control_1.
+       divided into ISO_control_0 and ISO_control_1.
        (struct coding_system): New members src_multibyte, dst_multibyte,
        errors, and result.  Delete member fake_multibyte.
        (CODING_REQUIRE_DECODING): Return 1 if coding->dst_multibyte is
diff --git a/src/dbusbind.c b/src/dbusbind.c
index b06077d..cca5f13 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -209,9 +209,12 @@ xd_dbus_type_to_symbol (int type)
     : Qnil;
 }
 
+#define XD_KEYWORDP(object) !NILP (Fkeywordp (object))
+
 /* Check whether a Lisp symbol is a predefined D-Bus type symbol.  */
 #define XD_DBUS_TYPE_P(object)                                         \
-  (SYMBOLP (object) && ((xd_symbol_to_dbus_type (object) != 
DBUS_TYPE_INVALID)))
+  XD_KEYWORDP (object) &&                                              \
+    ((xd_symbol_to_dbus_type (object) != DBUS_TYPE_INVALID))
 
 /* Determine the DBusType of a given Lisp OBJECT.  It is used to
    convert Lisp objects, being arguments of `dbus-call-method' or
@@ -463,6 +466,7 @@ xd_signature (char *signature, int dtype, int parent_type, 
Lisp_Object object)
       CHECK_CONS (object);
 
       elt = XD_NEXT_VALUE (elt);
+      CHECK_CONS (elt);
       subtype = XD_OBJECT_TO_DBUS_TYPE (CAR_SAFE (elt));
       xd_signature (x, subtype, dtype, CAR_SAFE (XD_NEXT_VALUE (elt)));
 
@@ -474,11 +478,12 @@ xd_signature (char *signature, int dtype, int 
parent_type, Lisp_Object object)
       break;
 
     case DBUS_TYPE_STRUCT:
-      /* A struct list might contain any number of elements with
-        different types.  No further check needed.  */
+      /* A struct list might contain any (but zero) number of elements
+        with different types.  No further check needed.  */
       CHECK_CONS (object);
 
       elt = XD_NEXT_VALUE (elt);
+      CHECK_CONS (elt);
 
       /* Compose the signature from the elements.  It is enclosed by
         parentheses.  */
@@ -509,6 +514,7 @@ xd_signature (char *signature, int dtype, int parent_type, 
Lisp_Object object)
 
       /* First element.  */
       elt = XD_NEXT_VALUE (elt);
+      CHECK_CONS (elt);
       subtype = XD_OBJECT_TO_DBUS_TYPE (CAR_SAFE (elt));
       xd_signature (x, subtype, dtype, CAR_SAFE (XD_NEXT_VALUE (elt)));
       xd_signature_cat (signature, x);
@@ -518,6 +524,7 @@ xd_signature (char *signature, int dtype, int parent_type, 
Lisp_Object object)
 
       /* Second element.  */
       elt = CDR_SAFE (XD_NEXT_VALUE (elt));
+      CHECK_CONS (elt);
       subtype = XD_OBJECT_TO_DBUS_TYPE (CAR_SAFE (elt));
       xd_signature (x, subtype, dtype, CAR_SAFE (XD_NEXT_VALUE (elt)));
       xd_signature_cat (signature, x);
@@ -1227,7 +1234,7 @@ this connection to those buses.  */)
                                                xd_add_watch,
                                                xd_remove_watch,
                                                xd_toggle_watch,
-                                               SYMBOLP (bus)
+                                               XD_KEYWORDP (bus)
                                                ? (void *) XSYMBOL (bus)
                                                : (void *) XSTRING (bus),
                                                NULL))
@@ -1793,7 +1800,7 @@ xd_read_queued_messages (int fd, void *data)
     while (!NILP (busp))
       {
        key = CAR_SAFE (CAR_SAFE (busp));
-       if ((SYMBOLP (key) && XSYMBOL (key) == data)
+       if ((XD_KEYWORDP (key) && XSYMBOL (key) == data)
            || (STRINGP (key) && XSTRING (key) == data))
          bus = key;
        busp = CDR_SAFE (busp);
diff --git a/src/image.c b/src/image.c
index 6ecf6a7..25d5af8 100644
--- a/src/image.c
+++ b/src/image.c
@@ -2329,8 +2329,14 @@ lookup_image (struct frame *f, Lisp_Object spec, int 
face_id)
   struct image *img;
   EMACS_UINT hash;
 
-  struct face *face = (face_id >= 0) ? FACE_FROM_ID (f, face_id)
-    : FACE_FROM_ID (f, DEFAULT_FACE_ID);
+  if (FRAME_FACE_CACHE (f) == NULL)
+    init_frame_faces (f);
+  if (FRAME_FACE_CACHE (f)->used == 0)
+    recompute_basic_faces (f);
+  if (face_id < 0 || face_id >= FRAME_FACE_CACHE (f)->used)
+    face_id = DEFAULT_FACE_ID;
+
+  struct face *face = FACE_FROM_ID (f, face_id);
   unsigned long foreground = FACE_COLOR_TO_PIXEL (face->foreground, f);
   unsigned long background = FACE_COLOR_TO_PIXEL (face->background, f);
 
diff --git a/src/indent.c b/src/indent.c
index 581323b..4ecf02b 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -524,9 +524,11 @@ check_display_width (ptrdiff_t pos, ptrdiff_t col, 
ptrdiff_t *endpos)
    comes first.
    Return the resulting buffer position and column in ENDPOS and GOALCOL.
    PREVCOL gets set to the column of the previous position (it's always
-   strictly smaller than the goal column).  */
+   strictly smaller than the goal column), and PREVPOS and PREVBPOS get set
+   to the corresponding buffer character and byte positions.  */
 static void
-scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, ptrdiff_t *prevcol)
+scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol,
+                ptrdiff_t *prevpos, ptrdiff_t *prevbpos, ptrdiff_t *prevcol)
 {
   int tab_width = SANE_TAB_WIDTH (current_buffer);
   bool ctl_arrow = !NILP (BVAR (current_buffer, ctl_arrow));
@@ -540,10 +542,12 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, 
ptrdiff_t *prevcol)
   register ptrdiff_t col = 0, prev_col = 0;
   EMACS_INT goal = goalcol ? *goalcol : MOST_POSITIVE_FIXNUM;
   ptrdiff_t end = endpos ? *endpos : PT;
-  ptrdiff_t scan, scan_byte, next_boundary;
+  ptrdiff_t scan, scan_byte, next_boundary, prev_pos, prev_bpos;
 
   scan = find_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, -1, NULL, &scan_byte, 1);
   next_boundary = scan;
+  prev_pos = scan;
+  prev_bpos = scan_byte;
 
   window = Fget_buffer_window (Fcurrent_buffer (), Qnil);
   w = ! NILP (window) ? XWINDOW (window) : NULL;
@@ -576,6 +580,8 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, 
ptrdiff_t *prevcol)
       if (col >= goal)
        break;
       prev_col = col;
+      prev_pos = scan;
+      prev_bpos = scan_byte;
 
       { /* Check display property.  */
        ptrdiff_t endp;
@@ -705,6 +711,10 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, 
ptrdiff_t *prevcol)
     *goalcol = col;
   if (endpos)
     *endpos = scan;
+  if (prevpos)
+    *prevpos = prev_pos;
+  if (prevbpos)
+    *prevbpos = prev_bpos;
   if (prevcol)
     *prevcol = prev_col;
 }
@@ -720,7 +730,7 @@ current_column_1 (void)
   EMACS_INT col = MOST_POSITIVE_FIXNUM;
   ptrdiff_t opoint = PT;
 
-  scan_for_column (&opoint, &col, NULL);
+  scan_for_column (&opoint, &col, NULL, NULL, NULL);
   return col;
 }
 
@@ -988,7 +998,7 @@ to reach COLUMN, add spaces/tabs to get there.
 The return value is the current column.  */)
   (Lisp_Object column, Lisp_Object force)
 {
-  ptrdiff_t pos, prev_col;
+  ptrdiff_t pos, prev_pos, prev_bpos, prev_col;
   EMACS_INT col;
   EMACS_INT goal;
 
@@ -997,7 +1007,7 @@ The return value is the current column.  */)
 
   col = goal;
   pos = ZV;
-  scan_for_column (&pos, &col, &prev_col);
+  scan_for_column (&pos, &col, &prev_pos, &prev_bpos, &prev_col);
 
   SET_PT (pos);
 
@@ -1006,18 +1016,16 @@ The return value is the current column.  */)
   if (!NILP (force) && col > goal)
     {
       int c;
-      ptrdiff_t pos_byte = PT_BYTE;
 
-      pos_byte -= prev_char_len (pos_byte);
-      c = FETCH_CHAR (pos_byte);
-      if (c == '\t' && prev_col < goal)
+      c = FETCH_CHAR (prev_bpos);
+      if (c == '\t' && prev_col < goal && prev_bpos < PT_BYTE)
        {
          ptrdiff_t goal_pt, goal_pt_byte;
 
          /* Insert spaces in front of the tab to reach GOAL.  Do this
             first so that a marker at the end of the tab gets
             adjusted.  */
-         SET_PT_BOTH (PT - 1, PT_BYTE - 1);
+         SET_PT_BOTH (prev_pos, prev_bpos);
          Finsert_char (make_fixnum (' '), make_fixnum (goal - prev_col), Qt);
 
          /* Now delete the tab, and indent to COL.  */
diff --git a/src/w16select.c b/src/w16select.c
index 5a68162..b56ced4 100644
--- a/src/w16select.c
+++ b/src/w16select.c
@@ -224,7 +224,7 @@ set_clipboard_data (unsigned Format, void *Data, unsigned 
Size, int Raw)
 
   if (!Raw)
     {
-      /* avoid using strchr because it recomputes the length everytime */
+      /* avoid using strchr because it recomputes the length every time */
       while ((dp = memchr (dp, '\n', Size - (dp - dstart))) != 0)
        {
          truelen++;
diff --git a/src/w32.c b/src/w32.c
index 38bbc49..d4a8d2e 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -6520,7 +6520,8 @@ acl_get_file (const char *fname, acl_type_t type)
                {
                  xfree (psd);
                  err = GetLastError ();
-                 if (err == ERROR_NOT_SUPPORTED)
+                 if (err == ERROR_NOT_SUPPORTED
+                     || err == ERROR_ACCESS_DENIED)
                    errno = ENOTSUP;
                  else if (err == ERROR_FILE_NOT_FOUND
                           || err == ERROR_PATH_NOT_FOUND
@@ -6538,7 +6539,11 @@ acl_get_file (const char *fname, acl_type_t type)
                      be encoded in the current ANSI codepage. */
                   || err == ERROR_INVALID_NAME)
            errno = ENOENT;
-         else if (err == ERROR_NOT_SUPPORTED)
+         else if (err == ERROR_NOT_SUPPORTED
+                  /* ERROR_ACCESS_DENIED is what we get for a volume
+                     mounted by WebDAV, which evidently doesn't
+                     support ACLs.  */
+                  || err == ERROR_ACCESS_DENIED)
            errno = ENOTSUP;
          else
            errno = EIO;
diff --git a/src/w32select.c b/src/w32select.c
index 9a4b43b..4e5bd6a 100644
--- a/src/w32select.c
+++ b/src/w32select.c
@@ -956,7 +956,7 @@ DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data,
 
        truelen = nbytes;
        dst = src;
-       /* avoid using strchr because it recomputes the length everytime */
+       /* avoid using strchr because it recomputes the length every time */
        while ((dst = memchr (dst, '\r', nbytes - (dst - src))) != NULL)
          {
            if (dst[1] == '\n') /* safe because of trailing '\0' */
diff --git a/src/xdisp.c b/src/xdisp.c
index 1529463..d910159 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12400,12 +12400,12 @@ unwind_format_mode_line (Lisp_Object vector)
   mode_line_string_face_prop = AREF (vector, 5);
 
   /* Select window before buffer, since it may change the buffer.  */
-  if (!NILP (old_window))
+  if (WINDOW_LIVE_P (old_window))
     {
       /* If the operation that we are unwinding had selected a window
         on a different frame, reset its frame-selected-window.  For a
         text terminal, reset its top-frame if necessary.  */
-      if (!NILP (target_frame_window))
+      if (WINDOW_LIVE_P (target_frame_window))
        {
          Lisp_Object frame
            = WINDOW_FRAME (XWINDOW (target_frame_window));
@@ -12422,7 +12422,7 @@ unwind_format_mode_line (Lisp_Object vector)
       /* Restore point of target_frame_window's buffer (Bug#32777).
         But do this only after old_window has been reselected to
         avoid that the window point of target_frame_window moves.  */
-      if (!NILP (target_frame_window))
+      if (WINDOW_LIVE_P (target_frame_window))
        {
          Lisp_Object buffer = AREF (vector, 10);
 
@@ -12850,23 +12850,68 @@ update_menu_bar (struct frame *f, bool 
save_match_data, bool hooks_run)
                               Tab-bars
  ***********************************************************************/
 
-#ifdef HAVE_WINDOW_SYSTEM
-
-/* Select `frame' temporarily without running all the code in
-   do_switch_frame.
-   FIXME: Maybe do_switch_frame should be trimmed down similarly
-   when `norecord' is set.  */
+/* Restore WINDOW as the selected window and its frame as the selected
+   frame.  If WINDOW is dead but the selected frame is live, make the
+   latter's selected window the selected window.  If both, WINDOW and
+   the selected frame, are dead, assign selected frame and window from
+   some arbitrary live frame.  Abort if no such frame can be found.  */
 static void
-fast_set_selected_frame (Lisp_Object frame)
+restore_selected_window (Lisp_Object window)
 {
-  if (!EQ (selected_frame, frame))
+  if (WINDOW_LIVE_P (window))
+    /* If WINDOW is live, make it the selected window and its frame's
+       selected window and set the selected frame to its frame.  */
     {
-      selected_frame = frame;
-      selected_window = XFRAME (frame)->selected_window;
+      selected_window = window;
+      selected_frame = XWINDOW (window)->frame;
+      FRAME_SELECTED_WINDOW (XFRAME (selected_frame)) = window;
+    }
+  else if (FRAMEP (selected_frame) && FRAME_LIVE_P (XFRAME (selected_frame)))
+    /* If WINDOW is dead but the selected frame is still live, make the
+       latter's selected window the selected one.  */
+    selected_window = FRAME_SELECTED_WINDOW (XFRAME (selected_frame));
+  else
+    /* If WINDOW and the selected frame are dead, choose some live,
+       non-child and non-tooltip frame as the new selected frame and
+       make its selected window the selected window.  */
+    {
+      Lisp_Object tail;
+      Lisp_Object frame UNINIT;
+
+      FOR_EACH_FRAME (tail, frame)
+       {
+         struct frame *f = XFRAME (frame);
+
+         if (!FRAME_PARENT_FRAME (f) && !FRAME_TOOLTIP_P (f))
+           {
+             selected_frame = frame;
+             selected_window = FRAME_SELECTED_WINDOW (f);
+
+             return;
+           }
+       }
+
+      /* Abort if we cannot find a live frame.  */
+      emacs_abort ();
     }
 }
 
-#endif /* HAVE_WINDOW_SYSTEM */
+/* Restore WINDOW, if live, as its frame's selected window.  */
+static void
+restore_frame_selected_window (Lisp_Object window)
+{
+  if (WINDOW_LIVE_P (window))
+    /* If WINDOW is live, make it its frame's selected window.  If that
+       frame is the selected frame, make WINDOW the selected window as
+       well.  */
+    {
+      Lisp_Object frame = XWINDOW (window)->frame;
+
+      FRAME_SELECTED_WINDOW (XFRAME (frame)) = window;
+      if (EQ (frame, selected_frame))
+       selected_window = window;
+    }
+}
 
 /* Update the tab-bar item list for frame F.  This has to be done
    before we start to fill in any display lines.  Called from
@@ -12939,9 +12984,10 @@ update_tab_bar (struct frame *f, bool save_match_data)
                       XFRAME (selected_frame)->selected_window));
 #ifdef HAVE_WINDOW_SYSTEM
          Lisp_Object frame;
-         record_unwind_protect (fast_set_selected_frame, selected_frame);
+         record_unwind_protect (restore_selected_window, selected_window);
          XSETFRAME (frame, f);
-         fast_set_selected_frame (frame);
+         selected_frame = frame;
+         selected_window = FRAME_SELECTED_WINDOW (f);
 #endif
 
          /* Build desired tab-bar items from keymaps.  */
@@ -13873,9 +13919,10 @@ update_tool_bar (struct frame *f, bool save_match_data)
                       /* Since we only explicitly preserve selected_frame,
                          check that selected_window would be redundant.  */
                       XFRAME (selected_frame)->selected_window));
-         record_unwind_protect (fast_set_selected_frame, selected_frame);
+         record_unwind_protect (restore_selected_window, selected_window);
          XSETFRAME (frame, f);
-         fast_set_selected_frame (frame);
+         selected_frame = frame;
+         selected_window = FRAME_SELECTED_WINDOW (f);
 
          /* Build desired tool-bar items from keymaps.  */
           new_tool_bar
@@ -25217,11 +25264,14 @@ static int
 display_mode_lines (struct window *w)
 {
   Lisp_Object old_selected_window = selected_window;
-  Lisp_Object old_selected_frame = selected_frame;
   Lisp_Object new_frame = w->frame;
-  Lisp_Object old_frame_selected_window = XFRAME (new_frame)->selected_window;
+  ptrdiff_t count = SPECPDL_INDEX ();
   int n = 0;
 
+  record_unwind_protect (restore_selected_window, selected_window);
+  record_unwind_protect
+    (restore_frame_selected_window, XFRAME (new_frame)->selected_window);
+
   if (window_wants_mode_line (w))
     {
       Lisp_Object window;
@@ -25287,9 +25337,8 @@ display_mode_lines (struct window *w)
       ++n;
     }
 
-  XFRAME (new_frame)->selected_window = old_frame_selected_window;
-  selected_frame = old_selected_frame;
-  selected_window = old_selected_window;
+  unbind_to (count, Qnil);
+
   if (n > 0)
     w->must_be_updated_p = true;
   return n;
diff --git a/test/data/syntax-comments.txt b/test/data/syntax-comments.txt
new file mode 100644
index 0000000..6f595e4
--- /dev/null
+++ b/test/data/syntax-comments.txt
@@ -0,0 +1,68 @@
+/* This file is a test file for tests of the comment handling in src/syntax.c.
+   This includes the testing of comments which figure in parse-partial-sexp
+   and scan-lists.  */
+
+/* Straight C comments */
+1/* comment */1
+2/**/2
+3// comment
+3
+4//
+4
+5/*/5
+6*/6
+7/* \*/7
+8*/8
+9/* \\*/9
+10*/10
+11//  \
+12
+11
+13//  \\
+14
+13
+15/* /*/15
+
+/* C Comments within lists */
+59}59
+50{ /*70 comment */71 }50
+51{ /**/ }51
+52{ //72 comment
+73}52
+53{ //
+}53
+54{ //74 \
+}54
+55{/* */}55
+56{ /*76 \*/ }56
+57*/77
+58}58
+60{ /*78 \\*/79}60
+
+
+/* Straight Pascal comments (not nested) */
+20}20
+21{ Comment }21
+22{}22
+23{
+}23
+24{
+25{25
+}24
+26{ \}26
+
+
+/* Straight Lisp comments (not nested) */
+30
+30
+31; Comment
+31
+32;;;;;;;;;
+32
+33;        \
+33
+
+Local Variables:
+mode: fundamental
+eval: (set-syntax-table (make-syntax-table))
+End:
diff --git a/test/lisp/calc/calc-tests.el b/test/lisp/calc/calc-tests.el
index dce82b6..0df96a0 100644
--- a/test/lisp/calc/calc-tests.el
+++ b/test/lisp/calc/calc-tests.el
@@ -458,6 +458,122 @@ An existing calc stack is reused, otherwise a new one is 
created."
                   (calcFunc-choose '(frac -15 2) 3))
                  (calc-tests--choose -7.5 3))))
 
+(ert-deftest calc-business-days ()
+  (cl-flet ((m (s) (math-parse-date s))
+            (b+ (a b) (calcFunc-badd a b))
+            (b- (a b) (calcFunc-bsub a b)))
+    ;; Sanity check.
+    (should (equal (m "2020-09-07") '(date 737675)))
+
+    ;; Test with standard business days (Mon-Fri):
+    (should (equal (b+ (m "2020-09-07") 1) (m "2020-09-08"))) ; Mon->Tue
+    (should (equal (b+ (m "2020-09-08") 1) (m "2020-09-09"))) ; Tue->Wed
+    (should (equal (b+ (m "2020-09-09") 1) (m "2020-09-10"))) ; Wed->Thu
+    (should (equal (b+ (m "2020-09-10") 1) (m "2020-09-11"))) ; Thu->Fri
+    (should (equal (b+ (m "2020-09-11") 1) (m "2020-09-14"))) ; Fri->Mon
+
+    (should (equal (b+ (m "2020-09-07") 4) (m "2020-09-11"))) ; Mon->Fri
+    (should (equal (b+ (m "2020-09-07") 6) (m "2020-09-15"))) ; Mon->Tue
+
+    (should (equal (b+ (m "2020-09-12") 1) (m "2020-09-14"))) ; Sat->Mon
+    (should (equal (b+ (m "2020-09-13") 1) (m "2020-09-14"))) ; Sun->Mon
+
+    (should (equal (b- (m "2020-09-11") 1) (m "2020-09-10"))) ; Fri->Thu
+    (should (equal (b- (m "2020-09-10") 1) (m "2020-09-09"))) ; Thu->Wed
+    (should (equal (b- (m "2020-09-09") 1) (m "2020-09-08"))) ; Wed->Tue
+    (should (equal (b- (m "2020-09-08") 1) (m "2020-09-07"))) ; Tue->Mon
+    (should (equal (b- (m "2020-09-07") 1) (m "2020-09-04"))) ; Mon->Fri
+
+    (should (equal (b- (m "2020-09-11") 4) (m "2020-09-07"))) ; Fri->Mon
+    (should (equal (b- (m "2020-09-15") 6) (m "2020-09-07"))) ; Tue->Mon
+
+    (should (equal (b- (m "2020-09-12") 1) (m "2020-09-11"))) ; Sat->Fri
+    (should (equal (b- (m "2020-09-13") 1) (m "2020-09-11"))) ; Sun->Fri
+
+    ;; Stepping fractional days
+    (should (equal (b+ (m "2020-09-08 21:00") '(frac 1 2))
+                   (m "2020-09-09 09:00")))
+    (should (equal (b+ (m "2020-09-11 21:00") '(frac 1 2))
+                   (m "2020-09-14 09:00")))
+    (should (equal (b- (m "2020-09-08 21:00") '(frac 1 2))
+                   (m "2020-09-08 09:00")))
+    (should (equal (b- (m "2020-09-14 06:00") '(frac 1 2))
+                   (m "2020-09-11 18:00")))
+
+    ;; Test with a couple of extra days off:
+    (let ((var-Holidays (list 'vec
+                              '(var sat var-sat) '(var sun var-sun)
+                              (m "2020-09-09") (m "2020-09-11"))))
+
+      (should (equal (b+ (m "2020-09-07") 1) (m "2020-09-08"))) ; Mon->Tue
+      (should (equal (b+ (m "2020-09-08") 1) (m "2020-09-10"))) ; Tue->Thu
+      (should (equal (b+ (m "2020-09-10") 1) (m "2020-09-14"))) ; Thu->Mon
+      (should (equal (b+ (m "2020-09-14") 1) (m "2020-09-15"))) ; Mon->Tue
+      (should (equal (b+ (m "2020-09-15") 1) (m "2020-09-16"))) ; Tue->Wed
+
+      (should (equal (b- (m "2020-09-16") 1) (m "2020-09-15"))) ; Wed->Tue
+      (should (equal (b- (m "2020-09-15") 1) (m "2020-09-14"))) ; Tue->Mon
+      (should (equal (b- (m "2020-09-14") 1) (m "2020-09-10"))) ; Mon->Thu
+      (should (equal (b- (m "2020-09-10") 1) (m "2020-09-08"))) ; Thu->Tue
+      (should (equal (b- (m "2020-09-08") 1) (m "2020-09-07"))) ; Tue->Mon
+      )
+
+    ;; Test with odd non-business weekdays (Tue, Wed, Sat):
+    (let ((var-Holidays '(vec (var tue var-tue)
+                              (var wed var-wed)
+                              (var sat var-sat))))
+      (should (equal (b+ (m "2020-09-07") 1) (m "2020-09-10"))) ; Mon->Thu
+      (should (equal (b+ (m "2020-09-10") 1) (m "2020-09-11"))) ; Thu->Fri
+      (should (equal (b+ (m "2020-09-11") 1) (m "2020-09-13"))) ; Fri->Sun
+      (should (equal (b+ (m "2020-09-13") 1) (m "2020-09-14"))) ; Sun->Mon
+
+      (should (equal (b- (m "2020-09-14") 1) (m "2020-09-13"))) ; Mon->Sun
+      (should (equal (b- (m "2020-09-13") 1) (m "2020-09-11"))) ; Sun->Fri
+      (should (equal (b- (m "2020-09-11") 1) (m "2020-09-10"))) ; Fri->Thu
+      (should (equal (b- (m "2020-09-10") 1) (m "2020-09-07"))) ; Thu->Mon
+      )
+  ))
+
+(ert-deftest calc-unix-date ()
+  (let* ((d-1970-01-01 (math-parse-date "1970-01-01"))
+         (d-2020-09-07 (math-parse-date "2020-09-07"))
+         (d-1991-01-09-0600 (math-parse-date "1991-01-09 06:00")))
+    ;; calcFunc-unixtime (command "t U") converts a date value to Unix time,
+    ;; and a number to a date.
+    (should (equal d-1970-01-01 '(date 719163)))
+    (should (equal (calcFunc-unixtime d-1970-01-01 0) 0))
+    (should (equal (calc-tests--calc-to-number (cadr (calcFunc-unixtime 0 0)))
+                   (cadr d-1970-01-01)))
+    (should (equal (calcFunc-unixtime d-2020-09-07 0)
+                   (* (- (cadr d-2020-09-07)
+                         (cadr d-1970-01-01))
+                      86400)))
+    (should (equal (calcFunc-unixtime d-1991-01-09-0600 0)
+                   663400800))
+    (should (equal (calc-tests--calc-to-number
+                    (cadr (calcFunc-unixtime 663400800 0)))
+                   726841.25))
+
+    (let ((calc-date-format '(U)))
+      ;; Test parsing Unix time.
+      (should (equal (calc-tests--calc-to-number
+                      (cadr (math-parse-date "0")))
+                     719163))
+      (should (equal (calc-tests--calc-to-number
+                      (cadr (math-parse-date "469324800")))
+                     (+ 719163 (/ 469324800 86400))))
+      (should (equal (calc-tests--calc-to-number
+                      (cadr (math-parse-date "663400800")))
+                     726841.25))
+
+      ;; Test formatting Unix time.
+      (should (equal (math-format-date d-1970-01-01) "0"))
+      (should (equal (math-format-date d-2020-09-07)
+                     (number-to-string (* (- (cadr d-2020-09-07)
+                                             (cadr d-1970-01-01))
+                                          86400))))
+      (should (equal (math-format-date d-1991-01-09-0600) "663400800")))))
+
 (provide 'calc-tests)
 ;;; calc-tests.el ends here
 
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el
index 8b9c1c5..5f63f68 100644
--- a/test/lisp/electric-tests.el
+++ b/test/lisp/electric-tests.el
@@ -887,7 +887,8 @@ baz\"\""
     (should (equal (buffer-string) "int main () {\n  \n}"))))
 
 (ert-deftest electric-layout-control-reindentation ()
-  "Same as `e-l-int-main-kernel-style', but checking Bug#35254."
+  "Same as `emacs-lisp-int-main-kernel-style', but checking
+Bug#35254."
   (ert-with-test-buffer ()
     (plainer-c-mode)
     (electric-layout-local-mode 1)
diff --git a/test/lisp/emacs-lisp/backtrace-tests.el 
b/test/lisp/emacs-lisp/backtrace-tests.el
index 12164b4..fbc71e0 100644
--- a/test/lisp/emacs-lisp/backtrace-tests.el
+++ b/test/lisp/emacs-lisp/backtrace-tests.el
@@ -41,7 +41,7 @@
          (backtrace-mode)
          (setq backtrace-frames (backtrace-get-frames))
          (let ((this-index))
-           ;; Discard all past `backtrace-tests-make-backtrace'.
+           ;; Discard all past `backtrace-tests--make-backtrace'.
            (dotimes (index (length backtrace-frames))
              (when (eq (backtrace-frame-fun (nth index backtrace-frames))
                        'backtrace-tests--make-backtrace)
diff --git a/test/lisp/emacs-lisp/edebug-tests.el 
b/test/lisp/emacs-lisp/edebug-tests.el
index 04a7b2f..6db07b1 100644
--- a/test/lisp/emacs-lisp/edebug-tests.el
+++ b/test/lisp/emacs-lisp/edebug-tests.el
@@ -210,7 +210,7 @@ All other elements will be nil."
 (defvar edebug-tests-thunks nil
   "List containing thunks to run after each command in a keyboard macro.")
 (defvar edebug-tests-kbd-macro-index nil
-  "Index into `edebug-tests-run-unpacked-kbd-macro's current keyboard macro.")
+  "Index into `edebug-tests-run-kbd-macro's current keyboard macro.")
 
 (defun edebug-tests-run-macro (kbdmac &rest thunks)
   "Run a keyboard macro and execute a thunk after each command in it.
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 2e9c6ad..3829f50 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -960,7 +960,7 @@ unquoted file names."
           (let ((linkname (expand-file-name "link" nospecial-dir)))
             (should-error (make-symbolic-link tmpfile linkname))))))))
 
-;; See `files-tests--file-name-non-special--subprocess'.
+;; See `files-tests-file-name-non-special--subprocess'.
 ;; (ert-deftest files-tests-file-name-non-special-process-file ())
 
 (ert-deftest files-tests-file-name-non-special-rename-file ()
@@ -1104,7 +1104,7 @@ unquoted file names."
   (files-tests--with-temp-non-special-and-file-name-handler (tmpfile nospecial)
     (should (equal (vc-registered nospecial) (vc-registered tmpfile)))))
 
-;; See test `files-tests--file-name-non-special--buffers'.
+;; See test `files-tests-file-name-non-special--buffers'.
 ;; (ert-deftest files-tests-file-name-non-special-verify-visited-file-modtime 
())
 
 (ert-deftest files-tests-file-name-non-special-write-region ()
diff --git a/test/lisp/gnus/gnus-util-tests.el 
b/test/lisp/gnus/gnus-util-tests.el
index ec58032..47f0a9c 100644
--- a/test/lisp/gnus/gnus-util-tests.el
+++ b/test/lisp/gnus/gnus-util-tests.el
@@ -151,8 +151,10 @@
   (should (equal "Zg==" (gnus-base64-repad "Zg")))
   (should (equal "Zg==" (gnus-base64-repad "Zg====")))
 
-  (should (equal (gnus-base64-repad " ") ""))
-  (should (equal (gnus-base64-repad "Zg== ") "Zg=="))
+  (should-error (gnus-base64-repad " ")
+                :type 'error)
+  (should-error (gnus-base64-repad "Zg== ")
+                :type 'error)
   (should-error (gnus-base64-repad "Z?\x00g==")
                 :type 'error)
   ;; line-length
@@ -162,9 +164,10 @@
   (should-error (gnus-base64-repad "Zm9v\r\nYmFy" t)
                 :type 'error)
   (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9vYmFy" t)))
-  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy" nil)))
-  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy\n" nil)))
-  (should (equal (gnus-base64-repad "Zm9v\r\n YmFy\r\n" nil) "Zm9vYmFy"))
+  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy")))
+  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\nYmFy\n")))
+  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v\r\n YmFy\r\n")))
+  (should (equal "Zm9vYmFy" (gnus-base64-repad "Zm9v \r\n\tYmFy")))
   (should-error (gnus-base64-repad "Zm9v\r\nYmFy" nil 3)
                 :type 'error))
 
diff --git a/test/lisp/gnus/mml-sec-tests.el b/test/lisp/gnus/mml-sec-tests.el
index 4c745ea..4270185 100644
--- a/test/lisp/gnus/mml-sec-tests.el
+++ b/test/lisp/gnus/mml-sec-tests.el
@@ -67,7 +67,6 @@ instead of gpg-agent."
        (condition-case error
            (let ((epg-gpg-home-directory
                    (expand-file-name "test/data/mml-sec" source-directory))
-                  (mml-secure-allow-signing-with-unknown-recipient t)
                  (mml-smime-use 'epg)
                  ;; Create debug output in empty epg-debug-buffer.
                  (epg-debug t)
@@ -762,37 +761,6 @@ Use sign-with-sender and encrypt-to-self."
            method "no-exp@example.org" "sub@example.org" 2 nil))
         )))))
 
-(ert-deftest mml-secure-sign-verify-2 ()
-  "Sign message without sender; then verify and test for expected result."
-  (skip-unless (test-conf))
-  (mml-secure-test-key-fixture
-   (lambda ()
-     (dolist (method (sign-standards) nil)
-       (let ((mml-secure-openpgp-sign-with-sender nil)
-            (mml-secure-smime-sign-with-sender nil))
-        ;; A single signing key for sender sub@example.org is customized
-        ;; in the fixture, but not used here.
-        ;; By default, gpg uses the first secret key in the keyring, which
-        ;; is 02372A42CA6D40FB (OpenPGP) or
-        ;; 0E58229B80EE33959FF718FEEF25402B479DC6E2 (S/MIME) here.
-        (mml-secure-test-en-decrypt
-         method "uid1@example.org" "sub@example.org" 0 nil)
-
-        ;; From sub@example.org, sign with specified key:
-        (let ((mml-secure-openpgp-signers '("02372A42CA6D40FB"))
-              (mml-secure-smime-signers
-               '("D06AA118653CC38E9D0CAF56ED7A2135E1582177")))
-          (mml-secure-test-en-decrypt
-           method "no-exp@example.org" "sub@example.org" 1 nil))
-
-        ;; From sub@example.org, sign with different specified key:
-        (let ((mml-secure-openpgp-signers '("C3999CF1268DBEA2"))
-              (mml-secure-smime-signers
-               '("0E58229B80EE33959FF718FEEF25402B479DC6E2")))
-          (mml-secure-test-en-decrypt
-           method "no-exp@example.org" "sub@example.org" 1 nil))
-        )))))
-
 (ert-deftest mml-secure-sign-verify-3 ()
   "Try to sign message with expired OpenPGP subkey, which raises an error.
 With Ma Gnus v0.14 and earlier a signature would be created with a wrong key."
diff --git a/test/lisp/mail/uudecode-tests.el b/test/lisp/mail/uudecode-tests.el
index 61c2007..4c9650f 100644
--- a/test/lisp/mail/uudecode-tests.el
+++ b/test/lisp/mail/uudecode-tests.el
@@ -43,12 +43,12 @@
   (uudecode-tests-read-file
    (expand-file-name "uuencoded.txt" uudecode-tests-data-dir))
   "Uuencoded data for bookmark-tests.el
-Same as `bookmark-tests-decoded-str' but uuencoded.")
+Same as `uudecode-tests-decoded-str' but uuencoded.")
 (defvar uudecode-tests-decoded-str
   (uudecode-tests-read-file
    (expand-file-name "uudecoded.txt" uudecode-tests-data-dir))
   "Plain text data for bookmark-tests.el
-Same as `bookmark-tests-encoded-str' but plain text.")
+Same as `uudecode-tests-encoded-str' but plain text.")
 
 (ert-deftest uudecode-tests-decode-region-internal ()
   ;; Write to buffer
diff --git a/test/lisp/net/dbus-resources/org.gnu.Emacs.TestDBus.xml 
b/test/lisp/net/dbus-resources/org.gnu.Emacs.TestDBus.xml
new file mode 100644
index 0000000..620f105
--- /dev/null
+++ b/test/lisp/net/dbus-resources/org.gnu.Emacs.TestDBus.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" 
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
+<node>
+  <interface name="org.freedesktop.DBus.Introspectable">
+    <method name="Introspect">
+      <arg name="xml" type="s" direction="out"/>
+    </method>
+  </interface>
+  <interface name="org.freedesktop.DBus.Properties">
+    <method name="Get">
+      <arg name="interface" type="s" direction="in"/>
+      <arg name="name" type="s" direction="in"/>
+      <arg name="value" type="v" direction="out"/>
+    </method>
+    <method name="Set">
+      <arg name="interface" type="s" direction="in"/>
+      <arg name="name" type="s" direction="in"/>
+      <arg name="value" type="v" direction="in"/>
+    </method>
+    <method name="GetAll">
+      <arg name="interface" type="s" direction="in"/>
+      <arg name="properties" type="a{sv}" direction="out"/>
+    </method>
+    <signal name="PropertiesChanged">
+      <arg name="interface" type="s"/>
+      <arg name="changed_properties" type="a{sv}"/>
+      <arg name="invalidated_properties" type="as"/>
+    </signal>
+  </interface>
+  <interface name="org.gnu.Emacs.TestDBus.Interface">
+    <method name="Connect">
+      <arg name="uuid" type="s" direction="in"/>
+      <arg name="mode" type="y" direction="in"/>
+      <arg name="options" type="a{sv}" direction="in"/>
+      <arg name="interface" type="s" direction="out"/>
+    </method>
+    <method name="DeprecatedMethod0">
+      <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
+    </method>
+    <method name="DeprecatedMethod1">
+      <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
+    </method>
+    <property name="Connected" type="b" access="read"/>
+    <property name="Player" type="o" access="read"/>
+    <annotation name="org.freedesktop.DBus.Deprecated" value="true"/>
+  </interface>
+  <node name="node0"/>
+  <node name="node1"/>
+</node>
diff --git a/test/lisp/net/dbus-tests.el b/test/lisp/net/dbus-tests.el
index 74c0ddd..7ebef5d 100644
--- a/test/lisp/net/dbus-tests.el
+++ b/test/lisp/net/dbus-tests.el
@@ -46,6 +46,13 @@
 (defconst dbus--test-interface "org.gnu.Emacs.TestDBus.Interface"
   "Test interface.")
 
+(defconst dbus--tests-dir
+  (file-truename
+   (expand-file-name "dbus-resources"
+                     (file-name-directory (or load-file-name
+                                              buffer-file-name))))
+  "Directory containing introspection test data file.")
+
 (defun dbus--test-availability (bus)
   "Test availability of D-Bus BUS."
   (should (dbus-list-names bus))
@@ -309,7 +316,7 @@
    (dbus-check-arguments :session dbus--test-service :double "string")
    :type 'wrong-type-argument)
 
-  ;; `:unix-fd'.  UNIX file descriptors are transfered out-of-band.
+  ;; `:unix-fd'.  UNIX file descriptors are transferred out-of-band.
   ;; We do not support this, and so we cannot do much testing here for
   ;; `:unix-fd' being an argument (which is an index to the file
   ;; descriptor in the array of file descriptors that accompany the
@@ -359,11 +366,11 @@
   (should
    (dbus-check-arguments
     :session dbus--test-service '(:variant (:array "string"))))
-  ;; No or more than one element.
-  ;; FIXME.
-  ;; (should-error
-  ;;  (dbus-check-arguments :session dbus--test-service '(:variant))
-  ;;  :type 'wrong-type-argument)
+  ;; Empty variant.
+  (should-error
+   (dbus-check-arguments :session dbus--test-service '(:variant))
+   :type 'wrong-type-argument)
+  ;; More than one element.
   (should-error
    (dbus-check-arguments
     :session dbus--test-service
@@ -375,20 +382,22 @@
   (should
    (dbus-check-arguments
     :session dbus--test-service
-    '(:array (:dict-entry :string "string" :boolean t))))
+    '(:array (:dict-entry :string "string" :boolean nil))))
   ;; This is an alternative syntax.  FIXME: Shall this be supported?
   (should
    (dbus-check-arguments
     :session dbus--test-service
     '(:array :dict-entry (:string "string" :boolean t))))
-  ;; FIXME: Must be errors.
-  ;; (should
-  ;;  (dbus-check-arguments
-  ;;   :session dbus--test-service '(:array (:dict-entry))))
-  ;; (should
-  ;;  (dbus-check-arguments
-  ;;   :session dbus--test-service '(:array (:dict-entry :string "string"))))
-  ;; Not two elements.
+  ;; Empty dict-entry.
+  (should-error
+   (dbus-check-arguments
+    :session dbus--test-service '(:array (:dict-entry)))
+   :type 'wrong-type-argument)
+  ;; One element.
+  (should-error
+   (dbus-check-arguments
+    :session dbus--test-service '(:array (:dict-entry :string "string")))
+   :type 'wrong-type-argument)
   (should-error
    (dbus-check-arguments
     :session dbus--test-service
@@ -405,25 +414,27 @@
    (dbus-check-arguments
     :session dbus--test-service '(:dict-entry :string "string" :boolean t))
    :type 'wrong-type-argument)
-  ;; FIXME:! This doesn't look right.
-  ;; Different dict entry types can be part of an array ???
-  (should
-   (dbus-check-arguments
-    :session dbus--test-service
-    '(:array
-      (:dict-entry :string "string1" :boolean t)
-      (:dict-entry :string "string2" :object-path "/object/path"))))
+  ;; Different dict entry types are not ched.  FIXME: Add check.
+  ;; (should-error
+  ;;  (dbus-check-arguments
+  ;;   :session dbus--test-service
+  ;;   '(:array
+  ;;     (:dict-entry :string "string1" :boolean t)
+  ;;     (:dict-entry :string "string2" :object-path "/object/path")))
+  ;;  :type 'wrong-type-argument)
 
   ;; `:struct'.  There is no restriction what could be an element of a struct.
-  ;; Empty struct.  FIXME: Is this right?
-  ;; (should (dbus-check-arguments :session dbus--test-service '(:struct)))
   (should
    (dbus-check-arguments
     :session dbus--test-service
     '(:struct
       :string "string"
       :object-path "/object/path"
-      (:variant (:array :unix-fd 1 :unix-fd 2 :unix-fd 3 :unix-fd 4))))))
+      (:variant (:array :unix-fd 1 :unix-fd 2 :unix-fd 3 :unix-fd 4)))))
+  ;; Empty struct.
+  (should-error
+   (dbus-check-arguments :session dbus--test-service '(:struct))
+   :type 'wrong-type-argument))
 
 (defun dbus--test-register-service (bus)
   "Check service registration at BUS."
@@ -625,6 +636,63 @@ This includes initialization and closing the bus."
     ;; Cleanup.
     (dbus-unregister-service :session dbus--test-service)))
 
+(defun dbus--test-method-reentry-handler (&rest _args)
+  "Method handler for `dbus-test04-method-reentry'."
+  (dbus-get-all-managed-objects :session dbus--test-service dbus--test-path)
+  42)
+
+(ert-deftest dbus-test04-method-reentry ()
+  "Check receiving method call while awaiting response.
+Ensure that incoming method calls are handled when call to `dbus-call-method'
+is in progress."
+  :tags '(:expensive-test)
+  ;; Simulate application registration.  (Bug#43251)
+  (skip-unless dbus--test-enabled-session-bus)
+  (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service))
+
+  (unwind-protect
+      (let ((method "Reentry"))
+        (should
+         (equal
+          (dbus-register-method
+           :session dbus--test-service dbus--test-path
+           dbus--test-interface method #'dbus--test-method-reentry-handler)
+          `((:method :session ,dbus--test-interface ,method)
+            (,dbus--test-service ,dbus--test-path
+             dbus--test-method-reentry-handler))))
+
+        (should
+         (=
+          (dbus-call-method
+           :session dbus--test-service dbus--test-path
+           dbus--test-interface method)
+          42)))
+
+    ;; Cleanup.
+    (dbus-unregister-service :session dbus--test-service)))
+
+(ert-deftest dbus-test04-call-method-timeout ()
+  "Verify `dbus-call-method' request timeout."
+  :tags '(:expensive-test)
+  (skip-unless dbus--test-enabled-session-bus)
+  (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service))
+  (dbus-register-service :session dbus--test-service)
+
+  (unwind-protect
+      (let ((start (current-time)))
+        ;; Test timeout override for method call.
+        (should-error
+         (dbus-call-method
+          :session dbus--test-service dbus--test-path
+          dbus-interface-introspectable "Introspect" :timeout 2500)
+         :type 'dbus-error)
+
+        (should
+         (< 2.4 (float-time (time-since start)) 2.7)))
+
+    ;; Cleanup.
+    (dbus-unregister-service :session dbus--test-service)))
+
 (defvar dbus--test-signal-received nil
   "Received signal value in `dbus--test-signal-handler'.")
 
@@ -1069,6 +1137,702 @@ This includes initialization and closing the bus."
     ;; Cleanup.
     (dbus-unregister-service :session dbus--test-service)))
 
+(defsubst dbus--test-run-property-test (selector name value expected)
+  "Generate a property test: register, set, get, getall sequence.
+This is a helper function for the macro `dbus--test-property'.
+The argument SELECTOR indicates whether the test should expand to
+`dbus-register-property' (if SELECTOR is `register') or
+`dbus-set-property' (if SELECTOR is `set').
+The argument NAME is the property name.
+The argument VALUE is the value to register or set.
+The argument EXPECTED is a transformed VALUE representing the
+form `dbus-get-property' should return."
+  (cond
+   ((eq selector 'register)
+    (should
+     (equal
+      (dbus-register-property
+       :session dbus--test-service dbus--test-path dbus--test-interface name
+       :readwrite value)
+      `((:property :session ,dbus--test-interface ,name)
+        (,dbus--test-service ,dbus--test-path)))))
+
+   ((eq selector 'set)
+    (should
+     (equal
+      (dbus-set-property
+       :session dbus--test-service dbus--test-path dbus--test-interface name
+       value)
+      expected)))
+
+   (t (signal 'wrong-type-argument "Selector should be 'register or 'set.")))
+
+  (should
+   (equal
+    (dbus-get-property
+     :session dbus--test-service dbus--test-path dbus--test-interface name)
+    expected))
+
+  (let ((result
+         (dbus-get-all-properties
+          :session dbus--test-service dbus--test-path dbus--test-interface)))
+    (should (equal (cdr (assoc name result)) expected)))
+
+  (let ((result
+         (dbus-get-all-managed-objects :session dbus--test-service "/"))
+        result1)
+    (should (setq result1 (cadr (assoc dbus--test-path result))))
+    (should (setq result1 (cadr (assoc dbus--test-interface result1))))
+    (should (equal (cdr (assoc name result1)) expected))))
+
+(defsubst dbus--test-property (name &rest value-list)
+  "Test a D-Bus property named by string argument NAME.
+The argument VALUE-LIST is a sequence of pairs, where each pair
+represents a value form and an expected returned value form.  The
+first pair in VALUES is used for `dbus-register-property'.
+Subsequent pairs of the list are tested with `dbus-set-property'."
+  (let ((values (car value-list)))
+    (dbus--test-run-property-test
+     'register name (car values) (cdr values)))
+  (dolist (values (cdr value-list))
+    (dbus--test-run-property-test
+     'set name (car values) (cdr values))))
+
+(ert-deftest dbus-test06-property-types ()
+  "Check property access and mutation for an own service."
+  (skip-unless dbus--test-enabled-session-bus)
+  (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service))
+  (dbus-register-service :session dbus--test-service)
+
+  (unwind-protect
+      (progn
+        (dbus--test-property
+         "ByteArray"
+         '((:array :byte 1 :byte 2 :byte 3) . (1 2 3))
+         '((:array :byte 4 :byte 5 :byte 6) . (4 5 6)))
+
+        (dbus--test-property
+         "StringArray"
+         '((:array "one" "two" :string "three") . ("one" "two" "three"))
+         '((:array :string "four" :string "five" "six") . ("four" "five" 
"six")))
+
+        (dbus--test-property
+         "ObjectArray"
+         '((:array
+            :object-path "/node00"
+            :object-path "/node01"
+            :object-path "/node0/node02")
+           . ("/node00" "/node01" "/node0/node02"))
+         '((:array
+            :object-path "/node10"
+            :object-path "/node11"
+            :object-path "/node0/node12")
+           . ("/node10" "/node11" "/node0/node12")))
+
+        (dbus--test-property
+         "Dictionary"
+         '((:array
+            :dict-entry (:string "four" (:variant :string "value of four"))
+            :dict-entry ("five" (:variant :object-path "/node0"))
+            :dict-entry ("six"  (:variant (:array :byte 4 :byte 5 :byte 6))))
+           . (("four"
+               ("value of four"))
+              ("five"
+               ("/node0"))
+              ("six"
+               ((4 5 6)))))
+         '((:array
+            :dict-entry
+            (:string "key0" (:variant (:array :byte 7 :byte 8 :byte 9)))
+            :dict-entry ("key1" (:variant :string "value"))
+            :dict-entry ("key2" (:variant :object-path "/node0/node1")))
+           . (("key0"
+               ((7 8 9)))
+              ("key1"
+               ("value"))
+              ("key2"
+               ("/node0/node1")))))
+
+        (dbus--test-property            ; Syntax emphasizing :dict compound 
type.
+         "Dictionary"
+         '((:array
+            (:dict-entry :string "seven" (:variant :string "value of seven"))
+            (:dict-entry "eight" (:variant :object-path "/node8"))
+            (:dict-entry "nine"  (:variant (:array :byte 9 :byte 27 :byte 
81))))
+           . (("seven"
+               ("value of seven"))
+              ("eight"
+               ("/node8"))
+              ("nine"
+               ((9 27 81)))))
+         '((:array
+            (:dict-entry
+             :string "key4" (:variant (:array :byte 7 :byte 49 :byte 125)))
+            (:dict-entry "key5" (:variant :string "obsolete"))
+            (:dict-entry "key6" (:variant :object-path "/node6/node7")))
+           . (("key4"
+               ((7 49 125)))
+              ("key5"
+               ("obsolete"))
+              ("key6"
+               ("/node6/node7")))))
+
+        (dbus--test-property
+         "ByteDictionary"
+         '((:array
+            (:dict-entry :byte  8 (:variant :string "byte-eight"))
+            (:dict-entry :byte 16 (:variant :object-path "/byte/sixteen"))
+            (:dict-entry :byte 48 (:variant (:array :byte 8 :byte 9 :byte 
10))))
+           . (( 8 ("byte-eight"))
+              (16 ("/byte/sixteen"))
+              (48 ((8 9 10))))))
+
+        (dbus--test-property
+         "Variant"
+         '((:variant "Variant string") . ("Variant string"))
+         '((:variant :byte 42) . (42))
+         '((:variant :uint32 1000000) . (1000000))
+         '((:variant :object-path "/variant/path") . ("/variant/path"))
+         '((:variant :signature "a{sa{sv}}") . ("a{sa{sv}}"))
+         '((:variant
+            (:struct
+             42 "string" (:object-path "/structure/path") (:variant "last")))
+           . ((42 "string" ("/structure/path") ("last")))))
+
+        ;; Test that :read prevents writes.
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "StringArray" :read '(:array "one" "two" :string "three"))
+          `((:property :session ,dbus--test-interface "StringArray")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should-error          ; Cannot set property with :read access.
+         (dbus-set-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "StringArray" '(:array "seven" "eight" :string "nine"))
+         :type 'dbus-error)
+
+        (should                    ; Property value preserved on error.
+         (equal
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "StringArray")
+          '("one" "two" "three")))
+
+        ;; Test mismatched types in array.
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "MixedArray" :readwrite
+          '(:array
+            :object-path "/node00"
+            :string "/node01"
+            :object-path "/node0/node02"))
+         :type 'wrong-type-argument)
+
+        ;; Test in-range integer values.
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue" :readwrite :byte 255)
+          `((:property :session ,dbus--test-interface "ByteValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue")
+          255))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ShortValue" :readwrite :int16 32767)
+          `((:property :session ,dbus--test-interface "ShortValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ShortValue")
+          32767))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "UShortValue" :readwrite :uint16 65535)
+          `((:property :session ,dbus--test-interface "UShortValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "UShortValue")
+          65535))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "IntValue" :readwrite :int32 2147483647)
+          `((:property :session ,dbus--test-interface "IntValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path
+           dbus--test-interface "IntValue")
+          2147483647))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "UIntValue" :readwrite :uint32 4294967295)
+          `((:property :session ,dbus--test-interface "UIntValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "UIntValue")
+          4294967295))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "LongValue" :readwrite :int64 9223372036854775807)
+          `((:property :session ,dbus--test-interface "LongValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "LongValue")
+          9223372036854775807))
+
+        (should
+         (equal
+          (dbus-register-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ULongValue" :readwrite :uint64 18446744073709551615)
+          `((:property :session ,dbus--test-interface "ULongValue")
+           (,dbus--test-service ,dbus--test-path))))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ULongValue")
+          18446744073709551615))
+
+        ;; Test integer overflow.
+        (should
+         (=
+          (dbus-set-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue" :byte 520)
+          8))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue")
+          8))
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "ShortValue" :readwrite :int16 32800)
+         :type 'args-out-of-range)
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "UShortValue" :readwrite :uint16 65600)
+         :type 'args-out-of-range)
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "IntValue" :readwrite :int32 2147483700)
+         :type 'args-out-of-range)
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "UIntValue" :readwrite :uint32 4294967300)
+         :type 'args-out-of-range)
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "LongValue" :readwrite :int64 9223372036854775900)
+         :type 'args-out-of-range)
+
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "ULongValue" :readwrite :uint64 18446744073709551700)
+         :type 'args-out-of-range)
+
+        ;; dbus-set-property may change property type.
+        (should
+         (=
+          (dbus-set-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue" 1024)
+          1024))
+
+        (should
+         (=
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue")
+          1024))
+
+        (should                         ; Another change property type test.
+         (equal
+          (dbus-set-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue" :boolean t)
+          t))
+
+        (should
+         (eq
+          (dbus-get-property
+           :session dbus--test-service dbus--test-path dbus--test-interface
+           "ByteValue")
+          t))
+
+        ;; Test invalid type specification.
+        (should-error
+         (dbus-register-property
+          :session dbus--test-service dbus--test-path dbus--test-interface
+          "InvalidType" :readwrite :keyword 128)
+         :type 'wrong-type-argument))
+
+    ;; Cleanup.
+    (dbus-unregister-service :session dbus--test-service)))
+
+(defun dbus--test-introspect ()
+  "Return test introspection string."
+  (when (string-equal dbus--test-path (dbus-event-path-name last-input-event))
+    (with-temp-buffer
+      (insert-file-contents-literally
+       (expand-file-name "org.gnu.Emacs.TestDBus.xml" dbus--tests-dir))
+      (buffer-string))))
+
+(defsubst dbus--test-validate-interface
+  (iface-name expected-properties expected-methods expected-signals
+              expected-annotations)
+  "Validate an interface definition for `dbus-test07-introspection'.
+The argument IFACE-NAME is a string naming the interface to validate.
+The arguments EXPECTED-PROPERTIES, EXPECTED-METHODS, EXPECTED-SIGNALS, and
+EXPECTED-ANNOTATIONS represent the names of the interface's properties,
+methods, signals, and annotations, respectively."
+
+  (let ((interface
+         (dbus-introspect-get-interface
+          :session dbus--test-service dbus--test-path iface-name)))
+    (pcase-let ((`(interface ((name . ,name)) . ,rest) interface))
+      (should
+       (string-equal name iface-name))
+      (should
+       (string-equal name (dbus-introspect-get-attribute interface "name")))
+
+      (let (properties methods signals annotations)
+        (mapc (lambda (x)
+                (let ((name (dbus-introspect-get-attribute x "name")))
+                  (cond
+                   ((eq 'property (car x))   (push name properties))
+                   ((eq 'method (car x))     (push name methods))
+                   ((eq 'signal (car x))     (push name signals))
+                   ((eq 'annotation (car x)) (push name annotations)))))
+              rest)
+
+        (should
+         (equal
+          (nreverse properties)
+          expected-properties))
+        (should
+         (equal
+          (nreverse methods)
+          expected-methods))
+        (should
+         (equal
+          (nreverse signals)
+          expected-signals))
+        (should
+         (equal
+          (nreverse annotations)
+          expected-annotations))))))
+
+(defsubst dbus--test-validate-annotations (annotations expected-annotations)
+  "Validate a list of D-Bus ANNOTATIONS.
+Ensure each string in EXPECTED-ANNOTATIONS names an element of ANNOTATIONS.
+And ensure each ANNOTATIONS has a value attribute marked \"true\"."
+  (mapc
+   (lambda (annotation)
+     (let ((name (dbus-introspect-get-attribute annotation "name"))
+           (value (dbus-introspect-get-attribute annotation "value")))
+       (should
+        (member name expected-annotations))
+       (should
+        (equal value "true"))))
+   annotations))
+
+(defsubst dbus--test-validate-property
+  (interface property-name _expected-annotations &rest expected-args)
+  "Validate a property definition for `dbus-test07-introspection'.
+
+The argument INTERFACE is a string naming the interface owning PROPERTY-NAME.
+The argument PROPERTY-NAME is a string naming the property to validate.
+The arguments EXPECTED-ANNOTATIONS is a list of strings matching
+the annotation names defined for the method or signal.
+The argument EXPECTED-ARGS is a list of expected arguments for the property."
+  (let* ((property
+          (dbus-introspect-get-property
+           :session dbus--test-service dbus--test-path interface 
property-name))
+         (name (dbus-introspect-get-attribute property "name"))
+         (type (dbus-introspect-get-attribute property "type"))
+         (access (dbus-introspect-get-attribute property "access"))
+         (expected (assoc-string name expected-args)))
+    (should expected)
+
+    (should
+     (string-equal name property-name))
+
+    (should
+     (string-equal
+      (nth 0 expected)
+      name))
+
+    (should
+     (string-equal
+      (nth 1 expected)
+      type))
+
+    (should
+     (string-equal
+      (nth 2 expected)
+      access))))
+
+(defsubst dbus--test-validate-m-or-s (tree expected-annotations expected-args)
+  "Validate a method or signal definition for `dbus-test07-introspection'.
+The argument TREE is an sexp returned from either `dbus-introspect-get-method'
+or `dbus-introspect-get-signal'
+The arguments EXPECTED-ANNOTATIONS is a list of strings matching
+the annotation names defined for the method or signal.
+The argument EXPECTED-ARGS is a list of expected arguments for
+the method or signal."
+  (let (args annotations)
+    (mapc (lambda (elem)
+            (cond
+             ((eq 'arg (car elem)) (push elem args))
+             ((eq 'annotation (car elem)) (push elem annotations))))
+          tree)
+    (should
+     (equal
+      (nreverse args)
+      expected-args))
+    (dbus--test-validate-annotations annotations expected-annotations)))
+
+(defsubst dbus--test-validate-signal
+  (interface signal-name expected-annotations &rest expected-args)
+  "Validate a signal definition for `dbus-test07-introspection'.
+
+The argument INTERFACE is a string naming the interface owning SIGNAL-NAME.
+The argument SIGNAL-NAME is a string naming the signal to validate.
+The arguments EXPECTED-ANNOTATIONS is a list of strings matching
+the annotation names defined for the signal.
+The argument EXPECTED-ARGS is a list of expected arguments for the signal."
+  (let ((signal
+         (dbus-introspect-get-signal
+          :session dbus--test-service dbus--test-path interface signal-name)))
+    (pcase-let ((`(signal ((name . ,name)) . ,rest) signal))
+      (should
+       (string-equal name signal-name))
+      (should
+       (string-equal name (dbus-introspect-get-attribute signal "name")))
+      (dbus--test-validate-m-or-s rest expected-annotations expected-args))))
+
+(defsubst dbus--test-validate-method
+  (interface method-name expected-annotations &rest expected-args)
+  "Validate a method definition for `dbus-test07-introspection'.
+
+The argument INTERFACE is a string naming the interface owning METHOD-NAME.
+The argument METHOD-NAME is a string naming the method to validate.
+The arguments EXPECTED-ANNOTATIONS is a list of strings matching
+the annotation names defined for the method.
+The argument EXPECTED-ARGS is a list of expected arguments for the method."
+  (let ((method
+         (dbus-introspect-get-method
+          :session dbus--test-service dbus--test-path interface method-name)))
+    (pcase-let ((`(method ((name . ,name)) . ,rest) method))
+      (should
+       (string-equal name method-name))
+      (should
+       (string-equal name (dbus-introspect-get-attribute method "name")))
+      (dbus--test-validate-m-or-s rest expected-annotations expected-args))))
+
+(ert-deftest dbus-test07-introspection ()
+  "Register an Introspection interface then query it."
+  (skip-unless dbus--test-enabled-session-bus)
+  (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service))
+  (dbus-register-service :session dbus--test-service)
+
+  ;; Prepare introspection response.
+  (dbus-register-method
+   :session dbus--test-service dbus--test-path dbus-interface-introspectable
+   "Introspect" 'dbus--test-introspect)
+  (dbus-register-method
+   :session dbus--test-service (concat dbus--test-path "/node0")
+   dbus-interface-introspectable
+   "Introspect" 'dbus--test-introspect)
+  (dbus-register-method
+   :session dbus--test-service (concat dbus--test-path "/node1")
+   dbus-interface-introspectable
+   "Introspect" 'dbus--test-introspect)
+  (unwind-protect
+      (let ((start (current-time)))
+        ;; dbus-introspect-get-node-names
+        (should
+         (equal
+          (dbus-introspect-get-node-names
+           :session dbus--test-service dbus--test-path)
+          '("node0" "node1")))
+
+        ;; dbus-introspect-get-all-nodes
+        (should
+         (equal
+          (dbus-introspect-get-all-nodes
+           :session dbus--test-service dbus--test-path)
+          (list dbus--test-path
+                (concat dbus--test-path "/node0")
+                (concat dbus--test-path "/node1"))))
+
+        ;; dbus-introspect-get-interface-names
+        (let ((interfaces
+               (dbus-introspect-get-interface-names
+                :session dbus--test-service dbus--test-path)))
+
+          (should
+           (equal
+            interfaces
+            `(,dbus-interface-introspectable
+              ,dbus-interface-properties
+              ,dbus--test-interface)))
+
+          (dbus--test-validate-interface
+           dbus-interface-introspectable nil '("Introspect") nil nil)
+
+          ;; dbus-introspect-get-interface via `dbus--test-validate-interface'.
+          (dbus--test-validate-interface
+           dbus-interface-properties nil
+           '("Get" "Set" "GetAll") '("PropertiesChanged") nil)
+
+          (dbus--test-validate-interface
+           dbus--test-interface '("Connected" "Player")
+           '("Connect" "DeprecatedMethod0" "DeprecatedMethod1") nil
+           `(,dbus-annotation-deprecated)))
+
+        ;; dbus-introspect-get-method-names
+        (let ((methods
+               (dbus-introspect-get-method-names
+                :session dbus--test-service dbus--test-path
+                dbus--test-interface)))
+          (should
+           (equal
+            methods
+            '("Connect" "DeprecatedMethod0" "DeprecatedMethod1")))
+
+          ;; dbus-introspect-get-method via `dbus--test-validate-method'.
+          (dbus--test-validate-method
+           dbus--test-interface "Connect" nil
+           '(arg ((name . "uuid")      (type . "s")     (direction . "in")))
+           '(arg ((name . "mode")      (type . "y")     (direction . "in")))
+           '(arg ((name . "options")   (type . "a{sv}") (direction . "in")))
+           '(arg ((name . "interface") (type . "s")     (direction . "out"))))
+
+          (dbus--test-validate-method
+           dbus--test-interface "DeprecatedMethod0"
+           `(,dbus-annotation-deprecated))
+
+          (dbus--test-validate-method
+           dbus--test-interface "DeprecatedMethod1"
+           `(,dbus-annotation-deprecated)))
+
+        ;; dbus-introspect-get-signal-names
+        (let ((signals
+               (dbus-introspect-get-signal-names
+                :session dbus--test-service dbus--test-path
+                dbus-interface-properties)))
+          (should
+           (equal
+            signals
+            '("PropertiesChanged")))
+
+          ;; dbus-introspect-get-signal via `dbus--test-validate-signal'.
+          (dbus--test-validate-signal
+           dbus-interface-properties "PropertiesChanged" nil
+           '(arg ((name . "interface")              (type . "s")))
+           '(arg ((name . "changed_properties")     (type . "a{sv}")))
+           '(arg ((name . "invalidated_properties") (type . "as")))))
+
+        ;; dbus-intropct-get-property-names
+        (let ((properties
+               (dbus-introspect-get-property-names
+                :session dbus--test-service dbus--test-path
+                dbus--test-interface)))
+          (should
+           (equal
+            properties
+            '("Connected" "Player")))
+
+          ;; dbus-introspect-get-property via `dbus--test-validate-property'.
+          (dbus--test-validate-property
+           dbus--test-interface "Connected" nil
+           '("Connected" "b" "read")
+           '("Player" "o" "read")))
+
+        ;; Elapsed time over a second suggests timeouts.
+        (should
+         (< 0.0 (float-time (time-since start)) 1.0)))
+
+    ;; Cleanup.
+    (dbus-unregister-service :session dbus--test-service)))
+
+(ert-deftest dbus-test07-introspection-timeout ()
+  "Verify introspection request timeouts."
+  :tags '(:expensive-test)
+  (skip-unless dbus--test-enabled-session-bus)
+  (dbus-ignore-errors (dbus-unregister-service :session dbus--test-service))
+  (dbus-register-service :session dbus--test-service)
+
+  (unwind-protect
+      (let ((start (current-time)))
+        (dbus-introspect-xml :session dbus--test-service dbus--test-path)
+        ;; Introspection internal timeout is one second.
+        (should
+         (< 1.0 (float-time (time-since start)))))
+
+    ;; Cleanup.
+    (dbus-unregister-service :session dbus--test-service)))
+
 (defun dbus-test-all (&optional interactive)
   "Run all tests for \\[dbus]."
   (interactive "p")
diff --git a/test/lisp/obsolete/cl-tests.el b/test/lisp/obsolete/cl-tests.el
index 37061df..3f3fda3 100644
--- a/test/lisp/obsolete/cl-tests.el
+++ b/test/lisp/obsolete/cl-tests.el
@@ -21,7 +21,8 @@
 
 ;;; Code:
 
-(require 'cl)
+(with-no-warnings
+  (require 'cl))
 (require 'ert)
 
 
diff --git a/test/lisp/progmodes/python-tests.el 
b/test/lisp/progmodes/python-tests.el
index 6b3e636..bc77443 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -339,7 +339,7 @@ def func(arg):
     # I don't do much
     return arg
     # This comment is badly indented because the user forced so.
-    # At this line python.el wont dedent, user is always right.
+    # At this line python.el won't dedent, user is always right.
 
 comment_wins_over_ender = True
 
@@ -358,7 +358,7 @@ comment_wins_over_ender = True
    ;; The return keyword do make indentation lose a level...
    (should (= (python-indent-calculate-indentation) 0))
    ;; ...but the current indentation was forced by the user.
-   (python-tests-look-at "# At this line python.el wont dedent")
+   (python-tests-look-at "# At this line python.el won't dedent")
    (should (eq (car (python-indent-context)) :after-comment))
    (should (= (python-indent-calculate-indentation) 4))
    ;; Should behave the same for blank lines: potentially a comment.
diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el
index 457de91..d4b3168 100644
--- a/test/lisp/simple-tests.el
+++ b/test/lisp/simple-tests.el
@@ -44,7 +44,7 @@
 ;;; `count-words'
 (ert-deftest simple-test-count-words-bug-41761 ()
   (with-temp-buffer
-    (dotimes (i 10) (insert (propertize "test " 'field (cons nil nil))))
+    (dotimes (_i 10) (insert (propertize "test " 'field (cons nil nil))))
     (should (= (count-words (point-min) (point-max)) 10))))
 
 
diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el
index b68a694..408d6e8 100644
--- a/test/lisp/vc/vc-bzr-tests.el
+++ b/test/lisp/vc/vc-bzr-tests.el
@@ -131,7 +131,6 @@
                  (make-directory bzrdir)
                  (expand-file-name "foo.el" bzrdir)))
          (default-directory (file-name-as-directory bzrdir))
-         (generated-autoload-file (expand-file-name "loaddefs.el" bzrdir))
          (process-environment (cons (format "HOME=%s" homedir)
                                     process-environment)))
     (unwind-protect
@@ -148,7 +147,9 @@
           ;; causes bzr status to fail.  This simulates a broken bzr
           ;; installation.
           (delete-file ".bzr/checkout/dirstate")
-          (should (progn (update-directory-autoloads default-directory)
+          (should (progn (make-directory-autoloads
+                          default-directory
+                          (expand-file-name "loaddefs.el" bzrdir))
                          t)))
       (delete-directory homedir t))))
 
diff --git a/test/lisp/wdired-tests.el b/test/lisp/wdired-tests.el
index b89e8c8..f876967 100644
--- a/test/lisp/wdired-tests.el
+++ b/test/lisp/wdired-tests.el
@@ -178,6 +178,22 @@ wdired-get-filename before and after editing."
       (server-force-delete)
       (delete-directory test-dir t))))
 
+(ert-deftest wdired-test-bug39280 ()
+  "Test for https://debbugs.gnu.org/39280.";
+  (let* ((test-dir (make-temp-file "test-dir" 'dir))
+         (fname "foo")
+         (full-fname (expand-file-name fname test-dir)))
+    (make-empty-file full-fname)
+    (let ((buf (find-file-noselect test-dir)))
+      (unwind-protect
+         (with-current-buffer buf
+           (dired-toggle-read-only)
+            (dolist (old '(t nil))
+              (should (equal fname (wdired-get-filename 'nodir old)))
+              (should (equal full-fname (wdired-get-filename nil old))))
+           (wdired-finish-edit))
+       (if buf (kill-buffer buf))
+       (delete-directory test-dir t)))))
 
 (provide 'wdired-tests)
 ;;; wdired-tests.el ends here
diff --git a/test/manual/cedet/tests/testnsp.cpp 
b/test/manual/cedet/tests/testnsp.cpp
index fce707b..b72a44c 100644
--- a/test/manual/cedet/tests/testnsp.cpp
+++ b/test/manual/cedet/tests/testnsp.cpp
@@ -93,7 +93,7 @@ void foo(void) {
     ; // #4# ( "Mumble" "get" )
 }
 
-// What happens if a type your looking for is scoped withing a type,
+// What happens if a type your looking for is scoped within a type,
 // but you are one level into the completion so the originating scope
 // excludes the type of the variable you are completing through?
 // Thanks Martin Stein for this nice example.
diff --git a/test/src/coding-tests.el b/test/src/coding-tests.el
index c438ae2..82883a0 100644
--- a/test/src/coding-tests.el
+++ b/test/src/coding-tests.el
@@ -143,7 +143,7 @@
 ;; Optional 5th arg TRANSLATOR is a function to translate the original
 ;; file contents to match with the expected result of decoding.  For
 ;; instance, when a file of dos eol-type is read by unix eol-type,
-;; `decode-test-lf-to-crlf' must be specified.
+;; `coding-tests-lf-to-crlf' must be specified.
 
 (defun coding-tests (content-type write-coding read-coding detected-coding
                                   &optional translator)
diff --git a/test/src/indent-tests.el b/test/src/indent-tests.el
new file mode 100644
index 0000000..7d1a6ce
--- /dev/null
+++ b/test/src/indent-tests.el
@@ -0,0 +1,59 @@
+;;; indent-tests.el --- tests for src/indent.c  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2020 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; 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/'.
+
+;;; Commentary:
+
+;;; Code:
+
+(ert-deftest indent-tests-move-to-column-invis-1tab ()
+  "Test `move-to-column' when a TAB is followed by invisible text."
+  (should
+   (string=
+    (with-temp-buffer
+      (insert "\tLine starting with INVISIBLE text after TAB\n")
+      (add-text-properties 2 21 '(invisible t))
+      (goto-char (point-min))
+      (move-to-column 7 t)
+      (buffer-substring-no-properties 1 8))
+    "       ")))
+
+(ert-deftest indent-tests-move-to-column-invis-2tabs ()
+  "Test `move-to-column' when 2 TABs are followed by invisible text."
+  (should
+   (string=
+    (with-temp-buffer
+      (insert "\t\tLine starting with INVISIBLE text after TAB\n")
+      (add-text-properties 3 22 '(invisible t))
+      (goto-char (point-min))
+      (move-to-column 12 t)
+      (buffer-substring-no-properties 1 11))
+    "\t    \tLine")))
+
+(ert-deftest indent-tests-move-to-column-invis-between-tabs ()
+  "Test `move-to-column' when 2 TABs are mixed with invisible text."
+  (should
+   (string=
+    (with-temp-buffer
+      (insert "\txxx\tLine starting with INVISIBLE text after TAB\n")
+      (add-text-properties 6 25 '(invisible t))
+      (add-text-properties 2 5 '(invisible t))
+      (goto-char (point-min))
+      (move-to-column 12 t)
+      (buffer-substring-no-properties 1 14))
+    "\txxx    \tLine")))
diff --git a/test/src/regex-resources/BOOST.tests 
b/test/src/regex-resources/BOOST.tests
index 98fd3b6..756fa00 100644
--- a/test/src/regex-resources/BOOST.tests
+++ b/test/src/regex-resources/BOOST.tests
@@ -93,7 +93,7 @@ aa\) !
 . \0 0 1
 
 ;
-; now move on to the repetion ops,
+; now move on to the repetition ops,
 ; starting with operator *
 - match_default normal REG_EXTENDED
 a* b 0 0
@@ -275,7 +275,7 @@ a(b*)c\1d abbcbbbd -1 -1
 ^(.)\1 abc -1 -1
 a([bc])\1d abcdabbd    4 8 5 6
 ; strictly speaking this is at best ambiguous, at worst wrong, this is what 
most
-; re implimentations will match though.
+; re implementations will match though.
 a(([bc])\2)*d abbccd 0 6 3 5 3 4
 
 a(([bc])\2)*d abbcbd -1 -1
diff --git a/test/src/syntax-tests.el b/test/src/syntax-tests.el
index 65c56b3..56e0338 100644
--- a/test/src/syntax-tests.el
+++ b/test/src/syntax-tests.el
@@ -82,4 +82,353 @@ also has open paren syntax (see Bug#24870)."
       (should (equal (parse-partial-sexp pointC pointX nil nil ppsC)
                      ppsX)))))
 
+
+;;; Commentary:
+;; The next bit tests the handling of comments in syntax.c, in
+;; particular the functions `forward-comment' and `scan-lists' and
+;; `parse-partial-sexp' (in so far as they relate to comments).
+
+;; It is intended to enhance this bit to test nested comments
+;; (2020-10-01).
+
+;; This bit uses the data file test/data/syntax-comments.txt.
+
+(defun syntax-comments-point (n forw)
+  "Return the buffer offset corresponding to the \"label\" N.
+N is a decimal number which appears in the data file, usually
+twice, as \"labels\".  It can also be a negative number or zero.
+FORW is t when we're using the label at BOL, nil for the one at EOL.
+
+If the label N doesn't exist in the current buffer, an exception
+is thrown.
+
+When FORW is t and N positive, we return the position after the
+first occurrence of label N at BOL in the data file.  With FORW
+nil, we return the position before the last occurrence of the
+label at EOL in the data file.
+
+When N is negative, we return instead the position of the end of
+line that the -N label is on.  When it is zero, we return POINT."
+  (if (zerop n)
+      (point)
+    (let ((str (format "%d" (abs n))))
+      (save-excursion
+       (if forw
+           (progn
+             (goto-char (point-min))
+             (re-search-forward
+              (concat "^\\(" str "\\)\\([^0-9\n]\\|$\\)"))
+             (if (< n 0)
+                 (progn (end-of-line) (point))
+               (match-end 1)))
+         (goto-char (point-max))
+         (re-search-backward
+          (concat "\\(^\\|[^0-9]\\)\\(" str "\\)$"))
+         (if (< n 0)
+             (progn (end-of-line) (point))
+           (match-beginning 2)))))))
+
+(defun syntax-comments-midpoint (n)
+  "Return the buffer offset corresponding to the \"label\" N.
+N is a positive decimal number which should appear in the buffer
+exactly once.  The label need not be at the beginning or end of a
+line.
+
+The return value is the position just before the label.
+
+If the label N doesn't exist in the current buffer, an exception
+is thrown."
+  (let ((str (format "%d" n)))
+    (save-excursion
+      (goto-char (point-min))
+      (re-search-forward
+       (concat "\\(^\\|[^0-9]\\)\\(" str "\\)\\([^0-9\n]\\|$\\)"))
+      (match-beginning 2))))
+
+(eval-and-compile
+  (defvar syntax-comments-section))
+
+(defmacro syntax-comments (-type- -dir- res start &optional stop)
+  "Create an ERT test to test (forward-comment 1/-1).
+The test uses a fixed name data file, which it visits.  It calls
+entry and exit functions to set up and tear down syntax entries
+for comment characters.  The test is given a name based on the
+global variable `syntax-comments-section', the direction of
+movement and the value of START.
+
+-TYPE- (unquoted) is a symbol from whose name the entry and exit
+function names are derived by appending \"-in\" and \"-out\".
+
+-DIR- (unquoted) is `forward' or `backward', the direction
+`forward-comment' is attempted.
+
+RES, t or nil, is the expected result from `forward-comment'.
+
+START and STOP are decimal numbers corresponding to labels in the
+data file marking the start and expected stop positions.  See
+`syntax-comments-point' for a precise specification.  If STOP is
+missing or nil, the value of START is assumed for it."
+  (declare (debug t))
+  (let ((forw
+        (cond
+         ((eq -dir- 'forward) t)
+         ((eq -dir- 'backward) nil)
+         (t (error "Invalid -dir- argument \"%s\" to `syntax-comments'" 
-dir-))))
+       (start-str (format "%d" (abs start)))
+       (type -type-))
+    `(ert-deftest ,(intern (concat "syntax-comments-"
+                                  syntax-comments-section
+                                  (if forw "-f" "-b") start-str))
+        ()
+       (with-current-buffer
+          (find-file
+           ,(expand-file-name "data/syntax-comments.txt"
+                              (getenv "EMACS_TEST_DIRECTORY")))
+        (,(intern (concat (symbol-name type) "-in")))
+        (goto-char (syntax-comments-point ,start ,forw))
+        (let ((stop (syntax-comments-point ,(or stop start) ,(not forw))))
+          (should (eq (forward-comment ,(if forw 1 -1)) ,res))
+          (should (eq (point) stop)))
+        (,(intern (concat (symbol-name type) "-out")))))))
+
+(defmacro syntax-br-comments (-type- -dir- res -start- &optional stop)
+  "Create an ERT test to test (scan-lists <position> 1/-1 0).
+This is to test the interface between scan-lists and the internal
+comment routines in syntax.c.
+
+The test uses a fixed name data file, which it visits.  It calls
+entry and exit functions to set up and tear down syntax entries
+for comment and paren characters.  The test is given a name based
+on the global variable `syntax-comments-section', the direction
+of movement and the value of -START-.
+
+-TYPE- (unquoted) is a symbol from whose name the entry and exit
+function names are derived by appending \"-in\" and \"-out\".
+
+-DIR- (unquoted) is `forward' or `backward', the direction
+`scan-lists' is attempted.
+
+RES is t if `scan-lists' is expected to return, nil if it is
+expected to raise a `scan-error' exception.
+
+-START- and STOP are decimal numbers corresponding to labels in the
+data file marking the start and expected stop positions.  See
+`syntax-comments-point' for a precise specification.  If STOP is
+missing or nil, the value of -START- is assumed for it."
+  (declare (debug t))
+  (let* ((forw
+         (cond
+          ((eq -dir- 'forward) t)
+          ((eq -dir- 'backward) nil)
+          (t (error "Invalid -dir- argument \"%s\" to `syntax-comments'" 
-dir-))))
+         (start -start-)
+        (start-str (format "%d" (abs start)))
+        (type -type-))
+    `(ert-deftest ,(intern (concat "syntax-br-comments-"
+                                  syntax-comments-section
+                                  (if forw "-f" "-b") start-str))
+        ()
+       (with-current-buffer
+          (find-file
+           ,(expand-file-name "data/syntax-comments.txt"
+                              (getenv "EMACS_TEST_DIRECTORY")))
+        (,(intern (concat (symbol-name type) "-in")))
+         (let ((start-pos (syntax-comments-point ,start ,forw))
+               ,@(if res
+                     `((stop-pos (syntax-comments-point
+                                  ,(or stop start) ,(not forw))))))
+           ,(if res
+                `(should
+                  (eq (scan-lists start-pos ,(if forw 1 -1) 0)
+                      stop-pos))
+              `(should-error (scan-lists start-pos ,(if forw 1 -1) 0)
+                             :type 'scan-error)))
+        (,(intern (concat (symbol-name type) "-out")))))))
+
+(defmacro syntax-pps-comments (-type- -start- open close &optional -stop-)
+  "Create an ERT test to test `parse-partial-sexp' with comments.
+This is to test the interface between `parse-partial-sexp' and
+the internal comment routines in syntax.c.
+
+The test uses a fixed name data file, which it visits.  It calls
+entry and exit functions to set up and tear down syntax entries
+for comment and paren characters.  The test is given a name based
+on the global variable `syntax-comments-section', and the value
+of -START-.
+
+The generated test calls `parse-partial-sexp' three times, the
+first two with COMMENTSTOP set to `syntax-table' so as to stop
+after the start and end of the comment.  The third call is
+expected to stop at the brace/paren matching the one where the
+test started.
+
+-TYPE- (unquoted) is a symbol from whose name the entry and exit
+function names are derived by appending \"-in\" and \"-out\".
+
+-START- and -STOP- are decimal numbers corresponding to labels in
+the data file marking the start and expected stop positions.  See
+`syntax-comments-point' for a precise specification.  If -STOP-
+is missing or nil, the value of -START- is assumed for it.
+
+OPEN and CLOSE are decimal numbers corresponding to labels in the
+data file marking just after the comment opener and closer where
+the `parse-partial-sexp's are expected to stop.  See
+`syntax-comments-midpoint' for a precise specification."
+  (declare (debug t))
+  (let* ((type -type-)
+         (start -start-)
+         (start-str (format "%d" start))
+         (stop (or -stop- start)))
+    `(ert-deftest ,(intern (concat "syntax-pps-comments-"
+                                   syntax-comments-section
+                                   "-" start-str))
+         ()
+       (with-current-buffer
+           (find-file
+            ,(expand-file-name "data/syntax-comments.txt"
+                               (getenv "EMACS_TEST_DIRECTORY")))
+         (,(intern (concat (symbol-name type) "-in")))
+         (let ((start-pos (syntax-comments-point ,start t))
+               (open-pos (syntax-comments-midpoint ,open))
+               (close-pos (syntax-comments-midpoint ,close))
+               (stop-pos (syntax-comments-point ,stop nil))
+               s)
+           (setq s (parse-partial-sexp
+                    start-pos (point-max) 0 nil nil 'syntax-table))
+           (should (eq (point) open-pos))
+           (setq s (parse-partial-sexp
+                    (point) (point-max) 0 nil s 'syntax-table))
+           (should (eq (point) close-pos))
+           (setq s (parse-partial-sexp (point) (point-max) 0 nil s))
+           (should (eq (point) stop-pos)))
+         (,(intern (concat (symbol-name type) "-out")))))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; "Pascal" style comments - single character delimiters, the closing
+;; delimiter not being newline.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun {-in ()
+  (setq parse-sexp-ignore-comments t)
+  (setq comment-end-can-be-escaped nil)
+  (modify-syntax-entry ?{ "<")
+  (modify-syntax-entry ?} ">"))
+(defun {-out ()
+  (modify-syntax-entry ?{ "(}")
+  (modify-syntax-entry ?} "){"))
+(eval-and-compile
+  (setq syntax-comments-section "pascal"))
+
+(syntax-comments { forward nil 20 0)
+(syntax-comments { backward nil 20 0)
+(syntax-comments { forward t 21)
+(syntax-comments { backward t 21)
+(syntax-comments { forward t 22)
+(syntax-comments { backward t 22)
+
+(syntax-comments { forward t 23)
+(syntax-comments { backward t 23)
+(syntax-comments { forward t 24)
+(syntax-comments { backward t 24)
+(syntax-comments { forward t 26)
+(syntax-comments { backward t 26)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; "Lisp" style comments - single character opening delimiters on line
+;; comments.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun \;-in ()
+  (setq parse-sexp-ignore-comments t)
+  (setq comment-end-can-be-escaped nil)
+  (modify-syntax-entry ?\n ">")
+  (modify-syntax-entry ?\; "<"))
+(defun \;-out ()
+  (modify-syntax-entry ?\n " ")
+  (modify-syntax-entry ?\; "."))
+(eval-and-compile
+  (setq syntax-comments-section "lisp"))
+
+(syntax-comments \; backward nil 30 30)
+(syntax-comments \; forward t 31)
+(syntax-comments \; backward t 31)
+(syntax-comments \; forward t 32)
+(syntax-comments \; backward t 32)
+(syntax-comments \; forward t 33)
+(syntax-comments \; backward t 33)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Emacs 27 "C" style comments - `comment-end-can-be-escaped' is non-nil.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun /*-in ()
+  (setq parse-sexp-ignore-comments t)
+  (setq comment-end-can-be-escaped t)
+  (modify-syntax-entry ?/ ". 124b")
+  (modify-syntax-entry ?* ". 23")
+  (modify-syntax-entry ?\n "> b"))
+(defun /*-out ()
+  (setq comment-end-can-be-escaped nil)
+  (modify-syntax-entry ?/ ".")
+  (modify-syntax-entry ?* ".")
+  (modify-syntax-entry ?\n " "))
+(eval-and-compile
+  (setq syntax-comments-section "c"))
+
+(syntax-comments /* forward t 1)
+(syntax-comments /* backward t 1)
+(syntax-comments /* forward t 2)
+(syntax-comments /* backward t 2)
+(syntax-comments /* forward t 3)
+(syntax-comments /* backward t 3)
+
+(syntax-comments /* forward t 4)
+(syntax-comments /* backward t 4)
+(syntax-comments /* forward t 5 6)
+(syntax-comments /* backward nil 5 0)
+(syntax-comments /* forward nil 6 0)
+(syntax-comments /* backward t 6 5)
+
+(syntax-comments /* forward t 7 8)
+(syntax-comments /* backward nil 7 0)
+(syntax-comments /* forward nil 8 0)
+(syntax-comments /* backward t 8 7)
+(syntax-comments /* forward t 9)
+(syntax-comments /* backward t 9)
+
+(syntax-comments /* forward nil 10 0)
+(syntax-comments /* backward nil 10 0)
+(syntax-comments /* forward t 11)
+(syntax-comments /* backward t 11)
+
+(syntax-comments /* forward t 13 14)
+(syntax-comments /* backward nil 13 -14)
+(syntax-comments /* forward t 15)
+(syntax-comments /* backward t 15)
+
+;; Emacs 27 "C" style comments inside brace lists.
+(syntax-br-comments /* forward t 50)
+(syntax-br-comments /* backward t 50)
+(syntax-br-comments /* forward t 51)
+(syntax-br-comments /* backward t 51)
+(syntax-br-comments /* forward t 52)
+(syntax-br-comments /* backward t 52)
+
+(syntax-br-comments /* forward t 53)
+(syntax-br-comments /* backward t 53)
+(syntax-br-comments /* forward t 54 20)
+(syntax-br-comments /* backward t 54)
+(syntax-br-comments /* forward t 55)
+(syntax-br-comments /* backward t 55)
+
+(syntax-br-comments /* forward t 56 58)
+(syntax-br-comments /* backward t 58 56)
+(syntax-br-comments /* backward nil 59)
+(syntax-br-comments /* forward t 60)
+(syntax-br-comments /* backward t 60)
+
+;; Emacs 27 "C" style comments parsed by `parse-partial-sexp'.
+(syntax-pps-comments /* 50 70 71)
+(syntax-pps-comments /* 52 72 73)
+(syntax-pps-comments /* 54 74 55 20)
+(syntax-pps-comments /* 56 76 77 58)
+(syntax-pps-comments /* 60 78 79)
+
 ;;; syntax-tests.el ends here



reply via email to

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