emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] xwidget_mvp 7e1c9b9: merge master


From: Joakim Verona
Subject: [Emacs-diffs] xwidget_mvp 7e1c9b9: merge master
Date: Mon, 20 Apr 2015 21:21:37 +0000

branch: xwidget_mvp
commit 7e1c9b90f7b68b376a676fc387e26b647304702c
Merge: 77dbd0e b7a015f
Author: Joakim Verona <address@hidden>
Commit: Joakim Verona <address@hidden>

    merge master
---
 .dir-locals.el                                     |    7 +-
 .gitignore                                         |    5 +-
 CONTRIBUTE                                         |  109 +-
 ChangeLog => ChangeLog.1                           |   29 +-
 ChangeLog.2                                        | 1244 +++
 INSTALL                                            |  302 +-
 Makefile.in                                        |  106 +-
 README                                             |   56 +-
 admin/{ChangeLog => ChangeLog.1}                   |    0
 admin/admin.el                                     |   19 +-
 admin/authors.el                                   |   14 +-
 admin/make-tarball.txt                             |   78 +-
 admin/merge-gnulib                                 |    2 +-
 admin/notes/repo                                   |   54 +-
 admin/unidata/unidata-gen.el                       |   14 +-
 build-aux/git-hooks/commit-msg                     |   73 +-
 build-aux/git-hooks/pre-commit                     |   18 +-
 build-aux/gitlog-to-changelog                      |  445 +
 build-aux/gitlog-to-emacslog                       |   72 +
 configure.ac                                       |  260 +-
 doc/emacs/{ChangeLog => ChangeLog.1}               |    0
 doc/emacs/Makefile.in                              |    2 +-
 doc/emacs/ack.texi                                 |    2 +-
 doc/emacs/building.texi                            |    8 +-
 doc/emacs/calendar.texi                            |    4 +-
 doc/emacs/cmdargs.texi                             |    4 +-
 doc/emacs/custom.texi                              |   14 +-
 doc/emacs/dired.texi                               |    2 +-
 doc/emacs/emacs.texi                               |   10 +-
 doc/emacs/files.texi                               |    4 +-
 doc/emacs/glossary.texi                            |   40 +-
 doc/emacs/gnu.texi                                 |    2 +-
 doc/emacs/indent.texi                              |    2 +-
 doc/emacs/macos.texi                               |    2 +-
 doc/emacs/maintaining.texi                         |    4 +-
 doc/emacs/makefile.w32-in                          |    4 +-
 doc/emacs/misc.texi                                |   14 +-
 doc/emacs/programs.texi                            |    4 +-
 doc/emacs/rmail.texi                               |    4 +-
 doc/emacs/search.texi                              |    2 +-
 doc/emacs/trouble.texi                             |   17 +-
 doc/emacs/vc1-xtra.texi                            |    4 +-
 doc/lispintro/{ChangeLog => ChangeLog.1}           |    0
 doc/lispintro/emacs-lisp-intro.texi                |  574 +-
 doc/lispref/{ChangeLog => ChangeLog.1}             |    2 +-
 doc/lispref/README                                 |    6 +-
 doc/lispref/buffers.texi                           |    2 +-
 doc/lispref/commands.texi                          |    6 +-
 doc/lispref/control.texi                           |    2 +-
 doc/lispref/customize.texi                         |    2 +-
 doc/lispref/display.texi                           |   45 +-
 doc/lispref/elisp.texi                             |    4 +-
 doc/lispref/files.texi                             |   10 +-
 doc/lispref/frames.texi                            |    6 +-
 doc/lispref/hash.texi                              |    2 +-
 doc/lispref/help.texi                              |    2 +-
 doc/lispref/internals.texi                         |    8 +-
 doc/lispref/loading.texi                           |    2 +-
 doc/lispref/makefile.w32-in                        |    4 +-
 doc/lispref/markers.texi                           |    5 +-
 doc/lispref/modes.texi                             |    8 +-
 doc/lispref/nonascii.texi                          |    6 +-
 doc/lispref/objects.texi                           |    6 +-
 doc/lispref/os.texi                                |    8 +-
 doc/lispref/positions.texi                         |    2 +-
 doc/lispref/processes.texi                         |   54 +-
 doc/lispref/searching.texi                         |   11 +-
 doc/lispref/sequences.texi                         |   30 +-
 doc/lispref/strings.texi                           |   12 +-
 doc/lispref/syntax.texi                            |    2 +-
 doc/lispref/text.texi                              |    2 +-
 doc/lispref/tips.texi                              |   31 +-
 doc/lispref/two-volume-cross-refs.txt              |    6 +-
 doc/lispref/windows.texi                           |    2 +-
 doc/man/{ChangeLog => ChangeLog.1}                 |    0
 doc/man/ebrowse.1                                  |    2 +-
 doc/man/emacs.1.in                                 |   14 +-
 doc/man/emacsclient.1                              |   32 +-
 doc/man/etags.1                                    |   10 +-
 doc/misc/{ChangeLog => ChangeLog.1}                |    0
 doc/misc/Makefile.in                               |    2 +-
 doc/misc/auth.texi                                 |    6 +-
 doc/misc/autotype.texi                             |   11 +-
 doc/misc/calc.texi                                 |   86 +-
 doc/misc/cc-mode.texi                              |   16 +-
 doc/misc/cl.texi                                   |    8 +-
 doc/misc/ebrowse.texi                              |    2 +-
 doc/misc/ede.texi                                  |   10 +-
 doc/misc/ediff.texi                                |   60 +-
 doc/misc/edt.texi                                  |    2 +-
 doc/misc/efaq-w32.texi                             |   10 +-
 doc/misc/efaq.texi                                 |    6 +-
 doc/misc/eieio.texi                                |  109 +-
 doc/misc/erc.texi                                  |   48 +-
 doc/misc/ert.texi                                  |    4 +-
 doc/misc/eshell.texi                               |   23 +-
 doc/misc/eudc.texi                                 |  109 +-
 doc/misc/forms.texi                                |    2 +-
 doc/misc/gnus-faq.texi                             |    4 +-
 doc/misc/gnus-news.el                              |    4 +-
 doc/misc/gnus-news.texi                            |    4 +-
 doc/misc/gnus.texi                                 |   36 +-
 doc/misc/htmlfontify.texi                          |   10 +-
 doc/misc/idlwave.texi                              |   20 +-
 doc/misc/info.texi                                 |    4 +-
 doc/misc/mairix-el.texi                            |   21 +-
 doc/misc/makefile.w32-in                           |    4 +-
 doc/misc/message.texi                              |    6 +-
 doc/misc/newsticker.texi                           |    2 +-
 doc/misc/octave-mode.texi                          |    8 +-
 doc/misc/org.texi                                  |   33 +-
 doc/misc/rcirc.texi                                |    2 +-
 doc/misc/reftex.texi                               |   12 +-
 doc/misc/remember.texi                             |    8 +-
 doc/misc/sc.texi                                   |    2 +-
 doc/misc/semantic.texi                             |    2 +-
 doc/misc/speedbar.texi                             |   20 +-
 doc/misc/todo-mode.texi                            |   10 +-
 doc/misc/tramp.texi                                |   12 +-
 doc/misc/url.texi                                  |    2 +-
 doc/misc/vhdl-mode.texi                            |    2 +-
 doc/misc/vip.texi                                  |    8 +-
 doc/misc/viper.texi                                |   65 +-
 doc/misc/widget.texi                               |    2 +-
 doc/misc/woman.texi                                |    6 +-
 etc/{ChangeLog => ChangeLog.1}                     |    4 +
 etc/NEWS                                           |   71 +-
 etc/PROBLEMS                                       |   77 +-
 leim/{ChangeLog => ChangeLog.1}                    |    0
 lib-src/{ChangeLog => ChangeLog.1}                 |    0
 lib-src/movemail.c                                 |   27 +-
 lib/gnulib.mk                                      |    9 +-
 lib/stddef.in.h                                    |   19 +-
 lisp/ChangeLog.16                                  |    2 +-
 lisp/{ChangeLog => ChangeLog.17}                   |  183 +-
 lisp/abbrev.el                                     |    9 +-
 lisp/bookmark.el                                   |    3 +-
 lisp/calc/calc-forms.el                            |    4 +-
 lisp/calendar/icalendar.el                         |    2 +-
 lisp/cedet/{ChangeLog => ChangeLog.1}              |    0
 lisp/cedet/semantic/complete.el                    |   10 +-
 lisp/cedet/semantic/db.el                          |    1 +
 lisp/cedet/semantic/decorate.el                    |   14 -
 lisp/cedet/semantic/decorate/mode.el               |    2 +-
 lisp/cedet/semantic/fw.el                          |   26 +-
 lisp/cedet/semantic/idle.el                        |    1 +
 lisp/cedet/semantic/util-modes.el                  |   10 +-
 lisp/comint.el                                     |   24 +-
 lisp/completion.el                                 |    9 +-
 lisp/cus-edit.el                                   |    6 +-
 lisp/cus-start.el                                  |   67 +-
 lisp/desktop.el                                    |    2 +-
 lisp/elec-pair.el                                  |    3 +-
 lisp/emacs-lisp/autoload.el                        |    7 +-
 lisp/emacs-lisp/bytecomp.el                        |   66 +-
 lisp/emacs-lisp/cl-extra.el                        |    8 +-
 lisp/emacs-lisp/cl-lib.el                          |   48 +-
 lisp/emacs-lisp/cl-macs.el                         |   31 +-
 lisp/emacs-lisp/cl.el                              |   14 +-
 lisp/emacs-lisp/cursor-sensor.el                   |  180 +
 lisp/emacs-lisp/edebug.el                          |   29 +-
 lisp/emacs-lisp/eieio-core.el                      |   30 +-
 lisp/emacs-lisp/eieio.el                           |    1 +
 lisp/emacs-lisp/lisp-mnt.el                        |    6 +-
 lisp/emacs-lisp/lisp-mode.el                       |   33 +-
 lisp/emacs-lisp/package.el                         |  491 +-
 lisp/emacs-lisp/pcase.el                           |   46 +-
 lisp/emacs-lisp/rx.el                              |   16 +-
 lisp/emacs-lisp/seq.el                             |   33 +-
 lisp/epg.el                                        |   48 +-
 lisp/erc/ChangeLog.01                              | 1056 --
 lisp/erc/ChangeLog.02                              | 2620 -----
 lisp/erc/ChangeLog.03                              | 2163 ----
 lisp/erc/ChangeLog.04                              | 2094 ----
 lisp/erc/ChangeLog.05                              | 1240 ---
 lisp/erc/ChangeLog.06                              | 1454 ---
 lisp/erc/ChangeLog.07                              |  836 --
 lisp/erc/ChangeLog.08                              |  429 -
 lisp/erc/ChangeLog.1                               |11729 ++++++++++++++++++++
 lisp/erc/{ChangeLog => ChangeLog.2}                |    5 +-
 lisp/erc/erc-pcomplete.el                          |    8 +-
 lisp/erc/erc-stamp.el                              |   54 +-
 lisp/eshell/esh-arg.el                             |   49 +-
 lisp/eshell/esh-mode.el                            |   18 +-
 lisp/ffap.el                                       |    2 +-
 lisp/files.el                                      |   84 +-
 lisp/forms.el                                      |   20 +-
 lisp/gnus/{ChangeLog => ChangeLog.3}               |   15 +-
 lisp/gnus/deuglify.el                              |    2 +-
 lisp/gnus/gnus-art.el                              |   97 +-
 lisp/gnus/gnus-group.el                            |   52 +-
 lisp/gnus/gnus-sum.el                              |   26 +-
 lisp/gnus/gnus-topic.el                            |   46 +-
 lisp/gnus/gnus-uu.el                               |    8 +-
 lisp/gnus/message.el                               |   37 +-
 lisp/gnus/rtree.el                                 |    7 +-
 lisp/htmlfontify.el                                |   11 +-
 lisp/ibuffer.el                                    |    4 +-
 lisp/indent.el                                     |    2 +-
 lisp/isearch.el                                    |   35 +-
 lisp/jit-lock.el                                   |   14 +-
 lisp/ldefs-boot.el                                 | 2326 ++--
 lisp/leim/quail/cyrillic.el                        |    8 +-
 lisp/loadup.el                                     |    4 +-
 lisp/mail/rmail.el                                 |   67 +-
 lisp/mh-e/{ChangeLog => ChangeLog.2}               |    3 +-
 lisp/misearch.el                                   |    7 +-
 lisp/net/browse-url.el                             |   21 +-
 lisp/net/dbus.el                                   |    2 +-
 lisp/net/eudc-export.el                            |    2 +-
 lisp/net/eudc.el                                   |   34 +-
 lisp/net/eudcb-ph.el                               |    8 +-
 lisp/net/nsm.el                                    |    3 +-
 lisp/net/rcirc.el                                  |   13 +-
 lisp/net/secrets.el                                |    2 +-
 lisp/net/tramp-cache.el                            |   25 +-
 lisp/net/tramp-sh.el                               |    1 -
 lisp/obsolete/gulp.el                              |    2 +-
 lisp/obsolete/mouse-sel.el                         |    2 +-
 lisp/org/{ChangeLog => ChangeLog.1}                |    0
 lisp/org/org-clock.el                              |    6 +-
 lisp/org/ox-odt.el                                 |    7 +-
 lisp/pcmpl-unix.el                                 |    2 +-
 lisp/play/hanoi.el                                 |    2 +-
 lisp/progmodes/cc-fonts.el                         |   45 +-
 lisp/progmodes/cc-mode.el                          |   20 +-
 lisp/progmodes/compile.el                          |    6 +-
 lisp/progmodes/elisp-mode.el                       |   41 +-
 lisp/progmodes/hideif.el                           |    4 +-
 lisp/progmodes/js.el                               |    5 +-
 lisp/progmodes/python.el                           |  367 +-
 lisp/progmodes/vhdl-mode.el                        |   27 +-
 lisp/progmodes/xref.el                             |    6 +-
 lisp/rect.el                                       |    3 +-
 lisp/replace.el                                    |   12 +-
 lisp/ses.el                                        |  207 +-
 lisp/simple.el                                     |   65 +-
 lisp/subr.el                                       |   54 +-
 lisp/term.el                                       |    5 -
 lisp/term/w32-win.el                               |    6 +-
 lisp/term/xterm.el                                 |   93 +-
 lisp/textmodes/css-mode.el                         |   29 +-
 lisp/textmodes/reftex-index.el                     |   29 +-
 lisp/textmodes/reftex-toc.el                       |   19 +-
 lisp/textmodes/reftex.el                           |    4 +-
 lisp/textmodes/sgml-mode.el                        |  127 +-
 lisp/textmodes/table.el                            |   53 +-
 lisp/url/{ChangeLog => ChangeLog.1}                |    0
 lisp/vc/diff-mode.el                               |    2 +-
 lisp/vc/diff.el                                    |    2 +-
 lisp/vc/log-edit.el                                |   41 +-
 lisp/vc/vc-dispatcher.el                           |   23 +-
 lisp/vc/vc-git.el                                  |   33 +-
 lwlib/{ChangeLog => ChangeLog.1}                   |    0
 lwlib/README                                       |    2 +-
 lwlib/xlwmenu.c                                    |    2 +-
 m4/gnulib-comp.m4                                  |    2 +
 make-dist                                          |  120 +-
 msdos/{ChangeLog => ChangeLog.1}                   |    0
 nextstep/{ChangeLog => ChangeLog.1}                |    0
 nt/{ChangeLog => ChangeLog.1}                      |    0
 oldXMenu/{ChangeLog => ChangeLog.1}                |    0
 src/{ChangeLog => ChangeLog.13}                    |   32 +-
 src/character.c                                    |   39 +-
 src/character.h                                    |    2 +
 src/cmds.c                                         |   60 +-
 src/eval.c                                         |   12 +-
 src/fileio.c                                       |   34 +-
 src/gnutls.c                                       |   10 +
 src/insdel.c                                       |    2 +-
 src/keyboard.c                                     |    1 +
 src/lisp.h                                         |    2 +-
 src/lread.c                                        |    7 +-
 src/print.c                                        |  475 +-
 src/process.c                                      |  297 +-
 src/process.h                                      |    3 +
 src/regex.c                                        |   19 +-
 src/textprop.c                                     |  111 +-
 src/tparam.c                                       |    8 +-
 src/undo.c                                         |    8 +-
 src/w32.c                                          |   20 +
 src/w32.h                                          |    1 +
 src/w32proc.c                                      |   35 +-
 src/widget.c                                       |   23 +-
 src/window.c                                       |  636 +-
 src/window.h                                       |   20 +-
 src/xfaces.c                                       |    2 +-
 src/xselect.c                                      |   28 +-
 src/xterm.c                                        |   21 +-
 test/{ChangeLog => ChangeLog.1}                    |   11 +-
 test/automated/data/package/package-test-server.py |   21 +
 test/automated/eieio-test-methodinvoke.el          |    2 +-
 test/automated/eshell.el                           |   31 +
 test/automated/message-mode-tests.el               |   55 +
 test/automated/package-test.el                     |   55 +-
 test/automated/process-tests.el                    |   70 +
 test/automated/python-tests.el                     |  233 +-
 test/automated/seq-tests.el                        |   26 +
 test/automated/tramp-tests.el                      |   22 +-
 test/indent/css-mode.css                           |   15 +
 test/indent/js.js                                  |    5 +
 test/indent/perl.perl                              |    9 +
 302 files changed, 20528 insertions(+), 16624 deletions(-)

diff --git a/.dir-locals.el b/.dir-locals.el
index 5e73e0d..9853d7b 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -3,12 +3,11 @@
          (fill-column . 70)))
  (c-mode . ((c-file-style . "GNU")))
  (objc-mode . ((c-file-style . "GNU")))
- (log-edit-mode . ((log-edit-rewrite-fixes
-                    "[ \n](bug#\\([0-9]+\\))" . "debbugs:\\1")
-                   (log-edit-font-lock-gnu-style . t)
+ (log-edit-mode . ((log-edit-font-lock-gnu-style . t)
                    (log-edit-setup-add-author . t)))
  (change-log-mode . ((add-log-time-zone-rule . t)
                     (fill-column . 74)
                     (bug-reference-url-format . "http://debbugs.gnu.org/%s";)
                     (mode . bug-reference)))
- (diff-mode . ((mode . whitespace))))
+ (diff-mode . ((mode . whitespace)))
+ (emacs-lisp-mode . ((indent-tabs-mode . nil))))
diff --git a/.gitignore b/.gitignore
index 9810c1d..9d32e6b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -217,6 +217,7 @@ lisp/international/uni-*.el
 *.ps
 *.sc
 *.scs
+*.t2d/
 *.tg
 *.tgs
 *.toc
@@ -229,7 +230,8 @@ doc/man/emacs.1
 doc/misc/cc-mode.ss
 etc/DOC
 etc/refcards/emacsver.tex
-info/dir
+gnustmp*
+/info/
 
 # Version control and locks.
 *.orig
@@ -237,6 +239,7 @@ info/dir
 *~
 .#*
 \#*\#
+ChangeLog
 [0-9]*.patch
 
 # Built by 'make install'.
diff --git a/CONTRIBUTE b/CONTRIBUTE
index 005ca17..d0e3750 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -27,27 +27,38 @@ advanced information.
 
 Alternately, see admin/notes/git-workflow.
 
-If committing changes written by someone else, make the ChangeLog
-entry in their name, not yours. git distinguishes between the author
+If committing changes written by someone else, make the commit in
+their name, not yours.  git distinguishes between the author
 and the committer; use the --author option on the commit command to
 specify the actual author; the committer defaults to you.
 
-** commit messages
+** Commit messages
 
-When using git, commit messages should use ChangeLog format, with the
-following modifications:
+When a release is prepared, the commit messages are used to generate
+the ChangeLog file.  So a typical patch does not touch any of the
+ChangeLog files in the repository, but contains the ChangeLog entries
+in its message.  Here is an example commit message (indented):
+
+       Deactivate shifted region
+
+       Do not silently extend a region that is not highlighted;
+       this can happen after a shift (Bug#19003).
+       * doc/emacs/mark.texi (Shift Selection): Document the change.
+       * lisp/window.el (handle-select-window):
+       * src/frame.c (Fhandle_switch_frame, Fselected_frame):
+       Deactivate the mark.
+
+The general format is as follows.
 
 - Start with a single unindented summary line explaining the change,
   then an empty line, then unindented ChangeLog entries.
 
-  You can use various Emacs functions to ease this process; see (info
-  "(emacs)Change Log Commands") or
-  
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
-
 - Limit lines in commit messages to 78 characters, unless they consist
-  of a single word of at most 140 characters.  If you have trouble
-  fitting the summary into 78 characters, add a summarizing paragraph
-  below the empty line and before the individual file descriptions.
+  of a single word of at most 140 characters; this is enforced by a
+  commit hook.  It's nicer to limit the summary line to 50 characters;
+  this isn't enforced.  If the change can't be summarized so briefly,
+  add a paragraph after the empty line and before the individual file
+  descriptions.
 
 - If only a single file is changed, the summary line can be the normal
   file first line (starting with the asterisk).  Then there is no
@@ -63,8 +74,6 @@ following modifications:
 - Commit messages should not contain the "Signed-off-by:" lines that
   are used in some other projects.
 
-** ChangeLog notes
-
 - Emacs generally follows the GNU coding standards when it comes to
   ChangeLogs:
   http://www.gnu.org/prep/standards/html_node/Change-Logs.html .  One
@@ -78,32 +87,34 @@ following modifications:
   ending with a period (except the summary line should not end in a
   period).
 
-  It is tempting to relax this rule for commit messages, since they
-  are somewhat transient.  However, they are preserved indefinitely,
-  and have a reasonable chance of being read in the future, so it's
-  better that they have good presentation.
-
-- There are multiple ChangeLogs in the emacs source; roughly one per
-  high-level directory. The ChangeLog entry for a commit belongs in the
-  lowest ChangeLog that is higher than or at the same level as any file
-  changed by the commit.
+  They are preserved indefinitely, and have a reasonable chance of
+  being read in the future, so it's better that they have good
+  presentation.
 
 - Use the present tense; describe "what the change does", not "what
   the change did".
 
 - Preferred form for several entries with the same content:
 
-   * help.el (view-lossage):
-   * kmacro.el (kmacro-edit-lossage):
-   * edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300 keys.
+       * lisp/help.el (view-lossage):
+       * lisp/kmacro.el (kmacro-edit-lossage):
+       * lisp/edmacro.el (edit-kbd-macro): Fix docstring, lossage is now 300.
 
   (Rather than anything involving "ditto" and suchlike.)
 
-- If the commit fixes a bug, add a separate line
+- If the commit has authors other than yourself, the commit message
+  should contain a separate line like the following:
+
+       Co-authored-by: Joe Schmoe <address@hidden>
 
-  Fixes: bug#NNNN
+- If the commit is a tiny change that is exempt from copyright paperwork,
+  the commit message should contain a separate line like the following:
 
-  where NNNN is the bug number.
+       Copyright-paperwork-exempt: yes
+
+- The commit message should contain "Bug#NNNNN" if it is related to
+  bug number NNNNN in the debbugs database.  This string is often
+  parenthesized, as in "(Bug#19003)".
 
 - In ChangeLog entries, there is no standard or recommended way to
   identify revisions.
@@ -114,10 +125,36 @@ following modifications:
   "2014-01-16T05:43:address@hidden". Often, "my previous commit"
   will suffice.
 
-- There is no need to make separate ChangeLog entries for files such
-  as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration
-  of files such as 'configure'.  "There is no need" means you don't
-  have to, but you can if you want to.
+- There is no need to mention files such as NEWS, MAINTAINERS, and
+  FOR-RELEASE, or to indicate regeneration of files such as
+  'configure', in the ChangeLog entry.  "There is no need" means you
+  don't have to, but you can if you want to.
+
+- If a commit message's first line starts with "; ", the message is
+  ignored when generating ChangeLog history files via 'make ChangeLog'
+  or via 'make change-history'.  You can use "; " for minor commits
+  that do not need separate ChangeLog entries, as well as commits that
+  only modify files that don't need these entries at all.
+
+** Generating ChangeLog entries
+
+- You can use various Emacs functions to ease the process of writing
+  ChangeLog entries; see (info "(emacs)Change Log Commands") or
+  
http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
+
+- If you use Emacs VC, one way to format ChangeLog entries is to create
+  a top-level ChangeLog file manually, and update it with 'C-x 4 a' as
+  usual.  Do not register the ChangeLog file under git; instead, use
+  'C-c C-a' to insert its contents into into your *vc-log* buffer.
+  Or if 'log-edit-hook' includes 'log-edit-insert-changelog' (which it
+  does by default), they will be filled in for you automatically.
+
+- Alternatively, you can use the vc-dwim command to maintain commit
+  messages.  When you create a source directory, run the shell command
+  'git-changelog-symlink-init' to create a symbolic link from
+  ChangeLog to .git/c/ChangeLog.  Edit this ChangeLog via its symlink
+  with Emacs commands like 'C-x 4 a', and commit the change using the
+  shell command 'vc-dwim --commit'.  Type 'vc-dwim --help' for more.
 
 ** branches
 
@@ -182,6 +219,10 @@ to the tracker at http://debbugs.gnu.org .
 You can subscribe to the mailing lists, or see the list archives,
 by following links from http://savannah.gnu.org/mail/?group=emacs .
 
+To email a patch you can use a shell command like 'git format-patch -1'
+to create a file, and then attach the file to your email.  This nicely
+packages the patch's commit message and changes.
+
 ** Document your changes.
 
 Any change that matters to end-users should have an entry in etc/NEWS.
@@ -195,7 +236,7 @@ the entry with "+++". Otherwise do not mark it.
 
 Please see (info "(elisp)Documentation Tips") or
 
https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html
-for more specific tips on Emacs's doc style.  Use `checkdoc' to check
+for more specific tips on Emacs's doc style.  Use 'checkdoc' to check
 for documentation errors before submitting a patch.
 
 ** Test your changes.
diff --git a/ChangeLog b/ChangeLog.1
similarity index 99%
rename from ChangeLog
rename to ChangeLog.1
index 6df5a5a..d1b8d0f 100644
--- a/ChangeLog
+++ b/ChangeLog.1
@@ -1,3 +1,24 @@
+2015-04-07  Paul Eggert  <address@hidden>
+
+       Merge from gnulib
+       * lib/stddef.in.h: Update from gnulib, incorporating:
+       2015-04-02 stddef: port to pre-C11 GCC on x86
+
+2015-04-03  Paul Eggert  <address@hidden>
+
+       Port 'configure' to clang 3.5
+       * configure.ac: Add -Wno-unknown-attributes if clang;
+       otherwise clang 3.5.0 (Fedora 21 x86-64) complains
+       "/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.
+
+2015-04-03  Ulrich Müller  <address@hidden>
+
+       * configure.ac (LD_SWITCH_SYSTEM_TEMACS): Add -nopie option if it
+       is supported, in order to avoid segfaults in temacs.  (Bug#18784)
+
 2015-03-27  Pete Williamson  <address@hidden>  (tiny change)
 
        Add NaCl target
@@ -34,7 +55,7 @@
        (HAVE_PTHREAD, LIB_PTHREAD): Port better to FreeBSD,
        by also checking for pthread_create, pthread_self, pthread_sigmask.
        Tighten the test for pthread_atfork while we're at it.
-       Fixes: bug#20136
+       (Bug#20136)
 
        Merge from gnulib
        This incorporates:
@@ -55,7 +76,7 @@
        Don't require GNU putenv
        * configure.ac: Use system putenv even if it lacks GNU features, as
        we don't need them.  This works around a bug in FreeBSD 10.1 getenv.
-       Fixes: bug#19874
+       (Bug#19874)
 
 2015-02-25  Paul Eggert  <address@hidden>
 
@@ -149,7 +170,7 @@
        If gnustep-config works, use 'gnustep-config --objc-flags' and
        'gnustep-config --gui-libs' to compute GNUstep configuration
        variables, instead of attempting to infer them individually.
-       Fixes: bug#19507
+       (Bug#19507)
 
 2015-01-21  Ulrich Müller  <address@hidden>
 
@@ -177,7 +198,7 @@
        * INSTALL: Document this.
        * configure.ac: Add AM_SILENT_RULES([yes]).
        (AM_DEFAULT_VERBOSITY): Remove now-unnecessary initialization.
-       Fixes: bug#19501
+       (Bug#19501)
 
 2015-01-06  Paul Eggert  <address@hidden>
 
diff --git a/ChangeLog.2 b/ChangeLog.2
new file mode 100644
index 0000000..90ef58c
--- /dev/null
+++ b/ChangeLog.2
@@ -0,0 +1,1244 @@
+2015-04-18  Paul Eggert  <address@hidden>
+
+       Prefer "Bug#1234" in commit messages (Bug#20325)
+       * .dir-locals.el (log-edit-mode): Don't rewrite Bug#,
+       as this isn't useful for Git.
+       * CONTRIBUTE: Suggest "Bug#1234" instead of "Fixes: debbugs:1234".
+
+2015-04-18  Glenn Morris  <address@hidden>
+
+       * lisp/files.el (auto-mode-alist): Use conf mode for gitconfig, hgrc.
+       (Bug#19506)
+
+2015-04-18  Tom Willemse  <address@hidden>  (tiny change)
+
+       * lisp/elec-pair.el (electric-pair-post-self-insert-function): Do not 
use `chomp' as a function.
+       (Bug#19505)
+
+2015-04-18  Glenn Morris  <address@hidden>
+
+       * lisp/net/browse-url.el (browse-url, browse-url-at-point): Doc fixes.
+
+       * doc/emacs/misc.texi (Sorting): Small edit.
+       (Bug#19896)
+
+       * admin/admin.el (make-manuals): Add emacs-xtra in pdf and ps.
+
+2015-04-18  Simen Heggestøyl  <address@hidden>
+
+       css-mode.el: Support multi-line comment filling
+       (Bug#20256)
+       * lisp/textmodes/css-mode.el (css-fill-paragraph): Support multi-line
+       comment filling.
+       (css-adaptive-fill): New function.
+       (css-mode): Set `adaptive-fill-function'.
+       (scss-mode): Set `comment-continue'.
+
+2015-04-18  Nicolas Petton  <address@hidden>
+
+       * lisp/emacs-lisp/seq.el (seq-concatenate, seq-into): Better error 
messages.
+
+2015-04-18  Ivan Radanov Ivanov  <address@hidden>  (tiny change)
+
+       Minor improvements in Bulgarian input methods
+       * lisp/leim/quail/cyrillic.el (bulgarian-phonetic, bulgarian-bds):
+       Replace U+042C with U+045D, as the former character is not used in
+       the modern Bulgarian language.
+       (Bug#20350)
+
+2015-04-17  Thomas Fitzsimmons  <address@hidden>
+
+       Improve EUDC manual
+       * eudc.texi (LDAP Configuration): Mention simple and SASL
+       authentication schemes.  Add index items.  Shorten example server
+       name.
+
+2015-04-17  Dmitry Gutov  <address@hidden>
+
+       Don't show both feature and function with the same name
+       * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
+       Don't show both feature and function with the same name.
+
+       (elisp--xref-identifier-location): Skip variable, if it's also a 
functiong
+       * lisp/progmodes/elisp-mode.el (elisp--xref-identifier-location):
+       Avoid returning both the variable and the function for the same
+       minor mode.
+
+2015-04-17  Wolfgang Jenkner  <address@hidden>
+
+       Fix fontification of keywords clobbered by the prompt.
+       * lisp/comint.el (comint-output-filter): Remove the uses of
+       with-silent-modifications I introduced as part of the last change.
+       This fixes, e.g., erratically missing highlighting when running
+       ./configure --help; ./configure in a shell-mode buffer with
+       compilation-shell-minor-mode turned on.
+
+2015-04-17  Glenn Morris  <address@hidden>
+
+       * admin/authors.el (authors-valid-file-names, 
authors-renamed-files-alist): Additions.
+
+2015-04-17  Stefan Monnier  <address@hidden>
+
+       * lisp/indent.el (indent-region): Don't deactivate the mark
+       (Bug#20357)
+
+2015-04-17  Sam Steingold  <address@hidden>
+
+       lisp/net/rcirc.el (defun-rcirc-command): mark `target' as ignorable
+
+2015-04-16  Leo Liu  <address@hidden>
+
+       * lisp/progmodes/xref.el (xref-push-marker-stack): Add optional arg.
+
+2015-04-16  Stefan Monnier  <address@hidden>
+
+       * lisp/erc/erc-pcomplete.el (erc-pcomplete): Don't use `pcomplete' any 
more.
+
+2015-04-16  Glenn Morris  <address@hidden>
+
+       * admin/authors.el (authors-lax-changelogs): Update for erc changes.
+
+2015-04-16  Eli Zaretskii  <address@hidden>
+
+       Don't link with -ljpeg on MS-Windows, to avoid dependency on DLL
+       * configure.ac (LIBJPEG): Leave it empty for MinGW.
+
+2015-04-16  Glenn Morris  <address@hidden>
+
+       * lisp/replace.el (query-replace-from-to-separator): Delay 
initialization
+       to avoid rogue setting after startup.
+
+2015-04-16  Paul Eggert  <address@hidden>
+
+       Pre-4.6 GCC succeeds with unknown option
+       * configure.ac (emacs_cv_prog_cc_nopie): Port to pre-4.6 GCC.
+       (Bug#20338)
+
+2015-04-15  Paul Eggert  <address@hidden>
+
+       '[:graph:]' now excludes whitespace, not just ' '
+       * doc/lispref/searching.texi (Char Classes):
+       * lisp/emacs-lisp/rx.el (rx): Document [:graph:] to be [:print:]
+       sans whitespace (not sans space).
+       * src/character.c (graphicp): Exclude all Unicode whitespace chars,
+       not just space.
+       * src/regex.c (ISGRAPH): Exclude U+00A0 (NO-BREAK SPACE).
+
+2015-04-15  Stefan Monnier  <address@hidden>
+
+       (looking-back): Make the second arg non-optional.
+       * lisp/subr.el (substitute-key-definition-key, special-form-p)
+       (macrop): Drop deprecated second arg to indirect-function.
+       (looking-back): Make the second arg non-optional.
+
+       * lisp/org/org-clock.el (org-x11idle-exists-p): Be honest about which
+       command is actually sent to the shell.
+
+2015-04-15  Paul Eggert  <address@hidden>
+
+       Port jpeg configuration to Solaris 10 with Sun C
+       * configure.ac: Check for jpeglib 6b by trying to link it, instead
+       of relying on cpp magic that has problems in practice.  Check for
+       both jpeglib.h and jerror.h features.  Remove special case for
+       mingw32, which should no longer be needed (and if it were needed,
+       should now be addressable by hotwiring emacs_cv_jpeglib).
+       (Bug#20332)
+
+2015-04-15  Stefan Monnier  <address@hidden>
+
+       Move some Elisp-specific code from lisp-mode.el to elisp-mode.el
+       * lisp/emacs-lisp/lisp-mode.el (lisp--el-font-lock-flush-elisp-buffers):
+       Move to elisp-mode.el.
+       (lisp-mode-variables): (Re)move elisp-specific settings.
+       * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Add settings removed
+       from lisp-mode-variables.
+       (elisp--font-lock-flush-elisp-buffers): New function, moved from
+       lisp-mode.el.
+
+       * lisp/emacs-lisp/lisp-mode.el (lisp--el-non-funcall-position-p):
+       Avoid pathological slowdown at top-level in large file.
+
+2015-04-15  Paul Eggert  <address@hidden>
+
+       Standardize names of ChangeLog history files
+       Suggested by Glenn Morris in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00678.html
+       * Makefile.in (install-man): Don't treat ChangeLog.1 as a man page.
+       * doc/man/ChangeLog.1: Rename back from doc/man/ChangeLog.01.
+       * lisp/erc/ChangeLog.1: New file, containing the old contents of ...
+       * lisp/erc/ChangeLog.01, lisp/erc/ChangeLog.02, lisp/erc/ChangeLog.03:
+       * lisp/erc/ChangeLog.04, lisp/erc/ChangeLog.05, lisp/erc/ChangeLog.06:
+       * lisp/erc/ChangeLog.07, lisp/erc/ChangeLog.08, lisp/erc/ChangeLog.09:
+       Remove.
+
+       Split top-level entries into pre- and post-April 7
+       This more clearly distingiushes pre-April-7 ChangeLog entries (which
+       are for top-level files only) from post-April-7 entries (which are
+       about files at all levels.  Problem reported by Glenn Morris in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00678.html
+       * ChangeLog.1: Move post-April-7 entries from here ...
+       * ChangeLog.2: ... to this new file.
+       * Makefile.in (CHANGELOG_HISTORY_INDEX_MAX): Bump to 2.
+
+2015-04-15  Stefan Monnier  <address@hidden>
+
+       Fix recent cus-start changes that added customize-rogues
+       * lisp/cus-start.el (custom-delayed-init-variables): Initialize the
+       vars early.
+       * lisp/loadup.el ("cus-start"): Move to the end to reduce 
customize-rogue.
+
+2015-04-15  Nicolas Petton  <address@hidden>
+
+       Define cl-concatenate as an alias to seq-concatenate
+       * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Removes duplicated
+         code by making cl-concatenate an alias to seq-concatenate.
+
+2015-04-15  Stefan Monnier  <address@hidden>
+
+       * src/lread.c (intern_1): Make sure we'd find the symbol we add
+       (Bug#20334)
+       * src/xfaces.c (resolve_face_name): Don't use `intern' with 
Lisp_Strings.
+
+2015-04-15  Glenn Morris  <address@hidden>
+
+       * doc/lispref/sequences.texi (Sequence Functions): Fix typo in previous.
+
+2015-04-15  Lars Magne Ingebrigtsen  <address@hidden>
+
+       Clean up gnus-uu saving code slightly
+       * gnus-uu.el (gnus-uu-save-article): Make the
+       save-restriction/widen calls make more sense.
+
+2015-04-15  Paul Eggert  <address@hidden>
+
+       Make [:graph:] act like [:print:] sans space
+       In POSIX [[:print:]] is equivalent to [ [:graph:]], so change
+       [:graph:] so that it matches everything that [:print:] does,
+       except for space.
+       * doc/lispref/searching.texi (Char Classes):
+       * etc/NEWS:
+       * lisp/emacs-lisp/rx.el (rx):
+       Document [:graph:] to be [:print:] sans ' '.
+       * src/character.c, src/character.h (graphicp): New function.
+       * src/regex.c (ISGRAPH) [emacs]: Use it.
+       (BIT_GRAPH): New macro.
+       (BIT_PRINT): Increase to 0x200, to make room for BIT_GRAPH.
+       (re_wctype_to_bit) [! WIDE_CHAR_SUPPORT]:
+       Return BIT_GRAPH for RECC_GRAPH.
+       (re_match_2_internal) [emacs]: Use ISGRAPH if BIT_GRAPH,
+       and ISPRINT if BIT_PRINT.
+
+2015-04-14  Stefan Monnier  <address@hidden>
+
+       automated/eieio-test-methodinvoke.el (make-instance) <(subclass C)>:
+       Don't use call-next-method in a cl-defmethod.
+
+       * lisp/emacs-lisp/eieio-core.el (eieio--class): Derive from cl--class
+       (eieio--class-p): Remove, provided by cl-defstruct.
+
+2015-04-14  Nicolas Petton  <address@hidden>
+
+       Add seq-intersection and seq-difference to the seq library
+       * lisp/emacs-lisp/seq.el (seq-intersection, seq-difference): New
+       functions.
+       * test/automated/seq-tests.el: Add tests for seq-intersection and
+       seq-difference.
+       * doc/lispref/sequences.texi: Add documentation for seq-intersection
+       and seq-difference.
+
+2015-04-14  Stefan Monnier  <address@hidden>
+
+       * eieio-core.el (class-abstract-p): Don't inline, to avoid leaking 
internals
+
+2015-04-14  Sam Steingold  <address@hidden>
+
+       package--ensure-init-file: widen requires save-restriction
+
+2015-04-14  Eli Zaretskii  <address@hidden>
+
+       Improve the commit-msg Git hook for unibyte environments
+       * build-aux/git-hooks/commit-msg: Set LC_ALL=C, before running Awk
+       in unibyte environments.  (Suggested by Paul Eggert
+       <address@hidden>.)  Use a more accurate approximation to
+       [:print:], based on UTF-8 sequences of the unprintable characters.
+
+       Describe problems with cursor caused by Windows Magnifier
+       * etc/PROBLEMS: Describe the problem with cursor shape on
+       MS-Windows due to Windows Magnifier.
+       (Bug#20271)
+
+       Make [:print:] support non-ASCII characters correctly
+       * src/regex.c (ISPRINT): Call 'printablep' for multibyte characters.
+       (BIT_PRINT): New bit mask.
+       (re_wctype_to_bit): Return BIT_PRINT for RECC_PRINT.
+       * src/character.c (printablep): New function.
+       * src/character.h (printablep): Add prototype.
+       * lisp/emacs-lisp/rx.el (rx): Doc fix: document the new behavior
+       of 'print', 'alnum', and 'alphabetic'.
+       * doc/lispref/searching.texi (Char Classes): Document the new
+       behavior of [:print:].
+       * etc/NEWS: Mention the new behavior of [:print:].
+
+       Assign correct general-category and names to surrogates
+       * admin/unidata/unidata-gen.el (unidata-setup-list): Don't ignore
+       surrogates.  This avoids assigning them the default
+       general-category of 'Cn', i.e. unassigned codepoints.
+       (unidata-get-name): Give surrogates synthetic names.
+
+2015-04-14  Paul Eggert  <address@hidden>
+
+       Assume C89 offsetof in xterm.c, xlwmenu.c
+       * lwlib/xlwmenu.c (offset):
+       * src/xterm.c (cvt_string_to_pixel_args):
+       Use offsetof, not XtOffset.
+
+2015-04-14  Paul Eggert  <address@hidden>
+
+       Assume C89 offsetof in widget.c
+       * src/widget.c (XtOffset): Remove; no longer needed.
+       (offset): Implement via offsetof instead of via pre-C89 XtOffset hack.
+
+       Fix think-o in previous patch
+       * src/window.c (count_windows, get_leaf_windows):
+       Don't optimize count_windows incorrectly.
+
+2015-04-13  Paul Eggert  <address@hidden>
+
+       Avoid some int overflows in window.c
+       * src/print.c (print_object):
+       * src/window.c (sequence_number):
+       * src/window.h (struct window.sequence_number):
+       Don't assume window sequence number fits in int.
+       * src/window.c (window_select_count):
+       * src/window.h (struct window.use_time, window_select_count):
+       Don't assume window use time fits in int.
+       * src/window.c (Fsplit_window_internal):
+       Don't assume user-supplied integer, or sum, fits in int.
+       (Fset_window_configuration, count_windows, get_leaf_windows)
+       (save_window_save, Fcurrent_window_configuration):
+       Use ptrdiff_t for object counts.
+       (Fset_window_configuration): Omit unused local 'n'.
+       (count_windows): Simplify by writing in terms of get_leaf_windows.
+       (get_leaf_windows): Don't store through FLAT if it's null.
+       (extract_dimension): New static function.
+       (set_window_margins, set_window_fringes, set_window_scroll_bars):
+       Use it to avoid undefined behavior when converting user-supplied
+       integer to 'int'.
+
+2015-04-13  Glenn Morris  <address@hidden>
+
+       Minor doc copyedits
+       * doc/emacs/custom.texi (Init Examples): Tweak example, replace typo.
+       * doc/lispintro/emacs-lisp-intro.texi (condition-case): Typo fix.
+
+2015-04-13  Katsumi Yamaoka  <address@hidden>
+
+       [Gnus] Catch the invalid-operation that idna.el will issue
+       * lisp/gnus/gnus-art.el (gnus-use-idna):
+       * lisp/gnus/gnus-sum.el (gnus-summary-idna-message):
+       * lisp/gnus/message.el (message-use-idna):
+       Catch the invalid-operation that idna.el will issue.
+
+2015-04-13  Paul Eggert  <address@hidden>
+
+       * doc/lispref/processes.texi (Shell Arguments): Prefer diff -u.
+
+2015-04-13  Sam Steingold  <address@hidden>
+
+       package--ensure-init-file: widen before looking for 
"(package-initialize)"
+
+2015-04-13  Dmitry Gutov  <address@hidden>
+
+       Change diff-switches default to `-u'
+       (Bug#20290)
+       * doc/emacs/files.texi (Comparing Files): Document the new default
+       value of `diff-switches'.
+       * doc/emacs/trouble.texi (Sending Patches): Document the preference
+       for unified diff format.  Escape the plus in the suggested `-F' regexp
+       value.
+       * lisp/vc/diff.el (diff-switches): Change the default to `-u'.
+
+2015-04-13  Stefan Monnier  <address@hidden>
+
+       (gnus-group--setup-tool-bar-update): Fix last change
+       * lisp/gnus/gnus-group.el (gnus-group--setup-tool-bar-update):
+       cursor-sensor-functions should be a list of functions.
+
+2015-04-13  Katsumi Yamaoka  <address@hidden>
+
+       Use gmm-called-interactively-p in Gnus
+       * lisp/gnus/gnus-topic.el (gnus-topic-mode): Use 
gmm-called-interactively-p.
+
+2015-04-13  Stefan Monnier  <address@hidden>
+
+       * lisp/loadup.el ("cus-start"): Load it after loaddefs.el
+       (Bug#20321)
+       * lisp/cus-start.el (read-buffer-function): Don't advertize
+       iswitchb-read-buffer any more.
+       (iswitchb): Don't tweak this obsolete group any more.
+
+2015-04-13  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Fix package--ensure-init-file
+
+       * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Implement docstrings
+       Adding a string after a constructor's argument list will use
+       that string as the constructor function docstring.  If this string
+       is absent but the struct itself was given a docstring, use that as
+       the constructor's docstring.
+       Fixes (bug#17284).
+
+2015-04-13  Stefan Monnier  <address@hidden>
+
+       Deprecate `intangible' and `point-entered' properties
+       * lisp/emacs-lisp/cursor-sensor.el: New file.
+       * lisp/simple.el (pre-redisplay-functions): New hook.
+       (redisplay--pre-redisplay-functions): New function.
+       (pre-redisplay-function): Use it.
+       (minibuffer-avoid-prompt): Mark obsolete.
+       (redisplay--update-region-highlight): Adapt it to work as a function on
+       pre-redisplay-functions.
+       * lisp/cus-start.el (minibuffer-prompt-properties--setter): New fun.
+       (minibuffer-prompt-properties): Use it.  Use cursor-intangible rather
+       than point-entered to make the prompt intangible.
+       * lisp/forms.el: Move `provide' calls to the end.
+       (forms-mode): Don't use `run-hooks' on a local var.
+       (forms--make-format, forms--make-format-elt-using-text-properties):
+       Use cursor-intangible rather than `intangible'.
+       (forms-mode): Enable cursor-intangible-mode.
+       * lisp/isearch.el (isearch-mode): Use defvar-local.
+       (cursor-sensor-inhibit): Declare.
+       (isearch-mode): Set cursor-sensor-inhibit.
+       (isearch-done): Set it back.
+       (isearch-open-overlay-temporary, isearch-open-necessary-overlays)
+       (isearch-close-unnecessary-overlays): Don't bother with `intangible'
+       any more.
+       * lisp/ses.el (ses-localvars): Remove `mode-line-process'.
+       (ses-sym-rowcol, ses-cell-value, ses-col-width, ses-col-printer):
+       Add Edebug spec.
+       (ses-goto-print, ses-print-cell, ses-adjust-print-width)
+       (ses-goto-data, ses-setup, ses-copy-region): Don't let-bind
+       inhibit-point-motion-hooks any more.
+       (ses--cell-at-pos, ses--curcell): New functions, extracted from
+       ses-set-curcell.
+       (ses-set-curcell): Use them.
+       (ses-print-cell, ses-setup): Use cursor-intangible instead of
+       `intangible'.  Make sure cursor-intangible isn't sticky at BOB.
+       (ses-print-cell-new-width, ses-reprint-all, ses-recalculate-all):
+       Use ses--cell-at-pos.
+       (ses--mode-line-process, ses--cursor-sensor-highlight): New functions,
+       extracted from ses-command-hook.  Make them work with multiple windows
+       displaying the same buffer.
+       (ses-mode): Use them via mode-line-process and pre-redisplay-functions.
+       Enable cursor-intangible-mode.
+       (ses-command-hook): Remove cell highlight and mode-line update code.
+       (ses-forward-or-insert, ses-copy-region-helper, ses-sort-column):
+       Update for new name of text-property holding the cell name.
+       (ses-rename-cell): Don't mess with mode-line-process.
+       * lisp/erc/erc-stamp.el (erc-add-timestamp): Use the new
+       cursor-sensor-functions property instead of point-entered.
+       (erc-insert-timestamp-right, erc-format-timestamp):
+       Use cursor-intangible rather than `intangible'.
+       (erc-munge-invisibility-spec): Use add-to-invisibility-spec and
+       remove-from-invisibility-spec.  Enable cursor-intangible-mode and
+       cursor-sensor-mode if needed.
+       (erc-echo-timestamp): Adapt to calling convention of
+       cursor-sensor-functions.
+       (erc-insert-timestamp-right): Remove unused vars `current-window' and
+       `indent'.
+       * lisp/gnus/gnus-group.el (gnus-tmp-*): Declare.
+       (gnus-update-group-mark-positions): Remove unused `topic' var.
+       (gnus-group-insert-group-line): Remove unused var `header'.
+       (gnus-group--setup-tool-bar-update): New function.
+       (gnus-group-insert-group-line): Use it.
+       (gnus-group-update-eval-form): Declare local
+       dynamically-bound variables.
+       (gnus-group-unsubscribe-group): Use \` and \' to match string bounds.
+       * lisp/gnus/gnus-topic.el (gnus-topic-jump-to-topic)
+       (gnus-group-prepare-topics, gnus-topic-update-topic)
+       (gnus-topic-change-level, gnus-topic-catchup-articles)
+       (gnus-topic-remove-group, gnus-topic-delete, gnus-topic-indent):
+       Use inhibit-read-only.
+       (gnus-topic-prepare-topic): Use gnus-group--setup-tool-bar-update.
+       (gnus-topic-mode): Use define-minor-mode and derived-mode-p.
+       * lisp/textmodes/reftex-index.el (reftex-display-index):
+       Use cursor-intangible-mode if available.
+       (reftex-index-post-command-hook): Check cursor-intangible.
+       * lisp/textmodes/reftex-toc.el (reftex-toc):
+       Use cursor-intangible-mode if available.
+       (reftex-toc-recenter, reftex-toc-post-command-hook):
+       Check cursor-intangible.
+       * lisp/textmodes/sgml-mode.el: Use lexical-binding.
+       (sgml-tag): Use cursor-sensor-functions instead of point-entered.
+       (sgml-tags-invisible): Use with-silent-modifications and
+       inhibit-read-only.  Enable cursor-sensor-mode.
+       (sgml-cursor-sensor): Rename from sgml-point-entered and adjust to
+       calling convention of cursor-sensor-functions.
+       * lisp/textmodes/table.el (table-cell-map-hook, table-load-hook)
+       (table-point-entered-cell-hook, table-point-left-cell-hook):
+       Don't autoload.
+       (table-cell-entered-state): Remove var.
+       (table--put-cell-point-entered/left-property)
+       (table--remove-cell-properties):
+       Use cursor-sensor-functions rather than point-entered/left.
+       (table--point-entered/left-cell-function): Merge
+       table--point-entered-cell-function and table--point-left-cell-function
+       and adjust to calling convention of cursor-sensor-functions.
+
+       Update ldef-boots.el
+
+       * lisp/emacs-lisp/pcase.el (pcase-dolist): Autoload as well.
+
+       * doc/misc/eieio.texi: Don't advertize now obsolete constructs
+
+       Collapse successive char deletions in the undo log
+       * src/cmds.c (remove_excessive_undo_boundaries): New function,
+       extracted from Fself_insert_command.
+       (Fdelete_char, Fself_insert_command): Use it.
+       * src/fileio.c (Fmake_symbolic_link): Rename arg to `target'.
+       * src/keyboard.c (syms_of_keyboard): `top-level' shouldn't be special.
+
+       xterm and OSC 52: Add NEWS entry, and tweak the code
+       * lisp/term/xterm.el (gui-set-selection) <nil>: Move method definition 
to
+       top-level.
+       (terminal-init-xterm-activate-set-selection): Set a terminal property.
+       (xterm--set-selection): Use it instead of checking the value of
+       `terminal-initted'.  Don't use string-bytes.
+
+2015-04-13  Philipp Stephani  <address@hidden>
+
+       xterm.el: Implement OSC-52 functionality for setting the X selection
+       * lisp/term/xterm.el (xterm-max-cut-length): New var.
+       (xterm--set-selection, terminal-init-xterm-activate-set-selection): New 
funs.
+       (terminal-init-xterm, xterm--version-handler): Use them.
+
+2015-04-13  Stefan Monnier  <address@hidden>
+
+       Remove left over code from when we used an obsolete/loaddefs.el file
+       * lisp/subr.el (do-after-load-evaluation): Remove left over code from 
when
+       we used an obsolete/loaddefs.el file.
+
+       * cedet/semantic/fw.el: Use declare.
+       * cedet/semantic/fw.el (semantic-exit-on-input)
+       (semanticdb-without-unloaded-file-searches): Use declare.
+       (semantic-fw-add-edebug-spec): Remove.
+
+       (completion-lisp-mode-hook): Use completion-separator-chars
+       * lisp/completion.el (completion-lisp-mode-hook):
+       Use completion-separator-chars rather than local key binding.
+
+       * src/*.c: Set deactivate_mark buffer-locally
+       (Bug#20260)
+       * src/insdel.c (prepare_to_modify_buffer_1):
+       * src/fileio.c (Finsert_file_contents): Set deactivate_mark
+       buffer-locally.
+
+2015-04-12  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Keep symmetry on sexp navigation with parens
+       (Bug#19954)
+       * lisp/progmodes/python.el
+       (python-nav--forward-sexp): Add argument skip-parens-p.
+       (python-nav-forward-sexp, python-nav-backward-sexp)
+       (python-nav-forward-sexp-safe)
+       (python-nav-backward-sexp-safe): Use it.
+       * test/automated/python-tests.el
+       (python-nav-forward-sexp-1): Fix test.
+
+2015-04-12  João Távora  <address@hidden>
+
+       Don't use `setq-local' in Gnus code
+       This might break upstream builds with older Emacsen
+       * lisp/gnus/message.el (message-mode): Use `set' and
+       `make-local-variable' instead of `setq-local'.
+
+2015-04-12  Paul Eggert  <address@hidden>
+
+       Update Makefile.in's .PHONY dependencies
+       * Makefile.in (change-history-commit, master-branch-is-current)
+       (no-ChangeLog): Now phony.
+
+       Remove configure's --with-mmdf option
+       * configure.ac (MAIL_USE_MMDF): Remove.
+       * etc/NEWS: Document this.
+       * lib-src/movemail.c: Assume MAIL_USE_MMDF is not defined.
+       (Bug#20308)
+
+       * doc/man/ChangeLog.01: Rename from doc/man/ChangeLog.1.
+       That way, 'make install' won't think it's a man page.
+       Reported by Ashish SHUKLA in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00656.html
+
+       Improve 'make change-history' prereq tests
+       * Makefile.in (gen_origin): Fix to match what's in the master branch.
+       (no-ChangeLog, master-branch-is-current): New rules.
+       (change-history): Depend on them, to avoid similar future problems.
+       Escape the local-variables string to pacify Emacs when editing
+       Makefile.in.
+
+2015-04-12  Artur Malabarba  <address@hidden>
+
+       * test/automated/package-test.el (with-package-test): Kill Packages 
buffer
+
+       * lisp/emacs-lisp/package.el: Improve transaction y-or-n prompt
+       (package-menu--prompt-transaction-p): Prompt for "Delete" first,
+       "Upgrade" last, and use capitalized instead of all-caps.
+
+       * lisp/emacs-lisp/package.el: Completely silence async operations
+       (package--make-autoloads-and-stuff): Silence autoloads.
+       (package--save-selected-packages): New function, silences
+       `customize-save-variable'.
+       (package--user-selected-p, package-install-from-buffer)
+       (package-delete, package-install): Use it.
+       (package-install-from-archive)
+       (package-menu--perform-transaction): Silence.
+       (package-menu-execute): Feedback when operation starts.
+
+       Use delay-mode-hooks when visiting the init-file
+       * lisp/emacs-lisp/package.el (package--ensure-init-file):
+       delay-mode-hooks
+       * lisp/cus-edit.el (custom-save-all): delay-mode-hooks
+
+       * lisp/files.el: Only message when saving if save-silently is nil
+       (save-silently): New variable.
+       (files--message): New function.
+       (find-file-noselect, save-buffer, basic-save-buffer)
+       (basic-save-buffer-2, save-some-buffers, not-modified)
+       (append-to-file): Use them.
+
+2015-04-12  Johan Bockgård  <address@hidden>
+
+       Support debug declarations in pcase macros
+       * lisp/emacs-lisp/pcase.el (pcase-MACRO): New edebug spec.
+       (pcase-UPAT): Use it.  Remove "`".
+       (pcase--edebug-match-macro): New function.
+       (pcase-defmacro): Support debug declarations.
+       * lisp/emacs-lisp/cl-macs.el (cl-struct) <pcase-defmacro>:
+       * lisp/emacs-lisp/eieio.el (eieio) <pcase-defmacro>:
+       * lisp/emacs-lisp/pcase.el (\`): <pcase-defmacro>: Add debug 
declaration.
+
+       pcase.el: Edebug support for `app' and vector patterns
+       * lisp/emacs-lisp/pcase.el (pcase-FUN): New edebug spec.
+       (pcase-UPAT): Use it. Support `app' patterns.
+       (pcase-QPAT): Support vector patterns.
+
+       edebug.el: Disambiguate vector specifications
+       * lisp/emacs-lisp/edebug.el (edebug-match-list): Always treat
+       `(vector ...)' as a vector specification, not as a sublist.
+
+       (gnus-summary-refer-thread): Don't clobber unread articles
+       This fixes a bug where `A T' causes "random" articles to become marked
+       as read.
+       * lisp/gnus/gnus-sum.el (gnus-summary-refer-thread): Make sure
+       gnus-newsgroup-unreads remains sorted.
+
+       mouse-sel.el: Fix mouse-sel-get-selection-function
+       * lisp/obsolete/mouse-sel.el (mouse-sel-get-selection-function):
+       Use gui--last-selected-text-primary instead of no longer existing
+       gui-last-selected-text.
+
+       * lisp/rect.el (delete-whitespace-rectangle-line): Don't cross EOL.
+
+       * lisp/net/nsm.el (nsm-query-user): Use cursor-in-echo-area.
+
+2015-04-12  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el (list-packages): Avoid redundant generate
+
+       * lisp/emacs-lisp/package.el (list-packages): Call refresh in right 
buffer
+
+       * lisp/emacs-lisp/bytecomp.el: Silence noninteractive compilations
+       (byte-compile--interactive): New var.
+       (byte-compile--message): New function.
+       (byte-compile-log-1, byte-force-recompile)
+       (byte-recompile-directory, byte-recompile-file)
+       (byte-compile-file, compile-defun)
+       (byte-compile-file-form-defmumble, byte-compile)
+       (byte-compile-file-form-defalias, display-call-tree): Use it.
+
+       * lisp/files.el: Don't message when nothing happened
+       (save-some-buffers, basic-save-buffer): Before messaging to say
+       "nothing was saved" check if (called-interactively-p 'any).
+
+2015-04-12  João Távora  <address@hidden>
+
+       Summary: Improve sexp-based movement in message-mode
+       Works by giving citations and smileys a different syntax.  This helps
+       modes like `show-paren-mode', `electric-pair-mode', and C-M-*
+       sexp-based movement.
+       * lisp/gnus/message.el (message--syntax-propertize): New function.
+       (message-mode): Set syntax-related vars.
+       (message-smileys): New variable.
+       * test/automated/message-mode-tests.el: New file
+
+2015-04-11  Paul Eggert  <address@hidden>
+
+       Use bool for boolean in window.c
+       * src/window.c: Omit unnecessary static function decls.
+       (adjust_window_count, select_window, Fselect_window)
+       (window_body_width, Fwindow_body_height, Fwindow_body_width)
+       (set_window_hscroll, check_window_containing, Fwindow_at)
+       (Fwindow_end, Fset_window_start, Fpos_visible_in_window_p)
+       (unshow_buffer, replace_window, recombine_windows)
+       (add_window_to_list, candidate_window_p, next_window)
+       (Fnext_window, Fprevious_window, window_loop, check_all_windows)
+       (Fget_buffer_window, Fdelete_other_windows_internal)
+       (replace_buffer_in_windows_safely, set_window_buffer)
+       (Fset_window_buffer, Fforce_window_update)
+       (temp_output_buffer_show, make_parent_window)
+       (window_resize_check, window_resize_apply, Fwindow_resize_apply)
+       (resize_frame_windows, Fsplit_window_internal)
+       (Fdelete_window_internal, grow_mini_window, shrink_mini_window)
+       (Fresize_mini_window_internal, mark_window_cursors_off)
+       (window_scroll, window_scroll_pixel_based)
+       (window_scroll_line_based, scroll_command, Fscroll_other_window)
+       (Fscroll_left, Fscroll_right, displayed_window_lines, Frecenter)
+       (Fmove_to_window_line, Fset_window_configuration)
+       (delete_all_child_windows, apply_window_adjustment)
+       (set_window_fringes, set_window_scroll_bars)
+       (Fset_window_vscroll, foreach_window, foreach_window_1)
+       (compare_window_configurations, Fcompare_window_configurations):
+       Prefer 'bool', 'true', and 'false' for booleans.
+       * src/window.h (WINDOW_MODE_LINE_LINES)
+       (WINDOW_HEADER_LINE_LINES): Omit unnecessary "!!" on bool value.
+
+2015-04-11  Artur Malabarba  <address@hidden>
+
+       Speed up byte-compilation and autoload generation by avoiding mode-hooks
+       This prevents emacs-lisp-mode-hook from being run everytime an
+       autoload file is generated, which can account for a fraction of
+       package installation time depending on the hooks the user has
+       configured.
+       * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Use delay-mode-hooks.
+       * lisp/emacs-lisp/autoload.el (autoload-find-file)
+       (autoload-find-generated-file): Use delay-mode-hooks.
+
+       * lisp/emacs-lisp/package.el: Improve `package-menu-refresh'
+       (package-menu-refresh): Respect async and do new package checking.
+       (list-packages): Use `package-menu-refresh' instead of repeating code.
+
+       * lisp/emacs-lisp/package.el: Improve package-menu-quick-help
+       (package--quick-help-keys): New variable.
+       (package--prettify-quick-help-key): New function.
+       (package-menu-quick-help): Use it.
+
+       * lisp/emacs-lisp/package.el: Fix initially wrong compat table
+       (package--build-compatibility-table): require finder
+
+       * test/automated/package-test.el: Fix new test
+
+       * lisp/emacs-lisp/package.el: Silence async operations
+       (package--silence): New variable.
+       (package--message): New function.
+       (package-import-keyring, package-refresh-contents)
+       (package-compute-transaction, package-install, package-delete)
+       (package-menu--perform-transaction, package-menu-execute): Use it.
+
+       * test/automated/package-test.el: Test async functionality
+       (package-test-update-archives-async): New test
+
+2015-04-11  Daiki Ueno  <address@hidden>
+
+       Utilize `make-process' in epg.el
+       * lisp/epg.el (epg-error-output): Abolish.
+       (epg-context): New slot `error-buffer'.
+       (epg--start): Use `make-process' and `make-pipe-process'.
+       (epg--process-filter): Remove code separating stderr from stdout.
+       (epg-wait-for-completion): Simplify `error-output' handling.
+       (epg-reset): Dispose error buffer.
+
+2015-04-11  Paul Eggert  <address@hidden>
+
+       * .gitignore: Ignore doc temps and outputs.
+
+       Port commit-msg to MSYS Bash+Gawk
+       See Eli Zaretskii in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00610.html
+       * build-aux/git-hooks/commit-msg (cent_sign_utf8_format)
+       (cent_sign, print_at_sign, at_sign): Revert previous change.
+       (print_at_sign): Prepend "BEGIN".
+       (at_sign): Redirect from /dev/null to be safer with pre-POSIX awk.
+
+       Port commit-msg to broken MS-Windows shell
+       * build-aux/git-hooks/commit-msg (cent_sign):
+       Just use UTF-8 here rather than ASCII + printf, as the latter fails
+       on a broken MS-Windows shell.  Reported by Eli Zaretskii in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00592.html
+
+2015-04-11  Chris Zheng  <address@hidden>  (tiny change)
+
+       Support GnuTLS v3.4 and later on MS-Windows
+       * src/gnutls.c (syms_of_gnutls) <libgnutls-version>: New DEFSYM.
+       * lisp/term/w32-win.el (dynamic-library-alist): Determine which
+       GnuTLS DLL to load according to value of libgnutls-version.
+       (Bug#20294)
+
+2015-04-11  Paul Eggert  <address@hidden>
+
+       Minor quoting etc. fixes to misc manuals
+       Fix some minor quoting and spacing issues.  Distinguish more
+       clearly among grave accent and apostrophe (which are ASCII) and
+       single quote (which is not).  Prefer the standard terms
+       "apostrophe" and "grave accent" to alternative names that can be
+       confusing.  Use apostrophes to single-quote ASCII text.
+       * doc/misc/remember.texi: Spell the mystic's pseudonym in UTF-8
+       rather than approximating it in ASCII with grave accent.
+
+2015-04-11  Daiki Ueno  <address@hidden>
+
+       Respect more keyword args in `make-process'
+       * process.c (Fmake_process): Respect `:sentinel' and `:filter'
+       keywords as documented.
+
+2015-04-10  Dmitry Gutov  <address@hidden>
+
+       Extract ChangeLog entries when committing a directory
+       * lisp/vc/vc-dispatcher.el (vc-log-edit): Update FIXME comment.
+       * lisp/vc/log-edit.el (log-edit-changelog-insert-entries):
+       Add a FIXME comment.
+       (log-edit-changelog-entries): Extract from
+       `log-edit-changelog-entries', handle FILE being a directory
+       (http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00555.html).
+
+2015-04-10  Paul Eggert  <address@hidden>
+
+       Fix problems found by --enable-gcc-warnings
+       * src/process.c (create_process, Fmake_pipe_process)
+       (Fmake_network_process): Omit unused locals.
+
+       Fix commit-msg to handle scissors lines
+       * build-aux/git-hooks/commit-msg:
+       Ignore every line after a scissors line, such as a line generated
+       by 'git commit -v'.  Problem reported by Johan Bockgård in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00580.html
+
+       port commit-msg to Gawk 3.0.4 (1999)
+       * build-aux/git-hooks/commit-msg (cent_sign_utf8_format, cent_sign)
+       (print_at_sign, at_sign): New vars.  Use them to avoid problems
+       Eli Zaretskii encountered with Gawk 3.0.4 (1999) on MSYS.  See:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00566.html
+
+       Have commit-msg report commit failure
+       * build-aux/git-hooks/commit-msg: If the commit is aborted,
+       say so.  Simplify by doing this at the end.  Problem reported
+       by Eli Zaretskii in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00566.html
+
+2015-04-10  Thomas Fitzsimmons  <address@hidden>
+
+       Clean up LDAP Configuration section of EUDC manual
+       * doc/misc/eudc.texi: Combine indices.
+       (LDAP Configuration): Use command markup.  Add index entries.
+       Change formatting.  Wrap long lines.  Add noindent markup.
+
+2015-04-10  Daiki Ueno  <address@hidden>
+
+       Add facility to collect stderr of async subprocess
+       * src/w32.h (register_aux_fd): New function declaration.
+       * src/w32.c (register_aux_fd): New function.
+       * src/process.h (struct Lisp_Process): New member stderrproc.
+       * src/process.c (PIPECONN_P): New macro.
+       (PIPECONN1_P): New macro.
+       (Fdelete_process, Fprocess_status, Fset_process_buffer)
+       (Fset_process_filter, Fset_process_sentinel, Fstop_process)
+       (Fcontinue_process): Handle pipe process specially.
+       (create_process): Respect p->stderrproc.
+       (Fmake_pipe_process): New function.
+       (Fmake_process): Add new keyword argument :stderr.
+       (wait_reading_process_output): Specially handle a pipe process when
+       it gets an EOF.
+       (syms_of_process): Register Qpipe and Smake_pipe_process.
+       * doc/lispref/processes.texi (Asynchronous Processes): Document
+       `make-pipe-process' and `:stderr' keyword of `make-process'.
+       * lisp/subr.el (start-process): Suggest to use `make-process' handle
+       standard error separately.
+       * test/automated/process-tests.el (process-test-stderr-buffer)
+       (process-test-stderr-filter): New tests.
+       * etc/NEWS: Mention new process type `pipe' and its usage with the
+       `:stderr' keyword of `make-process'.
+
+2015-04-10  Paul Eggert  <address@hidden>
+
+       Minor quoting etc. fixes to lispref manual
+       * doc/lispref/tips.texi (Documentation Tips):
+       Distinguish more clearly among grave accent, apostrophe,
+       and single quote.
+       * doc/lispref/README, doc/lispref/buffers.texi:
+       * doc/lispref/commands.texi, doc/lispref/control.texi:
+       * doc/lispref/customize.texi, doc/lispref/display.texi:
+       * doc/lispref/elisp.texi, doc/lispref/files.texi:
+       * doc/lispref/frames.texi, doc/lispref/hash.texi:
+       * doc/lispref/help.texi, doc/lispref/internals.texi:
+       * doc/lispref/loading.texi, doc/lispref/makefile.w32-in:
+       * doc/lispref/markers.texi, doc/lispref/modes.texi:
+       * doc/lispref/nonascii.texi, doc/lispref/objects.texi:
+       * doc/lispref/os.texi, doc/lispref/positions.texi:
+       * doc/lispref/strings.texi, doc/lispref/syntax.texi:
+       * doc/lispref/text.texi, doc/lispref/tips.texi:
+       * doc/lispref/two-volume-cross-refs.txt, doc/lispref/windows.texi:
+       Use American-style double quoting in ordinary text,
+       and quote 'like this' when single-quoting in ASCII text.
+       Also, fix some minor spacing issues.
+
+2015-04-10  Michael Albinus  <address@hidden>
+
+       Handle symlinked test directory in tramp-tests.el
+       * test/automated/tramp-tests.el (tramp-test18-file-attributes)
+       (tramp--test-check-files): Use `file-truename' for directories.
+
+2015-04-10  Eli Zaretskii  <address@hidden>
+
+       Fix 'recenter' when visual-line-mode is turned on
+       * src/window.c (Frecenter): Use the same code for GUI and TTY
+       frames alike; use vmotion only for "initial" frames.  This is
+       because vmotion doesn't support visual-line-mode.  Rewrite the
+       'iarg >= 0' case to use move_it_* functions instead of using
+       vmotion, for the same reason.  Fix the clipping of the argument
+       value to support scroll-margin in all cases and avoid unwarranted
+       recentering.  Reported by Milan Stanojević <address@hidden> in
+       http://lists.gnu.org/archive/html/help-gnu-emacs/2015-04/msg00092.html,
+       which see.
+
+2015-04-09  Stefan Monnier  <address@hidden>
+
+       * abbrev.el (define-abbrev-table): Refine last change.
+
+       cl-lib.el: Partial revert of "2015-04-05 Rationalize c[ad]+r"
+       * lisp/emacs-lisp/cl-lib.el: Partial revert of "2015-04-05 Rationalize
+       use of c[ad]+r", so as to keep the "cl-" prefix on all
+       cl-lib definitions.
+
+       * vhdl-mode.el (vhdl-prepare-search-2): Use inhibit-point-motion-hooks
+
+       * lisp/cedet/semantic: Remove some dead code
+       * lisp/cedet/semantic/util-modes.el
+       (semantic-stickyfunc-header-line-format): Emacs<22 is not supported
+       any more.
+       * lisp/cedet/semantic/fw.el (semantic-buffer-local-value): Emacs<21 is
+       not supported any more.
+       (semantic-safe): Use `declare'.
+       * lisp/cedet/semantic/decorate.el (semantic-set-tag-intangible)
+       (semantic-tag-intangible-p): Remove unused functions.
+       * lisp/cedet/semantic/complete.el (semantic-displayor-window-edges):
+       Remove unused function.
+
+       * lisp/gnus/gnus-art.el (gnus-hidden-properties): Simplify.
+       (gnus-article-hide-text, gnus-article-unhide-text)
+       (gnus-article-unhide-text-type): Remove special handling of
+       `intangible' since that property is not used any more.
+       (gnus-article-treat-body-boundary): Use gnus-hidden-properties.
+
+2015-04-09  Jay Belanger  <address@hidden>
+
+       Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+2015-04-09  Dmitry Gutov  <address@hidden>
+
+       Use the VC root in `log-edit-listfun'
+       * lisp/vc/vc-dispatcher.el (vc-log-edit): Use the VC root in
+       `log-edit-listfun'.
+
+2015-04-09  Jay Belanger  <address@hidden>
+
+       Fix description of Unix time, mention new function.
+       * lisp/calc/calc-forms.el (calcFunc-unixtime): Fix adjustment for
+       Unix time.
+       * doc/misc/calc.texi (Date Forms): Fix description of Unix time.
+       (Basic Operations on Units): Mention `calc-convert-exact-units'.
+
+2015-04-09  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el: Use mode-line-process for notification
+
+2015-04-09  Dmitry Gutov  <address@hidden>
+
+       (log-edit-insert-changelog-entries): Don't add newline after the last 
entry
+       * lisp/vc/log-edit.el (log-edit-insert-changelog-entries):
+       Don't add newline after the last entry.
+
+2015-04-09  Simen Heggestøyl  <address@hidden>
+
+       css-mode.el: Add "not" pseudo-class
+       (Bug#20267)
+       * lisp/textmodes/css-mode.el (css-pseudo-class-ids): Add "not" to
+       list of CSS pseudo-classes.
+
+2015-04-09  Stefan Monnier  <address@hidden>
+
+       etc/NEWS: Add missing entry for "Stop messing with the EMACS env var"
+
+2015-04-09  Michael Albinus  <address@hidden>
+
+       Stop messing with the EMACS env var
+       * misc.texi (Interactive Shell): Remove description of EMACS env var.
+
+2015-04-09  Paul Eggert  <address@hidden>
+
+       Adapt 'make change-history' to coding cookie
+       * Makefile.in (change-history): Adjust to change of format of
+       ChangeLog file, which now has a coding cookie before an indented
+       copyright notice.
+
+2015-04-09  Paul Eggert  <address@hidden>
+
+       Adapt 'make change-history' to coding cookie
+       * Makefile.in (change-history): Adjust to change of format of
+       ChangeLog file, which now has a coding cookie before an indented
+       copyright notice.
+
+       gitlog-to-changelog coding cookie and mv -i
+       * build-aux/gitlog-to-emacslog: Use ChangeLog.1, not Makefile.in,
+       for copyright notice prototype, so that we get a proper "coding:"
+       cookie.  Use 'mv -i' to avoid unconditionally overwriting an
+       existing ChangeLog.  Problems reported by Eli Zaretskii in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg00504.html
+
+       Merge from gnulib
+       * build-aux/gitlog-to-changelog: Update from gnulib, incorporating:
+       2015-04-09 gitlog-to-changelog: port to MS-Windows
+
+2015-04-09  Boruch Baum  <address@hidden>  (tiny change)
+
+       * lisp/bookmark.el (bookmark-bmenu-goto-bookmark): Don't inf-loop.
+       (Bug#20212)
+
+2015-04-09  Stefan Monnier  <address@hidden>
+
+       Stop messing with the EMACS env var
+       (Bug#20202)
+       * lisp/net/tramp-sh.el (tramp-remote-process-environment):
+       * lisp/comint.el (comint-exec-1):
+       * lisp/term.el (term-exec-1): Don't set EMACS envvar.
+       * lisp/progmodes/compile.el (compilation-start): Same and bring
+       INSIDE_EMACS's format in line with other users.
+
+       css-mode.el (css-smie-rules): Fix indentation after complex selectors
+       (Bug#20282)
+       * lisp/textmodes/css-mode.el (css-smie-rules): Don't get confused by
+       inner structure of selectors.
+
+2015-04-08  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Indent docstring lines to base-indent
+       (Bug#19595)
+       Thanks to immerrr <address@hidden> for reporting and providing
+       an initial patch.
+       * lisp/progmodes/python.el
+       (python-indent-context): Add :inside-docstring context.
+       (python-indent--calculate-indentation): Handle :inside-docstring.
+       (python-indent-region): Re-indent docstrings.
+       * test/automated/python-tests.el (python-indent-region-5)
+       (python-indent-inside-string-2): Fix tests.
+
+       python.el: Increase native completion robustness
+       (Bug#19755)
+       Thanks to Carlos Pita <address@hidden> for reporting
+       this and providing useful ideas.
+       * lisp/progmodes/python.el
+       (python-shell-completion-native-output-timeout): Increase value.
+       (python-shell-completion-native-try-output-timeout): New var.
+       (python-shell-completion-native-try): Use it.
+       (python-shell-completion-native-setup): New readline setup avoids
+       polluting current context, ensures output when no-completions are
+       available and includes output end marker.
+       (python-shell-completion-native-get-completions): Trigger with one
+       tab only.  Call accept-process-output until output end is found or
+       python-shell-completion-native-output-timeout is exceeded.
+
+2015-04-08  Samer Masterson  <address@hidden>
+
+       * lisp/eshell: Make backslash a no-op in front of normal chars
+       (Bug#8531)
+       * lisp/eshell/esh-arg.el (eshell-parse-argument-hook): Update comment.
+       (eshell-parse-backslash): Return escaped character after backslash
+       if it is special.  Otherwise, if the backslash is not in a quoted
+       string, ignore the backslash and return the character after; if
+       the backslash is in a quoted string, return the backslash and the
+       character after.
+       * test/automated/eshell.el (eshell-test/escape-nonspecial)
+       (eshell-test/escape-nonspecial-unicode)
+       (eshell-test/escape-nonspecial-quoted)
+       (eshell-test/escape-special-quoted): Add tests for new
+       `eshell-parse-backslash' behavior.
+
+2015-04-08  Gustav Hållberg  <address@hidden>  (tiny change)
+
+       * lisp/vc/diff-mode.el (diff-hunk-file-names): Don't require a TAB
+       after the file name.
+       (Bug#20276)
+
+2015-04-08  Paul Eggert  <address@hidden>
+
+       Minor quoting etc. fixes to Emacs manual
+       * doc/emacs/Makefile.in, doc/emacs/ack.texi, doc/emacs/building.texi:
+       * doc/emacs/calendar.texi, doc/emacs/cmdargs.texi:
+       * doc/emacs/custom.texi, doc/emacs/dired.texi, doc/emacs/emacs.texi:
+       * doc/emacs/files.texi, doc/emacs/glossary.texi, doc/emacs/gnu.texi:
+       * doc/emacs/indent.texi, doc/emacs/macos.texi:
+       * doc/emacs/maintaining.texi, doc/emacs/makefile.w32-in:
+       * doc/emacs/programs.texi, doc/emacs/rmail.texi:
+       * doc/emacs/search.texi, doc/emacs/trouble.texi:
+       * doc/emacs/vc1-xtra.texi:
+       Use American-style double quoting in ordinary text,
+       and quote 'like this' when single-quoting in ASCII text.
+       Also, fix some minor spacing issues.
+
+       Minor quoting etc. fixes to elisp intro
+       * doc/lispintro/emacs-lisp-intro.texi: Consistently use
+       American-style double quoting in ordinary text.  In ASCII text,
+       consistently quote 'like this' instead of `like this', unless
+       Emacs requires the latter.
+
+2015-04-08  Dmitry Gutov  <address@hidden>
+
+       * CONTRIBUTE: Mention log-edit-insert-changelog.
+
+       * CONTRIBUTE: Emphasize creating the top-level ChangeLog file manually.
+
+2015-04-08  Paul Eggert  <address@hidden>
+
+       * doc/misc/calc.texi (Summary): Avoid '@:' when usurped.
+
+2015-04-08  Stefan Monnier  <address@hidden>
+
+       (eieio-copy-parents-into-subclass): Fix inheritance of initargs
+       (Bug#20270)
+       * lisp/emacs-lisp/eieio-core.el (eieio-copy-parents-into-subclass):
+       Fix inheritance of initargs.
+
+2015-04-08  Artur Malabarba  <address@hidden>
+
+       * lisp/emacs-lisp/package.el (package-menu-mode): Mode-line notification
+       while dowloading information.
+
+       * lisp/emacs-lisp/package.el: More conservative `ensure-init-file'
+       (package--ensure-init-file): Check file contents before visiting.
+       (package-initialize): Call it.
+       (package-install-from-buffer, package-install): Don't call it.
+
+2015-04-08  Eli Zaretskii  <address@hidden>
+
+       * src/eval.c (init_eval_once): Bump max_lisp_eval_depth to 800
+       (Bug#17517)
+
+2015-04-08  Michael Albinus  <address@hidden>
+
+       Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
+
+       Fix nasty scoping bug in tramp-cache.el
+       * lisp/net/tramp-cache.el (tramp-flush-file-property): Fix nasty 
scoping bug.
+
+2015-04-08  Tassilo Horn  <address@hidden>
+
+       Add notice to visual commands section
+       * doc/misc/eshell.texi (Input/Output): Add notice that some tools
+       such as git call less with its -F option which omits pagination if
+       the contents is less than one page long.  This interferes with
+       eshell's visual (sub-)commands.
+
+2015-04-07  Dmitry Gutov  <address@hidden>
+
+       ffap: Support environment variable expansion in file names
+       (Bug#19839)
+       * lisp/ffap.el (ffap-string-at-point-mode-alist): Support
+       environment variable expansion in file names.
+
+2015-04-07  Paul Eggert  <address@hidden>
+
+       Prefer double-quote to accent-grave in man pages
+
+2015-04-07  Stefan Monnier  <address@hidden>
+
+       (Bug#20257)
+       * lisp/files.el (set-visited-file-name): Clear auto-save if nil.
+
+2015-04-07  Ivan Shmakov  <address@hidden>
+
+       Update etc/PROBLEMS.
+       * etc/PROBLEMS: Mention visible-cursor; a few more mentions of
+       ~/.Xresources and xrdb(1); refer to 'GNU Coreutils' and
+       'X Window System' or 'X' (were: 'GNU Fileutils' and 'X Windows',
+       respectively); other minor updates and tweaks.  (Bug#20011)
+
+2015-04-07  Paul Eggert  <address@hidden>
+
+       Add doc strings for some Isearch state vars
+       * lisp/misearch.el (multi-isearch-buffer-list)
+       (multi-isearch-file-list): Add doc strings.
+       (Bug#20232)
+
+2015-04-07  Alan Mackenzie  <address@hidden>
+
+       Always mark "<" and ">" in #include directives with text properties.
+       * lisp/progmodes/c-fonts.el (c-cpp-matchers): Replace a font-lock 
"anchored
+       matcher" with an invocation of c-make-font-lock-search-function to allow
+       fontification when there's no trailing space on an "#include <..>" line.
+
+2015-04-07  Paul Eggert  <address@hidden>
+
+       Generate a ChangeLog file from commit logs
+       * .gitignore: Add 'ChangeLog'.
+       * build-aux/gitlog-to-changelog: New file, from Gnulib.
+       * build-aux/gitlog-to-emacslog: New file.
+       * CONTRIBUTE: Document the revised workflow.
+       * Makefile.in (clean): Remove *.tmp and etc/*.tmp*
+       instead of just special cases.
+       (CHANGELOG_HISTORY_INDEX_MAX, CHANGELOG_N, gen_origin): New vars.
+       (ChangeLog, unchanged-history-files, change-history)
+       (change-history-commit): New rules.
+       * admin/admin.el (make-manuals-dist--1):
+       Don't worry about doc/ChangeLog.
+       * admin/authors.el: Add a FIXME.
+       * admin/make-tarball.txt:
+       * lisp/calendar/icalendar.el:
+       * lisp/gnus/deuglify.el:
+       * lisp/obsolete/gulp.el:
+       * lwlib/README:
+       Adjust to renamed ChangeLog history files.
+       * admin/merge-gnulib (GNULIB_MODULES): Add gitlog-to-changelog.
+       * admin/notes/repo: Call it 'master' a la Git, not 'trunk' a la Bzr.
+       Remove obsolete discussion of merging ChangeLog files.
+       New section "Maintaining ChangeLog history".
+       * build-aux/git-hooks/pre-commit:
+       Reject attempts to commit files named 'ChangeLog'.
+       * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+       * make-dist: Make and distribute top-level ChangeLog if there's a
+       .git directory.  Distribute the new ChangeLog history files
+       instead of scattered ChangeLog files.  Distribute the new files
+       gitlog-to-changelog and gitlog-to-emacslog.
+       (Bug#19113)
+
+       Rename ChangeLogs for gitlog-to-changelog
+       This patch was implemented via the following shell commands:
+       find * -name ChangeLog |
+       sed 's,.*,git mv & &.1,
+       s, lisp/ChangeLog\.1$, lisp/ChangeLog.17,
+       s, lisp/erc/ChangeLog\.1$, lisp/erc/ChangeLog.09,
+       s, lisp/gnus/ChangeLog\.1$, lisp/gnus/ChangeLog.3,
+       s, lisp/mh-e/ChangeLog\.1$, lisp/mh-e/ChangeLog.2,
+       s, src/ChangeLog\.1$, src/ChangeLog.13,' |
+       sh
+       git commit -am"[this commit message]"
+
+See ChangeLog.1 for earlier changes.
+
+  Copyright (C) 2015 Free Software Foundation, Inc.
+
+  This file is part of GNU Emacs.
+
+  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
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
diff --git a/INSTALL b/INSTALL
index 5532020..ebd36e7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -13,21 +13,21 @@ msdos/INSTALL.  For information about building from a 
repository checkout
 
 BASIC INSTALLATION
 
-On most Unix systems, you build Emacs by first running the `configure'
+On most Unix systems, you build Emacs by first running the 'configure'
 shell script.  This attempts to deduce the correct values for
 various system-dependent variables and features, and find the
 directories where certain system headers and libraries are kept.
 In a few cases, you may need to explicitly tell configure where to
 find some things, or what options to use.
 
-`configure' creates a `Makefile' in several subdirectories, and a
-`src/config.h' file containing system-dependent definitions.
-Running the `make' utility then builds the package for your system.
+'configure' creates a 'Makefile' in several subdirectories, and a
+'src/config.h' file containing system-dependent definitions.
+Running the 'make' utility then builds the package for your system.
 
 Building Emacs requires GNU make, <http://www.gnu.org/software/make/>.
-On most systems that Emacs supports, this is the default `make' program.
+On most systems that Emacs supports, this is the default 'make' program.
 
-Here's the procedure to build Emacs using `configure' on systems which
+Here's the procedure to build Emacs using 'configure' on systems which
 are supported by it.  In some cases, if the simplified procedure fails,
 you might need to use various non-default options, and maybe perform
 some of the steps manually.  The more detailed description in the other
@@ -40,48 +40,48 @@ sections if you need to.
   This includes the space-saving that comes from automatically
   compressing the Lisp source files on installation.
 
-  2a. `cd' to the directory where you unpacked Emacs and invoke the
-      `configure' script:
+  2a. 'cd' to the directory where you unpacked Emacs and invoke the
+      'configure' script:
 
                 ./configure
 
   2b. Alternatively, create a separate directory, outside the source
-      directory, where you want to build Emacs, and invoke `configure'
+      directory, where you want to build Emacs, and invoke 'configure'
       from there:
 
                 SOURCE-DIR/configure
 
       where SOURCE-DIR is the top-level Emacs source directory.
 
-  3. When `configure' finishes, it prints several lines of details
+  3. When 'configure' finishes, it prints several lines of details
      about the system configuration.  Read those details carefully
      looking for anything suspicious, such as wrong CPU and operating
      system names, wrong places for headers or libraries, missing
      libraries that you know are installed on your system, etc.
 
-     If you find anything wrong, you may have to pass to `configure'
+     If you find anything wrong, you may have to pass to 'configure'
      one or more options specifying the explicit machine configuration
      name, where to find various headers and libraries, etc.
      Refer to the section DETAILED BUILDING AND INSTALLATION below.
 
-     If `configure' didn't find some image support libraries, such as
+     If 'configure' didn't find some image support libraries, such as
      Xpm and jpeg, refer to "Image support libraries" below.
 
-     If the details printed by `configure' don't make any sense to
-     you, but there are no obvious errors, assume that `configure' did
+     If the details printed by 'configure' don't make any sense to
+     you, but there are no obvious errors, assume that 'configure' did
      its job and proceed.
 
-  4. Invoke the `make' program:
+  4. Invoke the 'make' program:
 
                 make
 
-  5. If `make' succeeds, it will build an executable program `emacs'
-     in the `src' directory.  You can try this program, to make sure
+  5. If 'make' succeeds, it will build an executable program 'emacs'
+     in the 'src' directory.  You can try this program, to make sure
      it works:
 
                 src/emacs -Q
 
-  6. Assuming that the program `src/emacs' starts and displays its
+  6. Assuming that the program 'src/emacs' starts and displays its
      opening screen, you can install the program and its auxiliary
      files into their installation directories:
 
@@ -101,7 +101,7 @@ sections if you need to.
                make distclean
 
   Note that the install automatically saves space by compressing
-  (provided you have the `gzip' program) those installed Lisp source (.el)
+  (provided you have the 'gzip' program) those installed Lisp source (.el)
   files that have corresponding .elc versions, as well as the Info files.
 
 
@@ -114,7 +114,7 @@ On GNU and Unix systems, Emacs needs the optional libraries 
"m17n-db",
 Indic and Khmer, and also for scripts that require Arabic shaping
 support (Arabic and Farsi).  On some systems, particularly GNU/Linux,
 these libraries may be already present or available as additional
-packages.  Note that if there is a separate `dev' or `devel' package,
+packages.  Note that if there is a separate 'dev' or 'devel' package,
 for use at compilation time rather than run time, you will need that
 as well as the corresponding run time package; typically the dev
 package will contain header files and a library archive.  Otherwise,
@@ -148,7 +148,7 @@ XBM images whose support is built-in.
 
 On some systems, particularly on GNU/Linux, these libraries may
 already be present or available as additional packages.  If
-there is a separate `dev' or `devel' package, for use at compilation
+there is a separate 'dev' or 'devel' package, for use at compilation
 time rather than run time, you will need that as well as the
 corresponding run time package; typically the dev package will
 contain header files and a library archive.  Otherwise, you can
@@ -195,15 +195,15 @@ number of free Unicode fonts.
 Many GNU/Linux systems do not come with development packages by default;
 they include the files that you need to run Emacs, but not those you
 need to compile it.  For example, to compile Emacs with support for X
-and graphics libraries, you may need to install the `X development'
+and graphics libraries, you may need to install the X development
 package(s), and development versions of the jpeg, png, etc. packages.
 
 The names of the packages that you need varies according to the
 GNU/Linux distribution that you use, and the options that you want to
 configure Emacs with.  On Debian-based systems, you can install all the
 packages needed to build the installed version of Emacs with a command
-like `apt-get build-dep emacs24'.  On Red Hat systems, the
-corresponding command is `yum-builddep emacs'.
+like 'apt-get build-dep emacs24'.  On Red Hat systems, the
+corresponding command is 'yum-builddep emacs'.
 
 
 DETAILED BUILDING AND INSTALLATION:
@@ -214,37 +214,37 @@ the file nt/INSTALL.  For MS-DOS and MS Windows 3.X, see 
msdos/INSTALL.)
 
 1) See the basic installation summary above for the disk space requirements.
 
-2) In the unlikely event that `configure' does not detect your system
-type correctly, consult `./etc/MACHINES' to see what --host, --build
-options you should pass to `configure'.  That file also offers hints
+2) In the unlikely event that 'configure' does not detect your system
+type correctly, consult './etc/MACHINES' to see what --host, --build
+options you should pass to 'configure'.  That file also offers hints
 for getting around some possible installation problems.
 
 3) You can build Emacs in the top-level Emacs source directory
 or in a separate directory.
 
 3a) To build in the top-level Emacs source directory, go to that
-directory and run the program `configure' as follows:
+directory and run the program 'configure' as follows:
 
     ./configure [--OPTION[=VALUE]] ...
 
-If `configure' cannot determine your system type, try again
+If 'configure' cannot determine your system type, try again
 specifying the proper --build, --host options explicitly.
 
-If you don't want X support, specify `--with-x=no'.  If you omit this
-option, `configure' will try to figure out for itself whether your
+If you don't want X support, specify '--with-x=no'.  If you omit this
+option, 'configure' will try to figure out for itself whether your
 system has X, and arrange to use it if present.
 
-The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
+The '--x-includes=DIR' and '--x-libraries=DIR' options tell the build
 process where the compiler should look for the include files and
-object libraries used with the X Window System.  Normally, `configure'
+object libraries used with the X Window System.  Normally, 'configure'
 is able to find them; these options are necessary if you have your X
 Window System files installed in unusual places.  These options also
 accept a list of directories, separated with colons.
 
 To get more attractive menus, you can specify an X toolkit when you
-configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
-TOOLKIT is `gtk' (the default), `athena', or `motif' (`yes' and
-`lucid' are synonyms for `athena').  Compiling with Motif causes a
+configure Emacs; use the option '--with-x-toolkit=TOOLKIT', where
+TOOLKIT is 'gtk' (the default), 'athena', or 'motif' ('yes' and
+'lucid' are synonyms for 'athena').  Compiling with Motif causes a
 standard File Selection Dialog to pop up when you invoke file commands
 with the mouse.  You can get fancy 3D-style scroll bars, even without
 Gtk or Motif, if you have the Xaw3d library installed (see
@@ -257,12 +257,12 @@ Emacs will autolaunch a D-Bus session bus, when the 
environment
 variable DISPLAY is set, but no session bus is running.  This might be
 inconvenient for Emacs when running as daemon or running via a remote
 ssh connection.  In order to completely prevent the use of D-Bus, configure
-Emacs with the options `--without-dbus --without-gconf --without-gsettings'.
+Emacs with the options '--without-dbus --without-gconf --without-gsettings'.
 
 The Emacs mail reader RMAIL is configured to be able to read mail from
 a POP3 server by default.  Versions of the POP protocol older than
 POP3 are not supported.  For Kerberos-authenticated POP add
-`--with-kerberos', for Hesiod support add `--with-hesiod'.  While POP3
+'--with-kerberos', for Hesiod support add '--with-hesiod'.  While POP3
 is always enabled, whether Emacs actually uses POP is controlled by
 individual users--see the Rmail chapter of the Emacs manual.
 
@@ -322,28 +322,28 @@ that goes awry.  'make V=1' also enables the extra 
chatter.
 
 Use --enable-link-time-optimization to enable link-time optimizer.  If
 you're using GNU compiler, this feature is supported since version 4.5.0.
-If `configure' can determine number of online CPUS on your system, final
+If 'configure' can determine number of online CPUS on your system, final
 link-time optimization and code generation is executed in parallel using
 one job per each available online CPU.
 
 This option is also supported for clang.  You should have GNU binutils
-with `gold' linker and plugin support, and clang with LLVMgold.so plugin.
+with 'gold' linker and plugin support, and clang with LLVMgold.so plugin.
 Read http://llvm.org/docs/GoldPlugin.html for details.  Also note that
 this feature is still experimental, so prepare to build binutils and
 clang from the corresponding source code repositories.
 
-The `--prefix=PREFIXDIR' option specifies where the installation process
-should put emacs and its data files.  This defaults to `/usr/local'.
+The '--prefix=PREFIXDIR' option specifies where the installation process
+should put emacs and its data files.  This defaults to '/usr/local'.
 - Emacs (and the other utilities users run) go in PREFIXDIR/bin
-  (unless the `--exec-prefix' option says otherwise).
+  (unless the '--exec-prefix' option says otherwise).
 - The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
-  (where VERSION is the version number of Emacs, like `23.2').
+  (where VERSION is the version number of Emacs, like '23.2').
 - The architecture-dependent files go in
   PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
   (where CONFIGURATION is the configuration name, like
-  i686-pc-linux-gnu), unless the `--exec-prefix' option says otherwise.
+  i686-pc-linux-gnu), unless the '--exec-prefix' option says otherwise.
 
-The `--exec-prefix=EXECDIR' option allows you to specify a separate
+The '--exec-prefix=EXECDIR' option allows you to specify a separate
 portion of the directory tree for installing architecture-specific
 files, like executables and utility programs.  If specified,
 - Emacs (and the other utilities users run) go in EXECDIR/bin, and
@@ -358,26 +358,26 @@ For example, the command
 configures Emacs to build for a 32-bit GNU/Linux distribution,
 without sound support.
 
-`configure' doesn't do any compilation or installation itself.
+'configure' doesn't do any compilation or installation itself.
 It just creates the files that influence those things:
-`./Makefile' in the top-level directory and several subdirectories;
-and `./src/config.h'.
-
-When it is done, `configure' prints a description of what it did and
-creates a shell script `config.status' which, when run, recreates the
-same configuration.  If `configure' exits with an error after
-disturbing the status quo, it removes `config.status'.  `configure'
-also creates a file `config.cache' that saves the results of its tests
-to make reconfiguring faster, and a file `config.log' containing compiler
-output (useful mainly for debugging `configure').  You can give
-`configure' the option `--cache-file=FILE' to use the results of the
-tests in FILE instead of `config.cache'.  Set FILE to `/dev/null' to
-disable caching, for debugging `configure'.
-
-If the description of the system configuration printed by `configure'
+'./Makefile' in the top-level directory and several subdirectories;
+and './src/config.h'.
+
+When it is done, 'configure' prints a description of what it did and
+creates a shell script 'config.status' which, when run, recreates the
+same configuration.  If 'configure' exits with an error after
+disturbing the status quo, it removes 'config.status'.  'configure'
+also creates a file 'config.cache' that saves the results of its tests
+to make reconfiguring faster, and a file 'config.log' containing compiler
+output (useful mainly for debugging 'configure').  You can give
+'configure' the option '--cache-file=FILE' to use the results of the
+tests in FILE instead of 'config.cache'.  Set FILE to '/dev/null' to
+disable caching, for debugging 'configure'.
+
+If the description of the system configuration printed by 'configure'
 is not right, or if it claims some of the features or libraries are not
-available when you know they are, look at the `config.log' file for
-the trace of the failed tests performed by `configure' to check
+available when you know they are, look at the 'config.log' file for
+the trace of the failed tests performed by 'configure' to check
 whether these features are supported.  Typically, some test fails
 because the compiler cannot find some function in the system
 libraries, or some macro-processor definition in the system headers.
@@ -385,29 +385,29 @@ libraries, or some macro-processor definition in the 
system headers.
 Some tests might fail because the compiler should look in special
 directories for some header files, or link against optional
 libraries, or use special compilation options.  You can force
-`configure' and the build process which follows it to do that by
+'configure' and the build process which follows it to do that by
 setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
-before running `configure'.  CPP is the command which invokes the
+before running 'configure'.  CPP is the command which invokes the
 preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
 compilation options, LDFLAGS are options used when linking, LIBS are
 libraries to link against, and CC is the command which invokes the
 compiler.  By default, gcc is used if available.
 
-Here's an example of a `configure' invocation, assuming a Bourne-like
+Here's an example of a 'configure' invocation, assuming a Bourne-like
 shell such as Bash, which uses these variables:
 
   ./configure \
     CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
     CFLAGS='-O3' LIBS='-lfoo -lbar'
 
-(this is all one shell command).  This tells `configure' to instruct the
-preprocessor to look in the `/foo/myinclude' directory for header
+(this is all one shell command).  This tells 'configure' to instruct the
+preprocessor to look in the '/foo/myinclude' directory for header
 files (in addition to the standard directories), instruct the linker
-to look in `/bar/mylib' for libraries, pass the -O3 optimization
+to look in '/bar/mylib' for libraries, pass the -O3 optimization
 switch to the compiler, and link against libfoo and libbar
 libraries in addition to the standard ones.
 
-For some libraries, like Gtk+, fontconfig and ALSA, `configure' uses
+For some libraries, like Gtk+, fontconfig and ALSA, 'configure' uses
 pkg-config to find where those libraries are installed.
 If you want pkg-config to look in special directories, you have to set
 PKG_CONFIG_PATH to point to the directories where the .pc-files for
@@ -417,27 +417,27 @@ those libraries are.  For example:
     PKG_CONFIG_PATH='/usr/local/alsa/lib/pkgconfig:/opt/gtk+-2.8/lib/pkgconfig'
 
 3b) To build in a separate directory, go to that directory
-and run the program `configure' as follows:
+and run the program 'configure' as follows:
 
     SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
 
 SOURCE-DIR refers to the top-level Emacs source directory which is
-where Emacs's configure script is located.  `configure' looks for the
-Emacs source code in the directory that `configure' is in.
+where Emacs's configure script is located.  'configure' looks for the
+Emacs source code in the directory that 'configure' is in.
 
-4) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
+4) Put into './lisp/site-init.el' or './lisp/site-load.el' any Emacs
 Lisp code you want Emacs to load before it is dumped out.  Use
 site-load.el for additional libraries if you arrange for their
 documentation strings to be in the etc/DOC file (see
 src/Makefile.in if you wish to figure out how to do that).  For all
 else, use site-init.el.  Do not load byte-compiled code which
-was built with a non-nil value of `byte-compile-dynamic'.
+was built with a non-nil value of 'byte-compile-dynamic'.
 
 It is not a good idea to edit the normal .el files that come with Emacs.
 Instead, use a file like site-init.el to change settings.
 
 To change the value of a variable that is already defined in Emacs,
-you should use the Lisp function `setq', not `defvar'.  For example,
+you should use the Lisp function 'setq', not 'defvar'.  For example,
 
      (setq news-inews-program "/usr/bin/inews")
 
@@ -449,46 +449,46 @@ variable gets by default!  Make sure you know what kind 
of value the
 variable should have.  If you don't pay attention to what you are
 doing, you'll make a mistake.
 
-The `site-*.el' files are nonexistent in the distribution.  You do not
+The 'site-*.el' files are nonexistent in the distribution.  You do not
 need to create them if you have nothing to put in them.
 
-5) Refer to the file `./etc/TERMS' for information on fields you may
+5) Refer to the file './etc/TERMS' for information on fields you may
 wish to add to various termcap entries.  (This is unlikely to be necessary.)
 
-6) Run `make' in the top directory of the Emacs distribution to finish
+6) Run 'make' in the top directory of the Emacs distribution to finish
 building Emacs in the standard way.  The final executable file is
-named `src/emacs'.  You can execute this file "in place" without
+named 'src/emacs'.  You can execute this file "in place" without
 copying it, if you wish; then it automatically uses the sibling
 directories ../lisp, ../lib-src, ../info.
 
 Or you can "install" the executable and the other files into their
-installed locations, with `make install'.  By default, Emacs's files
+installed locations, with 'make install'.  By default, Emacs's files
 are installed in the following directories:
 
-`/usr/local/bin' holds the executable programs users normally run -
-               `emacs', `etags', `ctags', `emacsclient'.
+'/usr/local/bin' holds the executable programs users normally run -
+               'emacs', 'etags', 'ctags', 'emacsclient'.
 
-`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
-               `VERSION' stands for the number of the Emacs version
-               you are installing, like `23.1' or `23.2'.  Since the
+'/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
+               'VERSION' stands for the number of the Emacs version
+               you are installing, like '23.1' or '23.2'.  Since the
                Lisp library changes from one version of Emacs to
                another, including the version number in the path
                allows you to have several versions of Emacs installed
                at the same time; in particular, you don't have to
                make Emacs unavailable while installing a new version.
 
-`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
+'/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
                file, and other architecture-independent files Emacs
                might need while running.
 
-`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
+'/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
                programs used by Emacs that users are not expected to
                run themselves.
-               `VERSION' is the number of the Emacs version you are
-               installing, and `CONFIGURATION-NAME' is the value
-               deduced by the `configure' program to identify the
+               'VERSION' is the number of the Emacs version you are
+               installing, and 'CONFIGURATION-NAME' is the value
+               deduced by the 'configure' program to identify the
                architecture and operating system of your machine,
-               like `i686-pc-linux-gnu' or `sparc-sun-sunos'.  Since
+               like 'i686-pc-linux-gnu' or 'sparc-sun-sunos'.  Since
                these files are specific to the version of Emacs,
                operating system, and architecture in use, including
                the configuration name in the path allows you to have
@@ -497,35 +497,35 @@ are installed in the following directories:
                useful for sites at which different kinds of machines
                share the file system Emacs is installed on.
 
-`/usr/local/share/info' holds the on-line documentation for Emacs,
+'/usr/local/share/info' holds the on-line documentation for Emacs,
                known as "info files".  Many other GNU programs are
                documented using info files as well, so this directory
                stands apart from the other, Emacs-specific directories.
 
-`/usr/local/share/man/man1' holds the man pages for the programs installed
-               in `/usr/local/bin'.
+'/usr/local/share/man/man1' holds the man pages for the programs installed
+               in '/usr/local/bin'.
 
 Any version of Emacs, whether installed or not, also looks for Lisp
 files in these directories.
 
-`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
+'/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
                files installed for Emacs version VERSION only.
 
-`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
+'/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
                files installed for all Emacs versions.
 
                When Emacs is installed, it searches for its Lisp files
-               in `/usr/local/share/emacs/VERSION/site-lisp', then in
-               `/usr/local/share/emacs/site-lisp', and finally in
-               `/usr/local/share/emacs/VERSION/lisp'.
+               in '/usr/local/share/emacs/VERSION/site-lisp', then in
+               '/usr/local/share/emacs/site-lisp', and finally in
+               '/usr/local/share/emacs/VERSION/lisp'.
 
 If these directories are not what you want, you can specify where to
 install Emacs's libraries and data files or where Emacs should search
-for its Lisp files by giving values for `make' variables as part of
-the command.  See the section below called `MAKE VARIABLES' for more
+for its Lisp files by giving values for 'make' variables as part of
+the command.  See the section below called 'MAKE VARIABLES' for more
 information on this.
 
-7) Check the file `dir' in your site's info directory (usually
+7) Check the file 'dir' in your site's info directory (usually
 /usr/local/share/info) to make sure that it has a menu entry for the
 Emacs info files.
 
@@ -534,51 +534,51 @@ then you might need to make the movemail program setuid 
or setgid
 to enable it to write the lock files.  We believe this is safe.
 
 9) You are done!  You can remove executables and object files from
-the build directory by typing `make clean'.  To also remove the files
-that `configure' created (so you can compile Emacs for a different
-configuration), type `make distclean'.
+the build directory by typing 'make clean'.  To also remove the files
+that 'configure' created (so you can compile Emacs for a different
+configuration), type 'make distclean'.
 
 
 MAKE VARIABLES
 
 You can change where the build process installs Emacs and its data
-files by specifying values for `make' variables as part of the `make'
+files by specifying values for 'make' variables as part of the 'make'
 command line.  For example, if you type
 
     make install bindir=/usr/local/gnubin
 
-the `bindir=/usr/local/gnubin' argument indicates that the Emacs
-executable files should go in `/usr/local/gnubin', not
-`/usr/local/bin'.
+the 'bindir=/usr/local/gnubin' argument indicates that the Emacs
+executable files should go in '/usr/local/gnubin', not
+'/usr/local/bin'.
 
 Here is a complete list of the variables you may want to set.
 
-`bindir' indicates where to put executable programs that users can
+'bindir' indicates where to put executable programs that users can
        run.  This defaults to /usr/local/bin.
 
-`datadir' indicates where to put the architecture-independent
+'datadir' indicates where to put the architecture-independent
        read-only data files that Emacs refers to while it runs; it
        defaults to /usr/local/share.  We create the following
-       subdirectories under `datadir':
-       - `emacs/VERSION/lisp', containing the Emacs Lisp library, and
-       - `emacs/VERSION/etc', containing the tutorials, DOC file, etc.
-       `VERSION' is the number of the Emacs version you are installing,
-       like `23.1' or `23.2'.  Since these files vary from one version
+       subdirectories under 'datadir':
+       - 'emacs/VERSION/lisp', containing the Emacs Lisp library, and
+       - 'emacs/VERSION/etc', containing the tutorials, DOC file, etc.
+       'VERSION' is the number of the Emacs version you are installing,
+       like '23.1' or '23.2'.  Since these files vary from one version
        of Emacs to another, including the version number in the path
        allows you to have several versions of Emacs installed at the
        same time; this means that you don't have to make Emacs
        unavailable while installing a new version.
 
-`libexecdir' indicates where to put architecture-specific data files that
-       Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
-       We create the following subdirectories under `libexecdir':
-       - `emacs/VERSION/CONFIGURATION-NAME', containing executable
+'libexecdir' indicates where to put architecture-specific data files that
+       Emacs refers to as it runs; it defaults to '/usr/local/libexec'.
+       We create the following subdirectories under 'libexecdir':
+       - 'emacs/VERSION/CONFIGURATION-NAME', containing executable
                programs used by Emacs that users are not expected to run
                themselves.
-       `VERSION' is the number of the Emacs version you are installing,
-       and `CONFIGURATION-NAME' is the value deduced by the
-       `configure' program to identify the architecture and operating
-       system of your machine, like `i686-pc-linux-gnu' or `sparc-sun-sunos'.
+       'VERSION' is the number of the Emacs version you are installing,
+       and 'CONFIGURATION-NAME' is the value deduced by the
+       'configure' program to identify the architecture and operating
+       system of your machine, like 'i686-pc-linux-gnu' or 'sparc-sun-sunos'.
        Since these files are specific to the version of Emacs,
        operating system, and architecture in use, including the
        configuration name in the path allows you to have several
@@ -587,57 +587,57 @@ Here is a complete list of the variables you may want to 
set.
        at which different kinds of machines share the file system
        Emacs is installed on.
 
-`infodir' indicates where to put the info files distributed with
-       Emacs; it defaults to `/usr/local/share/info'.
+'infodir' indicates where to put the info files distributed with
+       Emacs; it defaults to '/usr/local/share/info'.
 
-`mandir' indicates where to put the man pages for Emacs and its
-       utilities (like `etags'); it defaults to
-       `/usr/local/share/man/man1'.
+'mandir' indicates where to put the man pages for Emacs and its
+       utilities (like 'etags'); it defaults to
+       '/usr/local/share/man/man1'.
 
-`prefix' doesn't give a path for any specific part of Emacs; instead,
+'prefix' doesn't give a path for any specific part of Emacs; instead,
        its value is used to determine the defaults for all the
-       architecture-independent path variables - `datadir',
-       `sharedstatedir', `infodir', and `mandir'.  Its default value is
-       `/usr/local'; the other variables add on `lib' or `man' to it
+       architecture-independent path variables - 'datadir',
+       'sharedstatedir', 'infodir', and 'mandir'.  Its default value is
+       '/usr/local'; the other variables add on 'lib' or 'man' to it
        by default.
 
        For example, suppose your site generally places GNU software
-       under `/usr/users/software/gnusoft' instead of `/usr/local'.
+       under '/usr/users/software/gnusoft' instead of '/usr/local'.
        By including
-           `prefix=/usr/users/software/gnusoft'
-       in the arguments to `make', you can instruct the build process
+           'prefix=/usr/users/software/gnusoft'
+       in the arguments to 'make', you can instruct the build process
        to place all of the Emacs data files in the appropriate
        directories under that path.
 
-`exec_prefix' serves the same purpose as `prefix', but instead
+'exec_prefix' serves the same purpose as 'prefix', but instead
        determines the default values for the architecture-dependent
-       path variables - `bindir' and `libexecdir'.
+       path variables - 'bindir' and 'libexecdir'.
 
 The above variables serve analogous purposes in the makefiles for all
 GNU software; the following variables are specific to Emacs.
 
-`archlibdir' indicates where Emacs installs and expects the executable
+'archlibdir' indicates where Emacs installs and expects the executable
        files and other architecture-dependent data it uses while
-       running.  Its default value, based on `libexecdir' (which
-       see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
+       running.  Its default value, based on 'libexecdir' (which
+       see), is '/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
        (where VERSION and CONFIGURATION-NAME are as described above).
 
-`GZIP_PROG' is the name of the executable that compresses installed info,
+'GZIP_PROG' is the name of the executable that compresses installed info,
        manual, and .el files.  It defaults to gzip.  Setting it to
        the empty string suppresses compression.
 
 Remember that you must specify any variable values you need each time
-you run `make' in the top directory.  If you run `make' once to build
-emacs, test it, and then run `make' again to install the files, you
+you run 'make' in the top directory.  If you run 'make' once to build
+emacs, test it, and then run 'make' again to install the files, you
 must provide the same variable settings each time.  To make the
-settings persist, you can edit them into the `Makefile' in the top
-directory, but be aware that running the `configure' program erases
-`Makefile' and rebuilds it from `Makefile.in'.
+settings persist, you can edit them into the 'Makefile' in the top
+directory, but be aware that running the 'configure' program erases
+'Makefile' and rebuilds it from 'Makefile.in'.
 
 The path for finding Lisp files is specified in src/epaths.h,
 a file which is generated by running configure.  To change the path,
 you can edit the definition of PATH_LOADSEARCH in that file
-before you run `make'.
+before you run 'make'.
 
 The top-level Makefile stores the variable settings it used in the
 Makefiles for the subdirectories, so you don't have to specify them
@@ -646,7 +646,7 @@ when running make in the subdirectories.
 
 PROBLEMS
 
-See the file `./etc/PROBLEMS' for a list of various problems sometimes
+See the file './etc/PROBLEMS' for a list of various problems sometimes
 encountered, and what to do about them.
 
 This file is part of GNU Emacs.
diff --git a/Makefile.in b/Makefile.in
index 4cdd293..ff8dbf3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -30,13 +30,13 @@
 #      by building, but normally aren't because the distribution comes
 #      with them.
 #
-#      Delete `.dvi' files here if they are not part of the distribution.
+#      Delete '.dvi' files here if they are not part of the distribution.
 #
 # make distclean
 #      Delete all files from the current directory that are created by
 #      configuring or building the program.  If you have unpacked the
 #      source and built the program without creating any other files,
-#      `make distclean' should leave only the files that were in the
+#      'make distclean' should leave only the files that were in the
 #      distribution.
 #
 # make maintainer-clean
@@ -67,7 +67,7 @@ CDPATH=
 # If Make doesn't predefine MAKE, set it here.
 @SET_MAKE@
 
-# ==================== Things `configure' Might Edit ====================
+# ==================== Things 'configure' Might Edit ====================
 
 cache_file = @cache_file@
 CONFIGURE_FLAGS = --cache-file=$(cache_file)
@@ -84,11 +84,11 @@ address@hidden@
 ### to install files in.
 
 ### This should be the number of the Emacs version we're building,
-### like `18.59' or `19.0'.
+### like '24.5' or '25.0.50'.
 address@hidden@
 
 ### This should be the name of the configuration we're building Emacs
-### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
+### for, like 'x86_64-unknown-linux-gnu' or 'powerpc-ibm-aix7.1.2.0'.
 address@hidden@
 
 ### The nt/ subdirectory gets built only for MinGW
@@ -122,7 +122,7 @@ address@hidden@
 # not need to change them.  This defaults to /usr/local.
 address@hidden@
 
-# Like `prefix', but used for architecture-specific files.
+# Like 'prefix', but used for architecture-specific files.
 address@hidden@
 
 # Where to install Emacs and other binaries that people will want to
@@ -171,7 +171,7 @@ address@hidden@
 # Where to find the source code.  The source code for Emacs's C kernel is
 # expected to be in ${srcdir}/src, and the source code for Emacs's
 # utility programs is expected to be in ${srcdir}/lib-src.  This is
-# set by the configure script's `--srcdir' option.
+# set by the configure script's '--srcdir' option.
 
 # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
 address@hidden@
@@ -316,7 +316,7 @@ etc-emacsver:
 
 removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g'
 
-# Generate epaths.h from epaths.in.  This target is invoked by `configure'.
+# Generate epaths.h from epaths.in.  This target is invoked by 'configure'.
 # See comments in configure.ac for why it is done this way, as opposed
 # to just letting configure generate epaths.h from epaths.in in a
 # similar way to how Makefile is made from Makefile.in.
@@ -350,7 +350,7 @@ epaths-force:
 # The w32 build needs a slightly different editing, and it uses
 # nt/epaths.nt as the template.
 #
-# Use the value of ${locallisppath} supplied by `configure',
+# Use the value of ${locallisppath} supplied by 'configure',
 # to support the --enable-locallisppath argument.
 #
 # In this case, the paths written to 'src/epaths.h' must be in native
@@ -377,10 +377,10 @@ lib-src src: $(NTDIR) lib
 
 src: lib-src
 
-# We need to build `emacs' in `src' to compile the *.elc files in `lisp'.
+# We need to build 'emacs' in 'src' to compile the *.elc files in 'lisp'.
 lisp: src
 
-# These targets should be "${SUBDIR} without `src'".
+# These targets should be "${SUBDIR} without 'src'".
 lib lib-src lisp nt: Makefile
        $(MAKE) -C $@ all
 
@@ -684,6 +684,7 @@ install-man:
        thisdir=`/bin/pwd`; \
        cd ${mansrcdir}; \
        for page in *.1; do \
+         test "$$page" = ChangeLog.1 && continue; \
          dest=`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1; \
          (cd "$${thisdir}"; \
           ${INSTALL_DATA} ${mansrcdir}/$${page} 
"$(DESTDIR)${man1dir}/$${dest}"); \
@@ -732,8 +733,8 @@ install-etc:
 install-strip:
        $(MAKE) INSTALL_STRIP=-s install
 
-### Delete all the installed files that the `install' target would
-### create (but not the noninstalled files such as `make all' would create).
+### Delete all the installed files that the 'install' target would
+### create (but not the noninstalled files such as 'make all' would create).
 ###
 ### Don't delete the lisp and etc directories if they're in the source tree.
 uninstall: uninstall-$(NTDIR) uninstall-doc
@@ -802,10 +803,10 @@ $(1)_$(2):
        $$(MAKE) -C $(1) $(2)
 endef
 
-### `mostlyclean'
-###      Like `clean', but may refrain from deleting a few files that people
-###      normally don't want to recompile.  For example, the `mostlyclean'
-###      target for GCC does not delete `libgcc.a', because recompiling it
+### 'mostlyclean'
+###      Like 'clean', but may refrain from deleting a few files that people
+###      normally don't want to recompile.  For example, the 'mostlyclean'
+###      target for GCC does not delete 'libgcc.a', because recompiling it
 ###      is rarely necessary and takes a lot of time.
 mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \
   doc/lispref doc/lispintro
@@ -817,14 +818,14 @@ mostlyclean: $(mostlyclean_dirs:=_mostlyclean)
          [ ! -d $$dir ] || $(MAKE) -C $$dir mostlyclean; \
        done
 
-### `clean'
+### 'clean'
 ###      Delete all files from the current directory that are normally
 ###      created by building the program.  Don't delete the files that
 ###      record the configuration.  Also preserve files that could be made
 ###      by building, but normally aren't because the distribution comes
 ###      with them.
 ###
-###      Delete `.dvi' files here if they are not part of the distribution.
+###      Delete '.dvi' files here if they are not part of the distribution.
 clean_dirs = $(mostlyclean_dirs) nextstep
 
 $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean)))
@@ -833,19 +834,19 @@ clean: $(clean_dirs:=_clean)
        for dir in test/automated; do \
          [ ! -d $$dir ] || $(MAKE) -C $$dir clean; \
        done
-       -rm -f etc/emacs.tmpdesktop etc/emacs.tmpappdata
+       -rm -f *.tmp etc/*.tmp*
        -rm -rf info-dir.*
 
-### `bootclean'
+### 'bootclean'
 ###      Delete all files that need to be remade for a clean bootstrap.
 top_bootclean=\
        rm -f config.cache config.log ${srcdir}/doc/man/emacs.1
 
-### `distclean'
+### 'distclean'
 ###      Delete all files from the current directory that are created by
 ###      configuring or building the program.  If you have unpacked the
 ###      source and built the program without creating any other files,
-###      `make distclean' should leave only the files that were in the
+###      'make distclean' should leave only the files that were in the
 ###      distribution.
 top_distclean=\
        ${top_bootclean}; \
@@ -861,8 +862,8 @@ distclean: $(distclean_dirs:=_distclean)
        done
        ${top_distclean}
 
-### `bootstrap-clean'
-###      Delete everything that can be reconstructed by `make' and that
+### 'bootstrap-clean'
+###      Delete everything that can be reconstructed by 'make' and that
 ###      needs to be deleted in order to force a bootstrap from a clean state.
 $(foreach dir,$(distclean_dirs),$(eval $(call 
submake_template,$(dir),bootstrap-clean)))
 
@@ -875,16 +876,16 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean)
        rm -f ${srcdir}/etc/refcards/emacsver.tex
        ${top_bootclean}
 
-### `maintainer-clean'
+### 'maintainer-clean'
 ###      Delete everything from the current directory that can be
 ###      reconstructed with this Makefile.  This typically includes
 ###      everything deleted by distclean, plus more: C source files
 ###      produced by Bison, tags tables, info files, and so on.
 ###
-###      One exception, however: `make maintainer-clean' should not delete
-###      `configure' even if `configure' can be remade using a rule in the
-###      Makefile.  More generally, `make maintainer-clean' should not delete
-###      anything that needs to exist in order to run `configure' and then
+###      One exception, however: 'make maintainer-clean' should not delete
+###      'configure' even if 'configure' can be remade using a rule in the
+###      Makefile.  More generally, 'make maintainer-clean' should not delete
+###      anything that needs to exist in order to run 'configure' and then
 ###      begin to build the program.
 top_maintainer_clean=\
        ${top_distclean}; \
@@ -1087,6 +1088,51 @@ bootstrap: bootstrap-clean
        $(MAKE) MAKEFILE_NAME=force-Makefile force-Makefile
        $(MAKE) all
 
+.PHONY: ChangeLog change-history change-history-commit
+.PHONY: master-branch-is-current no-ChangeLog unchanged-history-files
+
+# The newest revision that should not appear in the generated ChangeLog.
+gen_origin = 870287327b1fba7105599eeabac5a2aa5ebadf19
+
+# Convert git commit log to ChangeLog file.  make-dist uses this.
+ChangeLog:
+       $(AM_V_GEN)distprefix=$(distprefix) srcprefix=$(srcdir)/ \
+       $(srcdir)/build-aux/gitlog-to-emacslog $(gen_origin)
+
+# The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
+# ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX).  $(CHANGELOG_N) stands for
+# the newest (highest-numbered) ChangeLog history file.
+CHANGELOG_HISTORY_INDEX_MAX = 2
+CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
+
+# Check that we are in a good state for changing history.
+no-ChangeLog:
+       test ! -f ChangeLog
+master-branch-is-current:
+       git branch | grep -q '^\* master$$'
+unchanged-history-files:
+       x=$$(git diff-files --name-only $(CHANGELOG_N) Makefile.in) && \
+         test -z "$$x"
+
+# Copy newer commit messages to the start of the ChangeLog history file,
+# and consider them to be older.
+change-history: no-ChangeLog master-branch-is-current unchanged-history-files \
+  ChangeLog
+       (sed '/^;; [L]ocal Variables:/,$$d' <ChangeLog && cat $(CHANGELOG_N)) \
+         >$(CHANGELOG_N).tmp
+       new_origin=$$(git log --pretty=format:%H HEAD^!) && \
+       sed 's/^\(gen_origin *= *\).*/\1'"$$new_origin/" \
+         <Makefile.in >Makefile.in.tmp
+       mv $(CHANGELOG_N).tmp $(CHANGELOG_N)
+       mv Makefile.in.tmp Makefile.in
+       $(MAKE) address@hidden
+
+# If 'make change-history' fails because the newest ChangeLog history
+# file contains invalid text, fix the file by hand and then run
+# 'make change-history-commit'.
+change-history-commit:
+       git commit -m'; make $@' $(CHANGELOG_N) Makefile.in
+
 .PHONY: check-declare
 
 check-declare:
diff --git a/README b/README
index 0e32b6c..be99852 100644
--- a/README
+++ b/README
@@ -22,71 +22,71 @@ in code we don't use often.  Please send bug reports to the 
mailing
 list address@hidden  If possible, use M-x report-emacs-bug.
 
 See the "Bugs" section of the Emacs manual for more information on how
-to report bugs.  (The file `BUGS' in this directory explains how you
+to report bugs.  (The file 'BUGS' in this directory explains how you
 can find and read that section using the Info files that come with
 Emacs.)  For a list of mailing lists related to Emacs, see
 <http://savannah.gnu.org/mail/?group=emacs>.  For the complete
 list of GNU mailing lists, see <http://lists.gnu.org/>.
 
-The `etc' subdirectory contains several other files, named in capital
+The 'etc' subdirectory contains several other files, named in capital
 letters, which you might consider looking at when installing GNU
 Emacs.
 
-The file `configure' is a shell script to acclimate Emacs to the
+The file 'configure' is a shell script to acclimate Emacs to the
 oddities of your processor and operating system.  It creates the file
-`Makefile' (a script for the `make' program), which automates the
+'Makefile' (a script for the 'make' program), which automates the
 process of building and installing Emacs.  See INSTALL for more
 detailed information.
 
-The file `configure.ac' is the input used by the autoconf program to
-construct the `configure' script.
+The file 'configure.ac' is the input used by the autoconf program to
+construct the 'configure' script.
 
-The shell script `autogen.sh' generates 'configure' and other files by
+The shell script 'autogen.sh' generates 'configure' and other files by
 running the GNU build tools autoconf and automake, which in turn use
 GNU m4 and Perl.  If you want to use it, you will need to install
 recent versions of these build tools.  This should be needed only if
-you edit files like `configure.ac' that specify Emacs's autobuild
+you edit files like 'configure.ac' that specify Emacs's autobuild
 procedure.
 
-The file `Makefile.in' is a template used by `configure' to create
-`Makefile'.
+The file 'Makefile.in' is a template used by 'configure' to create
+'Makefile'.
 
-The file `make-dist' is a shell script to build a distribution tar
+The file 'make-dist' is a shell script to build a distribution tar
 file from the current Emacs tree, containing only those files
 appropriate for distribution.  If you make extensive changes to Emacs,
 this script will help you distribute your version to others.
 
 There are several subdirectories:
 
-`src'       holds the C code for Emacs (the Emacs Lisp interpreter and
+'src'       holds the C code for Emacs (the Emacs Lisp interpreter and
             its primitives, the redisplay code, and some basic editing
             functions).
-`lisp'      holds the Emacs Lisp code for Emacs (most everything else).
-`leim'      holds the original source files for the generated files
+'lisp'      holds the Emacs Lisp code for Emacs (most everything else).
+'leim'      holds the original source files for the generated files
             in lisp/leim.  These form the library of Emacs input methods,
             required to type international characters that can't be
             directly produced by your keyboard.
-`lib'       holds source code for libraries used by Emacs and its utilities
-`lib-src'   holds the source code for some utility programs for use by or
+'lib'       holds source code for libraries used by Emacs and its utilities
+'lib-src'   holds the source code for some utility programs for use by or
             with Emacs, like movemail and etags.
-`etc'       holds miscellaneous architecture-independent data files Emacs
+'etc'       holds miscellaneous architecture-independent data files Emacs
             uses, like the tutorial text and tool bar images.
-            The contents of the `lisp', `leim', `info', and `doc'
+            The contents of the 'lisp', 'leim', 'info', and 'doc'
             subdirectories are architecture-independent too.
-`info'      holds the Info documentation tree for Emacs.
-`doc/emacs' holds the source code for the Emacs Manual.  If you modify the
-            manual sources, you will need the `makeinfo' program to produce
-            an updated manual.  `makeinfo' is part of the GNU Texinfo
+'info'      holds the Info documentation tree for Emacs.
+'doc/emacs' holds the source code for the Emacs Manual.  If you modify the
+            manual sources, you will need the 'makeinfo' program to produce
+            an updated manual.  'makeinfo' is part of the GNU Texinfo
             package; you need a suitably recent version of Texinfo.
-`doc/lispref'   holds the source code for the Emacs Lisp reference manual.
-`doc/lispintro' holds the source code for the Introduction to Programming
+'doc/lispref'   holds the source code for the Emacs Lisp reference manual.
+'doc/lispintro' holds the source code for the Introduction to Programming
                 in Emacs Lisp manual.
-`msdos'     holds configuration files for compiling Emacs under MS-DOS.
-`nextstep'  holds instructions and some other files for compiling the
+'msdos'     holds configuration files for compiling Emacs under MS-DOS.
+'nextstep'  holds instructions and some other files for compiling the
             Nextstep port of Emacs, for GNUstep and Mac OS X Cocoa.
-`nt'        holds various command files and documentation files that pertain
+'nt'        holds various command files and documentation files that pertain
             to building and running Emacs on Windows 9X/ME/NT/2000/XP.
-`test'      holds tests for various aspects of Emacs's functionality.
+'test'      holds tests for various aspects of Emacs's functionality.
 
    Building Emacs on non-Posix platforms requires tools that aren't part
 of the standard distribution of the OS.  The platform-specific README
diff --git a/admin/ChangeLog b/admin/ChangeLog.1
similarity index 100%
rename from admin/ChangeLog
rename to admin/ChangeLog.1
diff --git a/admin/admin.el b/admin/admin.el
index 9bf503e..93e9124 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -28,10 +28,6 @@
 
 (defvar add-log-time-format)           ; in add-log
 
-;; Does this information need to be in every ChangeLog, as opposed to
-;; just the top-level one?  Only if you allow changes the same
-;; day as the release.
-;; http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00161.html
 (defun add-release-logs (root version &optional date)
   "Add \"Version VERSION released.\" change log entries in ROOT.
 Root must be the root of an Emacs source tree.
@@ -203,6 +199,7 @@ Optional argument TYPE is type of output (nil means all)."
         (ps-dir (expand-file-name "ps" dest))
         (pdf-dir (expand-file-name "pdf" dest))
         (emacs (expand-file-name "doc/emacs/emacs.texi" root))
+        (emacs-xtra (expand-file-name "doc/emacs/emacs-xtra.texi" root))
         (elisp (expand-file-name "doc/lispref/elisp.texi" root))
         (eintr (expand-file-name "doc/lispintro/emacs-lisp-intro.texi" root))
         (misc (manual-misc-manuals root)))
@@ -216,10 +213,14 @@ Optional argument TYPE is type of output (nil means all)."
        (manual-html-node emacs (expand-file-name "emacs" html-node-dir)))
     (if (member type '(nil "emacs" "emacs-mono"))
        (manual-html-mono emacs (expand-file-name "emacs.html" html-mono-dir)))
-    (if (member type '(nil "emacs" "emacs-pdf" "pdf"))
-       (manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir)))
-    (if (member type '(nil "emacs" "emacs-ps" "ps"))
-       (manual-ps emacs (expand-file-name "emacs.ps" ps-dir)))
+    (when (member type '(nil "emacs" "emacs-pdf" "pdf"))
+      (manual-pdf emacs (expand-file-name "emacs.pdf" pdf-dir))
+      ;; emacs-xtra exists only in pdf/ps format.
+      ;; In other formats it is included in the Emacs manual.
+      (manual-pdf emacs-xtra (expand-file-name "emacs-xtra.pdf" pdf-dir)))
+    (when (member type '(nil "emacs" "emacs-ps" "ps"))
+      (manual-ps emacs (expand-file-name "emacs.ps" ps-dir))
+      (manual-ps emacs-xtra (expand-file-name "emacs-xtra.ps" ps-dir)))
     (if (member type '(nil "elisp" "elisp-node"))
        (manual-html-node elisp (expand-file-name "elisp" html-node-dir)))
     (if (member type '(nil "elisp" "elisp-mono"))
@@ -601,7 +602,7 @@ style=\"text-align:left\">")
     (copy-file "../doc/misc/texinfo.tex" stem)
     (or (equal type "emacs") (copy-file "../doc/emacs/emacsver.texi" stem))
     (dolist (file (directory-files (format "../doc/%s" type) t))
-      (if (or (string-match-p "\\(\\.texi\\'\\|/ChangeLog\\|/README\\'\\)" 
file)
+      (if (or (string-match-p "\\(\\.texi\\'\\|/README\\'\\)" file)
              (and (equal type "lispintro")
                   (string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
          (copy-file file stem)))
diff --git a/admin/authors.el b/admin/authors.el
index 1e4af9b..c7ec3bc 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -27,6 +27,9 @@
 ;; Use M-x authors RET to create an *Authors* buffer that can used as
 ;; or merged with Emacs's AUTHORS file.
 
+;; FIXME: This needs to modernized in the light of current practice,
+;; which generates a single top-level ChangeLog file from commit logs.
+
 ;;; Code:
 
 (defvar authors-coding-system 'utf-8
@@ -76,7 +79,7 @@ files.")
     ("Gerd Möllmann" "Gerd Moellmann")
     ("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
     ("Hrvoje Nikšić" "Hrvoje Niksic")
-    ;; lisp/org/ChangeLog 2010-11-11.
+    ;; lisp/org/ChangeLog.1 2010-11-11.
     (nil "aaa bbb")
     (nil "Code Extracted") ; lisp/newcomment.el's "Author:" header
     ("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
@@ -650,6 +653,7 @@ Changes to files in this list are not listed.")
     "calc/calc-maint.el"
     "emacs-lisp/cl-specs.el"
     "emacs-lisp/eieio-comp.el"
+    "emacs-lisp/eieio-generic.el"
     "erc-hecomplete.el"
     "eshell/esh-maint.el"
     "language/persian.el"
@@ -800,6 +804,7 @@ in the repository.")
     ("play/yow.el" . "yow.el")
     ("patcomp.el" . "patcomp.el")
     ("emulation/ws-mode.el" . "ws-mode.el")
+    ("vc/vc-arch.el" . "vc-arch.el")
     ;; From lisp to etc/forms.
     ("forms-d2.el" . "forms-d2.el")
     ("forms-pass.el" . "forms-pass.el")
@@ -811,6 +816,9 @@ in the repository.")
     ("eshell/esh-test.el" . "automated/eshell.el")
     ("automated/cl-lib.el" . "automated/cl-lib-tests.el")
     ("automated/package-x-test.el" . "automated/package-test.el")
+    ("indent/js-indent-first-initialiser-t.js" . "indent/js-indent-init-t.js")
+    ("indent/js-indent-first-initialiser-dynamic.js" .
+     "indent/js-indent-init-dynamic.js")
     ;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
     ("INSTALL-CVS" . "INSTALL.REPO")
     ("INSTALL.CVS" . "INSTALL.REPO")
@@ -971,10 +979,8 @@ Elements with LAX non-nil are only used in 
`authors-lax-changelogs'.")
 ;; Eg the progmodes/ (etc) directories did not exist before 1997.
 ;; Also, lib-src/ did not exist, the files were in etc/.
 ;; And various other things.
-;; Maybe this should just be any ChangeLog with a . extension,
-;; assuming we always fix logs fully before rotating them?
 (defconst authors-lax-changelogs
-  '("erc/ChangeLog\\.0[1-8]\\'"
+  '("erc/ChangeLog\\.1\\'"
     "gnus/ChangeLog\\.[1-2]\\'"
     "lisp/ChangeLog\\.\\([1-9]\\|1[0-5]\\)\\'"
     "mh-e/ChangeLog\\.1\\'"
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index 8f8b031..d326282 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -31,30 +31,45 @@ General steps (for each step, check for possible errors):
       M-x authors RET
 
     If there is an "*Authors Errors*" buffer, address the issues.
-    If there was a ChangeLog typo, fix it.  If a file was deleted or
-    renamed, consider adding an appropriate entry to authors-ignored-files,
-    authors-valid-file-names, or authors-renamed-files-alist.
+    If there was a ChangeLog typo, run "make change-history" and then
+    fix the newest ChangeLog history file.  If a file was deleted or
+    renamed, consider adding an appropriate entry to
+    authors-ignored-files, authors-valid-file-names, or
+    authors-renamed-files-alist.
 
     If necessary, repeat M-x authors after making those changes.
     Save the "*Authors*" buffer as etc/AUTHORS.
     Check the diff looks reasonable.  Maybe add entries to
     authors-ambiguous-files or authors-aliases, and repeat.
-    Commit any fixes to ChangeLogs or authors.el.
+    Commit any fixes to authors.el.
 
 3.  Set the version number (M-x load-file RET admin/admin.el RET, then
     M-x set-version RET).  For a release, add released ChangeLog
-    entries (M-x add-release-logs RET).
+    entries (create a ChangeLog symlink a la vc-dwim, then run M-x
+    add-release-logs RET, then run the shell command 'vc-dwim --commit').
 
     For a pretest, start at version .90.  After .99, use .990 (so that
     it sorts).
 
     The final pretest should be a release candidate.  Set the version
     number to that of the actual release.  Pick a date about a week
-    from now when you intend to make the release.  Use M-x add-release-logs
-    to add the ChangeLog entries for that date to the tar file (but
-    not yet to the repository).  Name the tar file as
-    emacs-XX.Y-rc1.tar.  If all goes well in the following week, you
-    can simply rename the file and use it for the actual release.
+    from now when you intend to make the release.  Use vc-dwim and
+    M-x add-release-logs as described above to add commit messages
+    that will appear in the tarball's automatically-generated ChangeLog
+    file as entries for that date.
+
+    Name the tar file as emacs-XX.Y-rc1.tar.  If all goes well in the
+    following week, you can simply rename the file and use it for the
+    actual release.  If you need another release candidate, remember
+    to adjust the ChangeLog entries.
+
+    If you need to change only a file(s) that cannot possibly affect
+    the build (README, ChangeLog, NEWS, etc.) then rather than doing
+    an entirely new build, it is better to unpack the existing
+    tarfile, modify the file(s), and tar it back up again.
+
+    Never replace an existing tarfile!  If you need to fix something,
+    always upload it with a different name.
 
 4.   autoreconf -i -I m4 --force
      make bootstrap
@@ -65,8 +80,7 @@ General steps (for each step, check for possible errors):
 5.  Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
 
     Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
-    by M-x set-version. For a release, also commit the ChangeLog
-    files in all directories.
+    by M-x set-version.
 
     If someone else made a commit between step 1 and now,
     you need to repeat from step 4 onwards.  (You can commit the files
@@ -154,8 +168,38 @@ General steps (for each step, check for possible errors):
     of past announcements.  The first pretest announcement, and the
     release announcement, should have more detail.
 
-12. For a release, update the Emacs homepage emacs.html in the web repository.
-    Also update history.html, and add the new NEWS file as news/NEWS.xx.y.
-    Regenerate the html manuals (use make-manuals from admin.el).
-    If there are new manuals, add appropriate index pages.
-    Delete any old manual pages that are no longer present.
+12. After a release, update the Emacs pages as below.
+
+
+UPDATING THE EMACS WEB PAGES AFTER A RELEASE
+
+As soon as possible after a release, the Emacs web pages should be updated.
+Anyone with write access to the Emacs code repository can do this.
+For instructions, see <http://savannah.gnu.org/cvs/?group=emacs>.
+Changes go live more or less as soon as they are committed.
+
+The pages to update are:
+
+emacs.html (for a new major release, a more thorough update is needed)
+history.html
+add the new NEWS file as news/NEWS.xx.y
+
+Use M-x make-manuals from admin/admin.el to regenerate the html
+manuals in manual/.  If there are new manuals, add appropriate index
+pages in manual/ and add them to manual/index.html.  In the
+manual/html_node directory, delete any old manual pages that are no
+longer present.
+
+Tar up the generated html_node/emacs/ and elisp/ directories and update
+the files manual/elisp.html_node.tar.gz and emacs.html_node.tar.gz.
+
+Use M-x make-manuals-dist from from admin/admin.el to update the
+manual/texi/ tarfiles.
+
+Add compressed copies of the main info pages from the tarfile to manual/info/.
+
+Update the refcards/pdf/ and ps/ directories, and also
+refcards/emacs-refcards.tar.gz (use make -C etc/refcards pdf ps dist).
+
+Browsing <http://web.cvs.savannah.gnu.org/viewvc/?root=emacs> is one
+way to check for any files that still need updating.
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 9e2b10d..e63422b 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -31,7 +31,7 @@ GNULIB_MODULES='
   crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
   dtoastr dtotimespec dup2 environ execinfo faccessat
   fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
-  getloadavg getopt-gnu gettime gettimeofday
+  getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
   intprops largefile lstat
   manywarnings memrchr mkostemp mktime
   pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
diff --git a/admin/notes/repo b/admin/notes/repo
index 4f9dc59..f38fd2c 100644
--- a/admin/notes/repo
+++ b/admin/notes/repo
@@ -10,10 +10,10 @@ instructions.
 * Install changes only on one branch, let them get merged elsewhere if needed.
 
 In particular, install bug-fixes only on the release branch (if there
-is one) and let them get synced to the trunk; do not install them by
-hand on the trunk as well.  E.g. if there is an active "emacs-24" branch
+is one) and let them get synced to the master; do not install them by
+hand on the master as well.  E.g. if there is an active "emacs-24" branch
 and you have a bug-fix appropriate for the next emacs-24.x release,
-install it only on the emacs-24 branch, not on the trunk as well.
+install it only on the emacs-24 branch, not on the master as well.
 
 Installing things manually into more than one branch makes merges more
 difficult.
@@ -21,10 +21,10 @@ difficult.
 http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01124.html
 
 The exception is, if you know that the change will be difficult to
-merge to the trunk (eg because the trunk code has changed a lot).
-In that case, it's helpful if you can apply the change to both trunk
+merge to the master (eg because the master code has changed a lot).
+In that case, it's helpful if you can apply the change to both master
 and branch yourself (when committing the branch change, indicate
-in the commit log that it should not be merged to the trunk, by
+in the commit log that it should not be merged to the master, by
 including the phrase "Not to be merged to master", or any other phrase
 that matches "merge").
 
@@ -32,14 +32,14 @@ that matches "merge").
 
 If your branch has only a single commit, or many different real
 commits, it is fine to do a merge.  If your branch has only a very
-small number of "real" commits, but several "merge from trunks", it is
-preferred that you take your branch's diff, apply it to the trunk, and
+small number of "real" commits, but several "merge from masters", it is
+preferred that you take your branch's diff, apply it to the master, and
 commit directly, not merge.  This keeps the history cleaner.
 
 In general, when working on some feature in a separate branch, it is
-preferable not to merge from trunk until you are done with the
+preferable not to merge from master until you are done with the
 feature.  Unless you really need some change that was done on the
-trunk while you were developing on the branch, you don't really need
+master while you were developing on the branch, you don't really need
 those merges; just merge once, when you are done with the feature, and
 Bazaar will take care of the rest.  Bazaar is much better in this than
 CVS, so interim merges are unnecessary.
@@ -66,22 +66,14 @@ variable in admin/merge-gnulib before running it.
 If you remove a gnulib module, or if a gnulib module
 removes a file, then remove the corresponding files by hand.
 
-* How to merge changes from emacs-24 to trunk
+* How to merge changes from emacs-24 to master
 
-[The section on git merge procedure has not yet been written]
-
-Inspect the change log entries (e.g. in case too many entries have been
-included or whitespace between entries needs fixing). If someone made
-multiple change log entries on different days in the branch, you may
-wish to collapse them all to a single entry for that author in the
-trunk (because in the trunk they all appear under the same date).
-Obviously, if there are multiple changes to the same file by different
-authors, don't break the logical ordering in doing this.
+[The section on git merge procedure has not yet been written.]
 
 You may see conflicts in autoload md5sums in comments.  Strictly
 speaking, the right thing to do is merge everything else, resolve the
-conflict by choosing either the trunk or branch version, then run
-`make -C lisp autoloads' to update the md5sums to the correct trunk
+conflict by choosing either the master or branch version, then run
+`make -C lisp autoloads' to update the md5sums to the correct master
 value before committing.
 
 * Re-adding a file that has been removed from the repository
@@ -124,3 +116,21 @@ again.
 
 This is a semi-automated way to find the revision that introduced a bug.
 Browse `git help bisect' for technical instructions.
+
+* Maintaining ChangeLog history
+
+Older ChangeLog entries are kept in history files named ChangeLog.1,
+ChangeLog.2, etc., and can be edited just as any other source files
+can.  Newer ChangeLog entries are stored in the repository as commit
+messages, which cannot be edited directly.
+
+'make ChangeLog' copies newer ChangeLog entries into a file
+'ChangeLog' that is intended to be put into the distribution tarball.
+This ChangeLog file is not put into the repository.
+
+'make change-history' copies all newer ChangeLog entries into the
+start of the newest ChangeLog history file.  These ChangeLog entries
+are thereafter considered to be old, so later uses of 'make ChangeLog'
+and/or 'make change-history' will no longer copy the entries.  To
+alter ChangeLog history, run 'make change-history', then edit
+the ChangeLog history files manually and commit your changes.
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index 8af6fa0..583d492 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -102,7 +102,8 @@
         (tail table)
         (block-names '(("^<CJK Ideograph" . CJK\ IDEOGRAPH)
                        ("^<Hangul Syllable" . HANGUL\ SYLLABLE)
-                       ("^<.*Surrogate" . nil)
+                       ("^<.*High Surrogate" . HIGH\ SURROGATE)
+                       ("^<.*Low Surrogate" . LOW\ SURROGATE)
                        ("^<.*Private Use" . PRIVATE\ USE)))
         val char name)
     (setq unidata-text-file (expand-file-name unidata-text-file unidata-dir))
@@ -137,11 +138,8 @@
                    (if (string-match (caar l) block-name)
                        (setq name (cdar l) l nil)
                      (setq l (cdr l))))
-                 (if (not name)
-                     ;; As this is a surrogate pair range, ignore it.
-                     (setq val nil)
-                   (setcar val (cons first char))
-                   (setcar (cdr val) name))))
+                 (setcar val (cons first char))
+                 (setcar (cdr val) name)))
 
            (when val
              (setcdr tail (list val))
@@ -783,6 +781,10 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' 
(None)."
             (format "%s-%04X" sym char))
            ((eq sym 'CJK\ COMPATIBILITY\ IDEOGRAPH)
             (format "%s-%04X" sym char))
+           ((eq sym 'HIGH\ SURROGATE)
+            (format "%s-%04X" sym char))
+           ((eq sym 'LOW\ SURROGATE)
+            (format "%s-%04X" sym char))
            ((eq sym 'VARIATION\ SELECTOR)
             (format "%s-%d" sym (+ (- char #xe0100) 17))))))))
 
diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg
index 13a0535..9661376 100755
--- a/build-aux/git-hooks/commit-msg
+++ b/build-aux/git-hooks/commit-msg
@@ -29,41 +29,55 @@ fi
 
 # Use a UTF-8 locale if available, so that the UTF-8 check works.
 # Use U+00A2 CENT SIGN to test whether the locale works.
-cent_sign_utf8_octal='\302\242'
-at_sign=`
-  printf "${cent_sign_utf8_octal}@" |
-  $awk '{print substr($0, 2)}' 2>/dev/null
-`
+cent_sign_utf8_format='\302\242\n'
+cent_sign=`printf "$cent_sign_utf8_format"`
+print_at_sign='BEGIN {print substr("'$cent_sign'@", 2)}'
+at_sign=`$awk "$print_at_sign" </dev/null 2>/dev/null`
 if test "$at_sign" != @; then
-  at_sign=`
-    printf "${cent_sign_utf8_octal}@" |
-    LC_ALL=en_US.UTF-8 $awk '{print substr($0, 2)}' 2>/dev/null
-  `
+  at_sign=`LC_ALL=en_US.UTF-8 $awk "$print_at_sign" </dev/null 2>/dev/null`
   if test "$at_sign" = @; then
-    LC_ALL=en_US.UTF-8; export LC_ALL
+    LC_ALL=en_US.UTF-8
+  else
+    LC_ALL=C
   fi
+  export LC_ALL
 fi
 
 # Check the log entry.
-exec $awk '
+exec $awk -v at_sign="$at_sign" -v cent_sign="$cent_sign" '
   BEGIN {
+    # These regular expressions assume traditional Unix unibyte behavior.
+    # They are needed for old or broken versions of awk, e.g.,
+    # mawk 1.3.3 (1996), or gawk on MSYS (2015), and/or for systems that
+    # cannot use UTF-8 as the codeset for the locale.
+    space = "[ \f\n\r\t\v]"
+    non_space = "[^ \f\n\r\t\v]"
+    # The non_print below rejects control characters and surrogates
+    # UTF-8 for: 0x01-0x1f 0x7f   0x80-0x9f  0xd800-0xdbff  0xdc00-0xdfff
+    non_print = "[\1-\37\177]|\302[\200-\237]|\355[\240-\277][\200-\277]"
+
+    # Prefer POSIX regular expressions if available, as they do a
+    # better job of checking.  Similarly, prefer POSIX negated
+    # expressions if UTF-8 also works.
     if (" " ~ /[[:space:]]/) {
       space = "[[:space:]]"
-      non_space = "[^[:space:]]"
-      non_print = "[^[:print:]]"
-    } else {
-      # mawk 1.3.3 does not support POSIX bracket expressions.
-      # Approximate them as best we can.
-      space = "[ \f\n\r\t\v]"
-      non_space = "[^ \f\n\r\t\v]"
-      non_print = "[\1-\37\177]"
+      if (at_sign == "@" && cent_sign ~ /^[[:print:]]$/) {
+        non_space = "[^[:space:]]"
+        non_print = "[^[:print:]]"
+      }
     }
   }
 
-  /^#/ { next }
+  /^#/ {
+    # Ignore every line after a scissors line.
+    if (/^# *---* *(>[8%]|[8%]<) *---* *$/) { exit }
+
+    # Ignore comment lines.
+    next
+  }
 
   !/^.*$/ {
-    print "Invalid character (not UTF-8) in commit message; see 'CONTRIBUTE'"
+    print "Invalid character (not UTF-8) in commit message"
     status = 1
   }
 
@@ -77,13 +91,13 @@ exec $awk '
       sub(/^squash! /, "")
 
     if ($0 ~ "^" space) {
-      print "White space at start of commit message'\''s first line; see 
'CONTRIBUTE'"
+      print "White space at start of commit message'\''s first line"
       status = 1
     }
   }
 
   nlines == 2 && $0 ~ non_space {
-    print "Nonempty second line in commit message; see 'CONTRIBUTE'"
+    print "Nonempty second line in commit message"
     status = 1
   }
 
@@ -97,30 +111,33 @@ exec $awk '
   }
 
   78 < length && $0 ~ space {
-    print "Line longer than 78 characters in commit message; see 'CONTRIBUTE'"
+    print "Line longer than 78 characters in commit message"
     status = 1
   }
 
   140 < length {
-    print "Word longer than 140 characters in commit message; see 'CONTRIBUTE'"
+    print "Word longer than 140 characters in commit message"
     status = 1
   }
 
   /^Signed-off-by: / {
-    print "'\''Signed-off-by:'\'' in commit message; see 'CONTRIBUTE'"
+    print "'\''Signed-off-by:'\'' in commit message"
     status = 1
   }
 
   $0 ~ non_print {
-    print "Unprintable character in commit message; see 'CONTRIBUTE'"
+    print "Unprintable character in commit message"
     status = 1
   }
 
   END {
     if (nlines == 0) {
-      print "Empty commit message; see 'CONTRIBUTE'"
+      print "Empty commit message"
       status = 1
     }
+    if (status != 0) {
+      print "Commit aborted; please see the file 'CONTRIBUTE'"
+    }
     exit status
   }
 ' <"$1"
diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit
index d050c40..8bce1f5 100755
--- a/build-aux/git-hooks/pre-commit
+++ b/build-aux/git-hooks/pre-commit
@@ -34,13 +34,15 @@ if test "$nbadchars" -ne 0; then
   exit 1
 fi
 
-new_names=`$git_diff HEAD` || exit
-case "
-$new_names" in
-  */-* | *'
-'-*)
-    echo "File name component begins with '-'."
-    exit 1;;
-esac
+for new_name in `$git_diff HEAD`; do
+  case $new_name in
+    -* | */-*)
+      echo "$new_name: File name component begins with '-'."
+      exit 1;;
+    ChangeLog | */ChangeLog)
+      echo "$new_name: Please use git commit messages, not ChangeLog files."
+      exit 1;;
+  esac
+done
 
 exec git diff-index --check --cached HEAD --
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
new file mode 100755
index 0000000..3f4b06a
--- /dev/null
+++ b/build-aux/gitlog-to-changelog
@@ -0,0 +1,445 @@
+eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
+  & eval 'exec perl -wS "$0" $argv:q'
+    if 0;
+# Convert git log output to ChangeLog format.
+
+my $VERSION = '2015-04-09 16:03'; # UTC
+# The definition above must lie within the first 8 lines in order
+# for the Emacs time-stamp write hook (at end) to update it.
+# If you change this file with Emacs, please let the write hook
+# do its job.  Otherwise, update this string manually.
+
+# Copyright (C) 2008-2015 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Jim Meyering
+
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX qw(strftime);
+
+(my $ME = $0) =~ s|.*/||;
+
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
+sub usage ($)
+{
+  my ($exit_code) = @_;
+  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
+  if ($exit_code != 0)
+    {
+      print $STREAM "Try '$ME --help' for more information.\n";
+    }
+  else
+    {
+      print $STREAM <<EOF;
+Usage: $ME [OPTIONS] [ARGS]
+
+Convert git log output to ChangeLog format.  If present, any ARGS
+are passed to "git log".  To avoid ARGS being parsed as options to
+$ME, they may be preceded by '--'.
+
+OPTIONS:
+
+   --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that
+                  makes a change to SHA1's commit log text or metadata.
+   --append-dot append a dot to the first line of each commit message if
+                  there is no other punctuation or blank at the end.
+   --no-cluster never cluster commit messages under the same date/author
+                  header; the default is to cluster adjacent commit messages
+                  if their headers are the same and neither commit message
+                  contains multiple paragraphs.
+   --srcdir=DIR the root of the source tree, from which the .git/
+                  directory can be derived.
+   --since=DATE convert only the logs since DATE;
+                  the default is to convert all log entries.
+   --until=DATE convert only the logs older than DATE.
+   --ignore-matching=PAT ignore commit messages whose first lines match PAT.
+   --format=FMT set format string for commit subject and body;
+                  see 'man git-log' for the list of format metacharacters;
+                  the default is '%s%n%b%n'
+   --strip-tab  remove one additional leading TAB from commit message lines.
+   --strip-cherry-pick  remove data inserted by "git cherry-pick";
+                  this includes the "cherry picked from commit ..." line,
+                  and the possible final "Conflicts:" paragraph.
+   --help       display this help and exit
+   --version    output version information and exit
+
+EXAMPLE:
+
+  $ME --since=2008-01-01 > ChangeLog
+  $ME -- -n 5 foo > last-5-commits-to-branch-foo
+
+SPECIAL SYNTAX:
+
+The following types of strings are interpreted specially when they appear
+at the beginning of a log message line.  They are not copied to the output.
+
+  Copyright-paperwork-exempt: Yes
+    Append the "(tiny change)" notation to the usual "date name email"
+    ChangeLog header to mark a change that does not require a copyright
+    assignment.
+  Co-authored-by: Joe User <address@hidden>
+    List the specified name and email address on a second
+    ChangeLog header, denoting a co-author.
+  Signed-off-by: Joe User <address@hidden>
+    These lines are simply elided.
+
+In a FILE specified via --amend, comment lines (starting with "#") are ignored.
+FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on
+a line) referring to a commit in the current project, and CODE refers to one
+or more consecutive lines of Perl code.  Pairs must be separated by one or
+more blank line.
+
+Here is sample input for use with --amend=FILE, from coreutils:
+
+3a169f4c5d9159283548178668d2fae6fced3030
+# fix typo in title:
+s/all tile types/all file types/
+
+1379ed974f1fa39b12e2ffab18b3f7a607082202
+# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself.
+# Change the author to be Paul.  Note the escaped "@":
+s,Jim .*>,Paul Eggert <address@hidden>,
+
+EOF
+    }
+  exit $exit_code;
+}
+
+# If the string $S is a well-behaved file name, simply return it.
+# If it contains white space, quotes, etc., quote it, and return the new 
string.
+sub shell_quote($)
+{
+  my ($s) = @_;
+  if ($s =~ m![^\w+/.,-]!)
+    {
+      # Convert each single quote to '\''
+      $s =~ s/\'/\'\\\'\'/g;
+      # Then single quote the string.
+      $s = "'$s'";
+    }
+  return $s;
+}
+
+sub quoted_cmd(@)
+{
+  return join (' ', map {shell_quote $_} @_);
+}
+
+# Parse file F.
+# Comment lines (starting with "#") are ignored.
+# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1
+# (alone on a line) referring to a commit in the current project, and
+# CODE refers to one or more consecutive lines of Perl code.
+# Pairs must be separated by one or more blank line.
+sub parse_amend_file($)
+{
+  my ($f) = @_;
+
+  open F, '<', $f
+    or die "$ME: $f: failed to open for reading: $!\n";
+
+  my $fail;
+  my $h = {};
+  my $in_code = 0;
+  my $sha;
+  while (defined (my $line = <F>))
+    {
+      $line =~ /^\#/
+        and next;
+      chomp $line;
+      $line eq ''
+        and $in_code = 0, next;
+
+      if (!$in_code)
+        {
+          $line =~ /^([0-9a-fA-F]{40})$/
+            or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"),
+              $fail = 1, next;
+          $sha = lc $1;
+          $in_code = 1;
+          exists $h->{$sha}
+            and (warn "$ME: $f:$.: duplicate SHA1\n"),
+              $fail = 1, next;
+        }
+      else
+        {
+          $h->{$sha} ||= '';
+          $h->{$sha} .= "$line\n";
+        }
+    }
+  close F;
+
+  $fail
+    and exit 1;
+
+  return $h;
+}
+
+# git_dir_option $SRCDIR
+#
+# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
+# is undef).  Return as a list (0 or 1 element).
+sub git_dir_option($)
+{
+  my ($srcdir) = @_;
+  my @res = ();
+  if (defined $srcdir)
+    {
+      my $qdir = shell_quote $srcdir;
+      my $cmd = "cd $qdir && git rev-parse --show-toplevel";
+      my $qcmd = shell_quote $cmd;
+      my $git_dir = qx($cmd);
+      defined $git_dir
+        or die "$ME: cannot run $qcmd: $!\n";
+      $? == 0
+        or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
+      chomp $git_dir;
+      push @res, "--git-dir=$git_dir/.git";
+    }
+  @res;
+}
+
+{
+  my $since_date;
+  my $until_date;
+  my $format_string = '%s%n%b%n';
+  my $amend_file;
+  my $append_dot = 0;
+  my $cluster = 1;
+  my $ignore_matching;
+  my $strip_tab = 0;
+  my $strip_cherry_pick = 0;
+  my $srcdir;
+  GetOptions
+    (
+     help => sub { usage 0 },
+     version => sub { print "$ME version $VERSION\n"; exit },
+     'since=s' => \$since_date,
+     'until=s' => \$until_date,
+     'format=s' => \$format_string,
+     'amend=s' => \$amend_file,
+     'append-dot' => \$append_dot,
+     'cluster!' => \$cluster,
+     'ignore-matching=s' => \$ignore_matching,
+     'strip-tab' => \$strip_tab,
+     'strip-cherry-pick' => \$strip_cherry_pick,
+     'srcdir=s' => \$srcdir,
+    ) or usage 1;
+
+  defined $since_date
+    and unshift @ARGV, "--since=$since_date";
+  defined $until_date
+    and unshift @ARGV, "--until=$until_date";
+
+  # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/)
+  # that makes a correction in the log or attribution of that commit.
+  my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
+
+  my @cmd = ('git',
+             git_dir_option $srcdir,
+             qw(log --log-size),
+             '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
+  open PIPE, '-|', @cmd
+    or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n"
+            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n");
+
+  my $prev_multi_paragraph;
+  my $prev_date_line = '';
+  my @prev_coauthors = ();
+  while (1)
+    {
+      defined (my $in = <PIPE>)
+        or last;
+      $in =~ /^log size (\d+)$/
+        or die "$ME:$.: Invalid line (expected log size):\n$in";
+      my $log_nbytes = $1;
+
+      my $log;
+      my $n_read = read PIPE, $log, $log_nbytes;
+      $n_read == $log_nbytes
+        or die "$ME:$.: unexpected EOF\n";
+
+      # Extract leading hash.
+      my ($sha, $rest) = split ':', $log, 2;
+      defined $sha
+        or die "$ME:$.: malformed log entry\n";
+      $sha =~ /^[0-9a-fA-F]{40}$/
+        or die "$ME:$.: invalid SHA1: $sha\n";
+
+      # If this commit's log requires any transformation, do it now.
+      my $code = $amend_code->{$sha};
+      if (defined $code)
+        {
+          eval 'use Safe';
+          my $s = new Safe;
+          # Put the unpreprocessed entry into "$_".
+          $_ = $rest;
+
+          # Let $code operate on it, safely.
+          my $r = $s->reval("$code")
+            or die "$ME:$.:$sha: failed to eval \"$code\":address@hidden";
+
+          # Note that we've used this entry.
+          delete $amend_code->{$sha};
+
+          # Update $rest upon success.
+          $rest = $_;
+        }
+
+      # Remove lines inserted by "git cherry-pick".
+      if ($strip_cherry_pick)
+        {
+          $rest =~ s/^\s*Conflicts:\n.*//sm;
+          $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m;
+        }
+
+      my @line = split /\s*\n/, $rest;
+      my $author_line = shift @line;
+      defined $author_line
+        or die "$ME:$.: unexpected EOF\n";
+      $author_line =~ /^(\d+)  (.*>)$/
+        or die "$ME:$.: Invalid line "
+          . "(expected date/author/email):\n$author_line\n";
+
+      # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog
+      # `(tiny change)' annotation.
+      my $tiny = (grep (/^Copyright-paperwork-exempt:\s+[Yy]es$/, @line)
+                  ? '  (tiny change)' : '');
+
+      my $date_line = sprintf "%s  %s$tiny\n",
+        strftime ("%Y-%m-%d", localtime ($1)), $2;
+
+      my @coauthors = grep /^Co-authored-by:.*$/, @line;
+      # Omit meta-data lines we've already interpreted.
+      @line = grep !/^(?:Signed-off-by:[ ].*>$
+                       |Co-authored-by:[ ]
+                       |Copyright-paperwork-exempt:[ ]
+                       )/x, @line;
+
+      # Remove leading and trailing blank lines.
+      if (@line)
+        {
+          while ($line[0] =~ /^\s*$/) { shift @line; }
+          while ($line[$#line] =~ /^\s*$/) { pop @line; }
+        }
+
+      # Ignore commits that match the --ignore-matching pattern, if specified.
+      if (! (defined $ignore_matching
+             && @line && $line[0] =~ /$ignore_matching/))
+        {
+          # Record whether there are two or more paragraphs.
+          my $multi_paragraph = grep /^\s*$/, @line;
+
+          # Format 'Co-authored-by: A U Thor <address@hidden>' lines in
+          # standard multi-author ChangeLog format.
+          for (@coauthors)
+            {
+              s/^Co-authored-by:\s*/\t    /;
+              s/\s*</  </;
+
+              /<address@hidden>/
+                or warn "$ME: warning: missing email address for "
+                  . substr ($_, 5) . "\n";
+            }
+
+          # If clustering of commit messages has been disabled, if this header
+          # would be different from the previous date/name/etc. header,
+          # or if this or the previous entry consists of two or more 
paragraphs,
+          # then print the header.
+          if ( ! $cluster
+              || $date_line ne $prev_date_line
+              || "@coauthors" ne "@prev_coauthors"
+              || $multi_paragraph
+              || $prev_multi_paragraph)
+            {
+              $prev_date_line eq ''
+                or print "\n";
+              print $date_line;
+              @coauthors
+                and print join ("\n", @coauthors), "\n";
+            }
+          $prev_date_line = $date_line;
+          @prev_coauthors = @coauthors;
+          $prev_multi_paragraph = $multi_paragraph;
+
+          # If there were any lines
+          if (@line == 0)
+            {
+              warn "$ME: warning: empty commit message:\n  $date_line\n";
+            }
+          else
+            {
+              if ($append_dot)
+                {
+                  # If the first line of the message has enough room, then
+                  if (length $line[0] < 72)
+                    {
+                      # append a dot if there is no other punctuation or blank
+                      # at the end.
+                      $line[0] =~ /[[:punct:]\s]$/
+                        or $line[0] .= '.';
+                    }
+                }
+
+              # Remove one additional leading TAB from each line.
+              $strip_tab
+                and map { s/^\t// } @line;
+
+              # Prefix each non-empty line with a TAB.
+              @line = map { length $_ ? "\t$_" : '' } @line;
+
+              print "\n", join ("\n", @line), "\n";
+            }
+        }
+
+      defined ($in = <PIPE>)
+        or last;
+      $in ne "\n"
+        and die "$ME:$.: unexpected line:\n$in";
+    }
+
+  close PIPE
+    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n";
+  # FIXME-someday: include $PROCESS_STATUS in the diagnostic
+
+  # Complain about any unused entry in the --amend=F specified file.
+  my $fail = 0;
+  foreach my $sha (keys %$amend_code)
+    {
+      warn "$ME:$amend_file: unused entry: $sha\n";
+      $fail = 1;
+    }
+
+  exit $fail;
+}
+
+# Local Variables:
+# mode: perl
+# indent-tabs-mode: nil
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "my $VERSION = '"
+# time-stamp-format: "%:y-%02m-%02d %02H:%02M"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "'; # UTC"
+# End:
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog
new file mode 100755
index 0000000..a523d86
--- /dev/null
+++ b/build-aux/gitlog-to-emacslog
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+# Convert git log output to ChangeLog format for GNU Emacs.
+
+# Copyright (C) 2014-2015 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Written by Paul Eggert
+
+LC_ALL=C
+export LC_ALL
+
+gen_origin=${1?}
+
+# If this is not a Git repository, just generate an empty ChangeLog.
+test -d ${srcprefix}.git || {
+  # Remove any old ChangeLog, in case it is a vc-dwim symlink.
+  rm -f "${distprefix}ChangeLog" || exit
+  >"${distprefix}ChangeLog"
+  exit
+}
+
+# Use Gnulib's packaged ChangeLog generator.
+${srcprefix}build-aux/gitlog-to-changelog --ignore-matching='^; ' \
+  "$gen_origin.." >"${distprefix}ChangeLog.tmp" || exit
+
+if test -s "${distprefix}ChangeLog.tmp"; then
+
+  # Find the years covered by the generated ChangeLog, so that
+  # a proper copyright notice can be output.
+  years=`
+    sed -n 's/^\([0-9][0-9]*\).*/\1/p' "${distprefix}ChangeLog.tmp" |
+    sort -nu
+  `
+  start_year=
+  end_year=
+  for year in $years; do
+    : ${start_year:=$year}
+    end_year=$year
+  done
+
+  if test "$start_year" = "$end_year"; then
+    year_range=$start_year
+  else
+    year_range=$start_year-$end_year
+  fi
+
+  # Append a proper copyright notice.
+  sed -n '
+    1i\
+
+    /^;; Local Variables:/,${
+       s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/
+       p
+    }
+  ' <ChangeLog.1 >>"${distprefix}ChangeLog.tmp" || exit
+fi
+
+# Install the generated ChangeLog.
+mv -i "${distprefix}ChangeLog.tmp" "${distprefix}ChangeLog"
diff --git a/configure.ac b/configure.ac
index 8245d3f..86b5e7e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 dnl  Autoconf script for GNU Emacs
-dnl To rebuild the `configure' script from this, execute the command
-dnl    autoconf
+dnl To rebuild the 'configure' script from this, execute the command
+dnl    autoconf
 dnl in the directory containing this script.
 dnl If you changed any AC_DEFINES, also run autoheader.
 dnl
@@ -269,11 +269,6 @@ if test "$with_hesiod" != no; then
   AC_DEFINE(HESIOD, 1, [Define to support using a Hesiod database to find the 
POP server.])
 fi
 
-OPTION_DEFAULT_OFF([mmdf],[support MMDF mailboxes])
-if test "$with_mmdf" != no; then
-   AC_DEFINE(MAIL_USE_MMDF, 1, [Define to support MMDF mailboxes in movemail.])
-fi
-
 OPTION_DEFAULT_OFF([mail-unlink],[unlink, rather than empty, mail spool after 
reading])
 if test "$with_mail_unlink" != no; then
    AC_DEFINE(MAIL_UNLINK_SPOOL, 1, [Define to unlink, rather than empty, mail 
spool after reading.])
@@ -288,8 +283,8 @@ AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
 default yes).  Only for GNU/Linux, FreeBSD, NetBSD, MinGW, Cygwin.])],
   [ case "${withval}" in
       yes|no|alsa|oss|bsd-ossaudio) val=$withval ;;
-      *) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
-this option's value should be `yes', `no', `alsa', `oss', or `bsd-ossaudio'.])
+      *) AC_MSG_ERROR(['--with-sound=$withval' is invalid;
+this option's value should be 'yes', 'no', 'alsa', 'oss', or 'bsd-ossaudio'.])
       ;;
     esac
     with_sound=$val
@@ -312,10 +307,10 @@ 
AC_ARG_WITH([x-toolkit],[AS_HELP_STRING([--with-x-toolkit=KIT],
            gtk2  )     val=gtk2 ;;
            gtk3  )     val=gtk3 ;;
            * )
-AC_MSG_ERROR([`--with-x-toolkit=$withval' is invalid;
-this option's value should be `yes', `no', `lucid', `athena', `motif', `gtk',
-`gtk2' or `gtk3'.  `yes' and `gtk' are synonyms.
-`athena' and `lucid' are synonyms.])
+AC_MSG_ERROR(['--with-x-toolkit=$withval' is invalid;
+this option's value should be 'yes', 'no', 'lucid', 'athena', 'motif', 'gtk',
+'gtk2' or 'gtk3'.  'yes' and 'gtk' are synonyms.
+'athena' and 'lucid' are synonyms.])
            ;;
          esac
          with_x_toolkit=$val
@@ -364,10 +359,10 @@ 
AC_ARG_WITH([file-notification],[AS_HELP_STRING([--with-file-notification=LIB],
     g | gf | gfi | gfil | gfile )      val=gfile ;;
     i | in | ino | inot | inoti | inotif | inotify )   val=inotify ;;
     w | w3 | w32 )     val=w32 ;;
-    * ) AC_MSG_ERROR([`--with-file-notification=$withval' is invalid;
-this option's value should be `yes', `no', `gfile', `inotify' or `w32'.
-`yes' is a synonym for `w32' on MS-Windows, for `no' on Nextstep,
-otherwise for the first of `gfile' or `inotify' that is usable.])
+    * ) AC_MSG_ERROR(['--with-file-notification=$withval' is invalid;
+this option's value should be 'yes', 'no', 'gfile', 'inotify' or 'w32'.
+'yes' is a synonym for 'w32' on MS-Windows, for 'no' on Nextstep,
+otherwise for the first of 'gfile' or 'inotify' that is usable.])
     ;;
    esac
    with_file_notification=$val
@@ -466,8 +461,8 @@ do
                        ac_gc_check_cons_list=1 ;
                        ac_glyphs_debug=1 ;;
        # these enable particular checks
-       stringbytes)    ac_gc_check_stringbytes=1 ;;
-       stringoverrun)  ac_gc_check_string_overrun=1 ;;
+       stringbytes)    ac_gc_check_stringbytes=1 ;;
+       stringoverrun)  ac_gc_check_string_overrun=1 ;;
        stringfreelist) ac_gc_check_string_free_list=1 ;;
        xmallocoverrun) ac_xmalloc_overrun=1 ;;
        conslist)       ac_gc_check_cons_list=1 ;;
@@ -538,7 +533,7 @@ AC_SUBST(PROFILING_CFLAGS)
 AC_ARG_ENABLE(autodepend,
 [AS_HELP_STRING([--enable-autodepend],
                [automatically generate dependencies to .h-files.
-                Requires gcc, enabled if found.])],
+                Requires gcc, enabled if found.])],
 [ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
 
 AC_ARG_ENABLE(gtk-deprecation-warnings,
@@ -546,7 +541,7 @@ AC_ARG_ENABLE(gtk-deprecation-warnings,
                [Show Gtk+/Gdk deprecation warnings for Gtk+ >= 3.0])],
 [ac_enable_gtk_deprecation_warnings="${enableval}"],[])
 
-dnl This used to use changequote, but, apart from `changequote is evil'
+dnl This used to use changequote, but, apart from 'changequote is evil'
 dnl per the autoconf manual, we can speed up autoconf somewhat by quoting
 dnl the great gob of text.  Thus it's not processed for possible expansion.
 dnl Just make sure the brackets remain balanced.
@@ -653,7 +648,7 @@ case "${canonical}" in
   mips-sgi-irix6.5 )
     opsys=irix6-5
     # Without defining _LANGUAGE_C, things get masked out in the headers
-    # so that, for instance, grepping for `free' in stdlib.h fails and
+    # so that, for instance, grepping for 'free' in stdlib.h fails and
     # AC_HEADER_STD_C fails.   (MIPSPro 7.2.1.2m compilers, Irix 6.5.3m).
     NON_GCC_TEST_OPTIONS="-D_LANGUAGE_C"
   ;;
@@ -707,9 +702,9 @@ case "${canonical}" in
                # MinGW overrides and adds some system headers in nt/inc.
                GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
                ;;
-      *-sysv4.2uw* )           opsys=unixware ;;
-      *-sysv5uw* )             opsys=unixware ;;
-      *-sysv5OpenUNIX* )       opsys=unixware ;;
+      *-sysv4.2uw* )           opsys=unixware ;;
+      *-sysv5uw* )             opsys=unixware ;;
+      *-sysv5OpenUNIX* )       opsys=unixware ;;
       ## Otherwise, we'll fall through to the generic opsys code at the bottom.
     esac
   ;;
@@ -750,9 +745,9 @@ fi
 dnl quotation ends
 
 if test $unported = yes; then
-  AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
+  AC_MSG_ERROR([Emacs does not support '${canonical}' systems.
 If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
-Check `etc/MACHINES' for recognized configuration names.])
+Check 'etc/MACHINES' for recognized configuration names.])
 fi
 
 #### Choose a compiler.
@@ -886,6 +881,7 @@ if test "$gl_gcc_warnings" != yes; then
      gl_WARN_ADD([-Wno-tautological-constant-out-of-range-compare])
      gl_WARN_ADD([-Wno-pointer-sign])
      gl_WARN_ADD([-Wno-string-plus-int])
+     gl_WARN_ADD([-Wno-unknown-attributes])
   fi
 else
   isystem='-isystem '
@@ -1197,9 +1193,9 @@ if test "$MAKEINFO" = "no"; then
     HAVE_MAKEINFO=no
   elif test ! -e "$srcdir/info/emacs" && test ! -e "$srcdir/info/emacs.info"; 
then
     AC_MSG_ERROR( [You do not seem to have makeinfo >= 4.7, and your
-source tree does not seem to have pre-built manuals in the `info' directory.
+source tree does not seem to have pre-built manuals in the 'info' directory.
 Either install a suitable version of makeinfo, or re-run configure
-with the `--without-makeinfo' option to build without the manuals.] )
+with the '--without-makeinfo' option to build without the manuals.] )
   fi
 fi
 AC_SUBST(HAVE_MAKEINFO)
@@ -1223,8 +1219,8 @@ fi
 
 dnl We need -znocombreloc if we're using a relatively recent GNU ld.
 dnl If we can link with the flag, it shouldn't do any harm anyhow.
-dnl (Don't use `-z nocombreloc' as -z takes no arg on Irix.)
-dnl Treat GCC specially since it just gives a non-fatal `unrecognized option'
+dnl (Don't use '-z nocombreloc' as -z takes no arg on Irix.)
+dnl Treat GCC specially since it just gives a non-fatal 'unrecognized option'
 dnl if not built to support GNU ld.
 
 dnl For a long time, -znocombreloc was added to LDFLAGS rather than
@@ -1320,7 +1316,7 @@ esac
 LD_SWITCH_SYSTEM=
 case "$opsys" in
   freebsd|dragonfly)
-   ## Let `ld' find image libs and similar things in /usr/local/lib.
+   ## Let 'ld' find image libs and similar things in /usr/local/lib.
    ## The system compiler, GCC, has apparently been modified to not
    ## look there, contrary to what a stock GCC would do.
 ### It's not our place to do this.  See bug#10313#17.
@@ -1488,7 +1484,7 @@ esac
 
 AC_SUBST(LIB_MATH)
 AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE",
-  [The type of system you are compiling for; sets `system-type'.])
+  [The type of system you are compiling for; sets 'system-type'.])
 
 
 pre_PKG_CONFIG_CFLAGS=$CFLAGS
@@ -1543,12 +1539,12 @@ if test "${with_sound}" != "no"; then
       LIBS="$ALSA_LIBS $LIBS"
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], 
[[snd_lib_error_set_handler (0);]])],
                       emacs_alsa_normal=yes,
-                   emacs_alsa_normal=no)
+                   emacs_alsa_normal=no)
       if test "$emacs_alsa_normal" != yes; then
         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
                        [[snd_lib_error_set_handler (0);]])],
                        emacs_alsa_subdir=yes,
-                    emacs_alsa_subdir=no)
+                    emacs_alsa_subdir=no)
         if test "$emacs_alsa_subdir" != yes; then
           AC_MSG_ERROR([pkg-config found alsa, but it does not compile.  See 
config.log for error messages.])
         fi
@@ -1624,7 +1620,7 @@ if test "$ac_cv_header_sys_sysinfo_h" = yes; then
 fi
 
 dnl On Solaris 8 there's a compilation warning for term.h because
-dnl it doesn't define `bool'.
+dnl it doesn't define 'bool'.
 AC_CHECK_HEADERS(term.h, , , -)
 AC_HEADER_TIME
 AC_CHECK_DECLS([sys_siglist], [], [], [[#include <signal.h>
@@ -1838,7 +1834,7 @@ fail;
   CFLAGS="$CFLAGS $GNU_OBJC_CFLAGS"
 
   AC_CHECK_HEADER([AppKit/AppKit.h], [HAVE_NS=yes],
-                 [AC_MSG_ERROR([`--with-ns' was specified, but the include
+                 [AC_MSG_ERROR(['--with-ns' was specified, but the include
   files are missing or cannot be compiled.])])
 
   macfont_file=""
@@ -1859,7 +1855,7 @@ fail;
     AC_MSG_RESULT([$ns_osx_have_106])
 
     if test $ns_osx_have_106 = no; then
-       AC_MSG_ERROR([`OSX 10.6 or newer is required']);
+       AC_MSG_ERROR([OSX 10.6 or newer is required]);
     fi
   fi
 fi
@@ -1917,7 +1913,7 @@ if test "${with_w32}" != no; then
   case "${opsys}" in
     cygwin)
       AC_CHECK_HEADER([windows.h], [HAVE_W32=yes],
-             [AC_MSG_ERROR([`--with-w32' was specified, but windows.h
+             [AC_MSG_ERROR(['--with-w32' was specified, but windows.h
                    cannot be found.])])
     ;;
     mingw32)
@@ -2363,7 +2359,7 @@ fail;
 fi
 
 
-### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
+### Use -lrsvg-2 if available, unless '--with-rsvg=no' is specified.
 HAVE_RSVG=no
 if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = "yes" || test "${opsys}" 
= "mingw32"; then
   if test "${with_rsvg}" != "no"; then
@@ -2379,7 +2375,7 @@ if test "${HAVE_X11}" = "yes" || test "${HAVE_NS}" = 
"yes" || test "${opsys}" =
       CFLAGS="$CFLAGS $RSVG_CFLAGS"
       # Windows loads librsvg dynamically
       if test "${opsys}" = "mingw32"; then
-               RSVG_LIBS=
+       RSVG_LIBS=
       fi
     fi
   fi
@@ -2644,21 +2640,21 @@ if test "${HAVE_X11}" = "yes" && test 
"${with_gsettings}" = "yes"; then
       AC_MSG_CHECKING([whether GSettings is in gio])
       AC_LINK_IFELSE(
          [AC_LANG_PROGRAM(
-            [[/* Check that gsettings really is present.  */
-             #include <glib-object.h>
+            [[/* Check that gsettings really is present.  */
+            #include <glib-object.h>
             #include <gio/gio.h>
-            ]],
-            [[
+            ]],
+            [[
               GSettings *settings;
               GVariant *val = g_settings_get_value (settings, "");
-            ]])],
-        [], HAVE_GSETTINGS=no)
+            ]])],
+        [], HAVE_GSETTINGS=no)
       AC_MSG_RESULT([$HAVE_GSETTINGS])
 
       if test "$HAVE_GSETTINGS" = "yes"; then
         AC_DEFINE(HAVE_GSETTINGS, 1, [Define to 1 if using GSettings.])
-       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
-       SETTINGS_LIBS="$GSETTINGS_LIBS"
+       SETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
+       SETTINGS_LIBS="$GSETTINGS_LIBS"
       fi
       CFLAGS=$old_CFLAGS
       LIBS=$old_LIBS
@@ -2738,7 +2734,7 @@ fi
 dnl MS Windows native file monitor is available for mingw32 only.
 case $with_file_notification,$opsys in
   w32,cygwin)
-    AC_MSG_ERROR([`--with-file-notification=w32' was specified, but
+    AC_MSG_ERROR(['--with-file-notification=w32' was specified, but
     this is only supported on MS-Windows native and MinGW32 builds.
     Consider using gfile instead.])
     ;;
@@ -2782,7 +2778,7 @@ esac
 
 case $with_file_notification,$NOTIFY_OBJ in
   yes,* | no,* | *,?*) ;;
-  *) AC_MSG_ERROR([File notification `$with_file_notification' requested but 
requirements not found.]) ;;
+  *) AC_MSG_ERROR([File notification '$with_file_notification' requested but 
requirements not found.]) ;;
 esac
 
 if test -n "$NOTIFY_OBJ"; then
@@ -2984,7 +2980,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
         AC_DEFINE(HAVE_XIM, 1, [Define to 1 if XIM is available])],
         HAVE_XIM=no)
 
-dnl `--with-xim' now controls only the initial value of use_xim at run time.
+dnl '--with-xim' now controls only the initial value of use_xim at run time.
 
 if test "${with_xim}" != "no"; then
   AC_DEFINE(USE_XIM, 1,
@@ -3032,7 +3028,7 @@ fi
 
 ### Start of font-backend (under X11) section.
 if test "${HAVE_X11}" = "yes"; then
-    ## Use -lXft if available, unless `--with-xft=no'.
+    ## Use -lXft if available, unless '--with-xft=no'.
     HAVE_XFT=maybe
     if test "x${with_x}" = "xno"; then
       with_xft="no";
@@ -3137,7 +3133,7 @@ AC_SUBST(LIBOTF_LIBS)
 AC_SUBST(M17N_FLT_CFLAGS)
 AC_SUBST(M17N_FLT_LIBS)
 
-### Use -lXpm if available, unless `--with-xpm=no'.
+### Use -lXpm if available, unless '--with-xpm=no'.
 ### mingw32 doesn't use -lXpm, since it loads the library dynamically.
 ### In the Cygwin-w32 build, we need to use /usr/include/noX/X11/xpm.h
 ### rather than /usr/include/X11/xpm.h, so we set CPPFLAGS (and
@@ -3228,52 +3224,47 @@ fi
 
 AC_SUBST(LIBXPM)
 
-### Use -ljpeg if available, unless `--with-jpeg=no'.
-### mingw32 doesn't use -ljpeg, since it loads the library dynamically.
+### Use -ljpeg if available, unless '--with-jpeg=no'.
 HAVE_JPEG=no
 LIBJPEG=
-if test "${opsys}" = "mingw32"; then
-  if test "${with_jpeg}" != "no"; then
-    dnl Checking for jpeglib.h can lose because of a redefinition of
-    dnl HAVE_STDLIB_H.
-    AC_CHECK_HEADER(jerror.h, HAVE_JPEG=yes, HAVE_JPEG=no)
-  fi
-  AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library 
(-ljpeg).])dnl
-  if test "${HAVE_JPEG}" = "yes"; then
-    AC_DEFINE(HAVE_JPEG)
-    AC_EGREP_CPP([version 6b or later],
-       [#include <jpeglib.h>
-        #if JPEG_LIB_VERSION >= 62
-        version 6b or later
-        #endif
-       ],
-        [AC_DEFINE(HAVE_JPEG)],
-        [AC_MSG_WARN([libjpeg found, but not version 6b or later])
-        HAVE_JPEG=no])
-  fi
-elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
-  if test "${with_jpeg}" != "no"; then
-    dnl Checking for jpeglib.h can lose because of a redefinition of
-    dnl  HAVE_STDLIB_H.
-    AC_CHECK_HEADER(jerror.h,
-      [AC_CHECK_LIB(jpeg, jpeg_destroy_compress, HAVE_JPEG=yes)])
-  fi
-
-  AH_TEMPLATE(HAVE_JPEG, [Define to 1 if you have the jpeg library 
(-ljpeg).])dnl
-  if test "${HAVE_JPEG}" = "yes"; then
-    AC_DEFINE(HAVE_JPEG)
-    AC_EGREP_CPP([version 6b or later],
-       [#include <jpeglib.h>
-        #if JPEG_LIB_VERSION >= 62
-        version 6b or later
-        #endif
-       ],
-       [AC_DEFINE(HAVE_JPEG)],
-       [AC_MSG_WARN([libjpeg found, but not version 6b or later])
-       HAVE_JPEG=no])
-  fi
-  if test "${HAVE_JPEG}" = "yes"; then
-    LIBJPEG=-ljpeg
+if test "${with_jpeg}" != "no"; then
+  AC_CACHE_CHECK([for jpeglib 6b or later],
+    [emacs_cv_jpeglib],
+    [OLD_LIBS=$LIBS
+     for emacs_cv_jpeglib in yes -ljpeg no; do
+       case $emacs_cv_jpeglib in
+        yes) ;;
+         no) break;;
+        *) LIBS="$LIBS $emacs_cv_jpeglib";;
+       esac
+       AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[#undef HAVE_STDLIB_H /* Avoid config.h/jpeglib.h collision.  */
+             #include <stdio.h> /* jpeglib.h needs FILE and size_t.  */
+             #include <jpeglib.h>
+             #include <jerror.h>
+             char verify[JPEG_LIB_VERSION < 62 ? -1 : 1];
+             struct jpeg_decompress_struct cinfo;
+           ]],
+           [[
+             jpeg_create_decompress (&cinfo);
+             WARNMS (&cinfo, JWRN_JPEG_EOF);
+             jpeg_destroy_decompress (&cinfo);
+           ]])],
+        [emacs_link_ok=yes],
+        [emacs_link_ok=no])
+       LIBS=$OLD_LIBS
+       test $emacs_link_ok = yes && break
+     done])
+  if test "$emacs_cv_jpeglib" != no; then
+    HAVE_JPEG=yes
+    AC_DEFINE([HAVE_JPEG], 1,
+      [Define to 1 if you have the jpeg library (typically -ljpeg).])
+    ### mingw32 doesn't use -ljpeg, since it loads the library
+    ### dynamically when needed, and doesn't want a run-time
+    ### dependency on the jpeglib DLL.
+    test "$emacs_cv_jpeglib" != yes && test "${opsys}" != "mingw32" \
+    && LIBJPEG=$emacs_cv_jpeglib
   fi
 fi
 AC_SUBST(LIBJPEG)
@@ -3297,7 +3288,7 @@ if test "${HAVE_ZLIB}" = "yes"; then
 fi
 AC_SUBST(LIBZ)
 
-### Use -lpng if available, unless `--with-png=no'.
+### Use -lpng if available, unless '--with-png=no'.
 HAVE_PNG=no
 LIBPNG=
 PNG_CFLAGS=
@@ -3361,7 +3352,7 @@ fi
 AC_SUBST(LIBPNG)
 AC_SUBST(PNG_CFLAGS)
 
-### Use -ltiff if available, unless `--with-tiff=no'.
+### Use -ltiff if available, unless '--with-tiff=no'.
 ### mingw32 doesn't use -ltiff, since it loads the library dynamically.
 HAVE_TIFF=no
 LIBTIFF=
@@ -3389,7 +3380,7 @@ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = 
"yes"; then
 fi
 AC_SUBST(LIBTIFF)
 
-### Use -lgif or -lungif if available, unless `--with-gif=no'.
+### Use -lgif or -lungif if available, unless '--with-gif=no'.
 ### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
 HAVE_GIF=no
 LIBGIF=
@@ -3447,7 +3438,7 @@ as options to configure])
   fi
 fi
 
-### Use -lgpm if available, unless `--with-gpm=no'.
+### Use -lgpm if available, unless '--with-gpm=no'.
 HAVE_GPM=no
 LIBGPM=
 if test "${with_gpm}" != "no"; then
@@ -3585,7 +3576,7 @@ if test "${with_xml2}" != "no"; then
     CPPFLAGS="$CPPFLAGS -I$xcsdkdir/usr/include/libxml2"
     AC_CHECK_HEADER(libxml/HTMLparser.h,
       [AC_CHECK_DECL(HTML_PARSE_RECOVER, HAVE_LIBXML2=yes, ,
-                    [#include <libxml/HTMLparser.h>])])
+                    [#include <libxml/HTMLparser.h>])])
     CPPFLAGS="$SAVE_CPPFLAGS"
     if test "${HAVE_LIBXML2}" = "yes"; then
       LIBXML2_CFLAGS="-I'$xcsdkdir/usr/include/libxml2'"
@@ -3629,7 +3620,7 @@ fi
 AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
 if test $have_mail = yes; then
   LIBS_MAIL=-lmail
-  AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library 
(-lmail).])
+  AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the 'mail' library 
(-lmail).])
 
   OLD_LIBS=$LIBS
   LIBS="$LIBS_MAIL $LIBS"
@@ -3642,7 +3633,7 @@ dnl Debian, at least:
 AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
 if test $have_lockfile = yes; then
    LIBS_MAIL=-llockfile
-   AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' 
library (-llockfile).])
+   AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the 'lockfile' 
library (-llockfile).])
 else
 # If we have the shared liblockfile, assume we must use it for mail
 # locking (e.g. Debian).  If we couldn't link against liblockfile
@@ -3654,7 +3645,7 @@ else
   if test $ac_cv_prog_liblockfile = yes; then
     AC_MSG_ERROR([Shared liblockfile found but can't link against it.
 This probably means that movemail could lose mail.
-There may be a `development' package to install containing liblockfile.])
+There may be a 'development' package to install containing liblockfile.])
   fi
 fi
 AC_CHECK_HEADERS_ONCE(maillock.h)
@@ -3672,12 +3663,12 @@ case "$opsys" in
   ## On GNU/Linux systems, both methods are used by various mail programs.
   ## I assume most people are using newer mailers that have heard of flock.
   ## Change this if you need to.
-  ## Debian contains a patch which says: ``On Debian/GNU/Linux systems,
+  ## Debian contains a patch which says: "On Debian/GNU/Linux systems,
   ## configure gets the right answers, and that means *NOT* using flock.
   ## Using flock is guaranteed to be the wrong thing. See Debian Policy
-  ## for details.'' and then uses `#ifdef DEBIAN'.  Unfortunately the
+  ## for details." and then uses '#ifdef DEBIAN'.  Unfortunately the
   ## Debian maintainer hasn't provided a clean fix for Emacs.
-  ## movemail.c will use `maillock' when MAILDIR, HAVE_LIBMAIL and
+  ## movemail.c will use 'maillock' when MAILDIR, HAVE_LIBMAIL and
   ## HAVE_MAILLOCK_H are defined, so the following appears to be the
   ## correct logic.  -- fx
   ## We must check for HAVE_LIBLOCKFILE too, as movemail does.
@@ -3737,7 +3728,7 @@ AC_CACHE_CHECK([for __builtin_unwind_init],
                emacs_cv_func___builtin_unwind_init=no)])
 if test $emacs_cv_func___builtin_unwind_init = yes; then
   AC_DEFINE(HAVE___BUILTIN_UNWIND_INIT, 1,
-           [Define to 1 if you have the `__builtin_unwind_init' function.])
+           [Define to 1 if you have the '__builtin_unwind_init' function.])
 fi
 
 AC_CHECK_HEADERS_ONCE(sys/un.h)
@@ -3796,7 +3787,7 @@ else
 fi
 AC_MSG_RESULT([$msg])
 if test "X$msg" = Xno; then
-  AC_MSG_ERROR([The required function `tputs' was not found in any library.
+  AC_MSG_ERROR([The required function 'tputs' was not found in any library.
 The following libraries were tried (in order):
   libtinfo, libncurses, libterminfo, libtermcap, libcurses
 Please try installing whichever of these libraries is most appropriate
@@ -4081,7 +4072,7 @@ LIBS="$LIBS $GFILENOTIFY_LIBS"
 AC_MSG_CHECKING([whether GLib is linked in])
 AC_LINK_IFELSE([AC_LANG_PROGRAM(
        [[#include <glib.h>
-       ]],
+       ]],
        [[g_print ("Hello world");]])],
      [links_glib=yes],
      [links_glib=no])
@@ -4332,15 +4323,15 @@ case $opsys in
 esac
 
 
-dnl If the system's imake configuration file defines `NeedWidePrototypes'
-dnl as `NO', we must define NARROWPROTO manually.  Such a define is
-dnl generated in the Makefile generated by `xmkmf'.  If we don't define
+dnl If the system's imake configuration file defines 'NeedWidePrototypes'
+dnl as 'NO', we must define NARROWPROTO manually.  Such a define is
+dnl generated in the Makefile generated by 'xmkmf'.  If we don't define
 dnl NARROWPROTO, we will see the wrong function prototypes for X functions
 dnl taking float or double parameters.
 case $opsys in
   cygwin|gnu|gnu-linux|gnu-kfreebsd|irix6-5|freebsd|netbsd|openbsd)
     AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
-      file defines `NeedWidePrototypes' as `NO'.])
+      file defines 'NeedWidePrototypes' as 'NO'.])
   ;;
 esac
 
@@ -4928,8 +4919,8 @@ AC_CACHE_CHECK([for struct alignment],
   [emacs_cv_struct_alignment],
   [AC_COMPILE_IFELSE(
      [AC_LANG_PROGRAM([[#include <stddef.h>
-                       struct __attribute__ ((aligned (8))) s { char c; };
-                       struct t { char c; struct s s; };
+                       struct __attribute__ ((aligned (8))) s { char c; };
+                       struct t { char c; struct s s; };
                        char verify[offsetof (struct t, s) == 8 ? 1 : -1];
                      ]])],
      [emacs_cv_struct_alignment=yes],
@@ -5069,11 +5060,30 @@ case "$opsys" in
    esac
    ;;
 
-  openbsd) LD_SWITCH_SYSTEM_TEMACS='-nopie' ;;
-
   *) LD_SWITCH_SYSTEM_TEMACS= ;;
 esac
 
+# -nopie fixes a temacs segfault on Gentoo, OpenBSD, and other systems
+# with "hardened" GCC configurations for some reason (Bug#18784).
+# We don't know why -nopie works, but not segfaulting is better than
+# segfaulting.  Use ac_c_werror_flag=yes when trying -nopie, otherwise
+# clang keeps warning that it does not understand -nopie, and pre-4.6
+# GCC has a similar problem (Bug#20338).
+AC_CACHE_CHECK([whether $CC accepts -nopie],
+  [emacs_cv_prog_cc_nopie],
+  [emacs_save_c_werror_flag=$ac_c_werror_flag
+   emacs_save_LDFLAGS=$LDFLAGS
+   ac_c_werror_flag=yes
+   LDFLAGS="$LDFLAGS -nopie"
+   AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+     [emacs_cv_prog_cc_nopie=yes],
+     [emacs_cv_prog_cc_nopie=no])
+   ac_c_werror_flag=$emacs_save_c_werror_flag
+   LDFLAGS=$emacs_save_LDFLAGS])
+if test "$emacs_cv_prog_cc_nopie" = yes; then
+  LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS -nopie"
+fi
+
 if test x$ac_enable_profiling != x ; then
   case $opsys in
     *freebsd | gnu-linux) ;;
@@ -5148,7 +5158,7 @@ else
 fi
 
 echo "
-Configured for \`${canonical}'.
+Configured for '${canonical}'.
 
   Where should the build process find the source code?    ${srcdir}
   What compiler should emacs be built with?               ${CC} ${CFLAGS}
@@ -5277,7 +5287,7 @@ AC_CONFIG_FILES([$srcdir/doc/man/emacs.1])
 dnl Obviously there is duplication here wrt $SUBDIR_MAKEFILES.
 dnl You _can_ use that variable in AC_CONFIG_FILES, so long as any directory
 dnl using automake (ie lib/) is explicitly listed and not "hidden" in a 
variable
-dnl (else you get "no `Makefile.am' found for any configure output").
+dnl (else you get "no 'Makefile.am' found for any configure output").
 dnl This will work, but you get a config.status that is not quite right
 dnl (see http://lists.gnu.org/archive/html/bug-autoconf/2008-08/msg00028.html).
 dnl That doesn't have any obvious consequences for Emacs, but on the whole
@@ -5317,9 +5327,9 @@ dnl rather than just letting configure generate it from 
epaths.in.
 dnl One reason is that the various paths are not fully expanded (see above);
 dnl eg gamedir=${prefix}/var/games/emacs.
 dnl Secondly, the GNU Coding standards require that one should be able
-dnl to run `make prefix=/some/where/else' and override the values set
-dnl by configure.  This also explains the `move-if-change' test and
-dnl the use of force in the `epaths-force' rule in Makefile.in.
+dnl to run 'make prefix=/some/where/else' and override the values set
+dnl by configure.  This also explains the 'move-if-change' test and
+dnl the use of force in the 'epaths-force' rule in Makefile.in.
 AC_CONFIG_COMMANDS([src/epaths.h], [
 if test "${opsys}" = "mingw32"; then
   ${MAKE-make} MAKEFILE_NAME=do-not-make-Makefile epaths-force-w32
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog.1
similarity index 100%
rename from doc/emacs/ChangeLog
rename to doc/emacs/ChangeLog.1
diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in
index 9f04f0d..9932348 100644
--- a/doc/emacs/Makefile.in
+++ b/doc/emacs/Makefile.in
@@ -23,7 +23,7 @@ SHELL = @SHELL@
 # update the sed rules in the dist target below.
 
 # Where to find the source code.  $(srcdir) will be the doc/emacs subdirectory
-# of the source tree.  This is set by configure's `--srcdir' option.
+# of the source tree.  This is set by configure's '--srcdir' option.
 address@hidden@
 
 top_srcdir = @top_srcdir@
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 151c3f1..f612a7b 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -1201,7 +1201,7 @@ Ken Stevens wrote @file{ispell.el}, a spell-checker 
interface.
 
 @item
 Kim F. Storm made many improvements to the Emacs display engine,
-process support, and networking support. He also wrote
+process support, and networking support.  He also wrote
 @file{bindat.el}, a package for encoding and decoding binary data;
 CUA mode, which allows Emacs to emulate the standard CUA key
 bindings; @file{ido.el}, a package for selecting buffers and files
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index b0e6538..b4a99a1 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -947,7 +947,7 @@ of the window.  Disabled breakpoints are indicated with 
@samp{b}.
 (The margin is only displayed if a breakpoint is present.)
 
   A solid arrow in the left fringe of a source buffer indicates the
-line of the innermost frame where the debugged program has stopped. A
+line of the innermost frame where the debugged program has stopped.  A
 hollow arrow indicates the current execution line of a higher-level
 frame.  If you drag the arrow in the fringe with @kbd{Mouse-1}, that
 causes execution to advance to the line where you release the button.
@@ -1138,7 +1138,7 @@ size for these data items.
 
 When @code{gdb-many-windows} is address@hidden, the locals buffer
 shares its window with the registers buffer, just like breakpoints and
-threads buffers. To switch from one to the other, click with
+threads buffers.  To switch from one to the other, click with
 @kbd{Mouse-1} on the relevant button in the header line.
 
 @node Watch Expressions
@@ -1457,8 +1457,8 @@ Evaluate all the Emacs Lisp expressions in the buffer.
 @end table
 
 @ifinfo
address@hidden This uses ``colon'' instead of a literal `:' because Info cannot
address@hidden cope with a `:' in a menu
address@hidden This uses 'colon' instead of a literal ':' because Info cannot
address@hidden cope with a ':' in a menu.
 @kindex address@hidden
 @end ifinfo
 @ifnotinfo
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index d3f3a55..03a484b 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -379,7 +379,7 @@ between years will not work.
 
   If the variable @code{cal-html-print-day-number-flag} is
 address@hidden, then the monthly calendars show the day-of-the-year
-number. The variable @code{cal-html-year-index-cols} specifies the
+number.  The variable @code{cal-html-year-index-cols} specifies the
 number of columns in the yearly index page.
 
 @cindex calendar and @LaTeX{}
@@ -827,7 +827,7 @@ Display Mayan date for selected day 
(@code{calendar-mayan-print-date}).
   Otherwise, move point to the date you want to convert, then type the
 appropriate command starting with @kbd{p} from the table above.  The
 prefix @kbd{p} is a mnemonic for ``print'', since Emacs ``prints'' the
-equivalent date in the echo area. @kbd{p o} displays the
+equivalent date in the echo area.  @kbd{p o} displays the
 date in all forms known to Emacs.  You can also use @kbd{Mouse-3} and
 then choose @kbd{Other calendars} from the menu that appears.  This
 displays the equivalent forms of the date in all the calendars Emacs
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index 071cd68..60fe977 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -10,7 +10,7 @@
 @cindex switches (command line)
 @cindex startup (command line arguments)
 @cindex invocation (command line arguments)
address@hidden FIXME: Document `--smid'?  --xfq
address@hidden FIXME: Document '--smid'?  --xfq
 
   Emacs supports command line arguments to request various actions
 when invoking Emacs.  These are for compatibility with other editors
@@ -582,7 +582,7 @@ The name of the news server.  Used by the mh and Gnus 
packages.
 @item ORGANIZATION
 @vindex ORGANIZATION, environment variable
 The name of the organization to which you belong.  Used for setting the
-`Organization:' header in your posts from the Gnus package.
+``Organization:'' header in your posts from the Gnus package.
 @item PATH
 @vindex PATH, environment variable
 A colon-separated list of directories containing executable files.
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 9fd823b..a2bea24 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -778,7 +778,7 @@ fill-column's value is 70
 
 Automatically becomes buffer-local when set.
 This variable is safe as a file local variable if its value
-satisfies the predicate `integerp'.
+satisfies the predicate @code{integerp}.
 
 Documentation:
 Column beyond which automatic line-wrapping should happen.
@@ -2213,10 +2213,10 @@ require one and some contexts require the other.
 keys which send address@hidden characters.
 
 @item True:
address@hidden stands for `true'.
address@hidden stands for ``true''.
 
 @item False:
address@hidden stands for `false'.
address@hidden stands for ``false''.
 
 @item Other Lisp objects:
 @cindex Lisp object syntax
@@ -2247,8 +2247,8 @@ line.
 (setq c-tab-always-indent nil)
 @end example
 
-Here we have a variable whose value is normally @code{t} for `true'
-and the alternative is @code{nil} for `false'.
+Here we have a variable whose value is normally @code{t} for ``true''
+and the alternative is @code{nil} for ``false''.
 
 @item
 Make searches case sensitive by default (in all buffers that do not
@@ -2440,9 +2440,7 @@ You can also simply disregard the errors that occur if the
 function is not defined.
 
 @example
-(condition case ()
-    (set-face-background 'region "grey75")
-  (error nil))
+(ignore-errors (set-face-background 'region "grey75"))
 @end example
 
 A @code{setq} on a variable which does not exist is generally
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index 141bb66..4adb698 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -376,7 +376,7 @@ for @file{..} and typing @kbd{f} there.
 @end table
 
 @node Marks vs Flags
address@hidden Dired Marks vs. Flags
address@hidden Dired Marks vs.@: Flags
 
 @cindex marking many files (in Dired)
   Instead of flagging a file with @samp{D}, you can @dfn{mark} the
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index c1ad688..caec373 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -115,7 +115,7 @@ display editor.  This manual describes how to edit with 
Emacs and
 some of the ways to customize it; it corresponds to GNU Emacs version
 @value{EMACSVER}.
 
address@hidden See `manual-html-mono' and `manual-html-node' in admin/admin.el.
address@hidden See 'manual-html-mono' and 'manual-html-node' in admin/admin.el.
 @ifset WWW_GNU_ORG
 @html
 The homepage for GNU Emacs is at
@@ -239,9 +239,9 @@ Indexes (each index contains a large menu)
 * Concept Index::       An item for each concept.
 
 @c Do NOT modify the following 3 lines!  They must have this form to
address@hidden be correctly identified by `texinfo-multiple-files-update'.  In
address@hidden be correctly identified by 'texinfo-multiple-files-update'.  In
 @c particular, the detailed menu header line MUST be identical to the
address@hidden value of `texinfo-master-menu-header'.  See texnfo-upd.el.
address@hidden value of 'texinfo-master-menu-header'.  See texnfo-upd.el.
 
 @detailmenu
  --- The Detailed Node Listing ---
@@ -391,7 +391,7 @@ Searching and Replacement
 * Symbol Search::          Search for a source code symbol.
 * Regexp Search::          Search for match for a regexp.
 * Regexps::                Syntax of regular expressions.
-* Regexp Backslash::       Regular expression constructs starting with `\'.
+* Regexp Backslash::       Regular expression constructs starting with '\'.
 * Regexp Example::         A complex regular expression explained.
 * Search Case::            To ignore case while searching, or not.
 * Replace::                Search, and replace some or all matches.
@@ -1149,7 +1149,7 @@ The Emacs Initialization File
 Dealing with Emacs Trouble
 
 * DEL Does Not Delete:: What to do if @key{DEL} doesn't delete.
-* Stuck Recursive::     `[...]' in mode line around the parentheses.
+* Stuck Recursive::     '[...]' in mode line around the parentheses.
 * Screen Garbled::      Garbage on the screen.
 * Text Garbled::        Garbage in the text.
 * Memory Full::         How to cope when you run out of memory.
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 21957d0..3a281d2 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -429,7 +429,7 @@ by mistake.  One thing you can do is type @kbd{M-~}
 (@code{not-modified}), which clears out the indication that the buffer
 is modified.  If you do this, none of the save commands will believe
 that the buffer needs to be saved.  (@samp{~} is often used as a
-mathematical symbol for `not'; thus @kbd{M-~} is `not', metafied.)
+mathematical symbol for ``not''; thus @kbd{M-~} is ``not'', metafied.)
 Alternatively, you can cancel all the changes made since the file was
 visited or saved, by reading the text from the file again.  This is
 called @dfn{reverting}.  @xref{Reverting}.  (You could also undo all
@@ -1272,7 +1272,7 @@ minibuffer, and displays the differences between the two 
files in a
 buffer named @file{*diff*}.  This works by running the @command{diff}
 program, using options taken from the variable @code{diff-switches}.
 The value of @code{diff-switches} should be a string; the default is
address@hidden"-c"} to specify a context diff.
address@hidden"-u"} to specify a unified context diff.
 @c Note that the actual name of the info file is diffutils.info,
 @c but it adds a dir entry for diff too.
 @c On older systems, only "info diff" works, not "info diffutils".
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi
index a764c25..9101f1c 100644
--- a/doc/emacs/glossary.texi
+++ b/doc/emacs/glossary.texi
@@ -60,7 +60,7 @@ be preserved if the buffer is lost due to a system error or 
user error.
 
 @item Autoloading
 Emacs can automatically load Lisp libraries when a Lisp program requests a
-function from those libraries.  This is called `autoloading'.
+function from those libraries.  This is called ``autoloading''.
 @xref{Lisp Libraries}.
 
 @item Backtrace
@@ -100,7 +100,7 @@ A base buffer is a buffer whose text is shared by an 
indirect buffer
 Some human languages, such as English, are written from left to right.
 Others, such as Arabic, are written from right to left.  Emacs
 supports both of these forms, as well as any mixture of them---this
-is `bidirectional text'.  @xref{Bidirectional Editing}.
+is ``bidirectional text''.  @xref{Bidirectional Editing}.
 
 @item Bind
 To bind a key sequence means to give it a binding (q.v.).
@@ -135,7 +135,7 @@ X}).  Borders are not the same as fringes (q.v.).
 @item Buffer
 The buffer is the basic editing unit; one buffer corresponds to one text
 being edited.  You normally have several buffers, but at any time you are
-editing only one, the `current buffer', though several can be visible
+editing only one, the ``current buffer'', though several can be visible
 when you are using multiple windows or frames (q.v.).  Most buffers
 are visiting (q.v.@:) some file.  @xref{Buffers}.
 
@@ -265,7 +265,7 @@ normally (but see @ref{Glossary---Truncation}) takes up 
more than one
 screen line when displayed.  We say that the text line is continued, and all
 screen lines used for it after the first are called continuation
 lines.  @xref{Continuation Lines}.  A related Emacs feature is
-`filling' (q.v.).
+``filling'' (q.v.).
 
 @item Control Character
 A control character is a character that you type by holding down the
@@ -310,8 +310,8 @@ between defuns, the current defun is the one that follows 
point.
 The cursor is the rectangle on the screen which indicates the position
 (called point; q.v.@:) at which insertion and deletion takes place.
 The cursor is on or under the character that follows point.  Often
-people speak of `the cursor' when, strictly speaking, they mean
-`point'.  @xref{Point,Cursor}.
+people speak of ``the cursor'' when, strictly speaking, they mean
+``point''.  @xref{Point,Cursor}.
 
 @item Customization
 Customization is making minor changes in the way Emacs works, to
@@ -351,7 +351,7 @@ it is interpreted relative to the current buffer's default 
directory.
 
 @item Defun
 A defun is a major definition at the top level in a program.  The name
-`defun' comes from Lisp, where most such definitions use the construct
+``defun'' comes from Lisp, where most such definitions use the construct
 @code{defun}.  @xref{Defuns}.
 
 @item @key{DEL}
@@ -405,7 +405,7 @@ confirmation.  The usual reason for disabling a command is 
that it is
 confusing for beginning users.  @xref{Disabling}.
 
 @item Down Event
-Short for `button down event' (q.v.).
+Short for ``button down event'' (q.v.).
 
 @item Drag Event
 A drag event is the kind of input event (q.v.@:) generated when you
@@ -598,7 +598,7 @@ correspond to any character.  @xref{Function Keys}.
 @item Global
 Global means ``independent of the current environment; in effect
 throughout Emacs''.  It is the opposite of local (q.v.).  Particular
-examples of the use of `global' appear below.
+examples of the use of ``global'' appear below.
 
 @item Global Abbrev
 A global definition of an abbrev (q.v.@:) is effective in all major
@@ -824,8 +824,8 @@ lists.  @xref{Moving by Parens}.
 @item Local
 Local means ``in effect only in a particular context''; the relevant
 kind of context is a particular function execution, a particular
-buffer, or a particular major mode.  It is the opposite of `global'
-(q.v.).  Specific uses of `local' in Emacs terminology appear below.
+buffer, or a particular major mode.  It is the opposite of ``global''
+(q.v.).  Specific uses of ``local'' in Emacs terminology appear below.
 
 @item Local Abbrev
 A local abbrev definition is effective only if a particular major mode
@@ -848,7 +848,7 @@ one of the modifier keys that can accompany any character.
 
 @item @kbd{M-C-}
 @kbd{M-C-} in the name of a character is an abbreviation for
-Control-Meta; it means the same thing as address@hidden' (q.v.).
+Control-Meta; it means the same thing as @kbd{C-M-} (q.v.).
 
 @item @kbd{M-x}
 @kbd{M-x} is the key sequence that is used to call an Emacs command by
@@ -1121,7 +1121,7 @@ Many commands operate on the text of the region.  
@xref{Mark,Region}.
 @item Register
 Registers are named slots in which text, buffer positions, or
 rectangles can be saved for later use.  @xref{Registers}.  A related
-Emacs feature is `bookmarks' (q.v.).
+Emacs feature is ``bookmarks'' (q.v.).
 
 @anchor{Glossary---Regular Expression}
 @item Regular Expression
@@ -1233,15 +1233,15 @@ Emacs has commands for moving by or killing by 
sentences.
 
 @anchor{Glossary---Server}
 @item Server
-Within Emacs, you can start a `server' process, which listens for
-connections from `clients'.  This offers a faster alternative to
+Within Emacs, you can start a ``server'' process, which listens for
+connections from ``clients''.  This offers a faster alternative to
 starting several Emacs instances.  @xref{Emacs Server}, and
 @ref{Glossary---Daemon}.
 
 @c This is only covered in the lispref, not the user manual.
 @ignore
 @item Session Manager
-Some window systems (q.v.@:) provide a tool called a `session manager'.
+Some window systems (q.v.@:) provide a tool called a ``session manager''.
 This offers the ability to save your windows when you log off,
 and restore them after you log in again.
 @end ignore
@@ -1250,7 +1250,7 @@ and restore them after you log in again.
 A sexp (short for ``s-expression'') is the basic syntactic unit of
 Lisp in its textual form: either a list, or Lisp atom.  Sexps are also
 the balanced expressions (q.v.@:) of the Lisp language; this is why
-the commands for editing balanced expressions have `sexp' in their
+the commands for editing balanced expressions have @samp{sexp} in their
 name.  @xref{Expressions,Sexps}.
 
 @item Simultaneous Editing
@@ -1327,7 +1327,7 @@ Emacs does not make a termscript file unless you tell it 
to.
 @xref{Bugs}.
 
 @item Text
-`Text' has two meanings (@pxref{Text}):
+``Text'' has two meanings (@pxref{Text}):
 
 @itemize @bullet
 @item
@@ -1420,7 +1420,7 @@ that you can customize Emacs by setting it to a new value.
 @item Variable
 A variable is an object in Lisp that can store an arbitrary value.
 Emacs uses some variables for internal purposes, and has others (known
-as `user options'; q.v.@:) just so that you can set their values to
+as ``user options''; q.v.@:) just so that you can set their values to
 control the behavior of Emacs.  The variables used in Emacs that you
 are likely to be interested in are listed in the Variables Index in
 this manual (@pxref{Variable Index}).  @xref{Variables}, for
@@ -1448,7 +1448,7 @@ Emacs divides a frame (q.v.@:) into one or more windows, 
each of which
 can display the contents of one buffer (q.v.@:) at any time.
 @xref{Screen}, for basic information on how Emacs uses the screen.
 @xref{Windows}, for commands to control the use of windows.  Some
-other editors use the term ``window'' for what we call a `frame'
+other editors use the term ``window'' for what we call a ``frame''
 (q.v.@:) in Emacs.
 
 @item Window System
diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi
index 327ee3c..3c23b9c 100644
--- a/doc/emacs/gnu.texi
+++ b/doc/emacs/gnu.texi
@@ -83,7 +83,7 @@ memory, because they are the easiest machines to make it run 
on.  The extra
 effort to make it run on smaller machines will be left to someone who wants
 to use it on them.
 
-To avoid horrible confusion, please pronounce the `G' in the word `GNU'
+To avoid horrible confusion, please pronounce the ``G'' in the word ``GNU''
 when it is the name of this project.
 
 @unnumberedsec Why I Must Write GNU
diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi
index 10cd131..b45839e 100644
--- a/doc/emacs/indent.texi
+++ b/doc/emacs/indent.texi
@@ -198,7 +198,7 @@ are always displayed as empty spaces extending to the next
 @dfn{display tab stop}.  @xref{Text Display}.
 
 @node Just Spaces
address@hidden Tabs vs. Spaces
address@hidden Tabs vs.@: Spaces
 
 @vindex tab-width
   Normally, indentation commands insert (or remove) an optimal mix of
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index a93cbfb..97d423e 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -190,7 +190,7 @@ font are stored in the variables @code{ns-input-font} and
 
 @item ns-power-off
 This event occurs when the user logs out and Emacs is still running, or when
-`Quit Emacs' is chosen from the application menu.
+``Quit Emacs'' is chosen from the application menu.
 The default behavior is to save all file-visiting buffers.
 @end table
 
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 9074cdf..a129886 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -188,7 +188,7 @@ basic editing operations under Bazaar.
 @cindex src
 @item
 SRC (src) is RCS, reloaded - a specialized version-control system
-designed for single-file projects worked on by only one person. It
+designed for single-file projects worked on by only one person.  It
 allows multiple files with independent version-control histories to
 exist in one directory, and is thus particularly well suited for
 maintaining small documents, scripts, and dotfiles.  While it uses RCS
@@ -1570,7 +1570,7 @@ dated in May 1993, with two items and one item 
respectively.
 @smallexample
 1993-05-25  Richard Stallman  <rms@@gnu.org>
 
-        * man.el: Rename symbols `man-*' to `Man-*'.
+        * man.el: Rename symbols 'man-*' to 'Man-*'.
         (manual-entry): Make prompt string clearer.
 
         * simple.el (blink-matching-paren-distance):
diff --git a/doc/emacs/makefile.w32-in b/doc/emacs/makefile.w32-in
index 91f9d37..99da4ab 100644
--- a/doc/emacs/makefile.w32-in
+++ b/doc/emacs/makefile.w32-in
@@ -21,7 +21,7 @@
 # Where to find the source code.  The source code for Emacs's C kernel is
 # expected to be in $(srcdir)/src, and the source code for Emacs's
 # utility programs is expected to be in $(srcdir)/lib-src.  This is
-# set by the configure script's `--srcdir' option.
+# set by the configure script's '--srcdir' option.
 srcdir=.
 
 infodir = $(srcdir)/../../info
@@ -36,7 +36,7 @@ INFO_TARGETS = $(infodir)/emacs$(INFO_EXT)
 DVI_TARGETS =  emacs.dvi
 INFOSOURCES = info.texi
 
-# The following rule does not work with all versions of `make'.
+# The following rule does not work with all versions of 'make'.
 .SUFFIXES: .texi .dvi
 .texi.dvi:
        texi2dvi $<
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 46585ed..20996c2 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -787,15 +787,10 @@ also change the coding system for a running subshell by 
typing
 Coding}.
 
 @cindex @env{INSIDE_EMACS} environment variable
address@hidden @env{EMACS} environment variable
   Emacs sets the environment variable @env{INSIDE_EMACS} in the
 subshell to @address@hidden,comint}, where @var{version} is the
 Emacs version (e.g., @samp{24.1}).  Programs can check this variable
-to determine whether they are running inside an Emacs subshell.  (It
-also sets the @env{EMACS} environment variable to @code{t}, if that
-environment variable is not already defined.  However, this
-environment variable is deprecated; programs that use it should switch
-to using @env{INSIDE_EMACS} instead.)
+to determine whether they are running inside an Emacs subshell.
 
 @node Shell Mode
 @subsection Shell Mode
@@ -2124,13 +2119,14 @@ to @code{sort-numeric-base}, but numbers beginning with 
@samp{0x} or
 
 @item M-x sort-columns
 Like @kbd{M-x sort-fields} except that the text within each line
-used for comparison comes from a fixed range of columns.  See below
-for an explanation.
+used for comparison comes from a fixed range of columns.  With a
+prefix argument, sort in reverse order.  See below for more details
+on this command.
 
 @findex reverse-region
 @item M-x reverse-region
 Reverse the order of the lines in the region.  This is useful for
-sorting into descending order by fields or columns, since those sort
+sorting into descending order by fields, since those sort
 commands do not have a feature for doing that.
 @end table
 
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 1fffa23..2eb999d 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -843,9 +843,9 @@ show-paren-mode}.
   Electric Pair mode, a global minor mode, provides a way to easily
 insert matching delimiters.  Whenever you insert an opening delimiter,
 the matching closing delimiter is automatically inserted as well,
-leaving point between the two. Conversely, when you insert a closing
+leaving point between the two.  Conversely, when you insert a closing
 delimiter over an existing one, no inserting takes places and that
-position is simply skipped over. These variables control additional
+position is simply skipped over.  These variables control additional
 features of Electric Pair mode:
 
 @itemize @bullet
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index 0c39ea7..82ac99f 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1004,10 +1004,10 @@ Here is a list of these commands:
 
 @table @kbd
 @item n
-Move to next line, skipping lines saying `deleted', and select its
+Move to next line, skipping lines saying ``deleted'', and select its
 message (@code{rmail-summary-next-msg}).
 @item p
-Move to previous line, skipping lines saying `deleted', and select
+Move to previous line, skipping lines saying ``deleted'', and select
 its message (@code{rmail-summary-previous-msg}).
 @item M-n
 Move to next line and select its message (@code{rmail-summary-next-all}).
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index e91e2c4..b69146a 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -24,7 +24,7 @@ thing, but search for patterns instead of fixed strings.
 * Symbol Search::             Search for a source code symbol.
 * Regexp Search::             Search for match for a regexp.
 * Regexps::                   Syntax of regular expressions.
-* Regexp Backslash::          Regular expression constructs starting with `\'.
+* Regexp Backslash::          Regular expression constructs starting with '\'.
 * Regexp Example::            A complex regular expression explained.
 * Search Case::               To ignore case while searching, or not.
 * Replace::                   Search, and replace some or all matches.
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 22ec215..42022cd 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -146,7 +146,7 @@ Emacs.
 
 @menu
 * DEL Does Not Delete::   What to do if @key{DEL} doesn't delete.
-* Stuck Recursive::       `[...]' in mode line around the parentheses.
+* Stuck Recursive::       '[...]' in mode line around the parentheses.
 * Screen Garbled::        Garbage on the screen.
 * Text Garbled::          Garbage in the text.
 * Memory Full::           How to cope when you run out of memory.
@@ -743,7 +743,7 @@ unmodified Emacs.  But if you've made modifications and you 
don't tell
 us, you are sending us on a wild goose chase.)
 
 Be precise about these changes.  A description in English is not
-enough---send a context diff for them.
+enough---send a unified context diff for them.
 
 Adding files of your own, or porting to another machine, is a
 modification of the source.
@@ -1131,13 +1131,12 @@ is important.
 @item
 The patch itself.
 
-Use @samp{diff -c} to make your diffs.  Diffs without context are hard
+Use @samp{diff -u} to make your diffs.  Diffs without context are hard
 to install reliably.  More than that, they are hard to study; we must
-always study a patch to decide whether we want to install it.  Unidiff
-format is better than contextless diffs, but not as easy to read as
address@hidden format.
+always study a patch to decide whether we want to install it.  Context
+format is better than contextless diffs, but we prefer we unified format.
 
-If you have GNU diff, use @samp{diff -c -F'^[_a-zA-Z0-9$]+ *('} when
+If you have GNU diff, use @samp{diff -u -F'^[_a-zA-Z0-9$]\+ *('} when
 making diffs of C code.  This shows the name of the function that each
 change occurs in.
 
@@ -1171,7 +1170,7 @@ feel that the purpose needs explaining, it probably 
does---but put the
 explanation in comments in the code.  It will be more useful there.
 
 Please look at the change log entries of recent commits to see what
-sorts of information to put in, and to learn the style that we use. Note that,
+sorts of information to put in, and to learn the style that we use.  Note that,
 unlike some other projects, we do require change logs for
 documentation, i.e., Texinfo files.
 @xref{Change Log},
@@ -1280,7 +1279,7 @@ See the Emacs project page
 It is important to write your patch based on the current working
 version.  If you start from an older version, your patch may be
 outdated (so that maintainers will have a hard time applying it), or
-changes in Emacs may have made your patch unnecessary. After you have
+changes in Emacs may have made your patch unnecessary.  After you have
 downloaded the repository source, you should read the file
 @file{INSTALL.REPO} for build instructions (they differ to some extent
 from a normal build).
diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi
index a2bf249..8dccbf9 100644
--- a/doc/emacs/vc1-xtra.texi
+++ b/doc/emacs/vc1-xtra.texi
@@ -59,7 +59,7 @@ As above, but only find entries for the current buffer's file.
   For example, suppose the first line of @file{ChangeLog} is dated
 1999-04-10, and that the only check-in since then was by Nathaniel
 Bowditch to @file{rcs2log} on 1999-05-22 with log entry @samp{Ignore
-log messages that start with `#'.}.  Then @kbd{C-x v a} inserts this
+log messages that start with '#'.}.  Then @kbd{C-x v a} inserts this
 @file{ChangeLog} entry:
 
 @iftex
@@ -69,7 +69,7 @@ log messages that start with `#'.}.  Then @kbd{C-x v a} 
inserts this
 @group
 1999-05-22  Nathaniel Bowditch  <nat@@apn.org>
 
-        * rcs2log: Ignore log messages that start with `#'.
+        * rcs2log: Ignore log messages that start with '#'.
 @end group
 @end smallexample
 @iftex
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog.1
similarity index 100%
rename from doc/lispintro/ChangeLog
rename to doc/lispintro/ChangeLog.1
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index ed125bb..46dc41a 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -30,7 +30,7 @@
 @c              @set largebook
 
 @c (Note: if you edit the book so as to change the length of the
address@hidden table of contents, you may have to change the value of `pageno' 
below.)
address@hidden table of contents, you may have to change the value of 'pageno' 
below.)
 
 @c <<<< For hard copy printing, this file is now
 @c      set for smallbook, which works for all sizes
@@ -157,7 +157,7 @@ supports it in developing GNU and promoting software 
freedom.''
 @end quotation
 @end copying
 
address@hidden half title; two lines here, so do not use `shorttitlepage'
address@hidden half title; two lines here, so do not use 'shorttitlepage'
 @tex
 {\begingroup%
     \hbox{}\vskip 1.5in \chaprm \centerline{An Introduction to}%
@@ -808,7 +808,7 @@ In addition, I have written several programs as extended 
examples.
 Although these are examples, the programs are real.  I use them.
 Other people use them.  You may use them.  Beyond the fragments of
 programs used for illustrations, there is very little in here that is
-`just for teaching purposes'; what you see is used.  This is a great
+``just for teaching purposes''; what you see is used.  This is a great
 advantage of Emacs Lisp: it is easy to learn to use it for work.
 @end ignore
 
@@ -854,8 +854,8 @@ information so you won't be surprised later when the 
additional
 information is formally introduced.)
 
 When you read this text, you are not expected to learn everything the
-first time.  Frequently, you need only make, as it were, a `nodding
-acquaintance' with some of the items mentioned.  My hope is that I have
+first time.  Frequently, you need only make, as it were, a ``nodding
+acquaintance'' with some of the items mentioned.  My hope is that I have
 structured the text and given you enough hints that you will be alert to
 what is important, and concentrate on it.
 
@@ -928,7 +928,7 @@ along with the key that is labeled @key{ALT} and, at the 
same time,
 press the @key{\} key.
 
 In addition to typing a lone keychord, you can prefix what you type
-with @kbd{C-u}, which is called the `universal argument'.  The
+with @kbd{C-u}, which is called the ``universal argument''.  The
 @kbd{C-u} keychord passes an argument to the subsequent command.
 Thus, to indent a region of plain text by 6 spaces, mark the region,
 and then type @address@hidden 6 M-C-\}}.  (If you do not specify a number,
@@ -1000,7 +1000,7 @@ bob@@gnu.org
 
 To the untutored eye, Lisp is a strange programming language.  In Lisp
 code there are parentheses everywhere.  Some people even claim that
-the name stands for `Lots of Isolated Silly Parentheses'.  But the
+the name stands for ``Lots of Isolated Silly Parentheses''.  But the
 claim is unwarranted.  Lisp stands for LISt Processing, and the
 programming language handles @emph{lists} (and lists of lists) by
 putting them between parentheses.  The parentheses mark the boundaries
@@ -1090,7 +1090,7 @@ list is made up of the words @samp{a}, @samp{list}, 
@samp{inside},
 
 In Lisp, what we have been calling words are called @dfn{atoms}.  This
 term comes from the historical meaning of the word atom, which means
-`indivisible'.  As far as Lisp is concerned, the words we have been
+``indivisible''.  As far as Lisp is concerned, the words we have been
 using in the lists cannot be divided into any smaller parts and still
 mean the same thing as part of a program; likewise with numbers and
 single character symbols like @samp{+}.  On the other hand, unlike an
@@ -1159,7 +1159,7 @@ paragraphs---is also an atom.  Here is an example:
 @noindent
 In Lisp, all of the quoted text including the punctuation mark and the
 blank spaces is a single atom.  This kind of atom is called a
address@hidden (for `string of characters') and is the sort of thing that
address@hidden (for ``string of characters'') and is the sort of thing that
 is used for messages that a computer can print for a human to read.
 Strings are a different kind of atom than numbers or symbols and are
 used differently.
@@ -1303,7 +1303,7 @@ signposts to a traveler in a strange country; deciphering 
them can be
 hard, but once understood, they can point the way.
 
 The error message is generated by a built-in GNU Emacs debugger.  We
-will `enter the debugger'.  You get out of the debugger by typing @code{q}.
+will ``enter the debugger''.  You get out of the debugger by typing @code{q}.
 
 What we will do is evaluate a list that is not quoted and does not
 have a meaningful command as its first element.  Here is a list almost
@@ -1365,9 +1365,9 @@ Based on what we already know, we can almost read this 
error message.
 You read the @file{*Backtrace*} buffer from the bottom up; it tells
 you what Emacs did.  When you typed @kbd{C-x C-e}, you made an
 interactive call to the command @code{eval-last-sexp}.  @code{eval} is
-an abbreviation for `evaluate' and @code{sexp} is an abbreviation for
-`symbolic expression'.  The command means `evaluate last symbolic
-expression', which is the expression just before your cursor.
+an abbreviation for ``evaluate'' and @code{sexp} is an abbreviation for
+``symbolic expression''.  The command means ``evaluate last symbolic
+expression'', which is the expression just before your cursor.
 
 Each line above tells you what the Lisp interpreter evaluated next.
 The most recent action is at the top.  The buffer is called the
@@ -1401,7 +1401,7 @@ definition of any set of instructions for the computer to 
carry out.
 The slightly odd word, @samp{void-function}, is designed to cover the
 way Emacs Lisp is implemented, which is that when a symbol does not
 have a function definition attached to it, the place that should
-contain the instructions is `void'.
+contain the instructions is ``void''.
 
 On the other hand, since we were able to add 2 plus 2 successfully, by
 evaluating @code{(+ 2 2)}, we can infer that the symbol @code{+} must
@@ -1570,9 +1570,9 @@ compilation.
 
 When the Lisp interpreter works on an expression, the term for the
 activity is called @dfn{evaluation}.  We say that the interpreter
-`evaluates the expression'.  I've used this term several times before.
-The word comes from its use in everyday language, `to ascertain the
-value or amount of; to appraise', according to @cite{Webster's New
+``evaluates the expression''.  I've used this term several times before.
+The word comes from its use in everyday language, ``to ascertain the
+value or amount of; to appraise'', according to @cite{Webster's New
 Collegiate Dictionary}.
 
 @menu
@@ -1592,7 +1592,7 @@ instructions it found in the function definition, or 
perhaps it will
 give up on that function and produce an error message.  (The interpreter
 may also find itself tossed, so to speak, to a different function or it
 may attempt to repeat continually what it is doing for ever and ever in
-what is called an `infinite loop'.  These actions are less common; and
+what is called an ``infinite loop''.  These actions are less common; and
 we can ignore them.)  Most frequently, the interpreter returns a value.
 
 @cindex @samp{side effect} defined
@@ -1637,9 +1637,9 @@ evaluate, the interpreter prints that value in the echo 
area.
 
 Now it is easy to understand the name of the command invoked by the
 keystrokes @kbd{C-x C-e}: the name is @code{eval-last-sexp}.  The
-letters @code{sexp} are an abbreviation for `symbolic expression', and
address@hidden is an abbreviation for `evaluate'.  The command means
-`evaluate last symbolic expression'.
+letters @code{sexp} are an abbreviation for ``symbolic expression'', and
address@hidden is an abbreviation for ``evaluate''.  The command means
+``evaluate last symbolic expression''.
 
 As an experiment, you can try evaluating the expression by putting the
 cursor at the beginning of the next line immediately following the
@@ -1838,7 +1838,7 @@ typing @kbd{q} in the @file{*Backtrace*} buffer.)
 This backtrace is different from the very first error message we saw,
 which said, @samp{Debugger entered--Lisp error: (void-function this)}.
 In this case, the function does not have a value as a variable; while
-in the other error message, the function (the word `this') did not
+in the other error message, the function (the word @samp{this}) did not
 have a definition.
 
 In this experiment with the @code{+}, what we did was cause the Lisp
@@ -1887,22 +1887,22 @@ The numbers added by @code{+} are called the 
@dfn{arguments} of the
 function @code{+}.  These numbers are the information that is given to
 or @dfn{passed} to the function.
 
-The word `argument' comes from the way it is used in mathematics and
+The word ``argument'' comes from the way it is used in mathematics and
 does not refer to a disputation between two people; instead it refers to
 the information presented to the function, in this case, to the
 @code{+}.  In Lisp, the arguments to a function are the atoms or lists
 that follow the function.  The values returned by the evaluation of
 these atoms or lists are passed to the function.  Different functions
 require different numbers of arguments; some functions require none at
address@hidden is curious to track the path by which the word `argument'
address@hidden is curious to track the path by which the word ``argument''
 came to have two different meanings, one in mathematics and the other in
 everyday English.  According to the @cite{Oxford English Dictionary},
 the word derives from the Latin for @samp{to make clear, prove}; thus it
-came to mean, by one thread of derivation, `the evidence offered as
-proof', which is to say, `the information offered', which led to its
+came to mean, by one thread of derivation, ``the evidence offered as
+proof'', which is to say, ``the information offered'', which led to its
 meaning in Lisp.  But in the other thread of derivation, it came to mean
-`to assert in a manner against which others may make counter
-assertions', which led to the meaning of the word as a disputation.
+``to assert in a manner against which others may make counter
+assertions'', which led to the meaning of the word as a disputation.
 (Note here that the English word has two different definitions attached
 to it at the same time.  By contrast, in Emacs Lisp, a symbol cannot
 have two different function definitions at the same time.)}
@@ -1967,7 +1967,7 @@ Note that the string passed to @code{substring} is a 
single atom even
 though it is made up of several words separated by spaces.  Lisp counts
 everything between the two quotation marks as part of the string,
 including the spaces.  You can think of the @code{substring} function as
-a kind of `atom smasher' since it takes an otherwise indivisible atom
+a kind of ``atom smasher'' since it takes an otherwise indivisible atom
 and extracts a part.  However, @code{substring} is only able to extract
 a substring from an argument that is a string, not from another type of
 atom such as a number or symbol.
@@ -2022,7 +2022,7 @@ Some functions, such as @code{concat}, @code{+} or 
@code{*}, take any
 number of arguments.  (The @code{*} is the symbol for multiplication.)
 This can be seen by evaluating each of the following expressions in
 the usual way.  What you will see in the echo area is printed in this
-text after @address@hidden, which you may read as `evaluates to'.
+text after @address@hidden, which you may read as ``evaluates to''.
 
 @need 1250
 In the first set, the functions have no arguments:
@@ -2123,7 +2123,7 @@ numeric value of marker positions as numbers.
 
 The @samp{p} of @code{number-or-marker-p} is the embodiment of a
 practice started in the early days of Lisp programming.  The @samp{p}
-stands for `predicate'.  In the jargon used by the early Lisp
+stands for ``predicate''.  In the jargon used by the early Lisp
 researchers, a predicate refers to a function to determine whether some
 property is true or false.  So the @samp{p} tells us that
 @code{number-or-marker-p} is the name of a function that determines
@@ -2390,11 +2390,11 @@ to the symbol @code{herbivores}:
 not have fit on a page; and humans find it easier to read nicely
 formatted lists.)
 
-Although I have been using the term `assign', there is another way of
+Although I have been using the term ``assign'', there is another way of
 thinking about the workings of @code{set} and @code{setq}; and that is to
 say that @code{set} and @code{setq} make the symbol @emph{point} to the
 list.  This latter way of thinking is very common and in forthcoming
-chapters we shall come upon at least one symbol that has `pointer' as
+chapters we shall come upon at least one symbol that has ``pointer'' as
 part of its name.  The name is chosen because the symbol has a value,
 specifically a list, attached to it; or, expressed another way,
 the symbol is set to ``point'' to the list.
@@ -2639,9 +2639,9 @@ The former is the name of the buffer and the latter is 
the name of the
 file.  In Info, the buffer name is @file{"*info*"}.  Info does not
 point to any file, so the result of evaluating
 @code{(buffer-file-name)} is @file{nil}.  The symbol @code{nil} is
-from the Latin word for `nothing'; in this case, it means that the
+from the Latin word for ``nothing''; in this case, it means that the
 buffer is not associated with any file.  (In Lisp, @code{nil} is also
-used to mean `false' and is a synonym for the empty list, @code{()}.)
+used to mean ``false'' and is a synonym for the empty list, @code{()}.)
 
 When I am writing, the name of my buffer is
 @file{"introduction.texinfo"}.  The name of the file to which it
@@ -2661,7 +2661,7 @@ computer programs, however, it is important to keep the 
distinction in mind,
 since the computer is not as smart as a person.
 
 @cindex Buffer, history of word
-The word `buffer', by the way, comes from the meaning of the word as a
+The word ``buffer'', by the way, comes from the meaning of the word as a
 cushion that deadens the force of a collision.  In early computers, a
 buffer cushioned the interaction between files and the computer's
 central processing unit.  The drums or tapes that held a file and the
@@ -2864,7 +2864,7 @@ there until the command finishes running).
 Also, we have just introduced another jargon term, the word @dfn{call}.
 When you evaluate a list in which the first symbol is a function, you
 are calling that function.  The use of the term comes from the notion of
-the function as an entity that can do something for you if you `call'
+the function as an entity that can do something for you if you ``call''
 it---just as a plumber is an entity who can fix a leak if you call him
 or her.
 
@@ -3082,9 +3082,9 @@ function.
 
 Instead of choosing the word @code{number} for the name of the argument,
 I could have picked any other name.  For example, I could have chosen
-the word @code{multiplicand}.  I picked the word `number' because it
+the word @code{multiplicand}.  I picked the word ``number'' because it
 tells what kind of value is intended for this slot; but I could just as
-well have chosen the word `multiplicand' to indicate the role that the
+well have chosen the word ``multiplicand'' to indicate the role that the
 value placed in this slot will play in the workings of the function.  I
 could have called it @code{foogle}, but that would have been a bad
 choice because it would not tell humans what it means.  The choice of
@@ -3096,16 +3096,16 @@ list, even the name of a symbol used in some other 
function: the name
 you use in an argument list is private to that particular definition.
 In that definition, the name refers to a different entity than any use
 of the same name outside the function definition.  Suppose you have a
-nick-name `Shorty' in your family; when your family members refer to
-`Shorty', they mean you.  But outside your family, in a movie, for
-example, the name `Shorty' refers to someone else.  Because a name in an
+nick-name ``Shorty'' in your family; when your family members refer to
+``Shorty'', they mean you.  But outside your family, in a movie, for
+example, the name ``Shorty'' refers to someone else.  Because a name in an
 argument list is private to the function definition, you can change the
 value of such a symbol inside the body of a function without changing
 its value outside the function.  The effect is similar to that produced
 by a @code{let} expression.  (@xref{let, , @code{let}}.)
 
 @ignore
-Note also that we discuss the word `number' in two different ways: as a
+Note also that we discuss the word ``number'' in two different ways: as a
 symbol that appears in the code, and as the name of something that will
 be replaced by a something else during the evaluation of the function.
 In the first case, @code{number} is a symbol, not a number; it happens
@@ -3161,7 +3161,7 @@ definition begins.
 If you evaluate this example, you are likely to get an error message.
 (Go ahead, try it!)  This is because we have written the function
 definition, but not yet told the computer about the definition---we have
-not yet installed (or `loaded') the function definition in Emacs.
+not yet installed (or ``loaded'') the function definition in Emacs.
 Installing a function is the process that tells the Lisp interpreter the
 definition of the function.  Installation is described in the next
 section.
@@ -3453,7 +3453,7 @@ is
 
 The first part of the argument to @code{interactive} is @samp{p}, with
 which you are already familiar.  This argument tells Emacs to
-interpret a `prefix', as a number to be passed to the function.  You
+interpret a ``prefix'', as a number to be passed to the function.  You
 can specify a prefix either by typing @kbd{C-u} followed by a number
 or by typing @key{META} followed by a number.  The prefix is the
 number of specified characters.  Thus, if your prefix is three and the
@@ -3567,8 +3567,8 @@ variable of the same name that is not part of the 
function.
 
 To understand why the @code{let} special form is necessary, consider
 the situation in which you own a home that you generally refer to as
-`the house', as in the sentence, ``The house needs painting.''  If you
-are visiting a friend and your host refers to `the house', he is
+``the house'', as in the sentence, ``The house needs painting.''  If you
+are visiting a friend and your host refers to ``the house'', he is
 likely to be referring to @emph{his} house, not yours, that is, to a
 different house.
 
@@ -3596,7 +3596,7 @@ and the two are not intended to refer to the same value.  
The
 The @code{let} special form prevents confusion.  @code{let} creates a
 name for a @dfn{local variable} that overshadows any use of the same
 name outside the @code{let} expression.  This is like understanding
-that whenever your host refers to `the house', he means his house, not
+that whenever your host refers to ``the house'', he means his house, not
 yours.  (Symbols used in argument lists work the same way.
 @xref{defun, , The @code{defun} Macro}.)
 
@@ -3616,14 +3616,14 @@ in Emacs Lisp, scoping is dynamic, not lexical.''
 @code{let} can create more than one variable at once.  Also,
 @code{let} gives each variable it creates an initial value, either a
 value specified by you, or @code{nil}.  (In the jargon, this is called
-`binding the variable to the value'.)  After @code{let} has created
+``binding the variable to the value''.)  After @code{let} has created
 and bound the variables, it executes the code in the body of the
 @code{let}, and returns the value of the last expression in the body,
-as the value of the whole @code{let} expression.  (`Execute' is a jargon
+as the value of the whole @code{let} expression.  (``Execute'' is a jargon
 term that means to evaluate a list; it comes from the use of the word
-meaning `to give practical effect to' (@cite{Oxford English
+meaning ``to give practical effect to'' (@cite{Oxford English
 Dictionary}).  Since you evaluate an expression to perform an action,
-`execute' has evolved as a synonym to `evaluate'.)
+``execute'' has evolved as a synonym to ``evaluate''.)
 
 @node Parts of let Expression
 @subsection The Parts of a @code{let} Expression
@@ -3800,7 +3800,7 @@ such as, ``if it is warm and sunny, then go to the 
beach!''
 
 @cindex @samp{if-part} defined
 @cindex @samp{then-part} defined
-An @code{if} expression written in Lisp does not use the word `then';
+An @code{if} expression written in Lisp does not use the word ``then'';
 the test and the action are the second and third elements of the list
 whose first element is @code{if}.  Nonetheless, the test part of an
 @code{if} expression is often called the @dfn{if-part} and the second
@@ -4066,10 +4066,10 @@ and write your program accordingly.)
 @findex nil
 
 There is an important aspect to the truth test in an @code{if}
-expression.  So far, we have spoken of `true' and `false' as values of
+expression.  So far, we have spoken of ``true'' and ``false'' as values of
 predicates as if they were new kinds of Emacs Lisp objects.  In fact,
-`false' is just our old friend @code{nil}.  Anything else---anything
-at all---is `true'.
+``false'' is just our old friend @code{nil}.  Anything else---anything
+at all---is ``true''.
 
 The expression that tests for truth is interpreted as @dfn{true}
 if the result of evaluating it is a value that is not @code{nil}.  In
@@ -4351,7 +4351,7 @@ The name of an existing buffer.
 The name of an existing file.
 
 @item p
-The numeric prefix argument.  (Note that this `p' is lower case.)
+The numeric prefix argument.  (Note that this @code{p} is lower case.)
 
 @item r
 Point and the mark, as two numeric arguments, smallest first.  This
@@ -4443,7 +4443,7 @@ markers, are equal.
 @item equal
 @itemx eq
 Test whether two objects are the same.  @code{equal} uses one meaning
-of the word `same' and @code{eq} uses another:  @code{equal} returns
+of the word ``same'' and @code{eq} uses another:  @code{equal} returns
 true if the two objects have a similar structure and contents, such as
 two copies of the same book.  On the other hand, @code{eq}, returns
 true if both arguments are actually the same object.
@@ -4472,7 +4472,7 @@ shorter, alternative name is @code{string=}.  There are 
no string test
 functions that correspond to @var{>}, @code{>=}, or @code{<=}.
 
 @item message
-Print a message in the echo area. The first argument is a string that
+Print a message in the echo area.  The first argument is a string that
 can contain @samp{%s}, @samp{%d}, or @samp{%c} to print the value of
 arguments that follow the string.  The argument used by @samp{%s} must
 be a string or a symbol; the argument used by @samp{%d} must be a
@@ -4588,7 +4588,7 @@ function definition.
 
 Put point into the name of the file that contains the function and
 press the @key{RET} key.  In this case, @key{RET} means
address@hidden rather than `return' or `enter'.  Emacs will take
address@hidden rather than ``return'' or ``enter''.  Emacs will take
 you directly to the function definition.
 
 @ignore
@@ -4596,7 +4596,7 @@ Not In version 22
 
 If you move point over the file name and press
 the @key{RET} key, which in this case means @code{help-follow} rather
-than `return' or `enter', Emacs will take you directly to the function
+than ``return'' or ``enter'', Emacs will take you directly to the function
 definition.
 @end ignore
 
@@ -4606,7 +4606,7 @@ file, you can use the @code{find-tag} function to jump to 
it.
 Lisp, and C, and it works with non-programming text as well.  For
 example, @code{find-tag} will jump to the various nodes in the
 Texinfo source file of this document.
-The @code{find-tag} function depends on `tags tables' that record
+The @code{find-tag} function depends on ``tags tables'' that record
 the locations of the functions, variables, and other items to which
 @code{find-tag} jumps.
 
@@ -4624,7 +4624,7 @@ screen.  To switch back to your current buffer, type 
@kbd{C-x b
 @cindex TAGS table, specifying
 @findex find-tag
 Depending on how the initial default values of your copy of Emacs are
-set, you may also need to specify the location of your `tags table',
+set, you may also need to specify the location of your ``tags table'',
 which is a file called @file{TAGS}.  For example, if you are
 interested in Emacs sources, the tags table you will most likely want,
 if it has already been created for you, will be in a subdirectory of
@@ -4650,7 +4650,7 @@ After you become more familiar with Emacs Lisp, you will 
find that you will
 frequently use @code{find-tag} to navigate your way around source code;
 and you will create your own @file{TAGS} tables.
 
address@hidden Library, as term for `file'
address@hidden Library, as term for ``file''
 Incidentally, the files that contain Lisp code are conventionally
 called @dfn{libraries}.  The metaphor is derived from that of a
 specialized library, such as a law library or an engineering library,
@@ -4916,7 +4916,7 @@ The expression works nearly the same as before.  It sets 
a mark at the
 highest numbered place in the buffer that it can.  However, in this
 version, @code{push-mark} has two additional arguments.  The second
 argument to @code{push-mark} is @code{nil}.  This tells the function
-it @emph{should} display a message that says `Mark set' when it pushes
+it @emph{should} display a message that says ``Mark set'' when it pushes
 the mark.  The third argument is @code{t}.  This tells
 @code{push-mark} to activate the mark when Transient Mark mode is
 turned on.  Transient Mark mode highlights the currently active
@@ -5522,7 +5522,7 @@ the buffer you are in (and you have not seen the computer 
shift its
 attention, so you don't know that that buffer is now called
 @code{oldbuf}).
 
-Incidentally, this is what is meant by `replacement'.  To replace text,
+Incidentally, this is what is meant by ``replacement''.  To replace text,
 Emacs erases the previous text and then inserts new text.
 
 @need 1250
@@ -6135,7 +6135,7 @@ size of the buffer.  The reason for this is that the old 
version 18
 Emacs used numbers that are no bigger than eight million or so and in
 the computation that followed, the programmer feared that Emacs might
 try to use over-large numbers if the buffer were large.  The term
-`overflow', mentioned in the comment, means numbers that are over
+``overflow'', mentioned in the comment, means numbers that are over
 large.  More recent versions of Emacs use larger numbers, but this
 code has not been touched, if only because people now look at buffers
 that are far, far larger than ever before.
@@ -6155,7 +6155,7 @@ was that function called several times, it gave the size 
of the whole
 buffer, not the accessible part.  The computation makes much more
 sense when it handles just the accessible part.  (@xref{Narrowing &
 Widening, , Narrowing and Widening}, for more information on focusing
-attention to an `accessible' part.)
+attention to an ``accessible'' part.)
 
 @need 800
 The line looks like this:
@@ -6403,7 +6403,7 @@ tenths of the way through the buffer, which is a nicety 
that is,
 perhaps, not necessary, but which, if it did not occur, would be sure
 to draw complaints.  (The @code{(not (consp arg))} portion is so that
 if you specify the command with a @kbd{C-u}, but without a number,
-that is to say, if the `raw prefix argument' is simply a cons cell,
+that is to say, if the ``raw prefix argument'' is simply a cons cell,
 the command does not put you at the beginning of the second line.)
 
 @node Second Buffer Related Review
@@ -6432,7 +6432,7 @@ is optional; this means that the function can be 
evaluated without the
 argument, if desired.
 
 @item prefix-numeric-value
-Convert the `raw prefix argument' produced by @code{(interactive
+Convert the ``raw prefix argument'' produced by @code{(interactive
 "P")} to a numeric value.
 
 @item forward-line
@@ -6814,11 +6814,11 @@ namely, @code{setcdr} and @code{nthcdr}.  
(@xref{copy-region-as-kill}.)
 @end ifnottex
 
 The name of the @code{cons} function is not unreasonable: it is an
-abbreviation of the word `construct'.  The origins of the names for
+abbreviation of the word ``construct''.  The origins of the names for
 @code{car} and @code{cdr}, on the other hand, are esoteric: @code{car}
-is an acronym from the phrase `Contents of the Address part of the
-Register'; and @code{cdr} (pronounced `could-er') is an acronym from
-the phrase `Contents of the Decrement part of the Register'.  These
+is an acronym from the phrase ``Contents of the Address part of the
+Register''; and @code{cdr} (pronounced ``could-er'') is an acronym from
+the phrase ``Contents of the Decrement part of the Register''.  These
 phrases refer to specific pieces of hardware on the very early
 computer on which the original Lisp was developed.  Besides being
 obsolete, the phrases have been completely irrelevant for more than 25
@@ -6853,7 +6853,7 @@ Clearly, a more reasonable name for the @code{car} 
function would be
 @code{car} does not remove the first item from the list; it only reports
 what it is.  After @code{car} has been applied to a list, the list is
 still the same as it was.  In the jargon, @code{car} is
-`non-destructive'.  This feature turns out to be important.
+``non-destructive''.  This feature turns out to be important.
 
 The @sc{cdr} of a list is the rest of the list, that is, the
 @code{cdr} function returns the part of the list that follows the
@@ -6975,8 +6975,8 @@ appear in the echo area.  @code{cons} causes the creation 
of a new
 list in which the element is followed by the elements of the original
 list.
 
-We often say that address@hidden puts a new element at the beginning of
-a list; it attaches or pushes elements onto the list', but this
+We often say that address@hidden puts a new element at the beginning of
+a list; it attaches or pushes elements onto the list'', but this
 phrasing can be misleading, since @code{cons} does not change an
 existing list, but creates a new one.
 
@@ -7001,7 +7001,7 @@ need to provide at least an empty list at the beginning.  
Here is a
 series of @code{cons} expressions that build up a list of flowers.  If
 you are reading this in Info in GNU Emacs, you can evaluate each of
 the expressions in the usual way; the value is printed in this text
-after @address@hidden, which you may read as `evaluates to'.
+after @address@hidden, which you may read as ``evaluates to''.
 
 @smallexample
 @group
@@ -7114,7 +7114,7 @@ In an earlier version:
     This is written with a special notation, @samp{#<subr},
     that indicates that the function @code{length} is one of the primitive
     functions written in C rather than in Emacs Lisp.  (@samp{subr} is an
-    abbreviation for `subroutine'.)  @xref{What Is a Function, , What Is a
+    abbreviation for ``subroutine''.)  @xref{What Is a Function, , What Is a
     Function?, elisp , The GNU Emacs Lisp Reference Manual}, for more
     about subroutines.
 @end ignore
@@ -7273,9 +7273,9 @@ This can be very convenient.
 
 Note that the elements are numbered from zero, not one.  That is to
 say, the first element of a list, its @sc{car} is the zeroth element.
-This is called `zero-based' counting and often bothers people who
+This is called ``zero-based'' counting and often bothers people who
 are accustomed to the first element in a list being number one, which
-is `one-based'.
+is ``one-based''.
 
 @need 1250
 For example:
@@ -7446,17 +7446,17 @@ fish.  Replace the rest of that list with a list of 
other fish.
 @cindex Erasing text
 @cindex Deleting text
 
-Whenever you cut or clip text out of a buffer with a `kill' command in
+Whenever you cut or clip text out of a buffer with a ``kill'' command in
 GNU Emacs, it is stored in a list and you can bring it back with a
-`yank' command.
+``yank'' command.
 
-(The use of the word `kill' in Emacs for processes which specifically
+(The use of the word ``kill'' in Emacs for processes which specifically
 @emph{do not} destroy the values of the entities is an unfortunate
-historical accident.  A much more appropriate word would be `clip' since
+historical accident.  A much more appropriate word would be ``clip'' since
 that is what the kill commands do; they clip text out of a buffer and
 put it into storage from which it can be brought back.  I have often
-been tempted to replace globally all occurrences of `kill' in the Emacs
-sources with `clip' and all occurrences of `killed' with `clipped'.)
+been tempted to replace globally all occurrences of ``kill'' in the Emacs
+sources with ``clip'' and all occurrences of ``killed'' with ``clipped''.)
 
 @menu
 * Storing Text::                Text is stored in a list.
@@ -7485,7 +7485,7 @@ look like this:
 @need 1200
 @noindent
 The function @code{cons} can be used to create a new list from a piece
-of text (an `atom', to use the jargon) and an existing list, like
+of text (an ``atom'', to use the jargon) and an existing list, like
 this:
 
 @smallexample
@@ -7529,7 +7529,7 @@ than nothing at all.
 The list that holds the pieces of text is called the @dfn{kill ring}.
 This chapter leads up to a description of the kill ring and how it is
 used by first tracing how the @code{zap-to-char} function works.  This
-function uses (or `calls') a function that invokes a function that
+function uses (or ``calls'') a function that invokes a function that
 manipulates the kill ring.  Thus, before reaching the mountains, we
 climb the foothills.
 
@@ -7610,7 +7610,7 @@ Goes backward if ARG is negative; error if CHAR not 
found."
 @end smallexample
 
 The documentation is thorough.  You do need to know the jargon meaning
-of the word `kill'.
+of the word ``kill''.
 
 @node zap-to-char interactive
 @subsection The @code{interactive} Expression
@@ -7627,7 +7627,7 @@ The part within quotation marks, @code{"p\ncZap to 
char:@: "}, specifies
 two different things.  First, and most simply, is the @samp{p}.
 This part is separated from the next part by a newline, @samp{\n}.
 The @samp{p} means that the first argument to the function will be
-passed the value of a `processed prefix'.  The prefix argument is
+passed the value of a ``processed prefix''.  The prefix argument is
 passed by typing @kbd{C-u} and a number, or @kbd{M-} and a number.  If
 the function is called interactively without a prefix, 1 is passed to
 this argument.
@@ -7698,7 +7698,7 @@ function @code{char-to-string} to ensure that the 
computer treats that
 character as a string.)  If the search is backwards,
 @code{search-forward} leaves point just before the first character in
 the target.  Also, @code{search-forward} returns @code{t} for true.
-(Moving point is therefore a `side effect'.)
+(Moving point is therefore a ``side effect''.)
 
 @need 1250
 In @code{zap-to-char}, the @code{search-forward} function looks like this:
@@ -7928,13 +7928,13 @@ The command \\[yank] can retrieve it from there. 
@dots{} "
   ;; @bullet{} Since order matters, pass point first.
   (interactive (list (point) (mark)))
   ;; @bullet{} And tell us if we cannot cut the text.
-  ;; `unless' is an `if' without a then-part.
+  ;; 'unless' is an 'if' without a then-part.
   (unless (and beg end)
     (error "The mark is not set now, so there is no region"))
 @end group
 
 @group
-  ;; @bullet{} `condition-case' takes three arguments.
+  ;; @bullet{} 'condition-case' takes three arguments.
   ;;    If the first argument is nil, as it is here,
   ;;    information about the error signal is not
   ;;    stored for use by another function.
@@ -7942,33 +7942,33 @@ The command \\[yank] can retrieve it from there. 
@dots{} "
 @end group
 
 @group
-      ;; @bullet{} The second argument to `condition-case' tells the
+      ;; @bullet{} The second argument to 'condition-case' tells the
       ;;    Lisp interpreter what to do when all goes well.
 @end group
 
 @group
-      ;;    It starts with a `let' function that extracts the string
+      ;;    It starts with a 'let' function that extracts the string
       ;;    and tests whether it exists.  If so (that is what the
-      ;;    `when' checks), it calls an `if' function that determines
+      ;;    'when' checks), it calls an 'if' function that determines
       ;;    whether the previous command was another call to
-      ;;    `kill-region'; if it was, then the new text is appended to
+      ;;    'kill-region'; if it was, then the new text is appended to
       ;;    the previous text; if not, then a different function,
-      ;;    `kill-new', is called.
+      ;;    'kill-new', is called.
 @end group
 
 @group
-      ;;    The `kill-append' function concatenates the new string and
-      ;;    the old.  The `kill-new' function inserts text into a new
+      ;;    The 'kill-append' function concatenates the new string and
+      ;;    the old.  The 'kill-new' function inserts text into a new
       ;;    item in the kill ring.
 @end group
 
 @group
-      ;;    `when' is an `if' without an else-part.  The second `when'
+      ;;    'when' is an 'if' without an else-part.  The second 'when'
       ;;    again checks whether the current string exists; in
       ;;    addition, it checks whether the previous command was
-      ;;    another call to `kill-region'.  If one or the other
+      ;;    another call to 'kill-region'.  If one or the other
       ;;    condition is true, then it sets the current command to
-      ;;    be `kill-region'.
+      ;;    be 'kill-region'.
 @end group
 @group
       (let ((string (filter-buffer-substring beg end t)))
@@ -7977,10 +7977,10 @@ The command \\[yank] can retrieve it from there. 
@dots{} "
           (if (eq last-command 'kill-region)
 @end group
 @group
-              ;;    @minus{} `yank-handler' is an optional argument to
-              ;;    `kill-region' that tells the `kill-append' and
-              ;;    `kill-new' functions how deal with properties
-              ;;    added to the text, such as `bold' or `italics'.
+              ;;    @minus{} 'yank-handler' is an optional argument to
+              ;;    'kill-region' that tells the 'kill-append' and
+              ;;    'kill-new' functions how deal with properties
+              ;;    added to the text, such as 'bold' or 'italics'.
               (kill-append string (< end beg) yank-handler)
             (kill-new string nil yank-handler)))
         (when (or string (eq last-command 'kill-region))
@@ -7989,7 +7989,7 @@ The command \\[yank] can retrieve it from there. @dots{} "
 @end group
 
 @group
-    ;;  @bullet{} The third argument to `condition-case' tells the interpreter
+    ;;  @bullet{} The third argument to 'condition-case' tells the interpreter
     ;;    what to do with an error.
 @end group
 @group
@@ -8032,7 +8032,7 @@ The text is deleted but saved in the kill ring."
 @end group
 
 @group
-  ;; 1. `condition-case' takes three arguments.
+  ;; 1. 'condition-case' takes three arguments.
   ;;    If the first argument is nil, as it is here,
   ;;    information about the error signal is not
   ;;    stored for use by another function.
@@ -8040,25 +8040,25 @@ The text is deleted but saved in the kill ring."
 @end group
 
 @group
-      ;; 2. The second argument to `condition-case'
+      ;; 2. The second argument to 'condition-case'
       ;;    tells the Lisp interpreter what to do when all goes well.
 @end group
 
 @group
-      ;;    The `delete-and-extract-region' function usually does the
+      ;;    The 'delete-and-extract-region' function usually does the
       ;;    work.  If the beginning and ending of the region are both
-      ;;    the same, then the variable `string' will be empty, or nil
+      ;;    the same, then the variable 'string' will be empty, or nil
       (let ((string (delete-and-extract-region beg end)))
 @end group
 
 @group
-        ;; `when' is an `if' clause that cannot take an `else-part'.
-        ;; Emacs normally sets the value of `last-command' to the
+        ;; 'when' is an 'if' clause that cannot take an 'else-part'.
+        ;; Emacs normally sets the value of 'last-command' to the
         ;; previous command.
 @end group
 @group
-        ;; `kill-append' concatenates the new string and the old.
-        ;; `kill-new' inserts text into a new item in the kill ring.
+        ;; 'kill-append' concatenates the new string and the old.
+        ;; 'kill-new' inserts text into a new item in the kill ring.
         (when string
           (if (eq last-command 'kill-region)
               ;; if true, prepend string
@@ -8068,7 +8068,7 @@ The text is deleted but saved in the kill ring."
 @end group
 
 @group
-    ;; 3. The third argument to `condition-case' tells the interpreter
+    ;; 3. The third argument to 'condition-case' tells the interpreter
     ;;    what to do with an error.
 @end group
 @group
@@ -8136,7 +8136,7 @@ However, if an error occurs, among its other actions, the 
function
 generating the error signal will define one or more error condition
 names.
 
-An error handler is the third argument to @code{condition case}.
+An error handler is the third argument to @code{condition-case}.
 An error handler has two parts, a @var{condition-name} and a
 @var{body}.  If the @var{condition-name} part of an error handler
 matches a condition name generated by an error, then the @var{body}
@@ -8198,7 +8198,7 @@ Technically speaking, @code{when} is a Lisp macro.  A 
Lisp macro
 enables you to define new control constructs and other language
 features.  It tells the interpreter how to compute another Lisp
 expression which will in turn compute the value.  In this case, the
-`other expression' is an @code{if} expression.
+``other expression'' is an @code{if} expression.
 
 The @code{kill-region} function definition also has an @code{unless}
 macro; it is the converse of @code{when}.  The @code{unless} macro is
@@ -8232,7 +8232,7 @@ The then-part is evaluated if the previous command was 
another call to
 
 @code{yank-handler} is an optional argument to @code{kill-region} that
 tells the @code{kill-append} and @code{kill-new} functions how deal
-with properties added to the text, such as `bold' or `italics'.
+with properties added to the text, such as ``bold'' or ``italics''.
 
 @code{last-command} is a variable that comes with Emacs that we have
 not seen before.  Normally, whenever a function is executed, Emacs
@@ -8320,7 +8320,7 @@ document from the beginning, understanding these parts of 
a function is
 almost becoming routine.
 
 The documentation is somewhat confusing unless you remember that the
-word `kill' has a meaning different from usual.  The `Transient Mark'
+word ``kill'' has a meaning different from usual.  The ``Transient Mark''
 and @code{interprogram-cut-function} comments explain certain
 side-effects.
 
@@ -8472,8 +8472,8 @@ a moment.
 
 (Also, the function provides an optional argument called
 @code{yank-handler}; when invoked, this argument tells the function
-how to deal with properties added to the text, such as `bold' or
-`italics'.)
+how to deal with properties added to the text, such as ``bold'' or
+``italics''.)
 
 @c !!! bug in GNU Emacs 22 version of  kill-append ?
 It has a @code{let*} function to set the value of the first element of
@@ -8643,7 +8643,7 @@ As usual, we can look at this function in parts.
 
 The function definition has an optional @code{yank-handler} argument,
 which when invoked tells the function how to deal with properties
-added to the text, such as `bold' or `italics'.  We will skip that.
+added to the text, such as ``bold'' or ``italics''.  We will skip that.
 
 @need 1200
 The first line of the documentation makes sense:
@@ -8887,7 +8887,7 @@ It starts with an @code{if} expression
 In this case, the expression tests first to see whether
 @code{menu-bar-update-yank-menu} exists as a function, and if so,
 calls it.  The @code{fboundp} function returns true if the symbol it
-is testing has a function definition that `is not void'.  If the
+is testing has a function definition that ``is not void''.  If the
 symbol's function definition were void, we would receive an error
 message, as we did when we created errors intentionally (@pxref{Making
 Errors, , Generate an Error Message}).
@@ -8914,7 +8914,7 @@ The expression determines whether the second argument to
 @end ignore
 
 @code{menu-bar-update-yank-menu} is one of the functions that make it
-possible to use the `Select and Paste' menu in the Edit item of a menu
+possible to use the ``Select and Paste'' menu in the Edit item of a menu
 bar; using a mouse, you can look at the various pieces of text you
 have saved and select one piece to paste.
 
@@ -8950,7 +8950,7 @@ an existing element or as a new element, leads us to the 
code for
 bringing back text that has been cut out of the buffer---the yank
 commands.  However, before discussing the yank commands, it is better
 to learn how lists are implemented in a computer.  This will make
-clear such mysteries as the use of the term `pointer'.  But before
+clear such mysteries as the use of the term ``pointer''.  But before
 that, we will digress into C.
 
 @ignore
@@ -8961,7 +8961,7 @@ expression is true, @code{kill-append} prepends the 
string to the just
 previously clipped text.  For a detailed discussion, see
 @ref{kill-append function, , The @code{kill-append} function}.)
 
-If you then yank back the text, i.e., `paste' it, you get both
+If you then yank back the text, i.e., ``paste'' it, you get both
 pieces of text at once.  That way, if you delete two words in a row,
 and then yank them back, you get both words, in their proper order,
 with one yank.  (The @address@hidden(< end beg))}} expression makes sure the
@@ -9067,7 +9067,7 @@ The sixth part is nearly like the argument that follows 
the
 @code{interactive} declaration in a function written in Lisp: a letter
 followed, perhaps, by a prompt.  The only difference from the Lisp is
 when the macro is called with no arguments.  Then you write a @code{0}
-(which is a `null string'), as in this macro.
+(which is a ``null string''), as in this macro.
 
 If you were to specify arguments, you would place them between
 quotation marks.  The C macro for @code{goto-char} includes
@@ -9084,8 +9084,8 @@ these comments and uses them to make the ``real'' 
documentation.)
 
 @need 1200
 In a C macro, the formal parameters come next, with a statement of
-what kind of object they are, followed by what might be called the `body'
-of the macro.  For @code{delete-and-extract-region} the `body'
+what kind of object they are, followed by what might be called the ``body''
+of the macro.  For @code{delete-and-extract-region} the ``body''
 consists of the following four lines:
 
 @smallexample
@@ -9111,13 +9111,13 @@ passed to @code{del_range}.  These are @address@hidden 
(start)}} and
 As far as the C language is concerned, @code{start} and @code{end} are
 two integers that mark the beginning and end of the region to be
 address@hidden precisely, and requiring more expert knowledge
-to understand, the two integers are of type `Lisp_Object', which can
+to understand, the two integers are of type @code{Lisp_Object}, which can
 also be a C union instead of an integer type.}.
 
 In early versions of Emacs, these two numbers were thirty-two bits
 long, but the code is slowly being generalized to handle other
 lengths.  Three of the available bits are used to specify the type of
-information; the remaining bits are used as `content'.
+information; the remaining bits are used as ``content''.
 
 @samp{XINT} is a C macro that extracts the relevant number from the
 longer collection of bits; the three other bits are discarded.
@@ -9326,7 +9326,7 @@ For example:
 its remaining arguments to its first argument.
 
 @item nthcdr
-Return the result of taking @sc{cdr} `n' times on a list.
+Return the result of taking @sc{cdr} @var{n} times on a list.
 @iftex
 The
 @tex
@@ -9334,7 +9334,7 @@ $n^{th}$
 @end tex
 @code{cdr}.
 @end iftex
-The `rest of the rest', as it were.
+The ``rest of the rest'', as it were.
 
 @need 1250
 For example:
@@ -9643,7 +9643,7 @@ address-boxes for the list.)
 
 If a symbol is set to the @sc{cdr} of a list, the list itself is not
 changed; the symbol simply has an address further down the list.  (In
-the jargon, @sc{car} and @sc{cdr} are `non-destructive'.)  Thus,
+the jargon, @sc{car} and @sc{cdr} are ``non-destructive''.)  Thus,
 evaluation of the following expression
 
 @smallexample
@@ -9813,7 +9813,7 @@ and in one of its drawers you found a map giving you 
directions to
 where the buried treasure lies.
 
 (In addition to its name, symbol definition, and variable value, a
-symbol has a `drawer' for a @dfn{property list} which can be used to
+symbol has a ``drawer'' for a @dfn{property list} which can be used to
 record other information.  Property lists are not discussed here; see
 @ref{Property Lists, , Property Lists, elisp, The GNU Emacs Lisp
 Reference Manual}.)
@@ -9907,8 +9907,8 @@ What does the @code{more-flowers} list now contain?
 @cindex Retrieving text
 @cindex Pasting text
 
-Whenever you cut text out of a buffer with a `kill' command in GNU Emacs,
-you can bring it back with a `yank' command.  The text that is cut out of
+Whenever you cut text out of a buffer with a ``kill'' command in GNU Emacs,
+you can bring it back with a ``yank'' command.  The text that is cut out of
 the buffer is put in the kill ring and the yank commands insert the
 appropriate contents of the kill ring back into a buffer (not necessarily
 the original buffer).
@@ -9920,7 +9920,7 @@ the second element.  Successive @kbd{M-y} commands 
replace the second
 element with the third, fourth, or fifth element, and so on.  When the
 last element in the kill ring is reached, it is replaced by the first
 element and the cycle is repeated.  (Thus the kill ring is called a
-`ring' rather than just a `list'.  However, the actual data structure
+``ring'' rather than just a ``list''.  However, the actual data structure
 that holds the text is a list.
 @xref{Kill Ring, , Handling the Kill Ring}, for the details of how the
 list is handled as a ring.)
@@ -10064,7 +10064,7 @@ These two ways of talking about the same thing sound 
confusing at first but
 make sense on reflection.  The kill ring is generally thought of as the
 complete structure of data that holds the information of what has recently
 been cut out of the Emacs buffers.  The @code{kill-ring-yank-pointer}
-on the other hand, serves to indicate---that is, to `point to'---that part
+on the other hand, serves to indicate---that is, to ``point to''---that part
 of the kill ring of which the first element (the @sc{car}) will be
 inserted.
 
@@ -10148,7 +10148,7 @@ their kin; but you can use recursion, which provides a 
very powerful
 way to think about and then to solve address@hidden can write
 recursive functions to be frugal or wasteful of mental or computer
 resources; as it happens, methods that people find easy---that are
-frugal of `mental resources'---sometimes use considerable computer
+frugal of ``mental resources''---sometimes use considerable computer
 resources.  Emacs was designed to run on machines that we now consider
 limited and its default settings are conservative.  You may want to
 increase the values of @code{max-specpdl-size} and
@@ -10211,7 +10211,7 @@ evaluated.  This process is called a loop since the 
Lisp interpreter
 repeats the same thing again and again, like an airplane doing a loop.
 When the result of evaluating the true-or-false-test is false, the
 Lisp interpreter does not evaluate the rest of the @code{while}
-expression and `exits the loop'.
+expression and ``exits the loop''.
 
 Clearly, if the value returned by evaluating the first argument to
 @code{while} is always true, the body following will be evaluated
@@ -10372,7 +10372,7 @@ expression, @code{(print-elements-of-list animals)}, by 
typing
 to be printed in the @file{*scratch*} buffer instead of being printed
 in the echo area.  (Otherwise you will see something like this in your
 echo area: @code{^Jgazelle^J^Jgiraffe^J^Jlion^J^Jtiger^Jnil}, in which
-each @samp{^J} stands for a `newline'.)
+each @samp{^J} stands for a ``newline''.)
 
 @need 1500
 In a recent instance of GNU Emacs, you can evaluate these expressions
@@ -10941,8 +10941,8 @@ provide for looping.  Sometimes these are quicker to 
write than the
 equivalent @code{while} loop.  Both are Lisp macros.  (@xref{Macros, ,
 Macros, elisp, The GNU Emacs Lisp Reference Manual}. )
 
address@hidden works like a @code{while} loop that address@hidden down a
-list':  @code{dolist} automatically shortens the list each time it
address@hidden works like a @code{while} loop that address@hidden down a
+list'':  @code{dolist} automatically shortens the list each time it
 loops---takes the @sc{cdr} of the list---and binds the @sc{car} of
 each shorter version of the list to the first of its arguments.
 
@@ -11043,7 +11043,7 @@ of the work you have to do when writing a @code{while} 
expression.
 
 Like a @code{while} loop, a @code{dolist} loops.  What is different is
 that it automatically shortens the list each time it loops---it
address@hidden down the list' on its own---and it automatically binds
address@hidden down the list'' on its own---and it automatically binds
 the @sc{car} of each shorter version of the list to the first of its
 arguments.
 
@@ -11116,10 +11116,10 @@ call a program that runs exactly like itself, but 
with slightly
 different arguments.  The code runs exactly the same because it has
 the same name.  However, even though the program has the same name, it
 is not the same entity.  It is different.  In the jargon, it is a
-different `instance'.
+different ``instance''.
 
-Eventually, if the program is written correctly, the `slightly
-different arguments' will become sufficiently different from the first
+Eventually, if the program is written correctly, the ``slightly
+different arguments'' will become sufficiently different from the first
 arguments that the final instance will stop.
 
 @menu
@@ -11159,10 +11159,10 @@ install a function definition, that is, when you 
evaluate a
 @code{defun} macro, you install the necessary equipment to build
 robots.  It is as if you were in a factory, setting up an assembly
 line.  Robots with the same name are built according to the same
-blueprints.  So they have, as it were, the same `model number', but a
-different `serial number'.
+blueprints.  So they have, as it were, the same ``model number'', but a
+different ``serial number''.
 
-We often say that a recursive function `calls itself'.  What we mean
+We often say that a recursive function ``calls itself''.  What we mean
 is that the instructions in a recursive function cause the Lisp
 interpreter to run a different function that has the same name and
 does the same job as the first, but with different arguments.
@@ -11273,7 +11273,7 @@ Uses recursion."
 The @code{print-elements-recursively} function first tests whether
 there is any content in the list; if there is, the function prints the
 first element of the list, the @sc{car} of the list.  Then the
-function `invokes itself', but gives itself as its argument, not the
+function ``invokes itself'', but gives itself as its argument, not the
 whole list, but the second and subsequent elements of the list, the
 @sc{cdr} of the list.
 
@@ -11289,16 +11289,16 @@ a different individual from the first, but is the 
same model.
 When the second evaluation occurs, the @code{when} expression is
 evaluated and if true, prints the first element of the list it
 receives as its argument (which is the second element of the original
-list).  Then the function `calls itself' with the @sc{cdr} of the list
+list).  Then the function ``calls itself'' with the @sc{cdr} of the list
 it is invoked with, which (the second time around) is the @sc{cdr} of
 the @sc{cdr} of the original list.
 
-Note that although we say that the function `calls itself', what we
+Note that although we say that the function ``calls itself'', what we
 mean is that the Lisp interpreter assembles and instructs a new
 instance of the program.  The new instance is a clone of the first,
 but is a separate individual.
 
-Each time the function `invokes itself', it invokes itself on a
+Each time the function ``invokes itself'', it invokes itself on a
 shorter version of the original list.  It creates a new instance that
 works on a shorter list.
 
@@ -11716,7 +11716,7 @@ the @code{accumulate} recursive pattern, an action is 
performed on
 every element of a list and the result of that action is accumulated
 with the results of performing the action on the other elements.
 
-This is very like the `every' pattern using @code{cons}, except that
+This is very like the ``every'' pattern using @code{cons}, except that
 @code{cons} is not used, but some other combiner.
 
 @need 1500
@@ -11767,7 +11767,7 @@ In the @code{keep} recursive pattern, each element of a 
list is tested;
 the element is acted on and the results are kept only if the element
 meets a criterion.
 
-Again, this is very like the `every' pattern, except the element is
+Again, this is very like the ``every'' pattern, except the element is
 skipped unless it meets a criterion.
 
 @need 1500
@@ -11868,7 +11868,7 @@ think of it as a little robot---cannot complete its 
job.  It must hand
 off the calculation for @code{(triangle-recursively 6)} to a second
 instance of the program, to a second robot.  This second individual is
 completely different from the first one; it is, in the jargon, a
-`different instantiation'.  Or, put another way, it is a different
+``different instantiation''.  Or, put another way, it is a different
 robot.  It is the same model as the first; it calculates triangle
 numbers recursively; but it has a different serial number.
 
@@ -11917,12 +11917,12 @@ more steps.
 The solution to the problem of deferred operations is to write in a
 manner that does not defer address@hidden phrase @dfn{tail
 recursive} is used to describe such a process, one that uses
-`constant space'.}.  This requires
+``constant space''.}.  This requires
 writing to a different pattern, often one that involves writing two
-function definitions, an `initialization' function and a `helper'
+function definitions, an ``initialization'' function and a ``helper''
 function.
 
-The `initialization' function sets up the job; the `helper' function
+The ``initialization'' function sets up the job; the ``helper'' function
 does the work.
 
 @need 1200
@@ -11964,21 +11964,21 @@ Install both function definitions by evaluating them, 
then call
 @end group
 @end smallexample
 
-The `initialization' function calls the first instance of the `helper'
+The ``initialization'' function calls the first instance of the ``helper''
 function with three arguments: zero, zero, and a number which is the
 number of rows in the triangle.
 
-The first two arguments passed to the `helper' function are
+The first two arguments passed to the ``helper'' function are
 initialization values.  These values are changed when
 @code{triangle-recursive-helper} invokes new address@hidden
 jargon is mildly confusing:  @code{triangle-recursive-helper} uses a
 process that is iterative in a procedure that is recursive.  The
 process is called iterative because the computer need only record the
 three values, @code{sum}, @code{counter}, and @code{number}; the
-procedure is recursive because the function `calls itself'.  On the
+procedure is recursive because the function ``calls itself''.  On the
 other hand, both the process and the procedure used by
 @code{triangle-recursively} are called recursive.  The word
-`recursive' has different meanings in the two contexts.}
+``recursive'' has different meanings in the two contexts.}
 
 Let's see what happens when we have a triangle that has one row.  (This
 triangle will have one pebble in it!)
@@ -12131,8 +12131,8 @@ Documentation Format}.
 Regular expression searches are used extensively in GNU Emacs.  The
 two functions, @code{forward-sentence} and @code{forward-paragraph},
 illustrate these searches well.  They use regular expressions to find
-where to move point.  The phrase `regular expression' is often written
-as `regexp'.
+where to move point.  The phrase ``regular expression'' is often written
+as ``regexp''.
 
 Regular expression searches are described in @ref{Regexp Search, ,
 Regular Expression Search, emacs, The GNU Emacs Manual}, as well as in
@@ -12329,7 +12329,7 @@ search is successful, it leaves point immediately after 
the last
 character in the target.  If the search is backwards, it leaves point
 just before the first character in the target.  You may tell
 @code{re-search-forward} to return @code{t} for true.  (Moving point
-is therefore a `side effect'.)
+is therefore a ``side effect''.)
 
 Like @code{search-forward}, the @code{re-search-forward} function takes
 four arguments:
@@ -12631,7 +12631,7 @@ evaluates its then-part; otherwise, the Emacs Lisp 
interpreter
 evaluates the else-part.  The true-or-false-test of the @code{if}
 expression is the regular expression search.
 
-It may seem odd to have what looks like the `real work' of
+It may seem odd to have what looks like the ``real work'' of
 the @code{forward-sentence} function buried here, but this is a common
 way this kind of operation is carried out in Lisp.
 
@@ -13362,7 +13362,7 @@ of which I load 12---you can create a @file{TAGS} file 
for the Emacs
 Lisp files in that directory.
 
 @need 1250
-The @code{etags} program takes all the usual shell `wildcards'.  For
+The @code{etags} program takes all the usual shell ``wildcards''.  For
 example, if you have two directories for which you want a single
 @file{TAGS} file, type @address@hidden *.el ../elisp/*.el}}, where
 @file{../elisp/} is the second directory:
@@ -13401,7 +13401,7 @@ program to attempt to find it.
 Type @address@hidden locate @key{RET} TAGS @key{RET}}} and Emacs will list
 for you the full path names of all your @file{TAGS} files.  On my
 system, this command lists 34 @file{TAGS} files.  On the other hand, a
-`plain vanilla' system I recently installed did not contain any
+``plain vanilla'' system I recently installed did not contain any
 @file{TAGS} files.
 
 If the tags table you want has been created, you can use the @code{M-x
@@ -13417,7 +13417,7 @@ visit-tags-table}.
 The GNU Emacs sources come with a @file{Makefile} that contains a
 sophisticated @code{etags} command that creates, collects, and merges
 tags tables from all over the Emacs sources and puts the information
-into one @file{TAGS} file in the @file{src/} directory. (The
+into one @file{TAGS} file in the @file{src/} directory.  (The
 @file{src/} directory is below the top level of your Emacs directory.)
 
 @need 1250
@@ -13505,8 +13505,8 @@ For example:
 @group
 (let* ((foo 7)
       (bar (* 3 foo)))
-  (message "`bar' is %d." bar))
-     @result{} `bar' is 21.
+  (message "'bar' is %d." bar))
+     @result{} 'bar' is 21.
 @end group
 @end smallexample
 
@@ -13535,7 +13535,7 @@ Write a function to search for a regular expression 
that matches two
 or more blank lines in sequence.
 
 @item
-Write a function to search for duplicated words, such as `the the'.
+Write a function to search for duplicated words, such as ``the the''.
 @xref{Regexps, , Syntax of Regular Expressions, emacs, The GNU Emacs
 Manual}, for information on how to write a regexp (a regular
 expression) to match a string that is composed of two identical
@@ -13670,7 +13670,7 @@ forward, and false when point is at the end of the 
region.
 
 We could use @code{(forward-word 1)} as the expression for moving point
 forward word by word, but it is easier to see what Emacs identifies as a
-`word' if we use a regular expression search.
+``word'' if we use a regular expression search.
 
 A regular expression search that finds the pattern for which it is
 searching leaves point after the last character matched.  This means
@@ -13714,7 +13714,7 @@ single backslash has special meaning to the Emacs Lisp 
interpreter.
 It indicates that the following character is interpreted differently
 than usual.  For example, the two characters, @samp{\n}, stand for
 @samp{newline}, rather than for a backslash followed by @samp{n}.  Two
-backslashes in a row stand for an ordinary, `unspecial' backslash, so
+backslashes in a row stand for an ordinary, ``unspecial'' backslash, so
 Emacs Lisp interpreter ends of seeing a single backslash followed by a
 letter.  So it discovers the letter is special.)
 
@@ -14106,8 +14106,8 @@ the region, as returned by the recursive call; and then 
the
 user.
 
 Often, one thinks of the binding within a @code{let} expression as
-somehow secondary to the `primary' work of a function.  But in this
-case, what you might consider the `primary' job of the function,
+somehow secondary to the ``primary'' work of a function.  But in this
+case, what you might consider the ``primary'' job of the function,
 counting words, is done within the @code{let} expression.
 
 @need 1250
@@ -14148,8 +14148,8 @@ Using @code{let}, the function definition looks like 
this:
 
 Next, we need to write the recursive counting function.
 
-A recursive function has at least three parts: the `do-again-test', the
-`next-step-expression', and the recursive call.
+A recursive function has at least three parts: the ``do-again-test'', the
+``next-step-expression'', and the recursive call.
 
 The do-again-test determines whether the function will or will not be
 called again.  Since we are counting words in a region and can use a
@@ -14173,7 +14173,7 @@ the expression that moves point forward, word by word.
 
 The third part of a recursive function is the recursive call.
 
-Somewhere, also, we also need a part that does the `work' of the
+Somewhere, also, we also need a part that does the ``work'' of the
 function, a part that does the counting.  A vital part!
 
 @need 1250
@@ -14499,9 +14499,9 @@ be difficult.
 
 When we first start thinking about how to count the words in a
 function definition, the first question is (or ought to be) what are
-we going to count?  When we speak of `words' with respect to a Lisp
+we going to count?  When we speak of ``words'' with respect to a Lisp
 function definition, we are actually speaking, in large part, of
-`symbols'.  For example, the following @code{multiply-by-seven}
+``symbols''.  For example, the following @code{multiply-by-seven}
 function contains the five symbols @code{defun},
 @code{multiply-by-seven}, @code{number}, @code{*}, and @code{7}.  In
 addition, in the documentation string, it contains the four words
@@ -14543,8 +14543,8 @@ regexp is:
 @noindent
 This regular expression is a pattern defining one or more word
 constituent characters possibly followed by one or more characters
-that are not word constituents.  What is meant by `word constituent
-characters' brings us to the issue of syntax, which is worth a section
+that are not word constituents.  What is meant by ``word constituent
+characters'' brings us to the issue of syntax, which is worth a section
 of its own.
 
 @node Syntax
@@ -14562,9 +14562,9 @@ character.  (For more information, @pxref{Syntax 
Tables, , Syntax
 Tables, elisp, The GNU Emacs Lisp Reference Manual}.)
 
 Syntax tables specify which characters belong to which categories.
-Usually, a hyphen is not specified as a `word constituent character'.
-Instead, it is specified as being in the `class of characters that are
-part of symbol names but not words.'  This means that the
+Usually, a hyphen is not specified as a ``word constituent character''.
+Instead, it is specified as being in the ``class of characters that are
+part of symbol names but not words.''  This means that the
 @address@hidden function treats it in the same way it treats
 an interword white space, which is why @address@hidden
 counts @samp{multiply-by-seven} as three words.
@@ -14967,7 +14967,7 @@ The task is easy: use @code{find-file-noselect} and 
@code{set-buffer}.
 @section @code{lengths-list-file} in Detail
 
 The core of the @code{lengths-list-file} function is a @code{while}
-loop containing a function to move point forward `defun by defun' and
+loop containing a function to move point forward ``defun by defun'' and
 a function to count the number of words and symbols in each defun.
 This core must be surrounded by functions that do various other tasks,
 including finding the file, and ensuring that point starts out at the
@@ -14983,7 +14983,7 @@ Each number is the number of words or
 symbols in one function definition."
 @end group
 @group
-  (message "Working on `%s' ... " filename)
+  (message "Working on '%s' ... " filename)
   (save-excursion
     (let ((buffer (find-file-noselect filename))
           (lengths-list))
@@ -15033,14 +15033,14 @@ Next comes a call to widen the buffer if it is 
narrowed.  This
 function is usually not needed---Emacs creates a fresh buffer if none
 already exists; but if a buffer visiting the file already exists Emacs
 returns that one.  In this case, the buffer may be narrowed and must
-be widened.  If we wanted to be fully `user-friendly', we would
+be widened.  If we wanted to be fully ``user-friendly'', we would
 arrange to save the restriction and the location of point, but we
 won't.
 
 The @code{(goto-char (point-min))} expression moves point to the
 beginning of the buffer.
 
-Then comes a @code{while} loop in which the `work' of the function is
+Then comes a @code{while} loop in which the ``work'' of the function is
 carried out.  In the loop, Emacs determines the length of each
 definition and constructs a lengths' list containing the information.
 
@@ -15261,11 +15261,11 @@ Besides a @code{while} loop, you can work on each of 
a list of files
 with recursion.  A recursive version of @code{lengths-list-many-files}
 is short and simple.
 
-The recursive function has the usual parts: the `do-again-test', the
-`next-step-expression', and the recursive call.  The `do-again-test'
+The recursive function has the usual parts: the ``do-again-test'', the
+``next-step-expression'', and the recursive call.  The ``do-again-test''
 determines whether the function should call itself again, which it
 will do if the @code{list-of-files} contains any remaining elements;
-the `next-step-expression' resets the @code{list-of-files} to the
+the ``next-step-expression'' resets the @code{list-of-files} to the
 @sc{cdr} of itself, so eventually the list will be empty; and the
 recursive call calls itself on the shorter list.  The complete
 function is shorter than this description!
@@ -15366,7 +15366,7 @@ numbers.
 @end ifnottex
 
 Based on what we have done before, we can readily foresee that it
-should not be too hard to write a function that address@hidden' down the
+should not be too hard to write a function that address@hidden'' down the
 lengths' list, looks at each element, determines which length range it
 is in, and increments a counter for that range.
 
@@ -15505,7 +15505,7 @@ as a list that looks like this (but with more elements):
 The @code{directory-files-and-attributes} function returns a list of
 lists.  Each of the lists within the main list consists of 13
 elements.  The first element is a string that contains the name of the
-file---which, in GNU/Linux, may be a `directory file', that is to
+file---which, in GNU/Linux, may be a ``directory file'', that is to
 say, a file with the special attributes of a directory.  The second
 element of the list is @code{t} for a directory, a string
 for symbolic link (the string is the name linked to), or @code{nil}.
@@ -15604,7 +15604,7 @@ Let's write a function definition to do these tasks.  
We will use a
 @code{while} loop to move from one filename to another within a
 directory, checking what needs to be done; and we will use a recursive
 call to repeat the actions on each sub-directory.  The recursive
-pattern is `accumulate'
+pattern is ``accumulate''
 (@pxref{Accumulate}),
 using @code{append} as the combiner.
 
@@ -15640,7 +15640,7 @@ Here is the function:
 @end group
 @group
       (cond
-       ;; check to see whether filename ends in `.el'
+       ;; check to see whether filename ends in '.el'
        ;; and if so, append its name to a list.
        ((equal ".el" (substring (car (car current-directory-list)) -3))
         (setq el-files-list
@@ -16062,7 +16062,7 @@ the function to label the axes automatically.
 
 Since Emacs is designed to be flexible and work with all kinds of
 terminals, including character-only terminals, the graph will need to
-be made from one of the `typewriter' symbols.  An asterisk will do; as
+be made from one of the ``typewriter'' symbols.  An asterisk will do; as
 we enhance the graph-printing function, we can make the choice of
 symbol a user option.
 
@@ -16092,7 +16092,7 @@ a regular expression, including functions that are not 
interactive.
 
 What we want to look for is some command that prints or inserts
 columns.  Very likely, the name of the function will contain either
-the word `print' or the word `insert' or the word `column'.
+the word ``print'' or the word ``insert'' or the word ``column''.
 Therefore, we can simply type @kbd{M-x apropos RET
 print\|insert\|column RET} and look at the result.  On my system, this
 command once too takes quite some time, and then produced a list of 79
@@ -16229,7 +16229,7 @@ Wrong type of argument:  number-or-marker-p, (3 4 6 5 7 
3)
 
 @findex apply
 We need a function that passes a list of arguments to a function.
-This function is @code{apply}.  This function `applies' its first
+This function is @code{apply}.  This function ``applies'' its first
 argument (a function) to its remaining arguments, the last of which
 may be a list.
 
@@ -16247,7 +16247,7 @@ returns 8.
 without a book such as this.  It is possible to discover other
 functions, like @code{search-forward} or @code{insert-rectangle}, by
 guessing at a part of their names and then using @code{apropos}.  Even
-though its base in metaphor is clear---`apply' its first argument to
+though its base in metaphor is clear---``apply'' its first argument to
 the rest---I doubt a novice would come up with that particular word
 when using @code{apropos} or other aid.  Of course, I could be wrong;
 after all, the function was first named by someone who had to invent
@@ -16335,7 +16335,7 @@ returns
 
 As written, @code{column-of-graph} contains a major flaw: the symbols
 used for the blank and for the marked entries in the column are
-`hard-coded' as a space and asterisk.  This is fine for a prototype,
+``hard-coded'' as a space and asterisk.  This is fine for a prototype,
 but you, or another user, may wish to use other symbols.  For example,
 in testing the graph function, you many want to use a period in place
 of the space, to make sure the point is being repositioned properly
@@ -16414,7 +16414,7 @@ is no more than a bar graph in which the part of each 
bar that is
 below the top is blank.  To construct a column for a line graph, the
 function first constructs a list of blanks that is one shorter than
 the value, then it uses @code{cons} to attach a graph symbol to the
-list; then it uses @code{cons} again to attach the `top blanks' to
+list; then it uses @code{cons} again to attach the ``top blanks'' to
 the list.
 
 It is easy to see how to write such a function, but since we don't
@@ -16530,7 +16530,7 @@ The one unexpected expression in this function is the
 @address@hidden(sit-for 0)}} expression in the @code{while} loop.  This
 expression makes the graph printing operation more interesting to
 watch than it would be otherwise.  The expression causes Emacs to
-`sit' or do nothing for a zero length of time and then redraw the
+``sit'' or do nothing for a zero length of time and then redraw the
 screen.  Placed here, it causes Emacs to redraw the screen column by
 column.  Without it, Emacs would not redraw the screen until the
 function exits.
@@ -16592,14 +16592,14 @@ Emacs will print a graph like this:
 @findex recursive-graph-body-print
 
 The @code{graph-body-print} function may also be written recursively.
-The recursive solution is divided into two parts: an outside `wrapper'
+The recursive solution is divided into two parts: an outside ``wrapper''
 that uses a @code{let} expression to determine the values of several
 variables that need only be found once, such as the maximum height of
 the graph, and an inside function that is called recursively to print
 the graph.
 
 @need 1250
-The `wrapper' is uncomplicated:
+The ``wrapper'' is uncomplicated:
 
 @smallexample
 @group
@@ -16617,13 +16617,13 @@ The numbers-list consists of the Y-axis values."
 @end smallexample
 
 The recursive function is a little more difficult.  It has four parts:
-the `do-again-test', the printing code, the recursive call, and the
-`next-step-expression'.  The `do-again-test' is a @code{when}
+the ``do-again-test'', the printing code, the recursive call, and the
+``next-step-expression''.  The ``do-again-test'' is a @code{when}
 expression that determines whether the @code{numbers-list} contains
 any remaining elements; if it does, the function prints one column of
 the graph using the printing code and calls itself again.  The
 function calls itself again according to the value produced by the
-`next-step-expression' which causes the call to act on a shorter
+``next-step-expression'' which causes the call to act on a shorter
 version of the @code{numbers-list}.
 
 @smallexample
@@ -16699,8 +16699,8 @@ Write a line graph version of the graph printing 
functions.
 @cindex Initialization file
 
 ``You don't have to like Emacs to like it''---this seemingly
-paradoxical statement is the secret of GNU Emacs.  The plain, `out of
-the box' Emacs is a generic tool.  Most people who use it, customize
+paradoxical statement is the secret of GNU Emacs.  The plain, ``out of
+the box'' Emacs is a generic tool.  Most people who use it, customize
 it to suit themselves.
 
 GNU Emacs is mostly written in Emacs Lisp; this means that by writing
@@ -16738,7 +16738,7 @@ person hopes to do with an unadorned file?  Fundamental 
mode is the
 right default for such a file, just as C mode is the right default for
 editing C code.  (Enough programming languages have syntaxes
 that enable them to share or nearly share features, so C mode is
-now provided by CC mode, the `C Collection'.)
+now provided by CC mode, the ``C Collection''.)
 
 But when you do know who is going to use Emacs---you,
 yourself---then it makes sense to customize Emacs.
@@ -16783,8 +16783,8 @@ have the same form as your @file{.emacs} file, but are 
loaded by
 everyone.
 
 Two site-wide initialization files, @file{site-load.el} and
address@hidden, are loaded into Emacs and then `dumped' if a
-`dumped' version of Emacs is created, as is most common.  (Dumped
address@hidden, are loaded into Emacs and then ``dumped'' if a
+``dumped'' version of Emacs is created, as is most common.  (Dumped
 copies of Emacs load more quickly.  However, once a file is loaded and
 dumped, a change to it does not lead to a change in Emacs unless you
 load it yourself or re-dump Emacs.  @xref{Building Emacs, , Building
@@ -16896,7 +16896,7 @@ M-x customize
 @end smallexample
 
 @noindent
-and find that the group for editing files of data is called `data'.
+and find that the group for editing files of data is called ``data''.
 Enter that group.  Text Mode Hook is the first member.  You can click
 on its various options, such as @code{turn-on-auto-fill}, to set the
 values.  After you click on the button to
@@ -17056,7 +17056,7 @@ Just remember: type @kbd{C-h} two times for help.
 @end smallexample
 
 @noindent
-`Mode help', as I call this, is very helpful.  Usually, it tells you
+``Mode help'', as I call this, is very helpful.  Usually, it tells you
 all you need to know.
 
 Of course, you don't need to include comments like these in your
@@ -17067,7 +17067,7 @@ remember to look here to remind myself.
 @node Text and Auto-fill
 @section Text and Auto Fill Mode
 
-Now we come to the part that `turns on' Text mode and
+Now we come to the part that ``turns on'' Text mode and
 Auto Fill mode.
 
 @smallexample
@@ -17152,7 +17152,7 @@ In this line, the @code{add-hook} command adds
 @code{turn-on-auto-fill} is the name of a program, that, you guessed
 it!, turns on Auto Fill mode.
 
-Every time Emacs turns on Text mode, Emacs runs the commands `hooked'
+Every time Emacs turns on Text mode, Emacs runs the commands ``hooked''
 onto Text mode.  So every time Emacs turns on Text mode, Emacs also
 turns on Auto Fill mode.
 
@@ -17189,15 +17189,15 @@ fill commands to insert two spaces after a colon:
 @node Mail Aliases
 @section Mail Aliases
 
-Here is a @code{setq} that `turns on' mail aliases, along with more
+Here is a @code{setq} that ``turns on'' mail aliases, along with more
 reminders.
 
 @smallexample
 @group
 ;;; Mail mode
-; To enter mail mode, type `C-x m'
+; To enter mail mode, type 'C-x m'
 ; To enter RMAIL (for reading mail),
-; type `M-x rmail'
+; type 'M-x rmail'
 (setq mail-aliases t)
 @end group
 @end smallexample
@@ -17209,7 +17209,7 @@ This @code{setq} command sets the value of the variable
 says, in effect, ``Yes, use mail aliases.''
 
 Mail aliases are convenient short names for long email addresses or
-for lists of email addresses.  The file where you keep your `aliases'
+for lists of email addresses.  The file where you keep your ``aliases''
 is @file{~/.mailrc}.  You write an alias like this:
 
 @smallexample
@@ -17247,7 +17247,7 @@ command sets values only in buffers that do not have 
their own local
 values for the variable.
 
 @ifinfo
address@hidden Spaces, , Tabs vs. Spaces, emacs, The GNU Emacs Manual}.
address@hidden Spaces, , Tabs vs.@: Spaces, emacs, The GNU Emacs Manual}.
 
 @xref{File Variables, , Local Variables in Files, emacs, The GNU Emacs
 Manual}.
@@ -17284,9 +17284,9 @@ This also shows how to set a key globally, for all 
modes.
 @findex global-set-key
 The command is @code{global-set-key}.  It is followed by the
 keybinding.  In a @file{.emacs} file, the keybinding is written as
-shown: @code{\C-c} stands for `control-c', which means `press the
-control key and the @key{c} key at the same time'.  The @code{w} means
-`press the @key{w} key'.  The keybinding is surrounded by double
+shown: @code{\C-c} stands for ``control-c'', which means ``press the
+control key and the @key{c} key at the same time''.  The @code{w} means
+``press the @key{w} key''.  The keybinding is surrounded by double
 quotation marks.  In documentation, you would write this as
 @address@hidden w}}.  (If you were binding a @key{META} key, such as
 @kbd{M-c}, rather than a @key{CTRL} key, you would write
@@ -17307,19 +17307,19 @@ adapt what is there.
 As for the keybinding itself: @kbd{C-c w}.  This combines the prefix
 key, @kbd{C-c}, with a single character, in this case, @kbd{w}.  This
 set of keys, @kbd{C-c} followed by a single character, is strictly
-reserved for individuals' own use.  (I call these `own' keys, since
+reserved for individuals' own use.  (I call these ``own'' keys, since
 these are for my own use.)  You should always be able to create such a
 keybinding for your own use without stomping on someone else's
 keybinding.  If you ever write an extension to Emacs, please avoid
 taking any of these keys for public use.  Create a key like @kbd{C-c
-C-w} instead.  Otherwise, we will run out of `own' keys.
+C-w} instead.  Otherwise, we will run out of ``own'' keys.
 
 @need 1250
 Here is another keybinding, with a comment:
 
 @smallexample
 @group
-;;; Keybinding for `occur'
+;;; Keybinding for 'occur'
 ; I use occur a lot, so let's bind it to a key:
 (global-set-key "\C-co" 'occur)
 @end group
@@ -17340,7 +17340,7 @@ work:
 
 @smallexample
 @group
-;;; Unbind `C-x f'
+;;; Unbind 'C-x f'
 (global-unset-key "\C-xf")
 @end group
 @end smallexample
@@ -17358,7 +17358,7 @@ The following rebinds an existing key:
 
 @smallexample
 @group
-;;; Rebind `C-x C-b' for `buffer-menu'
+;;; Rebind 'C-x C-b' for 'buffer-menu'
 (global-set-key "\C-x\C-b" 'buffer-menu)
 @end group
 @end smallexample
@@ -17523,7 +17523,7 @@ This is an interface to the function `load'."
 @end smallexample
 
 The name of the function, @code{load-library}, comes from the use of
-`library' as a conventional synonym for `file'.  The source for the
+``library'' as a conventional synonym for ``file''.  The source for the
 @code{load-library} command is in the @file{files.el} library.
 
 Another interactive command that does a slightly different job is
@@ -17550,13 +17550,13 @@ first use such a function, while its containing file 
is evaluated.
 Rarely used functions are frequently autoloaded.  The
 @file{loaddefs.el} library contains thousands of autoloaded functions,
 from @code{5x5} to @code{zone}.  Of course, you may
-come to use a `rare' function frequently.  When you do, you should
+come to use a ``rare'' function frequently.  When you do, you should
 load that function's file with a @code{load} expression in your
 @file{.emacs} file.
 
 In my @file{.emacs} file, I load 14 libraries that contain functions
 that would otherwise be autoloaded.  (Actually, it would have been
-better to include these files in my `dumped' Emacs, but I forgot.
+better to include these files in my ``dumped'' Emacs, but I forgot.
 @xref{Building Emacs, , Building Emacs, elisp, The GNU Emacs Lisp
 Reference Manual}, and the @file{INSTALL} file for more about
 dumping.)
@@ -17683,7 +17683,7 @@ emacs -Q -D
 @group
 (when (>= emacs-major-version 21)
   (blink-cursor-mode 0)
-  ;; Insert newline when you press `C-n' (next-line)
+  ;; Insert newline when you press 'C-n' (next-line)
   ;; at the end of the buffer
   (setq next-line-add-newlines t)
 @end group
@@ -17804,9 +17804,9 @@ Set the shape and color of the mouse cursor:
 @smallexample
 @group
 ; Cursor shapes are defined in
-; `/usr/include/X11/cursorfont.h';
-; for example, the `target' cursor is number 128;
-; the `top_left_arrow' cursor is number 132.
+; '/usr/include/X11/cursorfont.h';
+; for example, the 'target' cursor is number 128;
+; the 'top_left_arrow' cursor is number 132.
 @end group
 
 @group
@@ -17857,10 +17857,10 @@ problem recently.)
 
 @smallexample
 @group
-;; Translate `C-h' to <DEL>.
+;; Translate 'C-h' to <DEL>.
 ; (keyboard-translate ?\C-h ?\C-?)
 
-;; Translate <DEL> to `C-h'.
+;; Translate <DEL> to 'C-h'.
 (keyboard-translate ?\C-? ?\C-h)
 @end group
 @end smallexample
@@ -17878,7 +17878,7 @@ problem recently.)
 or start GNU Emacs with the command @code{emacs -nbc}.
 
 @need 1250
address@hidden When using `grep'@*
address@hidden When using @address@hidden
 @address@hidden  }   Ignore case address@hidden
 @address@hidden  }   Prefix each line of output with line address@hidden
 @address@hidden  }   Print the filename for each address@hidden
@@ -17917,7 +17917,7 @@ This avoids problems with symbolic links.
 @end group
 @end smallexample
 
-If you want to write with Chinese `GB' characters, set this instead:
+If you want to write with Chinese ``GB'' characters, set this instead:
 
 @smallexample
 @group
@@ -17960,7 +17960,7 @@ Lock} key is at the far left of the home row:
 
 @smallexample
 @group
-# Bind the key labeled `Caps Lock' to `Control'
+# Bind the key labeled 'Caps Lock' to 'Control'
 # (Such a broken user interface suggests that keyboard manufacturers
 # think that computers are typewriters from 1885.)
 
@@ -18097,7 +18097,7 @@ beginning @code{(#("%12b" 0 4 @dots{}}.
 The @code{#(} begins the list.
 
 The @samp{"%12b"} displays the current buffer name, using the
address@hidden function with which we are familiar; the `12'
address@hidden function with which we are familiar; the @samp{12}
 specifies the maximum number of characters that will be displayed.
 When a name has fewer characters, whitespace is added to fill out to
 this number.  (Buffer names can and often should be longer than 12
@@ -18107,7 +18107,7 @@ window.)
 @code{:eval} says to evaluate the following form and use the result as
 a string to display.  In this case, the expression displays the first
 component of the full system name.  The end of the first component is
-a @samp{.} (`period'), so I use the @code{string-match} function to
+a @samp{.} (``period''), so I use the @code{string-match} function to
 tell me the length of the first component.  The substring from the
 zeroth character to that length is the name of the machine.
 
@@ -18122,10 +18122,10 @@ This is the expression:
 @end smallexample
 
 @samp{%[} and @samp{%]} cause a pair of square brackets
-to appear for each recursive editing level.  @samp{%n} says `Narrow'
+to appear for each recursive editing level.  @samp{%n} says ``Narrow''
 when narrowing is in effect.  @samp{%P} tells you the percentage of
-the buffer that is above the bottom of the window, or `Top', `Bottom',
-or `All'.  (A lower case @samp{p} tell you the percentage above the
+the buffer that is above the bottom of the window, or ``Top'', ``Bottom'',
+or ``All''.  (A lower case @samp{p} tell you the percentage above the
 @emph{top} of the window.)  @samp{%-} inserts enough dashes to fill
 out the line.
 
@@ -18133,7 +18133,7 @@ Remember, ``You don't have to like Emacs to like 
it''---your own
 Emacs can have different colors, different commands, and different
 keys than a default Emacs.
 
-On the other hand, if you want to bring up a plain `out of the box'
+On the other hand, if you want to bring up a plain ``out of the box''
 Emacs, with no customization, type:
 
 @smallexample
@@ -18234,9 +18234,9 @@ Debugger entered--Lisp error: (void-function 1=)
 long lines.  As usual, you can quit the debugger by typing @kbd{q} in
 the @file{*Backtrace*} buffer.)
 
-In practice, for a bug as simple as this, the `Lisp error' line will
+In practice, for a bug as simple as this, the ``Lisp error'' line will
 tell you what you need to know to correct the definition.  The
-function @code{1=} is `void'.
+function @code{1=} is ``void''.
 
 @ignore
 @need 800
@@ -18532,7 +18532,7 @@ beginning of the @code{if} line of the function.  Also, 
you will see
 an arrowhead at the left hand side of that line.  The arrowhead marks
 the line where the function is executing.  (In the following examples,
 we show the arrowhead with @samp{=>}; in a windowing system, you may
-see the arrowhead as a solid triangle in the window `fringe'.)
+see the arrowhead as a solid triangle in the window ``fringe''.)
 
 @smallexample
 =>@point{}(if (= number 1)
@@ -18567,7 +18567,7 @@ Result: 3 (#o3, #x3, ?\C-c)
 
 @noindent
 This means the value of @code{number} is 3, which is octal three,
-hexadecimal three, and @sc{ascii} `control-c' (the third letter of the
+hexadecimal three, and @sc{ascii} ``control-c'' (the third letter of the
 alphabet, in case you need to know this information).
 
 You can continue moving through the code until you reach the line with
@@ -18614,7 +18614,7 @@ Lisp Reference Manual}.
 Install the @address@hidden function and then cause it to
 enter the built-in debugger when you call it.  Run the command on a
 region containing two words.  You will need to press @kbd{d} a
-remarkable number of times.  On your system, is a `hook' called after
+remarkable number of times.  On your system, is a ``hook'' called after
 the command finishes?  (For information on hooks, see @ref{Command
 Overview, , Command Loop Overview, elisp, The GNU Emacs Lisp Reference
 Manual}.)
@@ -18735,7 +18735,7 @@ customize the @code{interactive} expression without 
using the standard
 character codes; and it shows how to create a temporary buffer.
 
 (The @code{indent-to} function is written in C rather than Emacs Lisp;
-it is a `built-in' function.  @code{help-follow} takes you to its
+it is a ``built-in'' function.  @code{help-follow} takes you to its
 source as does @code{find-tag}, when properly set up.)
 
 You can look at a function's source using @code{find-tag}, which is
@@ -18803,7 +18803,7 @@ The GNU Emacs Lisp Reference Manual}.)
 
 You might try searching just for duplicated word-constituent
 characters but that does not work since the pattern detects doubles
-such as the two occurrences of `th' in `with the'.
+such as the two occurrences of ``th'' in ``with the''.
 
 Another possible regexp searches for word-constituent characters
 followed by non-word-constituent characters, reduplicated.  Here,
@@ -18850,7 +18850,7 @@ Here is the @code{the-the} function, as I include it in 
my
 @end group
 
 @group
-;; Bind `the-the' to  C-c \
+;; Bind 'the-the' to  C-c \
 (global-set-key "\C-c\\" 'the-the)
 @end group
 @end smallexample
@@ -19091,7 +19091,7 @@ The @code{if} expression has two parts, one if there 
exists
 @code{interprogram-paste} and one if not.
 
 @need 2000
-Let us consider the `if not' or else-part of the @code{current-kill}
+Let us consider the ``if not'' or else-part of the @code{current-kill}
 function.  (The then-part uses the @code{kill-new} function, which
 we have already described.  @xref{kill-new function, , The
 @code{kill-new} function}.)
@@ -19155,14 +19155,14 @@ list even if the @code{do-not-move} argument is true.
 
 @ifnottex
 @node Digression concerning error
address@hidden Digression about the word `error'
address@hidden Digression about the word ``error''
 @end ifnottex
 
 In my opinion, it is slightly misleading, at least to humans, to use
-the term `error' as the name of the @code{error} function.  A better
-term would be `cancel'.  Strictly speaking, of course, you cannot
+the term ``error'' as the name of the @code{error} function.  A better
+term would be ``cancel''.  Strictly speaking, of course, you cannot
 point to, much less rotate a pointer to a list that has no length, so
-from the point of view of the computer, the word `error' is correct.
+from the point of view of the computer, the word ``error'' is correct.
 But a human expects to attempt this sort of thing, if only to find out
 whether the kill ring is full or empty.  This is an act of
 exploration.
@@ -19172,8 +19172,8 @@ not necessarily an error, and therefore should not be 
labeled as one,
 even in the bowels of a computer.  As it is, the code in Emacs implies
 that a human who is acting virtuously, by exploring his or her
 environment, is making an error.  This is bad.  Even though the computer
-takes the same steps as it does when there is an `error', a term such as
-`cancel' would have a clearer connotation.
+takes the same steps as it does when there is an ``error'', a term such as
+``cancel'' would have a clearer connotation.
 
 @ifnottex
 @node Determining the Element
@@ -19789,9 +19789,9 @@ For example, if you evaluate the following, the result 
is 15:
 (* (1+ (/ 12 5)) 5)
 @end smallexample
 
-All through this discussion, we have been using `five' as the value
+All through this discussion, we have been using ``five'' as the value
 for spacing labels on the Y axis; but we may want to use some other
-value.  For generality, we should replace `five' with a variable to
+value.  For generality, we should replace ``five'' with a variable to
 which we can assign a value.  The best name I can think of for this
 variable is @code{Y-axis-label-spacing}.
 
@@ -19915,7 +19915,7 @@ row, and the value of the width of the top line, which 
is calculated
 @group
 (defun Y-axis-element (number full-Y-label-width)
   "Construct a NUMBERed label element.
-A numbered element looks like this `  5 - ',
+A numbered element looks like this '  5 - ',
 and is padded as needed so all line up with
 the element for the largest number."
 @end group
@@ -20016,7 +20016,7 @@ the @code{print-Y-axis} function, which inserts the 
list as a column.
 Height must be the maximum height of the graph.
 Full width is the width of the highest label element."
 ;; Value of height and full-Y-label-width
-;; are passed by `print-graph'.
+;; are passed by 'print-graph'.
 @end group
 @group
   (let ((start (point)))
@@ -20706,9 +20706,9 @@ The graph looks like this:
 @end smallexample
 
 @noindent
-(A question: is the `2' on the bottom of the vertical axis a bug or a
-feature?  If you think it is a bug, and should be a `1' instead, (or
-even a `0'), you can modify the sources.)
+(A question: is the @samp{2} on the bottom of the vertical axis a bug or a
+feature?  If you think it is a bug, and should be a @samp{1} instead, (or
+even a @samp{0}), you can modify the sources.)
 
 @node Graphing words in defuns
 @appendixsubsec Graphing Numbers of Words and Symbols
@@ -20816,8 +20816,8 @@ Thus,
 @end smallexample
 
 @noindent
-is a function definition that says `return the value resulting from
-dividing whatever is passed to me as @code{arg} by 50'.
+is a function definition that says ``return the value resulting from
+dividing whatever is passed to me as @code{arg} by 50''.
 
 @need 1200
 Earlier, for example, we had a function @code{multiply-by-seven}; it
@@ -20958,7 +20958,7 @@ element of its second argument, in turn.  The second 
argument must be
 a sequence.
 
 The @samp{map} part of the name comes from the mathematical phrase,
-`mapping over a domain', meaning to apply a function to each of the
+``mapping over a domain'', meaning to apply a function to each of the
 elements in a domain.  The mathematical phrase is based on the
 metaphor of a surveyor walking, one step at a time, over an area he is
 mapping.  And @samp{car}, of course, comes from the Lisp notion of the
@@ -21038,7 +21038,7 @@ that none had that many words or symbols.)
 @cindex Bug, most insidious type
 @cindex Insidious type of bug
 
-I said `almost ready to print'!  Of course, there is a bug in the
+I said ``almost ready to print''!  Of course, there is a bug in the
 @code{print-graph} function @dots{}  It has a @code{vertical-step}
 option, but not a @code{horizontal-step} option.  The
 @code{top-of-range} scale goes from 10 to 300 by tens.  But the
@@ -21141,7 +21141,7 @@ each column."
 @end group
 @group
 ;; Value of symbol-width and full-Y-label-width
-;; are passed by `print-graph'.
+;; are passed by 'print-graph'.
   (let* ((leading-spaces
           (make-string full-Y-label-width ? ))
        ;; symbol-width @r{is provided by} graph-body-print
@@ -21309,7 +21309,7 @@ symbols in one function definition."
 @end group
 
 @group
-  (message "Working on `%s' ... " filename)
+  (message "Working on '%s' ... " filename)
   (save-excursion
     (let ((buffer (find-file-noselect filename))
           (lengths-list))
@@ -21439,7 +21439,7 @@ The strings are either graph-blank or graph-symbol."
 @group
 (defun Y-axis-element (number full-Y-label-width)
   "Construct a NUMBERed label element.
-A numbered element looks like this `  5 - ',
+A numbered element looks like this '  5 - ',
 and is padded as needed so all line up with
 the element for the largest number."
 @end group
@@ -21469,7 +21469,7 @@ Optionally, print according to VERTICAL-STEP."
 @end group
 @group
 ;; Value of height and full-Y-label-width
-;; are passed by `print-graph'.
+;; are passed by 'print-graph'.
   (let ((start (point)))
     (insert-rectangle
      (Y-axis-column height full-Y-label-width vertical-step))
@@ -21634,7 +21634,7 @@ each column."
 @end group
 @group
 ;; Value of symbol-width and full-Y-label-width
-;; are passed by `print-graph'.
+;; are passed by 'print-graph'.
   (let* ((leading-spaces
           (make-string full-Y-label-width ? ))
        ;; symbol-width @r{is provided by} graph-body-print
@@ -21872,7 +21872,7 @@ users think that a proprietary manual is good 
enough---so they don't
 see the need to write a free manual.  They do not see that the free
 operating system has a gap that needs filling.
 
-Why do users think that proprietary manuals are good enough? Some have
+Why do users think that proprietary manuals are good enough?  Some have
 not considered the issue.  I hope this article will do something to
 change that.
 
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog.1
similarity index 99%
rename from doc/lispref/ChangeLog
rename to doc/lispref/ChangeLog.1
index c24bb64..e508839 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog.1
@@ -50,7 +50,7 @@
 2015-03-02  Daniel Colascione  <address@hidden>
 
        * control.texi (Generators): New section
-       * elisp.text: Reference new section.
+       * elisp.texi: Reference new section.
 
 2015-02-28  Eli Zaretskii  <address@hidden>
 
diff --git a/doc/lispref/README b/doc/lispref/README
index 5ca18a8..fd943ce 100644
--- a/doc/lispref/README
+++ b/doc/lispref/README
@@ -21,15 +21,15 @@ Buying a manual from the Free Software Foundation helps 
support our GNU
 development work.  See <http://shop.fsf.org/>.
 (At time of writing, this manual is out of print.)
 
-* The master file for formatting this manual for Tex is called `elisp.texi'.
+* The master file for formatting this manual for Tex is called 'elisp.texi'.
 It contains @include commands to include all the chapters that make up
 the manual.
 
 * This distribution contains a Makefile that you can use with GNU Make.
 
-** To make an Info file, you need to install Texinfo, then run `make info'.
+** To make an Info file, you need to install Texinfo, then run 'make info'.
 
-** Use `make elisp.pdf' or `make elisp.html' to create PDF or HTML versions.
+** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.
 
 
 This file is part of GNU Emacs.
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 1c1c423..49bfe82 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -844,7 +844,7 @@ names start with a space are not considered at all.
 
 If @var{buffer} is not supplied (or if it is not a live buffer), then
 @code{other-buffer} returns the first buffer in the selected frame's
-local buffer list. (If @var{frame} is address@hidden, it returns the
+local buffer list.  (If @var{frame} is address@hidden, it returns the
 first buffer in @var{frame}'s local buffer list instead.)
 
 If @var{frame} has a address@hidden @code{buffer-predicate} parameter,
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index 5e986de..aec7674 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1462,7 +1462,7 @@ the symbols @code{handle} (the scroll bar handle), 
@code{above-handle}
 (the area above the handle), @code{below-handle} (the area below the
 handle), @code{up} (the up arrow at one end of the scroll bar), or
 @code{down} (the down arrow at one end of the scroll bar).
address@hidden The `top', `bottom', and `end-scroll' codes don't seem to be 
used.
address@hidden The 'top', 'bottom', and 'end-scroll' codes don't seem to be 
used.
 @end table
 
 
@@ -1720,7 +1720,7 @@ occurred.
 
 @vindex mouse-wheel-up-event
 @vindex mouse-wheel-down-event
-This kind of event is generated only on some kinds of systems. On some
+This kind of event is generated only on some kinds of systems.  On some
 systems, @code{mouse-4} and @code{mouse-5} are used instead.  For
 portable code, use the variables @code{mouse-wheel-up-event} and
 @code{mouse-wheel-down-event} defined in @file{mwheel.el} to determine
@@ -1856,7 +1856,7 @@ into another window.  That produces a pair of events like 
these:
 @end smallexample
 
 The frame with input focus might not take up the entire screen, and
-the user might move the mouse outside the scope of the frame. Inside
+the user might move the mouse outside the scope of the frame.  Inside
 the @code{track-mouse} special form, that produces an event like this:
 
 @smallexample
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index f512ad9..fb2e1bc 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -1025,7 +1025,7 @@ the circumstances of the error.
 
 The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol
 defined with @code{define-error}.  This is how Emacs Lisp classifies different
-sorts of errors. @xref{Error Symbols}, for a description of error symbols,
+sorts of errors.  @xref{Error Symbols}, for a description of error symbols,
 error conditions and condition names.
 
 If the error is not handled, the two arguments are used in printing
diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi
index 0d1b6fa..f984dbe 100644
--- a/doc/lispref/customize.texi
+++ b/doc/lispref/customize.texi
@@ -842,7 +842,7 @@ symbols, and symbols are not treated like other Lisp 
expressions.
 
 @item (radio @address@hidden)
 This is similar to @code{choice}, except that the choices are displayed
-using `radio buttons' rather than a menu.  This has the advantage of
+using ``radio buttons'' rather than a menu.  This has the advantage of
 displaying documentation for the choices when applicable and so is often
 a good choice for a choice between constant functions
 (@code{function-item} customization types).
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index b73e70d..e2a38b6 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -1310,6 +1310,7 @@ beginning and end.  It also has properties that you can 
examine and set;
 these affect the display of the text within the overlay.
 
 @cindex scalability of overlays
address@hidden overlays, scalability
 The visual effect of an overlay is the same as of the corresponding
 text property (@pxref{Text Properties}).  However, due to a different
 implementation, overlays generally don't scale well (many operations
@@ -1351,6 +1352,15 @@ and @var{end} must specify buffer positions; they may be 
integers or
 markers.  If @var{buffer} is omitted, the overlay is created in the
 current buffer.
 
address@hidden empty overlay
address@hidden overlay, empty
+An overlay whose @var{start} and @var{end} specify the same buffer
+position is known as @dfn{empty}.  A non-empty overlay can become
+empty if the text between its @var{start} and @var{end} is deleted.
+When that happens, the overlay is by default not deleted, but you can
+cause it to be deleted by giving it the @samp{evaporate} property
+(@pxref{Overlay Properties, evaporate property}).
+
 The arguments @var{front-advance} and @var{rear-advance} specify the
 marker insertion type for the start of the overlay and for the end of
 the overlay, respectively.  @xref{Marker Insertion Types}.  If they
@@ -1720,8 +1730,11 @@ line at display-time.  @xref{Truncation}.
 @kindex evaporate @r{(overlay property)}
 If this property is address@hidden, the overlay is deleted automatically
 if it becomes empty (i.e., if its length becomes zero).  If you give
-an empty overlay a address@hidden @code{evaporate} property, that deletes
-it immediately.
+an empty overlay (@pxref{Managing Overlays, empty overlay}) a
address@hidden @code{evaporate} property, that deletes it immediately.
+Note that, unless an overlay has this property, it will not be deleted
+when the text between its starting and ending positions is deleted
+from the buffer.
 
 @item keymap
 @cindex keymap of character (and overlays)
@@ -1777,10 +1790,10 @@ overlays that specify property @var{prop} for the 
character at point:
 This function returns a list of the overlays that overlap the region
 @var{beg} through @var{end}.  ``Overlap'' means that at least one
 character is contained within the overlay and also contained within the
-specified region; however, empty overlays are included in the result if
-they are located at @var{beg}, strictly between @var{beg} and @var{end},
-or at @var{end} when @var{end} denotes the position at the end of the
-buffer.
+specified region; however, empty overlays (@pxref{Managing Overlays,
+empty overlay}) are included in the result if they are located at
address@hidden, strictly between @var{beg} and @var{end}, or at @var{end}
+when @var{end} denotes the position at the end of the buffer.
 @end defun
 
 @defun next-overlay-change pos
@@ -2790,7 +2803,7 @@ then the new definition of the @code{mode-line} face 
inherits from the
 functions instead of setting @code{face-remapping-alist} directly, to
 avoid trampling on remappings applied elsewhere.  These functions are
 intended for buffer-local remappings, so they all make
address@hidden buffer-local as a side-effect. They manage
address@hidden buffer-local as a side-effect.  They manage
 @code{face-remapping-alist} entries of the form
 
 @example
@@ -2820,11 +2833,11 @@ pass this object as an argument to 
@code{face-remap-remove-relative}
 if you need to remove the remapping later.
 
 @example
-;; Remap the `escape-glyph' face into a combination
-;; of the `highlight' and `italic' faces:
+;; Remap the 'escape-glyph' face into a combination
+;; of the 'highlight' and 'italic' faces:
 (face-remap-add-relative 'escape-glyph 'highlight 'italic)
 
-;; Increase the size of the `default' face by 50%:
+;; Increase the size of the 'default' face by 50%:
 (face-remap-add-relative 'default :height 1.5)
 @end example
 @end defun
@@ -4557,7 +4570,7 @@ not affect the amount of raising or lowering, which is 
based on the
 faces used for the text.
 @end table
 
address@hidden We put all the address@hidden(when ...)}' on one line to 
encourage
address@hidden We put all the '@code{(when ...)}' on one line to encourage
 @c makeinfo's end-of-sentence heuristics to DTRT.  Previously, the dot
 @c was at eol; the info file ended up w/ two spaces rendered after it.
   You can make any display specification conditional.  To do that,
@@ -5628,7 +5641,7 @@ so that it's easy to define special-purpose types of 
buttons for
 specific tasks.
 
 @defun define-button-type name &rest properties
-Define a `button type' called @var{name} (a symbol).
+Define a ``button type'' called @var{name} (a symbol).
 The remaining arguments
 form a sequence of @var{property value} pairs, specifying default
 property values for buttons with this type (a button's type may be set
@@ -5781,7 +5794,7 @@ Return @code{t} if button-type @var{type} is a subtype of 
@var{supertype}.
 These are commands and functions for locating and operating on
 buttons in an Emacs buffer.
 
address@hidden is the command that a user uses to actually `push'
address@hidden is the command that a user uses to actually ``push''
 a button, and is bound by default in the button itself to @key{RET}
 and to @key{mouse-2} using a local keymap in the button's overlay or
 text properties.  Commands that are useful outside the buttons itself,
@@ -6643,7 +6656,7 @@ address@hidden, non-printing characters @code{U+0080} to
 @samp{\230}).
 
 @item format-control
-Characters of Unicode General Category `Cf', such as @samp{U+200E}
+Characters of Unicode General Category ``Cf'', such as @samp{U+200E}
 (Left-to-Right Mark), but excluding characters that have graphic
 images, such as @samp{U+00AD} (Soft Hyphen).
 
@@ -6652,9 +6665,9 @@ Characters for there is no suitable font, or which cannot 
be encoded
 by the terminal's coding system.
 @end table
 
address@hidden FIXME: this can also be `acronym', but that's not currently
address@hidden FIXME: this can also be 'acronym', but that's not currently
 @c completely implemented; it applies only to the format-control
address@hidden group, and only works if the acronym is in `char-acronym-table'.
address@hidden group, and only works if the acronym is in 'char-acronym-table'.
 The @var{method} symbol should be one of @code{zero-width},
 @code{thin-space}, @code{empty-box}, or @code{hex-code}.  These have
 the same meanings as in @code{glyphless-char-display}, above.
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index fc8ba7b..bf1fc4d 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -247,9 +247,9 @@ Appendices
 @end ignore
 
 @c Do NOT modify the following 3 lines!  They must have this form to
address@hidden be correctly identified by `texinfo-multiple-files-update'.  In
address@hidden be correctly identified by 'texinfo-multiple-files-update'.  In
 @c particular, the detailed menu header line MUST be identical to the
address@hidden value of `texinfo-master-menu-header'.  See texnfo-upd.el.
address@hidden value of 'texinfo-master-menu-header'.  See texnfo-upd.el.
 
 @detailmenu
  --- The Detailed Node Listing ---
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 2739e3e..f4c9abd 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -423,7 +423,7 @@ To do so, execute the following code:
 You might wish to save the file modes value returned by
 @code{backup-buffer} and use that (if address@hidden) to set the mode
 bits of the file that you write.  This is what @code{save-buffer}
-normally does. @xref{Making Backups,, Making Backup Files}.
+normally does.  @xref{Making Backups,, Making Backup Files}.
 
 The hook functions in @code{write-file-functions} are also responsible
 for encoding the data (if desired): they must choose a suitable coding
@@ -3352,8 +3352,8 @@ from the buffer is actually written to the file, it 
intermixes the
 specified annotations at the corresponding positions.  All this takes
 place without modifying the buffer.
 
address@hidden ??? What about ``overriding'' conversions like those allowed
address@hidden ??? for `write-region-annotate-functions', below?  --ttn
address@hidden ??? What about "overriding" conversions like those allowed
address@hidden ??? for 'write-region-annotate-functions', below?  --ttn
 
   In contrast, when reading, the annotations intermixed with the text
 are handled immediately.  @code{insert-file-contents} sets point to
@@ -3406,8 +3406,8 @@ with one argument, the number of characters inserted, and 
with point
 at the beginning of the inserted text.  Each function should leave
 point unchanged, and return the new character count describing the
 inserted text as modified by the function.
address@hidden ??? The docstring mentions a handler from 
`file-name-handler-alist'
address@hidden     "intercepting" `insert-file-contents'.  Hmmm.  --ttn
address@hidden ??? The docstring mentions a handler from 
'file-name-handler-alist'
address@hidden     "intercepting" 'insert-file-contents'.  Hmmm.  --ttn
 @end defvar
 
   We invite users to write Lisp programs to store and retrieve text
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 85695c6..e19472e 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2693,7 +2693,7 @@ This function returns @code{t} if the screen can display 
shades of gray.
 This function returns address@hidden if all the face attributes in
 @var{attributes} are supported (@pxref{Face Attributes}).
 
-The definition of `supported' is somewhat heuristic, but basically
+The definition of ``supported'' is somewhat heuristic, but basically
 means that a face containing all the attributes in @var{attributes},
 when merged with the default face for display, can be represented in a
 way that's
@@ -2703,14 +2703,14 @@ way that's
 different in appearance than the default face, and
 
 @item
-`close in spirit' to what the attributes specify, if not exact.
+``close in spirit'' to what the attributes specify, if not exact.
 @end enumerate
 
 Point (2) implies that a @code{:weight black} attribute will be
 satisfied by any display that can display bold, as will
 @code{:foreground "yellow"} as long as some yellowish color can be
 displayed, but @code{:slant italic} will @emph{not} be satisfied by
-the tty display code's automatic substitution of a `dim' face for
+the tty display code's automatic substitution of a ``dim'' face for
 italic.
 @end defun
 
diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi
index bfa60e0..98da321 100644
--- a/doc/lispref/hash.texi
+++ b/doc/lispref/hash.texi
@@ -154,7 +154,7 @@ This is equivalent to @code{make-hash-table}, but with a 
different style
 argument list.  The argument @var{test} specifies the method
 of key lookup.
 
-This function is obsolete. Use @code{make-hash-table} instead.
+This function is obsolete.  Use @code{make-hash-table} instead.
 @end defun
 
 You can also create a new hash table using the printed representation
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 5b3dd58..868d284 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -171,7 +171,7 @@ several symbols in a @file{*Help*} buffer.
 (defun describe-symbols (pattern)
   "Describe the Emacs Lisp symbols matching PATTERN.
 All symbols that have PATTERN in their name are described
-in the `*Help*' buffer."
+in the *Help* buffer."
   (interactive "sDescribe symbols matching: ")
   (let ((describe-func
          (function
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index a5fff72..0b8e288 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -898,14 +898,14 @@ DEFUN ("coordinates-in-window-p", 
Fcoordinates_in_window_p,
 @group
   switch (coordinates_in_window (w, x, y))
     @{
-    case ON_NOTHING:            /* NOT in window at all. */
+    case ON_NOTHING:            /* NOT in window at all.  */
       return Qnil;
 @end group
 
     ...
 
 @group
-    case ON_MODE_LINE:          /* In mode line of window. */
+    case ON_MODE_LINE:          /* In mode line of window.  */
       return Qmode_line;
 @end group
 
@@ -1317,8 +1317,8 @@ except to shape their child windows.  Emacs Lisp programs 
usually have
 no access to the parent windows; they operate on the windows at the
 leaves of the tree, which actually display buffers.
 
address@hidden FIXME: These two slots and the `buffer' slot below were replaced
address@hidden with a single slot `contents' on 2013-03-28.  --xfq
address@hidden FIXME: These two slots and the 'buffer' slot below were replaced
address@hidden with a single slot 'contents' on 2013-03-28.  --xfq
 @item hchild
 @itemx vchild
 These fields contain the window's leftmost child and its topmost child
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index 0ae8fbd..fc1def6 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -76,7 +76,7 @@ If Auto Compression mode is enabled, as it is by default, 
then if
 of the file before trying other file names.  It decompresses and loads
 it if it exists.  It looks for compressed versions by appending each
 of the suffixes in @code{jka-compr-load-suffixes} to the file name.
-The value of this variable must be a list of strings. Its standard
+The value of this variable must be a list of strings.  Its standard
 value is @code{(".gz")}.
 
 If the optional argument @var{nosuffix} is address@hidden, then
diff --git a/doc/lispref/makefile.w32-in b/doc/lispref/makefile.w32-in
index 4185629..c30d6e2 100644
--- a/doc/lispref/makefile.w32-in
+++ b/doc/lispref/makefile.w32-in
@@ -31,7 +31,7 @@ texinfodir = $(srcdir)/../misc
 INFO_EXT=.info
 INFO_OPTS=--no-split
 
-# Redefine `TEX' if `tex' does not invoke plain TeX.  For example:
+# Redefine 'TEX' if 'tex' does not invoke plain TeX.  For example:
 # TEX=platex
 TEX=tex
 INSTALL_INFO = install-info
@@ -102,7 +102,7 @@ srcs = \
 
 .PHONY: clean
 
-# The info file is named `elisp'.
+# The info file is named 'elisp'.
 
 info: $(infodir)/elisp$(INFO_EXT)
 
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 48ac9f0..109e935 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -287,8 +287,8 @@ This function returns the position that @var{marker} points 
to, or
 This function returns the buffer that @var{marker} points into, or
 @code{nil} if it points nowhere.
 
address@hidden FIXME: The `buffer' argument of `set-marker' already defaults to
address@hidden the current buffer, why use `(current-buffer)' explicitly here?
address@hidden FIXME: The 'buffer' argument of 'set-marker' already defaults to
address@hidden the current buffer, why use '(current-buffer)' explicitly here?
 @example
 @group
 (setq m (make-marker))
@@ -712,4 +712,3 @@ A region is valid if it has a non-zero size, or if the user 
option
 cases, you should not use @code{region-active-p}, since if the region
 is empty it is often more appropriate to operate on point.
 @end defun
-
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index bc247a9..8cb0f3d 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -749,7 +749,7 @@ The new mode has its own abbrev table, kept in the variable
 @item
 The new mode has its own mode hook, @address@hidden  It
 runs this hook, after running the hooks of its ancestor modes, with
address@hidden, as the last thing it does. @xref{Mode Hooks}.
address@hidden, as the last thing it does.  @xref{Mode Hooks}.
 @end itemize
 
 In addition, you can specify how to override other aspects of
@@ -1122,7 +1122,7 @@ the conventions listed above:
   (let ((st (make-syntax-table)))
     (modify-syntax-entry ?\" ".   " st)
     (modify-syntax-entry ?\\ ".   " st)
-    ;; Add `p' so M-c on `hello' leads to `Hello', not `hello'.
+    ;; Add 'p' so M-c on 'hello' leads to 'Hello', not 'hello'.
     (modify-syntax-entry ?' "w p" st)
     st)
   "Syntax table used while in `text-mode'.")
@@ -3425,7 +3425,7 @@ provided grammar is precise enough, 
@code{transpose-sexps} can correctly
 transpose the two arguments of a @code{+} operator, taking into account
 the precedence rules of the language.
 
-Calling `smie-setup' is also sufficient to make TAB indentation work in
+Calling @code{smie-setup} is also sufficient to make TAB indentation work in
 the expected way, extends @code{blink-matching-paren} to apply to
 elements like @code{begin...end}, and provides some commands that you
 can bind in the major mode keymap.
@@ -3874,7 +3874,7 @@ of instructions (enclosed in a @address@hidden@}} or 
@code{begin...end}
 block).
 
 @var{method} should be the method name that was passed to
-`smie-rules-function'.
address@hidden
 @end defun
 
 @node SMIE Indentation Example
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index 50e50ff..05d5ca4 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -248,7 +248,7 @@ unibyte string, it is returned unchanged.  Use this 
function for
 characters.
 @end defun
 
address@hidden FIXME: Should address@hidden' be address@hidden'?
address@hidden FIXME: Should '@var{character}' be '@var{byte}'?
 @defun byte-to-string byte
 @cindex byte to string
 This function returns a unibyte string containing a single byte of
@@ -1375,7 +1375,7 @@ alternatives described above.
 
 The optional argument @var{accept-default-p}, if address@hidden,
 should be a function to determine whether a coding system selected
-without user interaction is acceptable. @code{select-safe-coding-system}
+without user interaction is acceptable.  @code{select-safe-coding-system}
 calls this function with one argument, the base coding system of the
 selected coding system.  If @var{accept-default-p} returns @code{nil},
 @code{select-safe-coding-system} rejects the silently selected coding
@@ -1437,7 +1437,7 @@ don't change these variables; instead, override them using
 @cindex file contents, and default coding system
 @defopt auto-coding-regexp-alist
 This variable is an alist of text patterns and corresponding coding
-systems. Each element has the form @code{(@var{regexp}
+systems.  Each element has the form @code{(@var{regexp}
 . @var{coding-system})}; a file whose first few kilobytes match
 @var{regexp} is decoded with @var{coding-system} when its contents are
 read into a buffer.  The settings in this alist take priority over
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index f4beca8..c7d71d2 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -595,8 +595,8 @@ FOO                 ; @r{A symbol named @samp{FOO}, 
different from @samp{foo}.}
 
 @cindex @samp{##} read syntax
 @ifinfo
address@hidden This uses ``colon'' instead of a literal `:' because Info cannot
address@hidden cope with a `:' in a menu
address@hidden This uses "colon" instead of a literal ':' because Info cannot
address@hidden cope with a ':' in a menu.
 @cindex @address@hidden read syntax
 @end ifinfo
 @ifnotinfo
@@ -999,7 +999,7 @@ of a string returns the same string.
   The read syntax for a string is a double-quote, an arbitrary number
 of characters, and another double-quote, @code{"like this"}.  To
 include a double-quote in a string, precede it with a backslash; thus,
address@hidden"\""} is a string containing just a single double-quote
address@hidden"\""} is a string containing just one double-quote
 character.  Likewise, you can include a backslash by preceding it with
 another backslash, like this: @code{"this \\ is a single embedded
 backslash"}.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 4df4a59..97fa083 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -974,7 +974,7 @@ to access the value of @var{variable}.  If @var{value} is 
omitted or
 removes @var{variable} from the environment.  Otherwise, @var{value}
 should be a string.
 
address@hidden FIXME: Document `substitute-env-vars'?  --xfq
address@hidden FIXME: Document 'substitute-env-vars'?  --xfq
 If the optional argument @var{substitute} is address@hidden, Emacs
 calls the function @code{substitute-env-vars} to expand any
 environment variables in @var{value}.
@@ -2384,7 +2384,7 @@ The path to a sound file to play when the notification 
pops up.
 @item :sound-name @var{name}
 A themable named sound from the freedesktop.org sound naming
 specification from @samp{$XDG_DATA_DIRS/sounds}, to play when the
-notification pops up.  Similar to the icon name, only for sounds. An
+notification pops up.  Similar to the icon name, only for sounds.  An
 example would be @samp{"message-new-instant"}.
 
 @item :suppress-sound
@@ -2393,9 +2393,9 @@ ability.
 
 @item :resident
 When set the server will not automatically remove the notification
-when an action has been invoked. The notification will remain resident
+when an action has been invoked.  The notification will remain resident
 in the server until it is explicitly removed by the user or by the
-sender. This hint is likely only useful when the server has the
+sender.  This hint is likely only useful when the server has the
 @code{:persistence} capability.
 
 @item :transient
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 103161c..fc47f1c 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -664,7 +664,7 @@ quotes are ignored.)
 This function moves forward out of @var{arg} (default 1) levels of
 parentheses.  A negative argument means move backward but still to a
 less deep spot.  If @var{escape-strings} is address@hidden (as it is
-interactively), move out of enclosing strings as well. If
+interactively), move out of enclosing strings as well.  If
 @var{no-syntax-crossing} is address@hidden (as it is interactively), prefer
 to break out of any enclosing string instead of moving to the start of
 a list broken across multiple strings.  On error, location of point is
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 3e9cc50..2bc6a18 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -196,7 +196,7 @@ Here's an example of using @code{shell-quote-argument} to 
construct
 a shell command:
 
 @example
-(concat "diff -c "
+(concat "diff -u "
         (shell-quote-argument oldfile)
         " "
         (shell-quote-argument newfile))
@@ -741,6 +741,58 @@ Initialize the process filter to @var{filter}.
 
 @item :sentinel @var{sentinel}
 Initialize the process sentinel to @var{sentinel}.
+
address@hidden :stderr @var{stderr}
+Associate @var{stderr} with the standard error of the process.
address@hidden is either a buffer or a pipe process created with
address@hidden
address@hidden table
+
+The original argument list, modified with the actual connection
+information, is available via the @code{process-contact} function.
address@hidden defun
+
address@hidden make-pipe-process &rest args
+This function creates a bidirectional pipe which can be attached to a
+child process (currently only useful with the @code{:stderr} keyword
+of @code{make-process}).
+
+The arguments @var{args} are a list of keyword/argument pairs.
+Omitting a keyword is always equivalent to specifying it with value
address@hidden, except for @code{:coding}.
+Here are the meaningful keywords:
+
address@hidden @asis
address@hidden :name @var{name}
+Use the string @var{name} as the process name.  It is modified if
+necessary to make it unique.
+
address@hidden :buffer @var{buffer}
+Use @var{buffer} as the process buffer.
+
address@hidden :coding @var{coding}
+If @var{coding} is a symbol, it specifies the coding system to be
+used for both reading and writing of data from and to the
+connection.  If @var{coding} is a cons cell
address@hidden@code{(@var{decoding} . @var{encoding})}}, then @var{decoding}
+will be used for reading and @var{encoding} for writing.
+
+If @var{coding} is @code{nil}, the default rules for finding the
+coding system will apply.  @xref{Default Coding Systems}.
+
address@hidden :noquery @var{query-flag}
+Initialize the process query flag to @var{query-flag}.
address@hidden Before Exit}.
+
address@hidden :stop @var{stopped}
+If @var{stopped} is address@hidden, start the process in the
+``stopped'' state.
+
address@hidden :filter @var{filter}
+Initialize the process filter to @var{filter}.
+
address@hidden :sentinel @var{sentinel}
+Initialize the process sentinel to @var{sentinel}.
 @end table
 
 The original argument list, modified with the actual connection
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 87513e8..5a05c7c 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -558,8 +558,11 @@ This matches any @acronym{ASCII} control character.
 This matches @samp{0} through @samp{9}.  Thus, @samp{[-+[:digit:]]}
 matches any digit, as well as @samp{+} and @samp{-}.
 @item [:graph:]
-This matches graphic characters---everything except @acronym{ASCII} control
-characters, space, and the delete character.
+This matches graphic characters---everything except whitespace,
address@hidden and address@hidden control characters,
+surrogates, and codepoints unassigned by Unicode, as indicated by the
+Unicode @samp{general-category} property (@pxref{Character
+Properties}).
 @item [:lower:]
 This matches any lower-case letter, as determined by the current case
 table (@pxref{Case Tables}).  If @code{case-fold-search} is
@@ -569,8 +572,8 @@ This matches any multibyte character (@pxref{Text 
Representations}).
 @item [:nonascii:]
 This matches any address@hidden character.
 @item [:print:]
-This matches printing characters---everything except @acronym{ASCII} control
-characters and the delete character.
+This matches any printing character---either whitespace, or a graphic
+character matched by @samp{[:graph:]}.
 @item [:punct:]
 This matches any punctuation character.  (At present, for multibyte
 characters, it matches anything that has non-word syntax.)
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 1af3535..e1330f7 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -723,6 +723,35 @@ contain less elements than @var{n}.  @var{n} must be an 
integer.  If
 @end example
 @end defun
 
address@hidden seq-intersection sequence1 sequence2 &optional function
+  This function returns a list of the elements that appear both in
address@hidden and @var{sequence2}.  If the optional argument
address@hidden is address@hidden, it is a function of two arguments to
+use to compare elements instead of the default @code{equal}.
+
address@hidden
address@hidden
+(seq-intersection [2 3 4 5] [1 3 5 6 7])
address@hidden (3 5)
address@hidden group
address@hidden example
address@hidden defun
+
+
address@hidden seq-difference sequence1 sequence2 &optional function
+  This function returns a list of the elements that appear in
address@hidden but not in @var{sequence2}.  If the optional argument
address@hidden is address@hidden, it is a function of two arguments to
+use to compare elements instead of the default @code{equal}.
+
address@hidden
address@hidden
+(seq-difference '(2 3 4 5) [1 3 5 6 7])
address@hidden (2 4)
address@hidden group
address@hidden example
address@hidden defun
+
 @defun seq-group-by function sequence
   This function separates the elements of @var{sequence} into an alist
 whose keys are the result of applying @var{function} to each element
@@ -761,7 +790,6 @@ of type @var{type}.  @var{type} can be one of the following 
symbols:
 @end example
 @end defun
 
-
 @defmac seq-doseq (var sequence [result]) address@hidden
 @cindex sequence iteration
   This macro is like @code{dolist}, except that @var{sequence} can be a list,
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index aca6189..c2f0607 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -956,12 +956,12 @@ is not truncated.
 
 @example
 @group
-(format "The word `%7s' has %d letters in it."
+(format "The word '%7s' has %d letters in it."
         "foo" (length "foo"))
-     @result{} "The word `    foo' has 3 letters in it."
-(format "The word `%7s' has %d letters in it."
+     @result{} "The word '    foo' has 3 letters in it."
+(format "The word '%7s' has %d letters in it."
         "specification" (length "specification"))
-     @result{} "The word `specification' has 13 letters in it."
+     @result{} "The word 'specification' has 13 letters in it."
 @end group
 @end example
 
@@ -1003,9 +1003,9 @@ ignored.
 (format "%-6d is padded on the right" 123)
      @result{} "123    is padded on the right"
 
-(format "The word `%-7s' actually has %d letters in it."
+(format "The word '%-7s' actually has %d letters in it."
         "foo" (length "foo"))
-     @result{} "The word `foo    ' actually has 3 letters in it."
+     @result{} "The word 'foo    ' actually has 3 letters in it."
 @end group
 @end example
 
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi
index 1f1dd6e..90daf34 100644
--- a/doc/lispref/syntax.texi
+++ b/doc/lispref/syntax.texi
@@ -203,7 +203,7 @@ suppressed.
 The Lisp modes have two string quote characters: double-quote (@samp{"})
 and vertical bar (@samp{|}).  @samp{|} is not used in Emacs Lisp, but it
 is used in Common Lisp.  C also has two string quote characters:
-double-quote for strings, and single-quote (@samp{'}) for character
+double-quote for strings, and apostrophe (@samp{'}) for character
 constants.
 
 Human text has no string quote characters.  We do not want quotation
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index da67ec2..d4b6950 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -512,7 +512,7 @@ address@hidden and the character inserted is in the table
 @c Cross refs reworded to prevent overfull hbox.  --rjc 15mar92
 This command performs abbrev expansion if Abbrev mode is enabled and
 the inserted character does not have word-constituent
-syntax. (@xref{Abbrevs}, and @ref{Syntax Class Table}.)  It is also
+syntax.  (@xref{Abbrevs}, and @ref{Syntax Class Table}.)  It is also
 responsible for calling @code{blink-paren-function} when the inserted
 character has close parenthesis syntax (@pxref{Blinking}).
 
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 8970efe..cc1f0e4 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -657,23 +657,18 @@ starting double-quote is not part of the string!
 
 @anchor{Docstring hyperlinks}
 @item
address@hidden
 When a documentation string refers to a Lisp symbol, write it as it
-would be printed (which usually means in lower case), with single-quotes
-around it.  For example: @samp{`lambda'}.  There are two exceptions:
-write @code{t} and @code{nil} without single-quotes.
address@hidden iftex
address@hidden
-When a documentation string refers to a Lisp symbol, write it as it
-would be printed (which usually means in lower case), with single-quotes
-around it.  For example: @samp{lambda}.  There are two exceptions: write
-t and nil without single-quotes.  (In this manual, we use a different
-convention, with single-quotes for all symbols.)
address@hidden ifnottex
+would be printed (which usually means in lower case), with a grave
+accent @samp{`} before and apostrophe @samp{'} after it.  There are
+two exceptions: write @code{t} and @code{nil} without surrounding
+punctuation.  For example: @samp{CODE can be `lambda', nil, or t.}
+(In this manual, we use a different convention, with single-quotes
+around symbols.)
 
 @cindex hyperlinks in documentation strings
 Help mode automatically creates a hyperlink when a documentation string
-uses a symbol name inside single quotes, if the symbol has either a
+uses a symbol name between grave accent and apostrophe, if the symbol
+has either a
 function or a variable definition.  You do not need to do anything
 special to make use of this feature.  However, when a symbol has both a
 function definition and a variable definition, and you want to refer to
@@ -716,16 +711,16 @@ documentation will be shown, even if the symbol is also 
defined as a
 variable or as a function.
 
 To make a hyperlink to Info documentation, write the name of the Info
-node (or anchor) in single quotes, preceded by @samp{info node},
address@hidden node}, @samp{info anchor} or @samp{Info anchor}.  The Info
-file name defaults to @samp{emacs}.  For example,
+node (or anchor) between grave accent and apostrophe, preceded by
address@hidden node}, @samp{Info node}, @samp{info anchor} or @samp{Info
+anchor}.  The Info file name defaults to @samp{emacs}.  For example,
 
 @smallexample
 See Info node `Font Lock' and Info node `(elisp)Font Lock Basics'.
 @end smallexample
 
-Finally, to create a hyperlink to URLs, write the URL in single
-quotes, preceded by @samp{URL}. For example,
+Finally, to create a hyperlink to URLs, write the URL between grave
+accent and apostrophe, preceded by @samp{URL}. For example,
 
 @smallexample
 The home page for the GNU project has more information (see URL
diff --git a/doc/lispref/two-volume-cross-refs.txt 
b/doc/lispref/two-volume-cross-refs.txt
index eded8c4..89336e1 100644
--- a/doc/lispref/two-volume-cross-refs.txt
+++ b/doc/lispref/two-volume-cross-refs.txt
@@ -108,8 +108,8 @@ on elisp2-fn-vol-number-added
 (volume-index-markup "II")
 to create             elisp2-fn-vol-number-added
 
-insert elisp2-fn-vol-number-added into vol1.fn: do following `cat'
-insert elisp1-fn-vol-number-added into vol2.fn: do following `cat'
+insert elisp2-fn-vol-number-added into vol1.fn: do following 'cat'
+insert elisp1-fn-vol-number-added into vol2.fn: do following 'cat'
 
 % cat elisp2-fn-vol-number-added >> vol1.fn
 % cat elisp1-fn-vol-number-added >> vol2.fn
@@ -126,7 +126,7 @@ Be sure that .fn file has no blank lines.
 
 ### Create merged .toc file with volume number headings.
 
-append vol2.toc to vol1.toc  with following `cat'
+append vol2.toc to vol1.toc  with following 'cat'
 
 % cat vol1.toc vol2.toc > elisp-toc-2vol.toc
 
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 8d6e124..6da3582 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -2412,7 +2412,7 @@ the window split and the values of
 and @code{split-width-threshold} (@pxref{Choosing Window Options}).
 
    Now suppose we combine this call with a preexisting setup for
-`display-buffer-alist' as follows.
address@hidden as follows.
 
 @example
 @group
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog.1
similarity index 100%
rename from doc/man/ChangeLog
rename to doc/man/ChangeLog.1
diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1
index a4f0c79..40c82a4 100644
--- a/doc/man/ebrowse.1
+++ b/doc/man/ebrowse.1
@@ -16,7 +16,7 @@ is used to create the database used by the class browser in 
Emacs.
 .PP
 .SH OPTIONS
 The program follows the usual GNU command line syntax, with long
-options starting with two dashes (`-').
+options starting with two dashes ("\-").
 .TP
 .B \-a, \-\-append
 append output to existing file
diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in
index 259acb9..98322aa 100644
--- a/doc/man/emacs.1.in
+++ b/doc/man/emacs.1.in
@@ -251,8 +251,8 @@ Set additional X resources.
 .BI "\-\-color\fR,\fP \-\-color=" mode
 Override color mode for character terminals;
 .I mode
-defaults to `auto', and can also be `never', `auto', `always',
-or a mode name like `ansi8'.
+defaults to "auto", and can also be "never", "auto", "always",
+or a mode name like "ansi8".
 .TP
 .BI \-bw " pixels\fR,\fP " \-\-border\-width " pixels"
 Set the
@@ -420,8 +420,8 @@ The value can be one of
 .IR fullwidth ,
 or
 .IR fullheight ,
-which correspond to the command-line options `\-fs', `\-mm', `\-fw',
-and `\-fh', respectively.
+which correspond to the command-line options "\-fs", "\-mm", "\-fw",
+and "\-fh", respectively.
 Note that this applies to the initial frame only.
 .TP
 .BR geometry " (class " Geometry )
@@ -482,11 +482,11 @@ the window will be displayed in reverse video.
 .TP
 .BR screenGamma " (class "ScreenGamma )
 Gamma correction for colors, equivalent to the frame parameter
-`screen\-gamma'.
+"screen\-gamma".
 .TP
 .BR scrollBarWidth " (class "ScrollBarWidth )
 The scroll bar width in pixels, equivalent to the frame parameter
-`scroll\-bar\-width'.
+"scroll\-bar\-width".
 .TP
 .BR selectionFont " (class " SelectionFont )
 Font name for pop-up menu items, in non-toolkit versions of
@@ -583,7 +583,7 @@ There is a mailing list, @PACKAGE_BUGREPORT@, for reporting 
Emacs
 bugs and fixes.
 But before reporting something as a bug, please try to be sure that
 it really is a bug, not a misunderstanding or a deliberate feature.
-We ask you to read the section ``Reporting Bugs'' in the Emacs manual
+We ask you to read the section "Reporting Bugs" in the Emacs manual
 for hints on how and when to report bugs.
 Also, include the version number of the Emacs you are running in
 \fIevery\fR bug report that you send in.
diff --git a/doc/man/emacsclient.1 b/doc/man/emacsclient.1
index 6930271..e62fe93 100644
--- a/doc/man/emacsclient.1
+++ b/doc/man/emacsclient.1
@@ -31,28 +31,31 @@ default editor.
 For
 .B emacsclient
 to work, you need an already running Emacs with a server.  Within Emacs,
-call the functions `server-start' or `server-mode'.  (Your `.emacs' file
-can do this automatically if you add either `(server-start)' or
-`(server-mode 1)' to it.)
+call the functions "server-start" or "server-mode".  (Your ".emacs" file
+can do this automatically if you add either "(server-start)" or
+"(server-mode 1)" to it.)
 
-When you've finished editing the buffer, type `C-x #'
-(`server-edit').  This saves the file and sends a message back to the
-`emacsclient' program telling it to exit.  The programs that use
-`EDITOR' wait for the "editor" (actually, `emacsclient') to exit.  `C-x
-#' also checks for other pending external requests to edit various
+When you've finished editing the buffer, type "C-x #"
+("server-edit").  This saves the file and sends a message back to the
+.B emacsclient
+program telling it to exit.  The programs that use
+EDITOR wait for the "editor" (actually,
+.BR emacsclient )
+to exit.  "C-x #" also checks for other pending external requests to
+edit various
 files, and selects the next such file.
 
-If you set the variable `server-window' to a window or a frame, `C-x
-#' displays the server buffer in that window or in that frame.
+If you set the variable "server-window" to a window or a frame, "C-x
+#" displays the server buffer in that window or in that frame.
 
 .SH OPTIONS
 The programs follow the usual GNU command line syntax, with long
-options starting with two dashes (`-').
+options starting with two dashes ("\-").
 .TP
 .B \-a, \-\-alternate-editor=EDITOR
 if the Emacs server is not running, run the specified editor instead.
-This can also be specified via the `ALTERNATE_EDITOR' environment variable.
-If the value of EDITOR is the empty string, run `emacs \-\-daemon' to
+This can also be specified via the ALTERNATE_EDITOR environment variable.
+If the value of EDITOR is the empty string, run "emacs \-\-daemon" to
 start Emacs in daemon mode, and try to connect to it.
 .TP
 .B -c, \-\-create-frame
@@ -70,7 +73,7 @@ Lisp expressions.
 .TP
 .B \-f, \-\-server-file=FILENAME
 use TCP configuration file FILENAME for communication.
-This can also be specified via the `EMACS_SERVER_FILE' environment variable.
+This can also be specified via the EMACS_SERVER_FILE environment variable.
 .TP
 .B \-n, \-\-no-wait
 returns
@@ -99,4 +102,3 @@ This manual page was written by Stephane Bortzmeyer 
<address@hidden>,
 for the Debian GNU/Linux system (but may be used by others).
 .SH COPYING
 This manual page is in the public domain.
-
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index 08db343..245d9b4 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -80,8 +80,8 @@ Append to existing tag file.  (For \fBvi\fP-format tag files, 
see also
 .B \-B, \-\-backward\-search
 Tag files written in the format expected by \fBvi\fP contain regular
 expression search instructions; the \fB\-B\fP option writes them using
-the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files.
-The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
+the delimiter "\|\fB?\fP\|", to search \fIbackwards\fP through files.
+The default is to use the delimiter "\|\fB/\fP\|", to search \fIforwards\fP
 through files.
 Only \fBctags\fP accepts this option.
 .TP
@@ -117,8 +117,8 @@ final brace of a function or structure definition in C and 
C++.
 Parse the following files according to the given language.  More than
 one such options may be intermixed with filenames.  Use \fB\-\-help\fP
 to get a list of the available languages and their default filename
-extensions.  The `auto' language can be used to restore automatic
-detection of language based on the file name.  The `none'
+extensions.  The "auto" language can be used to restore automatic
+detection of language based on the file name.  The "none"
 language may be used to disable language parsing altogether; only
 regexp matching is done in this case (see the \fB\-\-regex\fP option).
 .TP
@@ -256,7 +256,7 @@ Print the current version of the program (same as the 
version of the
 emacs \fBetags\fP is shipped with).
 
 .SH "SEE ALSO"
-`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
+"\|\fBemacs\fP\|" entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
 Stallman.
 .br
 .BR cxref ( 1 ),
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog.1
similarity index 100%
rename from doc/misc/ChangeLog
rename to doc/misc/ChangeLog.1
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index e2de06d..1f21f82 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -20,7 +20,7 @@
 SHELL = @SHELL@
 
 # Where to find the source code.  $(srcdir) will be the doc/misc subdirectory
-# of the source tree.  This is set by configure's `--srcdir' option.
+# of the source tree.  This is set by configure's '--srcdir' option.
 address@hidden@
 
 ## Where the output files go.
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index 7a2fd9b..177f7cc 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -110,11 +110,11 @@ The @code{user} is the user name.  It's known as 
@var{:user} in
 You can use spaces inside a password or other token by surrounding the
 token with either single or double quotes.
 
-You can use single quotes inside a password or other token by
+You can use apostrophes inside a password or other token by
 surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you
 can use double quotes inside a password or other token by surrounding
-it with single quotes, e.g., @code{'he"llo'}. You can't mix both (so a
-password or other token can't have both single and double quotes).
+it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a
+password or other token can't have both apostrophes and double quotes).
 
 All this is optional. You could just say (but we don't recommend it,
 we're just showing that it's possible)
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 65cbae5..51880d8 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -331,8 +331,9 @@ character is part of a word.  If you want pairing to occur 
even then, set
 @vindex skeleton-pair-alist
   Pairing is possible for all visible characters.  By default the
 parenthesis @samp{(}, the square bracket @samp{[}, the brace
address@hidden@{}, the pointed bracket @samp{<} and the backquote @samp{`} all
-pair with the symmetrical character.  All other characters pair
address@hidden@{} and the pointed bracket @samp{<} all
+pair with the symmetrical character, and the grave accent @samp{`}
+pairs with the apostrophe @samp{'}.  All other characters pair
 themselves.  This behavior can be modified by the variable
 @code{skeleton-pair-alist}.  This is in fact an alist of skeletons
 (@pxref{Skeleton Language}), with the first part of each sublist
@@ -341,8 +342,8 @@ but since pairs don't need the @code{str} element, this is 
ignored.
 
   Some modes have bound the command @code{skeleton-pair-insert-maybe}
 to relevant keys.  These modes also configure the pairs as
-appropriate.  For example, when typing english prose, you'd expect the
-backquote (@samp{`}) to pair with the quote (@samp{'}), while in Shell
+appropriate.  For example, when typing @TeX{} input, you'd expect the
+grave accent (@samp{`}) to pair with the apostrophe (@samp{'}), while in Shell
 script mode it must pair to itself.  They can also inhibit pairing in
 certain contexts.  For example an escaped character stands for itself.
 
@@ -626,7 +627,7 @@ See the commentary in @file{tempo.el} for more information 
on using the
 Tempo package.
 
 @node Hippie Expand
address@hidden `Hippie' Expansion
address@hidden ``Hippie'' Expansion
 
 @findex hippie-expand
 @kindex M-/
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 62a81b8..84eb274 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -12,9 +12,9 @@
 
 @c The following macros are used for conditional output for single lines.
 @c @texline foo
address@hidden    `foo' will appear only in TeX output
address@hidden    'foo' will appear only in TeX output
 @c @infoline foo
address@hidden    `foo' will appear only in non-TeX output
address@hidden    'foo' will appear only in non-TeX output
 
 @c @expr{expr} will typeset an expression;
 @c $x$ in TeX, @samp{x} otherwise.
@@ -431,7 +431,7 @@ Type @kbd{2 @key{RET} 3 + Q} to compute
 @noindent
 Type @kbd{P 2 ^} to compute
 @texline @math{\pi^2 = 9.86960440109}.
address@hidden the value of `pi' squared, 9.86960440109.
address@hidden the value of @cpi{} squared, 9.86960440109.
 
 @noindent
 Type @key{TAB} to exchange the order of these two results.
@@ -455,7 +455,7 @@ Type @kbd{' sqrt(2+3) @key{RET}} to compute
 @noindent
 Type @kbd{' pi^2 @key{RET}} to enter
 @texline @math{\pi^2}.
address@hidden `pi' squared.
address@hidden @cpi{} squared.
 To evaluate this symbolic formula as a number, type @kbd{=}.
 
 @noindent
@@ -1241,7 +1241,7 @@ finished in two weeks.
 @c [tutorial]
 
 @ifinfo
address@hidden This node is accessed by the `C-x * t' command.
address@hidden This node is accessed by the 'C-x * t' command.
 @node Interactive Tutorial, Tutorial, Getting Started, Top
 @chapter Tutorial
 
@@ -2164,7 +2164,7 @@ the prefix.
 
 One more way to correct an error is by editing the stack entries.
 The actual Stack buffer is marked read-only and must not be edited
-directly, but you can press @kbd{`} (the backquote or accent grave)
+directly, but you can press @kbd{`} (grave accent)
 to edit a stack entry.
 
 Try entering @samp{3.141439} now.  If this is supposed to represent
@@ -2471,7 +2471,7 @@ We don't have enough space here to show all the zeros!  
They won't
 fit on a typical screen, either, so you will have to use horizontal
 scrolling to see them all.  Press @kbd{<} and @kbd{>} to scroll the
 stack window left and right by half its width.  Another way to view
-something large is to press @kbd{`} (back-quote) to edit the top of
+something large is to press @kbd{`} (grave accent) to edit the top of
 stack in a separate window.  (Press @kbd{C-c C-c} when you are done.)
 
 You can enter non-decimal numbers using the @kbd{#} symbol, too.
@@ -3658,7 +3658,7 @@ fast!  (But of course if you use @kbd{t .} you will lose 
the ability
 to get old vectors back using the @kbd{t y} command.)
 
 An easy way to view a full vector when @kbd{v .} mode is active is
-to press @kbd{`} (back-quote) to edit the vector; editing always works
+to press @kbd{`} (grave accent) to edit the vector; editing always works
 with the full, unabbreviated value.
 
 @cindex Least-squares for fitting a straight line
@@ -6012,7 +6012,7 @@ fix, though:
 @end smallexample
 
 @noindent
-When we type @kbd{Z `} (that's a back-quote character), Calc saves
+When we type @kbd{Z `} (that's a grave accent), Calc saves
 its mode settings and the contents of the ten ``quick variables''
 for later reference.  When we type @kbd{Z '} (that's an apostrophe
 now), Calc restores those saved values.  Thus the @kbd{p 4} and
@@ -9042,7 +9042,7 @@ matrix (or other value) to the power @expr{n} in only
 @texline @math{\log_2 n}
 @infoline @expr{log(n,2)}
 steps.  For example, this program can compute the 1000th Fibonacci
-number (a 209-digit integer!) in about 10 steps; even though the
+number (a 209-digit integer!)@: in about 10 steps; even though the
 @kbd{Z < ... Z >} solution had much simpler steps, it would have
 required so many steps that it would not have been practical.
 
@@ -10029,7 +10029,7 @@ this would be to fix a typo, as the full Emacs cursor 
motion and editing
 keys are available during algebraic entry but not during numeric entry.
 
 In the same vein, during either numeric or algebraic entry you can
-press @kbd{`} (backquote) to switch to @code{calc-edit} mode, where
+press @kbd{`} (grave accent) to switch to @code{calc-edit} mode, where
 you complete your half-finished entry in a separate buffer.
 @xref{Editing Stack Entries}.
 
@@ -10174,7 +10174,7 @@ an ASCII character.
 
 For example, the quoted character @samp{"x"} produces the vector
 result @samp{[120]} (because 120 is the ASCII code of the lower-case
-`x'; @pxref{Strings}).  Since this is a vector, not an integer, it
+``x''; @pxref{Strings}).  Since this is a vector, not an integer, it
 is displayed only according to the current mode settings.  But
 running Quick Calc again and entering @samp{120} will produce the
 result @samp{120 (16#78, 8#170, x)} which shows the number in its
@@ -11098,12 +11098,12 @@ noon address@hidden)  Julian day numbering is largely 
used in astronomy.
 @cindex Unix time format
 The Unix operating system measures time as an integer number of
 seconds since midnight, Jan 1, 1970.  To convert a Calc date
-value into a Unix time stamp, first subtract 719164 (the code
+value into a Unix time stamp, first subtract 719163 (the code
 for @samp{<Jan 1, 1970>}), then multiply by 86400 (the number of
 seconds in a day) and press @kbd{R} to round to the nearest
 integer.  If you have a date form, you can simply subtract the
 day @samp{<Jan 1, 1970>} instead of unpacking and subtracting
-719164.  Likewise, divide by 86400 and add @samp{<Jan 1, 1970>}
+719163.  Likewise, divide by 86400 and add @samp{<Jan 1, 1970>}
 to convert from Unix time to a Calc date form.  (Note that
 Unix normally maintains the time in the GMT time zone; you may
 need to subtract five hours to get New York time, or eight hours
@@ -11871,10 +11871,10 @@ the stack objects at the levels determined by the 
point and the mark.
 @cindex Editing the stack with Emacs
 The @kbd{`} (@code{calc-edit}) command creates a temporary buffer
 (@file{*Calc Edit*}) for editing the top-of-stack value using regular
-Emacs commands.  Note that @kbd{`} is a backquote, not a quote. With a
-numeric prefix argument, it edits the specified number of stack entries
-at once.  (An argument of zero edits the entire stack; a negative
-argument edits one specific stack entry.)
+Emacs commands.  Note that @kbd{`} is a grave accent, not an apostrophe.
+With a numeric prefix argument, it edits the specified number of stack
+entries at once.  (An argument of zero edits the entire stack; a
+negative argument edits one specific stack entry.)
 
 When you are done editing, press @kbd{C-c C-c} to finish and return
 to Calc.  The @key{RET} and @key{LFD} keys also work to finish most
@@ -13609,11 +13609,11 @@ Weekday:  ``Sunday'' for Sunday.
 @item Iww
 Week number:  ISO 8601 week number, ``W01'' for week 1.
 @item d
-Day of year:  ``34'' for Feb. 3.
+Day of year:  ``34'' for Feb.@: 3.
 @item ddd
-Day of year:  ``034'' for Feb. 3.
+Day of year:  ``034'' for Feb.@: 3.
 @item bdd
-Day of year:  `` 34'' for Feb. 3.
+Day of year:  `` 34'' for Feb.@: 3.
 @item T
 Letter:  Literal ``T''.
 @item h
@@ -19228,7 +19228,7 @@ non-empty sets, respectively.
 The @kbd{k p} (@code{calc-prime-test}) command checks if the integer on
 the top of the stack is prime.  For integers less than eight million, the
 answer is always exact and reasonably fast.  For larger integers, a
-probabilistic method is used (see Knuth vol. II, section 4.5.4, algorithm P).
+probabilistic method is used (see Knuth vol.@: II, section 4.5.4, algorithm P).
 The number is first checked against small prime factors (up to 13).  Then,
 any number of iterations of the algorithm are performed.  Each step either
 discovers that the number is non-prime, or substantially increases the
@@ -27860,14 +27860,20 @@ while typing @kbd{u c au/yr @key{RET}} produces
 
 If the units you request are inconsistent with the original units, the
 number will be converted into your units times whatever ``remainder''
-units are left over.  (This can be disabled; @pxref{Customizing Calc}.)
-For example, converting @samp{55 mph} into acres
-produces @samp{6.08e-3 acre / m s}.  (Recall that multiplication binds
-more strongly than division in Calc formulas, so the units here are
-acres per meter-second.)  Remainder units are expressed in terms of
+units are left over.  For example, converting @samp{55 mph} into acres
+produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of
 ``fundamental'' units like @samp{m} and @samp{s}, regardless of the
 input units.
 
address@hidden u n
address@hidden calc-convert-exact-units
+If you intend that your new units be consistent with the original
+units, the @kbd{u n} (@code{calc-convert-exact-units}) command will
+check the units before the conversion.  For example, to change
address@hidden/hr} to @samp{km/hr}, you could type @kbd{u c km @key{RET}},
+but @kbd{u n km @key{RET}} would signal an error.
+You would need to type @kbd{u n km/hr @key{RET}}.
+
 One special exception is that if you specify a single unit name, and
 a compatible unit appears somewhere in the units expression, then
 that compatible unit will be converted to the new unit and the
@@ -31842,7 +31848,7 @@ local variables inside the macro should not affect any 
variables
 outside the macro.  The @kbd{Z `} (@code{calc-kbd-push}) and @kbd{Z '}
 (@code{calc-kbd-pop}) commands give you both of these capabilities.
 
-When you type @kbd{Z `} (with a backquote or accent grave character),
+When you type @kbd{Z `} (with a grave accent),
 the values of various mode settings are saved away.  The ten ``quick''
 variables @code{q0} through @code{q9} are also saved.  When
 you type @address@hidden '}} (with an apostrophe), these values are restored.
@@ -34278,7 +34284,7 @@ you can call it again with the same @var{n} to get a 
greater certainty;
 
 @defun to-simple-fraction f
 If @var{f} is a floating-point number which can be represented exactly
-as a small rational number. return that number, else return @var{f}.
+as a small rational number, return that number, else return @var{f}.
 For example, 0.75 would be converted to 3:4.  This function is very
 fast.
 @end defun
@@ -35684,19 +35690,6 @@ as @samp{a/(b*c)}. If 
@code{calc-multiplication-has-precedence} is
 of @code{calc-multiplication-has-precedence} is @code{t}.
 @end defvar
 
address@hidden calc-ensure-consistent-units
-When converting units, the variable @code{calc-ensure-consistent-units}
-determines whether or not the target units need to be consistent with the
-original units.  If @code{calc-ensure-consistent-units} is @code{nil}, then
-the target units don't need to have the same dimensions as the original units;
-for example, converting @samp{100 ft/s} to @samp{m} will produce @samp{30.48 
m/s}.
-If @code{calc-ensure-consistent-units} is address@hidden, then the target units
-need to have the same dimensions as the original units; for example, converting
address@hidden ft/s} to @samp{m} will result in an error, since @samp{ft/s} and 
@samp{m}
-have different dimensions. The default value of 
@code{calc-ensure-consistent-units}
-is @code{nil}.
address@hidden defvar
-
 @defvar calc-context-sensitive-enter
 The commands @code{calc-enter} and @code{calc-pop} will typically
 duplicate the top of the stack.  If
@@ -36497,6 +36490,7 @@ keystrokes are not listed in this summary.
 @r{   defn@:      u d   @:unit, descr  @:        @:calc-define-unit@:}
 @r{       @:      u e   @:             @:        @:calc-explain-units@:}
 @r{       @:      u g   @:unit         @:        @:calc-get-unit-definition@:}
address@hidden       @:      u n   @:units        @:    18  
@:calc-convert-exact-units@:}
 @r{       @:      u p   @:             @:        @:calc-permanent-units@:}
 @r{      a@:      u r   @:             @:        @:calc-remove-units@:}
 @r{      a@:      u s   @:             @:        @:usimplify@:(a)}
@@ -36661,6 +36655,8 @@ keystrokes are not listed in this summary.
 
 @end format
 
address@hidden Avoid '@:' from here on, as it now means \sumsep in tex mode.
+
 @noindent
 NOTES
 
@@ -36799,9 +36795,9 @@ The @expr{op} prompt can be answered with the key 
sequence for the
 desired function, or with @kbd{x} or @kbd{z} followed by a function name,
 or with @kbd{$} to take a formula from the top of the stack, or with
 @kbd{'} and a typed formula.  In the last two cases, the formula may
-be a nameless function like @samp{<#1+#2>} or @samp{<x, y : x+y>}, or it
-may include @kbd{$}, @kbd{$$}, etc.@: (where @kbd{$} will correspond to the
-last argument of the created function), or otherwise you will be
+be a nameless function like @samp{<#1+#2>} or @samp{<x, y : x+y>}; or it
+may include @kbd{$}, @kbd{$$}, etc., where @kbd{$} will correspond to the
+last argument of the created function; or otherwise you will be
 prompted for an argument list.  The number of vectors popped from the
 stack by @kbd{V M} depends on the number of arguments of the function.
 
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 068706a..b86df18 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -88,7 +88,7 @@ the second with them pointing to the XEmacs manuals.
 
 @c The following four macros generate the filenames and titles of the
 @c main (X)Emacs manual and the Elisp/Lispref manual.  Leave the
address@hidden Texinfo variable `XEMACS' unset to generate a GNU Emacs version, 
set it
address@hidden Texinfo variable 'XEMACS' unset to generate a GNU Emacs version, 
set it
 @c to generate an XEmacs version, e.g., with
 @c "makeinfo -DXEMACS cc-mode.texi".
 @ifset XEMACS
@@ -1156,7 +1156,7 @@ When this is enabled (which it normally is), indentation 
commands such
 as @kbd{C-j} indent lines of code according to their syntactic
 structure.  Otherwise, a line is simply indented to the same level as
 the previous one and @address@hidden adjusts the indentation in steps
-of `c-basic-offset'.
+of @code{c-basic-offset}.
 @end table
 
 Full details on how these minor modes work are at @ref{Electric Keys},
@@ -2045,7 +2045,7 @@ conflict).
 The value may also be an association list to specify different comment
 styles for different languages.  The symbol for the major mode is then
 looked up in the alist, and the value of that element is interpreted as
-above if found.  If it isn't found then the symbol `other' is looked up
+above if found.  If it isn't found then the symbol @code{other} is looked up
 and its value is used instead.
 
 The default value for @code{c-doc-comment-style} is
@@ -3299,7 +3299,7 @@ only the symbol @code{after}, then the brace hangs on the 
right side
 of the line, as in:
 
 @example
-// here, open braces always `hang'
+// here, open braces always 'hang'
 void spam( int i ) @{
     if( i == 7 ) @{
         dosomething(i);
@@ -3992,7 +3992,7 @@ Hitting @kbd{C-c C-s} on line 4 gives us:
 @cindex substatement block
 @noindent
 which tells us that this is a brace that @emph{opens} a substatement
-block. @footnote{A @dfn{substatement} is the line after a
address@hidden @dfn{substatement} is the line after a
 conditional statement, such as @code{if}, @code{else}, @code{while},
 @code{do}, @code{switch}, etc.  A @dfn{substatement
 block} is a brace block following one of these conditional statements.}
@@ -4765,10 +4765,10 @@ covered are illustrated by this C++ example:
  2: const
  3: @{
  4:     /* this line starts a multiline
- 5:      * comment.  This line should get `c' syntax */
+ 5:      * comment.  This line should get 'c' syntax */
  6:
  7:     char* a_multiline_string = "This line starts a multiline \
- 8: string.  This line should get `string' syntax.";
+ 8: string.  This line should get 'string' syntax.";
  9:
 10:   note:
 11:     @{
@@ -7174,7 +7174,7 @@ Emacs Lisp code that triggers the bug and include it in 
your report.
 
 @cindex bug report mailing list
 Bug reports should be sent to @email{bug-cc-mode@@gnu.org}.  You can
-also send other questions and suggestions (kudos? @t{;-)} to that
+also send other questions and suggestions (kudos?@: @t{;-)} to that
 address.  It's a mailing list which you can join or browse an archive
 of; see the web site at @uref{http://cc-mode.sourceforge.net/} for
 further details.
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index c6076ba..00e47b9 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -570,20 +570,20 @@ When @file{foo.el} is compiled, these variables will be 
set during
 the compilation itself:
 
 @example
-foo1  foo3  foo5  foo7      ; `compile'
+foo1  foo3  foo5  foo7      ; 'compile'
 @end example
 
 When @file{foo.elc} is loaded, these variables will be set:
 
 @example
-foo2  foo3  foo6  foo7      ; `load'
+foo2  foo3  foo6  foo7      ; 'load'
 @end example
 
 And if @file{foo.el} is loaded uncompiled, these variables will
 be set:
 
 @example
-foo4  foo5  foo6  foo7      ; `eval'
+foo4  foo5  foo6  foo7      ; 'eval'
 @end example
 
 If these seven @code{cl-eval-when}s had been, say, inside a @code{defun},
@@ -978,7 +978,7 @@ a
 The generalized variable @code{buffer-substring}, listed above,
 also works in this way by replacing a portion of the current buffer.
 
address@hidden FIXME?  Also `eq'? (see cl-lib.el)
address@hidden FIXME?  Also 'eq'? (see cl-lib.el)
 
 @c Currently commented out in cl.el.
 @ignore
diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi
index 943b98d..1b24007 100644
--- a/doc/misc/ebrowse.texi
+++ b/doc/misc/ebrowse.texi
@@ -973,7 +973,7 @@ displayed in the member buffer.
 @cindex @code{public} members
 @item F a u
 This command toggles the display of @code{public} members.  The
address@hidden stands for `access'.
address@hidden stands for ``access''.
 
 @cindex @code{protected} members
 @item F a o
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index ecf1d03..dfe22b7 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -868,7 +868,7 @@ It would look like this:
 
 (defun MY-ROOT-FCN ()
   "Return the root fcn for `default-directory'"
-  ;; You might be able to use `ede-cpp-root-project-root'
+  ;; You might be able to use 'ede-cpp-root-project-root'
   ;; and not write this at all.
   )
 
@@ -1856,7 +1856,7 @@ Preprocessor symbols will be used while parsing your 
files.
 These macros might be passed in through the command line compiler, or
 are critical symbols derived from header files.  Providing header files
 macro values through this slot improves accuracy and performance.
-Use `:spp-files' to use these files directly.
+Use @code{:spp-files} to use these files directly.
 
 @item :spp-files
 Type: @code{list} @*
@@ -2799,7 +2799,7 @@ Default Value: @code{t}
 
 Non @code{nil} means the rule created is part of the all target.
 Setting this to @code{nil} creates the rule to build this item, but does not
-include it in the ALL`all:' rule.
+include it in the @code{all:} rule.
 
 @item :configuration-variables
 Type: @code{list} @*
@@ -3457,7 +3457,7 @@ Return the variable name for @var{THIS}'s sources.
 
 @deffn Method ede-proj-makefile-insert-dist-dependencies :AFTER this
 Insert any symbols that the DIST rule should depend on.
-Texinfo files want to insert generated `.info' files.
+Texinfo files want to insert generated @file{.info} files.
 Argument @var{THIS} is the target which needs to insert an info file.
 @end deffn
 
@@ -3473,7 +3473,7 @@ files in the project.
 
 @deffn Method ede-proj-makefile-insert-dist-filepatterns :AFTER this
 Insert any symbols that the DIST rule should depend on.
-Texinfo files want to insert generated `.info' files.
+Texinfo files want to insert generated @file{.info} files.
 Argument @var{THIS} is the target which needs to insert an info file.
 @end deffn
 
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 36c6ae2..de54f28 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -556,9 +556,9 @@ Makes the next difference region current.
 @kindex j
 Makes the very first difference region current.
 
address@hidden makes the last region current.  Typing a number, N, and then `j'
address@hidden makes the last region current.  Typing a number, N, and then 
@kbd{j}
 makes the difference region N current.  Typing @minus{}N (a negative number) 
then
-`j' makes current the region Last @minus{} N.
address@hidden makes current the region Last @minus{} N.
 
 @item ga
 @kindex ga
@@ -615,8 +615,8 @@ no longer current, due to user editing.
 @item m
 @kindex m
 Displays the current Ediff session in a frame as wide as the physical
-display.  This is useful when comparing files side-by-side.  Typing `m' again
-restores the original size of the frame.
+display.  This is useful when comparing files side-by-side.
+Typing @kbd{m} again restores the original size of the frame.
 
 @item |
 @kindex |
@@ -675,7 +675,7 @@ Tell Ediff to skip over regions that disagree among 
themselves only in the
 amount of white space and line breaks.
 
 Even though such regions will be skipped over, you can still jump to any
-one of them by typing the region number and then `j'.  Typing @kbd{##}
+one of them by typing the region number and then @kbd{j}.  Typing @kbd{##}
 again puts Ediff back in the original state.
 
 @item #c
@@ -695,7 +695,8 @@ and @code{ediff-ignore-case}, which are explained elsewhere.
 Ediff works hard to ameliorate the effects of boredom in the workplace...
 
 Quite often differences are due to identical replacements (e.g., the word
-`foo' is replaced with the word `bar' everywhere).  If the number of regions
+``foo'' is replaced with the word ``bar'' everywhere).  If the number
+of regions
 with such boring differences exceeds your tolerance threshold, you may be
 tempted to tell Ediff to skip these regions altogether (you will still be able
 to jump to them via the command @kbd{j}).  The above commands, @kbd{#h}
@@ -750,7 +751,7 @@ You can then restart any of these sessions by either 
clicking on a session
 record or by putting the cursor over it and then typing the return key.
 
 (Some poor souls leave so many active Ediff sessions around that they lose
-track of them completely...  The `R' command is designed to save these
+track of them completely...  The @kbd{R} command is designed to save these
 people from the recently discovered Ediff Proficiency Syndrome.)
 
 Typing @kbd{R} brings up Ediff Registry only if it is typed into an Ediff
@@ -800,8 +801,8 @@ is that this difference region in buffer A is as old as 
that in the
 ancestor buffer, so the contents of that region in buffer B represents real
 change.
 
-You may want to ignore such `obvious' merges and concentrate on difference
-regions where both files `clash' with the ancestor, since this means that
+You may want to ignore such ``obvious'' merges and concentrate on difference
+regions where both files ``clash'' with the ancestor, since this means that
 two different people have been changing this region independently and they
 had different ideas on how to do this.
 
@@ -818,10 +819,10 @@ precisely this.
 
 To be more precise, this toggles the check for whether the current merge is
 identical to its default setting, as originally decided by Ediff.  For
-instance, if Ediff is merging according to the `combined' policy, then the
+instance, if Ediff is merging according to the ``combined'' policy, then the
 merge region is skipped over if it is different from the combination of the
 regions in buffers A and address@hidden  (Warning: swapping buffers A and B 
will confuse
-things in this respect.)  If the merge region is marked as `prefer-A' then
+things in this respect.)  If the merge region is marked as ``prefer-A'' then
 this region will be skipped if it differs from the current difference
 region in buffer A, etc.
 
@@ -851,7 +852,7 @@ corresponding region from buffer B.
 @item s
 @kindex s
 Causes the merge window shrink to its minimum size, thereby exposing as much
-of the variant buffers as possible.  Typing `s' again restores
+of the variant buffers as possible.  Typing @kbd{s} again restores
 the original size of that window.
 
 With a positive prefix argument, this command enlarges the merge window.
@@ -1164,7 +1165,7 @@ customization and faces) can be done by putting 
appropriate lines in
 @file{.Xdefaults}, @file{.xrdb}, or whatever X resource file is in use.
 
 With respect to the latter, please note that the X resource
-for Ediff customization is `Ediff', @emph{not} `emacs'.
+for Ediff customization is ``Ediff'', @emph{not} ``emacs''.
 @xref{Window and Frame Configuration},
 @xref{Highlighting Difference Regions}, for further details.  Please also
 refer to Emacs manual for the information on how to set Emacs X resources.
@@ -1510,7 +1511,7 @@ We shall call these regular expressions @var{regexp-A}, 
@var{regexp-B} and
 @var{regexp-C}.
 Ediff will then start stepping through only those difference regions
 where the region in buffer A matches @var{regexp-A} and/or the region in
-buffer B matches @var{regexp-B}, etc.  Whether `and' or `or' will be used
+buffer B matches @var{regexp-B}, etc.  Whether ``and'' or ``or'' will be used
 depends on how you respond to a question.
 
 When scanning difference regions for the aforesaid regular expressions,
@@ -1888,10 +1889,11 @@ Otherwise, you may have to tune the values of the 
variables
 @item ediff-patch-options
 Options to pass to @code{ediff-patch-program}.
 
-Note: the `-b' and `-z' options should be specified in
-`ediff-backup-specs', not in @code{ediff-patch-options}.
+Note: the @option{-b} and @option{-z} options should be specified in
address@hidden, not in @code{ediff-patch-options}.
 
-It is recommended to pass the `-f' option to the patch program, so it won't
+It is recommended to pass the @option{-f} option to the patch program,
+so it won't
 ask questions.  However, some implementations don't accept this option, in
 which case the default value of this variable should be changed.
 
@@ -1901,19 +1903,23 @@ Backup extension used by the patch program.  Must be 
specified, even if
 @item ediff-backup-specs
 Backup directives to pass to the patch program.
 Ediff requires that the old version of the file (before applying the patch)
-is saved in a file named @file{the-patch-file.extension}.  Usually
-`extension' is `.orig', but this can be changed by the user, and may also be
+is saved in a file named @address@hidden
+Usually @var{extension} is @file{.orig}, but this can be changed by
+the user, and may also be
 system-dependent.  Therefore, Ediff needs to know the backup extension used
 by the patch program.
 
-Some versions of the patch program let the user specify `-b backup-extension'.
-Other versions only permit `-b', which (usually) assumes the extension `.orig'.
-Yet others force you to use `-z<backup-extension>'.
+Some versions of the patch program let the user specify @option{-b
address@hidden to specify a backup file name extension.  Other
+versions only permit @option{-b}, which (usually) assumes the
+extension @file{.orig}.  Yet others force you to use
address@hidden@var{extension}}.
 
-Note that both `ediff-backup-extension' and `ediff-backup-specs' must be
-properly set.  If your patch program takes the option `-b', but not
-`-b extension', the variable `ediff-backup-extension' must still
-be set so Ediff will know which extension to use.
+Both @code{ediff-backup-extension} and @var{ediff-backup-specs} must
+be properly set.  If your patch program takes the option @option{-b},
+but not @option{-b @var{extension}}, the variable
address@hidden must still be set so Ediff will know
+which extension to use.
 
 @item ediff-custom-diff-program
 @itemx ediff-custom-diff-options
@@ -2105,7 +2111,7 @@ typing @kbd{s}.  This change is temporary, until Ediff 
finds a reason to
 redraw the screen.  Typing @kbd{s} again restores the original window size.
 
 With a positive prefix argument, the @kbd{s} command will make the merge
-window slightly taller.  This change is persistent.  With address@hidden' or
+window slightly taller.  This change is persistent.  With address@hidden'' or
 with a negative prefix argument, the command @kbd{s} makes the merge
 window slightly shorter.  This change also persistent.
 
diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi
index aa0ef63..c72aca2 100644
--- a/doc/misc/edt.texi
+++ b/doc/misc/edt.texi
@@ -710,7 +710,7 @@ functions are bound to @key{F7}, @key{F8}, @kbd{GOLD-F8}, 
@key{F9},
 
 @item
 The original EDT emulation package set up many default regular and GOLD
-bindings.  We tried to preserve most (but not all!) of these, so users
+bindings.  We tried to preserve most (but not all!)@: of these, so users
 of the original emulation package will feel more at home.
 
 Nevertheless, there are still many GOLD key sequences which are not
diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi
index ab5eb06..566a6d7 100644
--- a/doc/misc/efaq-w32.texi
+++ b/doc/misc/efaq-w32.texi
@@ -22,7 +22,7 @@ Copyright @copyright{} 2008, 2010-2015 Free Software 
Foundation, Inc.
 @quotation
 This list of frequently asked questions about GNU Emacs on MS Windows
 with answers (``FAQ'') may be translated into other languages,
-transformed into other formats (e.g. Texinfo, Info, WWW), and updated
+transformed into other formats (e.g., Texinfo, Info, WWW), and updated
 with new information.
 
 The same conditions apply to any derivative of the FAQ as apply to the FAQ
@@ -594,7 +594,7 @@ Subject: Re: Re[2]: problem with caps/ctrl swap on NT 4.0
 @smallexample
 It's a binary value that lets you map keystrokes in the low-level keyboard
 drivers in NT.  As a result you don't have to worry about applications
-bypassing mappings that you've done at a higher level (i.e. it just works).
+bypassing mappings that you've done at a higher level (i.e., it just works).
 
 Here's the format of the value:
 
@@ -674,7 +674,7 @@ The minor mode @code{transient-mark-mode} changes the 
behavior of
 the mark in two ways.  First, it distinguishes between an active mark
 that has just been defined or reactivated, and an inactive mark.  When
 the mark is active, some commands that normally act on lines, words,
-buffers etc. will instead act on the region.  An inactive mark needs
+buffers, etc., will instead act on the region.  An inactive mark needs
 to be reactivated to operate on it, unless @code{mark-even-if-inactive}
 is set.  Secondly, @code{transient-mark-mode} also highlights the
 region when it is active, providing the same visual clue that you get
@@ -2029,8 +2029,8 @@ select it.  For arguments, use @option{+$(CurLine)}
 (the quotes around FilePath handle paths with spaces in them). Set the
 Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in
 Emacs to the same line as the cursor position in VC++. The ampersand
-in the word @code{Em&acs} allows you to select emacs from the keyboard. (E
-is already used for the OLE control test container.)
+in the word @code{Em&acs} allows you to select emacs from the keyboard.
+(E is already used for the OLE control test container.)
 
 You should now be able to go to any source file in your project. Then,
 use the pull-down menu @code{Tools->Emacs}. The active file in your
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index cdf9440..9fc8cfc 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -3670,7 +3670,7 @@ for deleting the previous character outside of Emacs.  On 
many Unix
 systems, this command will remap @key{DEL}:
 
 @example
-stty erase `^?'
+stty erase '^?'
 @end example
 
 @item
@@ -3766,8 +3766,8 @@ You can swap two keys (or key sequences) by using the
 into @key{DEL} and @key{DEL} to @kbd{C-h}, use
 
 @lisp
-(keyboard-translate ?\C-h ?\C-?)  ; translate `C-h' to DEL
-(keyboard-translate ?\C-? ?\C-h)  ; translate DEL to `C-h'.
+(keyboard-translate ?\C-h ?\C-?)  ; translate 'C-h' to DEL
+(keyboard-translate ?\C-? ?\C-h)  ; translate DEL to 'C-h'.
 @end lisp
 
 @noindent
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index f17fd31..5d1a8cf 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -140,13 +140,13 @@ constructor.  The constructor is a function with the same 
name as your
 class which returns a new instance of that class.  Here is an example:
 
 @example
-(setq rec (record "Eric" :name "Eric" :birthday "June" :phone "555-5555"))
+(setq rec (record :name "Eric" :birthday "June" :phone "555-5555"))
 @end example
 
 @noindent
-The first argument is the name given to this instance.  Each instance
-is given a name, so different instances can be easily distinguished
-when debugging.
+For backward compatibility reasons, the first argument can be a string (a name
+given to this instance).  Each instance used to be given a name, so different
+instances could be easily distinguished when debugging.
 
 It can be a bit repetitive to also have a :name slot.  To avoid doing
 this, it is sometimes handy to use the base class @code{eieio-named}.
@@ -233,7 +233,7 @@ first argument, and this one must be an @eieio{} type.
 @item Support for metaclasses
 There is just one default metaclass, @code{eieio-default-superclass},
 and you cannot define your own.  The @code{:metaclass} tag in
address@hidden is ignored.  Also, functions like `find-class', which
address@hidden is ignored.  Also, functions like @code{find-class}, which
 should return instances of the metaclass, behave differently in
 @eieio{} in that they return symbols or plain structures instead.
 
@@ -244,7 +244,7 @@ EIEIO does not support it.
 This CLOS method tag is non-functional.
 
 @item :default-initargs in @code{defclass}
-Each slot has an @code{:initarg} tag, so this is not really necessary.
+Each slot can have an @code{:initform} tag, so this is not really necessary.
 
 @item Mock object initializers
 Each class contains a mock object used for fast initialization of
@@ -266,10 +266,9 @@ To create a new class, use the @code{defclass} macro:
 @defmac defclass class-name superclass-list slot-list &rest options-and-doc
 
 Create a new class named @var{class-name}.  The class is represented
-by a self-referential symbol with the name @var{class-name}.  @eieio{}
-stores the structure of the class as a symbol property of
address@hidden (@pxref{Symbol Components,,,elisp,GNU Emacs Lisp
-Reference Manual}).
+by a symbol with the name @var{class-name}.  @eieio{} stores the structure of
+the class as a symbol property of @var{class-name} (@pxref{Symbol
+Components,,,elisp,GNU Emacs Lisp Reference Manual}).
 
 The @var{class-name} symbol's variable documentation string is a
 modified version of the doc string found in @var{options-and-doc}.
@@ -292,17 +291,12 @@ or @code{:protection}.
 @end defmac
 
 @noindent
-Whenever defclass is used to create a new class, two predicates are
-created for it, named @address@hidden and
address@hidden@var{CLASS-NAME}-child-p}:
+Whenever defclass is used to create a new class, a predicate is
+created for it, named @address@hidden:
 
 @defun CLASS-NAME-p object
-Return @code{t} if @var{OBJECT} is of the class @var{CLASS-NAME}.
address@hidden defun
-
address@hidden CLASS-NAME-child-p object
-Return @code{t} if @var{OBJECT} is of the class @var{CLASS-NAME},
-or is of a subclass of @var{CLASS-NAME}.
+Return address@hidden if and only if @var{OBJECT} is of the class
address@hidden
 @end defun
 
 @defvar eieio-error-unsupported-class-tags
@@ -418,7 +412,7 @@ Valid tags are:
 @table @code
 @item :initarg
 A symbol that can be used in the argument list of the constructor to
-specify a value for the new instance being created.
+specify a value for this slot of the new instance being created.
 
 A good symbol to use for initarg is one that starts with a colon @code{:}.
 
@@ -428,13 +422,13 @@ The slot specified like this:
 @end example
 could then be initialized to the number 1 like this:
 @example
-  (myobject "name" :myslot 1)
+  (myobject :myslot 1)
 @end example
 
 @xref{Making New Objects}.
 
 @item :initform
-A expression used as the default value for this slot.
+An expression used as the default value for this slot.
 
 If @code{:initform} is left out, that slot defaults to being unbound.
 It is an error to reference an unbound slot, so if you need
@@ -445,19 +439,13 @@ Use @code{slot-boundp} to test if a slot is unbound
 (@pxref{Predicates}).  Use @code{slot-makeunbound} to set a slot to
 being unbound after giving it a value (@pxref{Accessing Slots}).
 
-The value passed to initform is automatically quoted.  Thus,
+The value passed to initform used to be automatically quoted.  Thus,
 @example
 :initform (1 2 3)
 @end example
-appears as the specified list in the default object.
-A symbol that is a function like this:
address@hidden
-:initform +
address@hidden example
-will set the initial value as that symbol.
-
-After a class has been created with @code{defclass}, you can change
-that default value with @code{oset-default}.  @ref{Accessing Slots}.
+will use the list as a value.  This is incompatible with CLOS (which would
+signal an error since 1 is not a valid function) and will likely change in the
+future, so better quote your initforms if they're just values.
 
 @item :type
 An unquoted type specifier used to validate data set into this slot.
@@ -669,7 +657,7 @@ can do any valid Lispy thing you want with it, such as
 Example of creating an object from a class:
 
 @example
-(record "test" :value 3 :reference nil)
+(record :value 3 :reference nil)
 @end example
 
 @end defun
@@ -692,15 +680,6 @@ for each slot.  For example:
   (make-instance @code{'foo} @code{:slot1} value1 @code{:slotN} valueN)
 @end example
 
-Compatibility note:
-
-If the first element of @var{initargs} is a string, it is used as the
-name of the class.
-
-In @eieio{}, the class' constructor requires a name for use when printing.
address@hidden in CLOS doesn't use names the way Emacs does, so the
-class is used as the name slot instead when @var{initargs} doesn't start with
-a string.
 @end defun
 
 @node Accessing Slots
@@ -717,14 +696,9 @@ This macro sets the value behind @var{slot} to @var{value} 
in
 @end defmac
 
 @defmac oset-default class slot value
-This macro sets the @code{:initform} for @var{slot} in @var{class} to
+This macro sets the value for the class-allocated @var{slot} in @var{class} to
 @var{value}.
 
-This allows the user to set both public and private defaults after the
-class has been constructed, and provides a way to configure the
-default behavior of packages built with classes (the same way
address@hidden does for buffer-local variables).
-
 For example, if a user wanted all @code{data-objects} (@pxref{Building
 Classes}) to inform a special object of his own devising when they
 changed, this can be arranged by simply executing this bit of code:
@@ -737,16 +711,12 @@ changed, this can be arranged by simply executing this 
bit of code:
 @defmac oref obj slot
 @anchor{oref}
 Retrieve the value stored in @var{obj} in the slot named by @var{slot}.
-Slot is the name of the slot when created by @dfn{defclass} or the label
-created by the @code{:initarg} tag.
+Slot is the name of the slot when created by @dfn{defclass}.
 @end defmac
 
address@hidden oref-default obj slot
address@hidden oref-default class slot
 @anchor{oref-default}
-Gets the default value of @var{obj} (maybe a class) for @var{slot}.
-The default value is the value installed in a class with the @code{:initform}
-tag.  @var{slot} can be the slot name, or the tag specified by the 
@code{:initarg}
-tag in the @dfn{defclass} call.
+Get the value of the class-allocated @var{slot} from @var{class}.
 @end defmac
 
 The following accessors are defined by CLOS to reference or modify
@@ -812,7 +782,7 @@ Where each @var{var} is the local variable given to the 
associated
 variable name of the same name as the slot.
 
 @example
-(defclass myclass () (x :initarg 1))
+(defclass myclass () (x :initform 1))
 (setq mc (make-instance 'myclass))
 (with-slots (x) mc x)                      => 1
 (with-slots ((something x)) mc something)  => 1
@@ -986,15 +956,14 @@ allows the first argument to be cast.
 @section Static Methods
 
 Static methods do not depend on an object instance, but instead
-operate on an object's class.  You can create a static method by using
+operate on a class.  You can create a static method by using
 the @code{:static} key with @code{defmethod}.
 
-Do not treat the first argument of a @code{:static} method as an
-object unless you test it first.  Use the functions
address@hidden or @code{oset-default} which will work on a class,
-or on the class of an object.
+The first argument of a @code{:static} method will be a class rather than an
+object.  Use the functions @code{oref-default} or @code{oset-default} which
+will work on a class.
 
-A Class' @code{constructor} method is defined as a @code{:static}
+A class's @code{make-instance} method is defined as a @code{:static}
 method.
 
 @b{Note:} The @code{:static} keyword is unique to @eieio{}.
@@ -1085,13 +1054,6 @@ For example:
 Will fetch the documentation string for @code{eieio-default-superclass}.
 @end defun
 
address@hidden class-constructor class
-Return a symbol used as a constructor for @var{class}.  The
-constructor is a function used to create new instances of
address@hidden  This function provides a way to make an object of a class
-without knowing what it is.  This is not a part of CLOS.
address@hidden defun
-
 @defun eieio-object-name obj
 Return a string of the form @samp{#<object-class myobjname>} for @var{obj}.
 This should look like Lisp symbols from other parts of Emacs such as
@@ -1105,11 +1067,6 @@ information into the symbol.
 Returns the class symbol from @var{obj}.
 @end defun
 
address@hidden eieio--object-class obj
-Same as @code{eieio-object-class} except this is a macro, and no
-type-checking is performed.
address@hidden defun
-
 @defun eieio-object-class-name obj
 Returns the symbol of @var{obj}'s class.
 @end defun
@@ -1267,7 +1224,7 @@ Return the list of public slots for @var{obj}.
 @end defun
 
 @defun class-slot-initarg class slot
-For the given @var{class} return the :initarg associated with
+For the given @var{class} return an :initarg associated with
 @var{slot}.  Not all slots have initargs, so the return value can be
 @code{nil}.
 @end defun
@@ -1612,7 +1569,7 @@ is a list of name/value pairs.  These are actually just 
passed to
 Sets slots of @var{obj} with @var{slots} which is a list of name/value
 pairs.
 
-This is called from the default @code{constructor}.
+This is called from the default constructor.
 @end defun
 
 @node Basic Methods
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index 3a86e1b..9cdfe77 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -266,54 +266,54 @@ This is a summary of keystrokes available in every ERC 
buffer.
 
 @table @kbd
 
address@hidden C-a or <home> (`erc-bol')
address@hidden C-a or <home> (@code{erc-bol})
 Go to beginning of line or end of prompt.
 
address@hidden RET (`erc-send-current-line')
address@hidden RET (@code{erc-send-current-line})
 Send the current line
 
address@hidden TAB (`erc-complete-word')
address@hidden TAB (@code{erc-complete-word})
 If at prompt, complete the current word.
 Otherwise, move to the next link or button.
 
address@hidden M-TAB (`ispell-complete-word')
address@hidden M-TAB (@code{ispell-complete-word})
 Complete the given word, using ispell.
 
address@hidden C-c C-a (`erc-bol')
address@hidden C-c C-a (@code{erc-bol})
 Go to beginning of line or end of prompt.
 
address@hidden C-c C-b (`erc-iswitchb')
-Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
address@hidden C-c C-b (@code{erc-iswitchb})
+Use @code{iswitchb-read-buffer} to prompt for a ERC buffer to switch to.
 
address@hidden C-c C-c (`erc-toggle-interpret-controls')
address@hidden C-c C-c (@code{erc-toggle-interpret-controls})
 Toggle interpretation of control sequences in messages.
 
address@hidden C-c C-d (`erc-input-action')
address@hidden C-c C-d (@code{erc-input-action})
 Interactively input a user action and send it to IRC.
 
address@hidden C-c C-e (`erc-toggle-ctcp-autoresponse')
address@hidden C-c C-e (@code{erc-toggle-ctcp-autoresponse})
 Toggle automatic CTCP replies (like VERSION and PING).
 
address@hidden C-c C-f (`erc-toggle-flood-control')
address@hidden C-c C-f (@code{erc-toggle-flood-control})
 Toggle use of flood control on sent messages.
 
address@hidden C-c TAB (`erc-invite-only-mode')
address@hidden C-c TAB (@code{erc-invite-only-mode})
 Turn on the invite only mode (+i) for the current channel.
 
address@hidden C-c C-j (`erc-join-channel')
address@hidden C-c C-j (@code{erc-join-channel})
 Join channel.  If point is at the beginning of a channel name, use that
 as default.
 
address@hidden C-c C-k (`erc-go-to-log-matches-buffer')
address@hidden C-c C-k (@code{erc-go-to-log-matches-buffer})
 Interactively open an erc-log-matches buffer
 
address@hidden C-c C-l (`erc-save-buffer-in-logs')
address@hidden C-c C-l (@code{erc-save-buffer-in-logs})
 Append buffer contents to the log file, if logging is enabled.
 
address@hidden C-c C-n (`erc-channel-names')
address@hidden C-c C-n (@code{erc-channel-names})
 Run "/names #channel" in the current channel.
 
address@hidden C-c C-o (`erc-get-channel-mode-from-keypress')
address@hidden C-c C-o (@code{erc-get-channel-mode-from-keypress})
 Read a key sequence and call the corresponding channel mode function.
 After doing @kbd{C-c C-o}, type in a channel mode letter.
 
@@ -321,22 +321,22 @@ After doing @kbd{C-c C-o}, type in a channel mode letter.
 @kbd{RET} lets you type more than one mode at a time.
 If @kbd{l} is pressed, @code{erc-set-channel-limit} gets called.
 If @kbd{k} is pressed, @code{erc-set-channel-key} gets called.
-Anything else will be sent to `erc-toggle-channel-mode'.
+Anything else will be sent to @code{erc-toggle-channel-mode}.
 
address@hidden C-c C-p (`erc-part-from-channel')
address@hidden C-c C-p (@code{erc-part-from-channel})
 Part from the current channel and prompt for a reason.
 
address@hidden C-c C-q (`erc-quit-server')
address@hidden C-c C-q (@code{erc-quit-server})
 Disconnect from current server after prompting for reason.
 
address@hidden C-c C-r (`erc-remove-text-properties-region')
address@hidden C-c C-r (@code{erc-remove-text-properties-region})
 Clears the region (start,end) in object from all colors, etc.
 
address@hidden C-c C-t (`erc-set-topic')
address@hidden C-c C-t (@code{erc-set-topic})
 Prompt for a topic for the current channel.
 
address@hidden C-c C-u (`erc-kill-input')
-Kill current input line using `erc-bol' followed by `kill-line'.
address@hidden C-c C-u (@code{erc-kill-input})
+Kill current input line using @code{erc-bol} followed by @code{kill-line}.
 
 @end table
 
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 51e9586..710ebbb 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -822,7 +822,7 @@ functions.
 
 While fixtures are a useful syntactic simplification in other
 languages, this does not apply to Lisp, where higher-order functions
-and `unwind-protect' are available.  One way to implement and use a
+and @code{unwind-protect} are available.  One way to implement and use a
 fixture in ERT is
 
 @lisp
@@ -851,7 +851,7 @@ be added but would provide only a minor simplification.
 
 (If you are interested in such syntax, note that splitting set-up and
 tear-down into separate functions, like *Unit tools usually do, makes
-it impossible to establish dynamic `let' bindings as part of the
+it impossible to establish dynamic @code{let} bindings as part of the
 fixture.  So, blindly imitating the way fixtures are implemented in
 other languages would be counter-productive in Lisp.)
 
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 6d57a78..b2fbd7a 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -250,7 +250,7 @@ need to use a function that takes some other data type, you 
will need to
 call it in an Elisp expression (which can also be used with
 @ref{Expansion, expansions}).  As with other shells, you can
 escape special characters and spaces with the backslash (@code{\}) and
-the single (@code{''}) and double (@code{""}) quotes.
+apostrophes (@code{''}) and double quotes (@code{""}).
 
 @node Built-ins
 
@@ -298,6 +298,12 @@ with no arguments, prints the current paths in this 
variable.
 Define an alias (@pxref{Aliases}).  This does not add it to the aliases
 file.
 
address@hidden clear
address@hidden clear
+Scrolls the contents of the eshell window out of sight, leaving a blank window.
+If provided with an optional non-nil argument, the scrollback contents are
+cleared instead.
+
 @item date
 @cmindex date
 Similar to, but slightly different from, the GNU Coreutils
@@ -654,6 +660,16 @@ not @samp{git status} -- use 
@code{eshell-visual-subcommands}; and for
 commands that are visual only when passed certain options, use
 @code{eshell-visual-options}.
 
+Caution: Some tools such as Git use the pager @samp{less} by default
+to paginate their output but call it with its @samp{-F} option.  This
+option causes @samp{less} to echo the output instead of paginating it
+if the output is less than one page long.  This causes undesirable
+behavior if, e.g., @samp{git diff}, is defined as a visual subcommand.
+It'll work if the output is big enough and fail if it is less than one
+page long.  If that occurs to you, search for configuration options
+for calling @samp{less} without the @samp{-F} option.  For Git, you
+can do that using @samp{git config --global core.pager 'less -+F'}.
+
 @section Redirection
 Redirection is mostly the same in Eshell as it is in other command
 shells.  The output redirection operators @code{>} and @code{>>} as
@@ -1136,7 +1152,7 @@ auto-revert mode in that buffer at frequent 
intervals---and a
 
 @item Make @command{dgrep} load @code{dired}, mark everything, then invoke 
@code{dired-do-search}
 
address@hidden Write mesh.c
address@hidden Write @file{mesh.c}
 
 This would run Emacs with the appropriate arguments to invoke Eshell
 only.  That way, it could be listed as a login shell.
@@ -1145,7 +1161,8 @@ only.  That way, it could be listed as a login shell.
 
 @item Auto-detect when a command is visual, by checking @code{TERMCAP} usage
 
address@hidden The first keypress after @kbd{M-x watson} triggers 
`eshell-send-input'
address@hidden The first keypress after @kbd{M-x watson} triggers
address@hidden
 
 @item Make @kbd{/} electric
 
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 9757c82..4d6e6ad 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -4,6 +4,8 @@
 @settitle Emacs Unified Directory Client (EUDC) Manual
 @afourpaper
 @documentencoding UTF-8
address@hidden fn cp
address@hidden vr cp
 @c %**end of header
 
 @copying
@@ -61,8 +63,7 @@ modify this GNU manual.''
 * Usage::                       The various usage possibilities explained
 * Credits::                     Who's done what
 * GNU Free Documentation License:: The license for this documentation.
-* Command and Function Index::
-* Variables Index::
+* Index::
 @end menu
 
 
@@ -220,15 +221,36 @@ email composition buffers (@pxref{Inline Query Expansion})
 @section LDAP Configuration
 
 LDAP support is added by means of @file{ldap.el}, which is part of
-Emacs.  @file{ldap.el} needs an external command line utility named
address@hidden, available as part of OpenLDAP
+Emacs.  @file{ldap.el} needs an external program called
address@hidden, available as part of OpenLDAP
 (@url{http://www.openldap.org/}).  The configurations in this section
 were tested with OpenLDAP 2.4.23.
 
+Most servers use LDAP-over-SSL these days; the examples here reflect
+that.  The other possibilities are:
+
address@hidden ldap-host-parameters-alist
address@hidden ldap-ldapsearch-args
address@hidden @bullet
+
address@hidden
+Servers that do not require authentication or that do not encrypt
+authentication traffic.
+
+Include @code{auth simple} in @code{ldap-host-parameters-alist}, which
+causes the @code{-x} option to be passed to @command{ldapsearch}.
+
address@hidden
+Servers that require SASL authentication.
+
+Pass any required extra options to @command{ldapsearch} using
address@hidden
address@hidden itemize
+
 The following examples use a base of
 @code{ou=people,dc=example,dc=com} and the host name
address@hidden, a server that supports LDAP-over-SSL
-(the @code{ldaps} protocol, with default port @code{636}) and which
address@hidden, a server that supports LDAP-over-SSL (the
address@hidden protocol, with default port @code{636}) and which
 requires authentication by the user @code{emacsuser} with password
 @code{s3cr3t}.
 
@@ -244,14 +266,21 @@ example, attempting to TAB-complete the following:
 To: * Smith
 @end example
 
address@hidden
 will return all LDAP entries with surnames that begin with
 @code{Smith}.  In every LDAP query it makes, EUDC implicitly appends
 the wildcard character to the end of the last word.
 
address@hidden
+* Emacs-only Configuration::    Configure with @file{.emacs}
+* External Configuration::      Configure with @file{/etc/openldap/ldap.conf}
address@hidden menu
+
address@hidden Emacs-only Configuration
 @subsection Emacs-only Configuration
 
 Emacs can pass most required configuration options via the
address@hidden command-line.  One exception is certificate
address@hidden command-line.  One exception is certificate
 configuration for LDAP-over-SSL, which must be specified in
 @file{/etc/openldap/ldap.conf}.  On systems that provide such
 certificates as part of the @code{OpenLDAP} installation, this can be
@@ -264,19 +293,28 @@ TLS_CACERTDIR /etc/openldap/certs
 In @file{.emacs}, these expressions suffice to configure EUDC for
 LDAP:
 
address@hidden message-mode-map
address@hidden eudc-expand-inline
address@hidden eudc-server-hotlist
address@hidden ldap-host-parameters-alist
 @lisp
 (eval-after-load "message"
   '(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
 (customize-set-variable 'eudc-server-hotlist
                         '(("" . bbdb)
-                          ("ldaps://directory.example.com" . ldap)))
+                          ("ldaps://ldap.gnu.org" . ldap)))
 (customize-set-variable 'ldap-host-parameters-alist
-                        '(("ldaps://directory.example.com"
+                        '(("ldaps://ldap.gnu.org"
                            base "ou=people,dc=example,dc=com"
                            binddn "example\\emacsuser"
                            passwd ldap-password-read)))
 @end lisp
 
address@hidden ldap-password-read
address@hidden passwd
address@hidden password-cache
address@hidden password-cache-expiry
address@hidden password-reset
 Specifying the function @code{ldap-password-read} for @code{passwd}
 will cause Emacs to prompt interactively for the password.  The
 password will then be validated and cached, unless
@@ -285,6 +323,7 @@ password will then be validated and cached, unless
 password is cached.  If you want to clear the cache, call
 @code{password-reset}.
 
address@hidden External Configuration
 @subsection External Configuration
 
 Your system may already be configured for a default LDAP server.  For
@@ -292,36 +331,42 @@ example, @file{/etc/openldap/ldap.conf} might contain:
 
 @example
 BASE ou=people,dc=example,dc=com
-URI ldaps://directory.example.com
+URI ldaps://ldap.gnu.org
 TLS_CACERTDIR /etc/openldap/certs
 @end example
 
-To authenticate, the @dfn{bind distinguished name (binddn)} is
-required, in this case, @code{example\emacsuser}, along with the
-password.  These can be specified in @file{~/.authinfo.gpg} with the
-following line:
address@hidden bind distinguished name
address@hidden binddn
+Authentication requires a password, and a @dfn{bind distinguished name
+(binddn)} representing the user, in this case,
address@hidden  These can be specified in
address@hidden/.authinfo.gpg} with the following line:
 
 @example
-machine ldaps://directory.example.com binddn example\emacsuser password s3cr3t
+machine ldaps://ldap.gnu.org binddn example\emacsuser password s3cr3t
 @end example
 
 Then in the @file{.emacs} init file, these expressions suffice to
 configure EUDC for LDAP:
 
address@hidden message-mode-map
address@hidden eudc-expand-inline
address@hidden eudc-server-hotlist
address@hidden ldap-host-parameters-alist
 @lisp
 (eval-after-load "message"
   '(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
 (customize-set-variable 'eudc-server-hotlist
                         '(("" . bbdb)
-                          ("ldaps://directory.example.com" . ldap)))
+                          ("ldaps://ldap.gnu.org" . ldap)))
 (customize-set-variable 'ldap-host-parameters-alist
-                        '(("ldaps://directory.example.com"
+                        '(("ldaps://ldap.gnu.org"
                            auth-source t)))
 @end lisp
 
 For this example where we only care about one server, the server name
 can be omitted in @file{~/.authinfo.gpg} and @file{.emacs}, in which
-case @file{ldapsearch} defaults to the host name in
+case @command{ldapsearch} defaults to the host name in
 @file{/etc/openldap/ldap.conf}.
 
 The @file{~/.authinfo.gpg} line becomes:
@@ -330,13 +375,20 @@ The @file{~/.authinfo.gpg} line becomes:
 binddn example\emacsuser password s3cr3t
 @end example
 
address@hidden
 and the @file{.emacs} expressions become:
 
address@hidden message-mode-map
address@hidden eudc-expand-inline
address@hidden eudc-server-hotlist
address@hidden ldap-host-parameters-alist
 @lisp
 (eval-after-load "message"
   '(define-key message-mode-map (kbd "TAB") 'eudc-expand-inline))
-(customize-set-variable 'eudc-server-hotlist '(("" . bbdb) ("" . ldap)))
-(customize-set-variable 'ldap-host-parameters-alist '(("" auth-source t)))
+(customize-set-variable 'eudc-server-hotlist
+                        '(("" . bbdb) ("" . ldap)))
+(customize-set-variable 'ldap-host-parameters-alist
+                        '(("" auth-source t)))
 @end lisp
 
 @node Usage
@@ -397,7 +449,7 @@ may be specified by appending a colon and a number to the 
name of the
 server. You will not need this unless your server runs on a port other
 than the default (which depends on the protocol).
 If the directory server resides on your own computer (which is the case
-if you use the BBDB back end) then `localhost' is a reasonable value but
+if you use the BBDB back end) then @samp{localhost} is a reasonable value but
 it will be ignored anyway.
 @end defvar
 
@@ -810,11 +862,11 @@ trying to perform an inline query.  Possible values are:
 Only the current directory server is tried
 @item hotlist
 The servers in the hotlist are tried in order until one finds a match
-for the query or `eudc-max-servers-to-query' is reached
+for the query or @code{eudc-max-servers-to-query} is reached
 @item server-then-hotlist
 The current server then the servers in the hotlist are tried in the
 order they appear in the hotlist until one of them finds a match or
-`eudc-max-servers-to-query' is reached.  This is the default.
address@hidden is reached.  This is the default.
 @end table
 @end defvar
 
@@ -1043,14 +1095,9 @@ in testing and proofreading the code and docs of 
@file{ph.el}.
 @appendix GNU Free Documentation License
 @include doclicense.texi
 
address@hidden Command and Function Index
address@hidden Command and Function Index
-
address@hidden fn
-
address@hidden Variables Index
address@hidden Variables Index
address@hidden Index
address@hidden Index
 
address@hidden vr
address@hidden cp
 
 @bye
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index 433009c..ab284bd 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -854,7 +854,7 @@ number of records actually present in the data file.
 @item Problem saving buffers?
 An error occurred while saving the data file buffer. Most likely, Emacs
 did ask to confirm deleting the buffer because it had been modified, and
-you said `no'.
+you said ``no''.
 @end table
 
 @node Long Example
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 8eb7c77..8126827 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1112,7 +1112,7 @@ resulting in:
 :O  \->  ...                                      | 115 |Raymond Scholz       
| 1:24
 :O    \->  ...                                    |  19 |Lars Magne Ingebrigt 
|15:33
 :O     Slow mailing list                          |  13 |Lars Magne Ingebrigt 
|Sat 23:49
-:O     Re: `@@' mark not documented                |  13 |Lars Magne Ingebrigt 
|Sat 23:50
+:O     Re: '@@' mark not documented                |  13 |Lars Magne Ingebrigt 
|Sat 23:50
 :R  >  Re: Gnus still doesn't count messages prope|  23 |Lars Magne Ingebrigt 
|Sat 23:57
 :O  \->  ...                                      |  18 |Kai Grossjohann      
| 0:35
 :O    \->  ...                                    |  13 |Lars Magne Ingebrigt 
| 0:56
@@ -1501,7 +1501,7 @@ entries. Say @samp{c} to create a new
 entry, @samp{b} to search your BBDB and
 @samp{C-o} to add a new field to an
 entry. If you want to add a sender to the BBDB you can
-also just hit `:' on the posting in the summary buffer and
+also just hit @kbd{:} on the posting in the summary buffer and
 you are done. When you now compose a new mail,
 hit @samp{TAB} to cycle through know
 recipients.
diff --git a/doc/misc/gnus-news.el b/doc/misc/gnus-news.el
index 81986f2..ba8a463 100644
--- a/doc/misc/gnus-news.el
+++ b/doc/misc/gnus-news.el
@@ -85,7 +85,7 @@ paragraph-separate: \"[       ]*$\"\nend:\n")
         (infile (concat dir infile))
         (buffer (find-file-noselect (concat dir outfile))))
     (with-temp-buffer
-      ;; Could be done using `texinfmt' stuff as in `infohack.el'.
+      ;; Could be done using 'texinfmt' stuff as in 'infohack.el'.
       (insert
        (shell-command-to-string
        (concat gnus-news-makeinfo-command " "
@@ -102,7 +102,7 @@ paragraph-separate: \"[     ]*$\"\nend:\n")
       (save-excursion
        (while (re-search-forward "^     " nil t)
          (replace-match "")))
-      ;; Avoid `*' from @ref at beginning of line:
+      ;; Avoid '*' from @ref at beginning of line:
       (save-excursion
        (while (re-search-forward "^\\*Note" nil t)
          (replace-match " \\&")))
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index c5b96e7..ef6573f 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -13,8 +13,8 @@
 @c    carry prominent notices stating who last changed them.
 
 @c This file contains a list of news features Gnus.  It is supposed to be
address@hidden included in `gnus.texi'.  `GNUS-NEWS' is automatically generated 
from
address@hidden this file (see `gnus-news.el').
address@hidden included in 'gnus.texi'.  'GNUS-NEWS' is automatically generated 
from
address@hidden this file (see 'gnus-news.el').
 
 @itemize @bullet
 
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index ed4d1a5..97e56e1 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -11913,8 +11913,8 @@ controlling variable is a predicate list, as described 
above.
 
 @ifinfo
 @c Avoid sort of redundant entries in the same section for the printed
address@hidden manual, but add them in info to allow `i gnus-treat-foo-bar RET' 
or
address@hidden `i foo-bar'.
address@hidden manual, but add them in info to allow 'i gnus-treat-foo-bar RET' 
or
address@hidden 'i foo-bar'.
 @vindex gnus-treat-buttonize
 @vindex gnus-treat-buttonize-head
 @vindex gnus-treat-capitalize-sentences
@@ -14987,7 +14987,7 @@ this means @samp{gssapi}, @samp{kerberos4}, 
@samp{digest-md5},
 @samp{cram-md5}, @samp{anonymous} or the default @samp{login}.
 
 @item :program
-When using the `shell' :stream, the contents of this variable is
+When using the @samp{shell} :stream, the contents of this variable is
 mapped into the @code{imap-shell-program} variable.  This should be a
 @code{format}-like string (or list of strings).  Here's an example:
 
@@ -17768,7 +17768,7 @@ So you send a ``reminder'' message (actually, a diary 
one) to yourself.
 @item
 You forget all about it and keep on getting and reading new mail, as usual.
 @item
-From time to time, as you type `g' in the group buffer and as the date
+From time to time, as you type @kbd{g} in the group buffer and as the date
 is getting closer, the message will pop up again to remind you of your
 appointment, just as if it were new and unread.
 @item
@@ -19648,7 +19648,7 @@ Immediately scoring.
 @end table
 
 @item
-If you are scoring on `e' (extra) headers, you will then be prompted for
+If you are scoring on @samp{e} (extra) headers, you will then be prompted for
 the header name on which you wish to score.  This must be a header named
 in gnus-extra-headers, and @samp{TAB} completion is available.
 
@@ -21354,8 +21354,8 @@ variable.
 
 To work correctly the @code{nnir-namazu-remove-prefix} variable must
 also be correct.  This is the prefix to remove from each file name
-returned by Namazu in order to get a proper group name (albeit with `/'
-instead of `.').
+returned by Namazu in order to get a proper group name (albeit with @samp{/}
+instead of @samp{.}).
 
 For example, suppose that Namazu returns file names such as
 @samp{/home/john/Mail/mail/misc/42}.  For this example, use the
@@ -21368,18 +21368,20 @@ correct group name @samp{mail.misc}.
 Extra switches may be passed to the namazu search command by setting the
 variable @code{nnir-namazu-additional-switches}.  It is particularly
 important not to pass any any switches to namazu that will change the
-output format.  Good switches to use include `--sort', `--ascending',
-`--early' and `--late'.  Refer to the Namazu documentation for further
+output format.  Good switches to use include @option{--sort},
address@hidden, @option{--early} and @option{--late}.
+Refer to the Namazu documentation for further
 information on valid switches.
 
-Mail must first be indexed  with the `mknmz' program.  Read the documentation
-for namazu to create a configuration file.  Here is an example:
+Mail must first be indexed with the @command{mknmz} program.  Read the
+documentation for namazu to create a configuration file.  Here is an
+example:
 
 @cartouche
 @example
  package conf;  # Don't remove this line!
 
- # Paths which will not be indexed. Don't use `^' or `$' anchors.
+ # Paths which will not be indexed. Don't use '^' or '$' anchors.
  $EXCLUDE_PATH = "spam|sent";
 
  # Header fields which should be searchable. case-insensitive
@@ -21451,7 +21453,7 @@ when searching all groups on a server.
 
 @item nnir-summary-line-format
 The format specification to be used for lines in an nnir summary buffer.
-All the items from `gnus-summary-line-format' are available, along with
+All the items from @code{gnus-summary-line-format} are available, along with
 three items unique to nnir summary buffers:
 
 @example
@@ -21465,7 +21467,7 @@ If @code{nil} (the default) this will use 
@code{gnus-summary-line-format}.
 @item nnir-retrieve-headers-override-function
 If address@hidden, a function that retrieves article headers rather than using
 the gnus built-in function.  This function takes an article list and
-group as arguments and populates the `nntp-server-buffer' with the
+group as arguments and populates the @code{nntp-server-buffer} with the
 retrieved headers.  It should then return either 'nov or 'headers
 indicating the retrieved header format.  Failure to retrieve headers
 should return @code{nil}.
@@ -26124,10 +26126,10 @@ their @code{:char} property, or showing the marks as 
full strings.
 
 @lisp
 ;; show the marks as single characters (see the :char property in
-;; `gnus-registry-marks'):
+;; 'gnus-registry-marks'):
 ;; (defalias 'gnus-user-format-function-M 
'gnus-registry-article-marks-to-chars)
 
-;; show the marks by name (see `gnus-registry-marks'):
+;; show the marks by name (see 'gnus-registry-marks'):
 ;; (defalias 'gnus-user-format-function-M 
'gnus-registry-article-marks-to-names)
 @end lisp
 
@@ -27817,7 +27819,7 @@ As a result of the following change, the 
@file{~/News/overview/}
 directory is not used any more.  You can safely delete the entire
 hierarchy.
 
address@hidden FIXME: `gnus-load' is mentioned in README, which is not included 
in
address@hidden FIXME: 'gnus-load' is mentioned in README, which is not included 
in
 @c the repository.  We should find a better place for this item.
 @item
 @code{(require 'gnus-load)}
diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi
index 6579cd6..8140b43 100644
--- a/doc/misc/htmlfontify.texi
+++ b/doc/misc/htmlfontify.texi
@@ -840,7 +840,7 @@ See @ref{hfy-display-class} for details of valid values for 
@var{class}.
 @end lisp
 
 Find face in effect at point address@hidden  If overlays are to be considered
-(see @ref{hfy-optimisations}) then this may return a @code{defface} style
+(see @ref{hfy-optimizations}) then this may return a @code{defface} style
 list of face properties instead of a face symbol.
 
 @item hfy-bgcol
@@ -950,7 +950,7 @@ Is @var{srcdir}/@var{file} text?  Uses 
@ref{hfy-istext-command} to determine thi
 (hfy-opt @var{symbol})
 @end lisp
 
-Is @ref{hfy-optimisations} member @var{symbol} set or not?
+Is @ref{hfy-optimizations} member @var{symbol} set or not?
 
 @item hfy-dirname
 @findex hfy-dirname
@@ -1395,9 +1395,9 @@ for the more complex shell interactions needed by 
Htmlfontify.
 Currently this is only required/used when using GNU etags, see
 @ref{hfy-etags-cmd-alist} for details.
 
address@hidden hfy-optimisations
address@hidden hfy-optimisations
address@hidden
address@hidden hfy-optimizations
address@hidden hfy-optimizations
address@hidden
 
 Optimizations to turn on.  So far, the following have been implemented:
 
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index 496674c..ca449e4 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -129,7 +129,7 @@ Completion
 Actions
 
 * Block Boundary Check::        Is the END statement correct?
-* Padding Operators::           Enforcing space around `=' etc
+* Padding Operators::           Enforcing space around @samp{=} etc
 * Case Changes::                Enforcing upper case keywords
 
 The IDLWAVE Shell
@@ -501,7 +501,7 @@ plot_wday,1,1
 @noindent and press @key{RET}.  This fails with an error message telling
 you the @code{YT} keyword to plot is ambiguous.  What are the allowed
 keywords again?  Go back to the source window and put the cursor into
-the `plot' line and press @kbd{C-c ?}.  This shows the routine info
+the ``plot'' line and press @kbd{C-c ?}.  This shows the routine info
 window for the plot routine, which contains a list of keywords, along
 with the argument list.  Oh, we wanted @code{YTITLE}.  Fix that up.
 Recompile with @kbd{C-c C-d C-c}. Jump back into the shell with
@@ -608,7 +608,7 @@ Group}. Here you'll be presented with all the various 
variables grouped
 into categories.  You can navigate the hierarchy (e.g., @samp{IDLWAVE
 Code Formatting->Idlwave Abbrev And Indent Action->Idlwave Expand
 Generic End} to turn on @code{END} expansion), read about the variables,
-change them, and `Save for Future Sessions'.  Few of these variables
+change them, and ``Save for Future Sessions''.  Few of these variables
 need customization, but you can exercise considerable control over
 IDLWAVE's functionality with them.
 
@@ -705,7 +705,7 @@ library:
     address@hidden@key{TAB}}
 @end example
 
-expands to `readfits('.  Then try
+expands to ``readfits(''.  Then try
 
 @example
     a=readfits(@key{C-c ?}
@@ -1599,7 +1599,7 @@ completed keywords.
 
 @defopt idlwave-function-completion-adds-paren (@code{t})
 address@hidden means completion automatically adds @samp{(} after
-completed function.  A value of `2' means also add the closing
+completed function.  A value of 2 means also add the closing
 parenthesis and position the cursor between the two.
 @end defopt
 
@@ -2121,7 +2121,7 @@ settings are described below and set separately.
 
 @menu
 * Block Boundary Check::        Is the END statement correct?
-* Padding Operators::           Enforcing space around `=' etc
+* Padding Operators::           Enforcing space around @samp{=} etc
 * Case Changes::                Enforcing upper case keywords
 @end menu
 
@@ -2490,7 +2490,7 @@ The frame parameters for a dedicated idlwave-shell frame.
 @end defopt
 
 @defopt idlwave-shell-raise-frame (@code{t})
address@hidden means `idlwave-shell' raises the frame showing the shell
address@hidden means @code{idlwave-shell} raises the frame showing the shell
 window.
 @end defopt
 
@@ -3943,7 +3943,7 @@ user is King!
       w3m-use-header-line nil
       w3m-use-toolbar nil)
 
-;; Close my help window or frame when w3m closes with `q'
+;; Close my help window or frame when w3m closes with 'q'.
 (defadvice w3m-close-window (after idlwave-close activate)
   (if (boundp 'idlwave-help-frame)
       (idlwave-help-quit)))
@@ -3969,11 +3969,11 @@ user is King!
     (idlwave-action-and-binding "," '(idlwave-surround nil 1))
     (idlwave-action-and-binding "&" '(idlwave-surround 1 1))
 
-    ;; Pad only after `->', remove any space before the arrow
+    ;; Pad only after '->', remove any space before the arrow
     (idlwave-action-and-binding "->"  '(idlwave-surround 0 -1 nil 2))
 
     ;; Set some personal bindings
-    ;; (In this case, makes `,' have the normal self-insert behavior.)
+    ;; (In this case, makes ',' have the normal self-insert behavior.)
     (local-set-key "," 'self-insert-command)
     (local-set-key [f5] 'idlwave-shell-break-here)
     (local-set-key [f6] 'idlwave-shell-clear-current-bp)
diff --git a/doc/misc/info.texi b/doc/misc/info.texi
index 759956d..7337b46 100644
--- a/doc/misc/info.texi
+++ b/doc/misc/info.texi
@@ -67,8 +67,8 @@ type the command @kbd{h} now.  It brings you to a programmed
 instruction sequence.
 
 To read about advanced Info commands, type @kbd{n} twice.  This
-brings you to @cite{Advanced Info Commands}, skipping over the `Getting
-Started' chapter.
+brings you to @cite{Advanced Info Commands}, skipping over the ``Getting
+Started'' chapter.
 
 Type @kbd{H} to see a summary of all available commands.
 @end ifinfo
diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi
index 5cf9ab0..16f4902 100644
--- a/doc/misc/mairix-el.texi
+++ b/doc/misc/mairix-el.texi
@@ -140,7 +140,7 @@ not tested (yet).
 
 You should make sure that you don't accidentally index the search
 results produced by mairix.  This can be done by pointing
-`mairix-file-path' to a directory which is surely not indexed by mairix.
address@hidden to a directory which is surely not indexed by mairix.
 Another possibility is to use something like
 
 @example
@@ -222,12 +222,12 @@ Here's a description of the available interactive 
functions:
 @vindex mairix-search-options
 Call mairix with a search query.  You will also be asked if you want to
 include whole threads.  The results are saved by mairix in the default
-mail file, which is set through the variable `mairix-search-file', which
-again is prefixed by `mairix-file-path'.  The results will then be
+mail file, which is set through the variable @code{mairix-search-file}, which
+again is prefixed by @code{mairix-file-path}.  The results will then be
 displayed with the chosen mail program.  The command used to call mairix
-is specified by the variable `mairix-command', together with the options
-`mairix-search-options'.  The latter has the default ``-F'' for making
-searching faster.
+is specified by the variable @code{mairix-command}, together with the options
address@hidden  The latter has the default @option{-F}
+for making searching faster.
 
 @item mairix-widget-search
 @kindex M-x mairix-widget-search
@@ -239,7 +239,7 @@ how it works.  You can then directly call mairix with the 
search term or
 save it for future use.  Since mairix allows almost arbitrary
 combinations of search commands (like ``tc'' for ``to or cc''), you
 might want to include some other fields.  This can be easily done by
-modifying `mairix-widget-fields-list'.
+modifying @code{mairix-widget-fields-list}.
 
 @item mairix-widget-search-based-on-article
 @kindex M-x mairix-widget-search-based-on-article
@@ -270,7 +270,7 @@ for the search and will then be asked if you want to save 
your saved
 searches in your @file{.emacs}.  If you answer with yes, the variable
 @code{mairix-saved-searches} will be saved in the customize section of
 your @file{.emacs}.  You can also do this later by using
-`mairix-edit-saved-searches'.
address@hidden
 
 @item mairix-use-saved-search
 @kindex M-x mairix-use-saved-search
@@ -303,10 +303,11 @@ maybe you like it.
 @vindex mairix-update-options
 @vindex mairix-synchronous-update
 Call mairix to update the database.  Mairix will be called with the
-options `mairix-update-options'; the default is ``-F'' and ``-Q'' to
+options @code{mairix-update-options}; the default is @option{-F} and
address@hidden to
 make updates as fast as possible.  Note that by using these options,
 absolutely no integrity checking is done.  If your database somehow gets
-corrupted, simply delete it and update.  If `mairix-synchronous-update'
+corrupted, simply delete it and update.  If @code{mairix-synchronous-update}
 is @code{nil} (the default), mairix will be called in a subprocess so Emacs
 will still be usable while the update is done.
 
diff --git a/doc/misc/makefile.w32-in b/doc/misc/makefile.w32-in
index 6869d94..398b774 100644
--- a/doc/misc/makefile.w32-in
+++ b/doc/misc/makefile.w32-in
@@ -21,7 +21,7 @@
 # Where to find the source code.  The source code for Emacs's C kernel is
 # expected to be in $(srcdir)/src, and the source code for Emacs's
 # utility programs is expected to be in $(srcdir)/lib-src.  This is
-# set by the configure script's `--srcdir' option.
+# set by the configure script's '--srcdir' option.
 srcdir=.
 
 infodir = $(srcdir)/../../info
@@ -71,7 +71,7 @@ DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi 
dired-x.dvi \
                wisent.dvi htmlfontify.dvi
 INFOSOURCES = info.texi
 
-# The following rule does not work with all versions of `make'.
+# The following rule does not work with all versions of 'make'.
 .SUFFIXES: .texi .dvi
 .texi.dvi:
        texi2dvi $<
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 6e49c0a..884d829 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -2006,13 +2006,13 @@ that look like:
 Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
 @end example
 
address@hidden FIXME: Add `message-insert-formatted-citation-line' and
address@hidden `message-citation-line-format'
address@hidden FIXME: Add 'message-insert-formatted-citation-line' and
address@hidden 'message-citation-line-format'.
 
 Point will be at the beginning of the body of the message when this
 function is called.
 
-Note that Gnus provides a feature where clicking on `writes:' hides the
+Note that Gnus provides a feature where clicking on @samp{writes:} hides the
 cited text.  If you change the citation line too much, readers of your
 messages will have to adjust their Gnus, too.  See the variable
 @code{gnus-cite-attribution-suffix}.  @xref{Article Highlighting, ,
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index 0520a4e..dfabb92 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -178,7 +178,7 @@ are kept until @code{newsticker-obsolete-item-max-age} is 
reached.
 
 @vindex newsticker-automatically-mark-items-as-old
 @item newsticker-automatically-mark-items-as-old
-If this is set to `t' then a ``new'' item becomes ``old'' as soon as
+If this is set to @code{t} then a ``new'' item becomes ``old'' as soon as
 it is retrieved a second time.
 
 @end table
diff --git a/doc/misc/octave-mode.texi b/doc/misc/octave-mode.texi
index b65c5ee..3199ec4 100644
--- a/doc/misc/octave-mode.texi
+++ b/doc/misc/octave-mode.texi
@@ -232,7 +232,7 @@ to directly start an inferior Octave process.
 This will start Octave in a special buffer the name of which is
 specified by the variable @code{inferior-octave-buffer} and defaults
 to @file{*Inferior Octave*}.  From within this buffer, you can
-interact with the inferior Octave process `as usual', i.e., by
+interact with the inferior Octave process ``as usual'', i.e., by
 entering Octave commands at the prompt.  The buffer is in Inferior
 Octave mode, which is derived from the standard Comint mode, a major
 mode for interacting with an inferior interpreter.  See the
@@ -282,7 +282,7 @@ then sourcing the buffer by using @kbd{C-c C-l}
 @item C-c C-i s
 @kindex C-c C-i s
 @findex octave-show-process-buffer
-Make sure that `inferior-octave-buffer' is displayed
+Make sure that @code{inferior-octave-buffer} is displayed
 (@code{octave-show-process-buffer}).
 
 @item C-c C-i q
@@ -350,7 +350,7 @@ The startup of the inferior Octave process is highly 
customizable.
 The variable @code{inferior-octave-startup-args} can be used for
 specifying command lines arguments to be passed to Octave on startup
 as a list of strings.  For example, to suppress the startup message
-and use `traditional' mode, set this to @code{("-q" "--traditional")}.
+and use ``traditional'' mode, set this to @code{("-q" "--traditional")}.
 You can also specify a startup file of Octave commands to be loaded on
 startup; note that these commands will not produce any visible output
 in the process buffer.  Which file to use is controlled by the
@@ -433,7 +433,7 @@ when Octave is waiting for input, or done sending output.
 @c @noindent
 @c to your @file{.emacs} file.
 
address@hidden You can use either `plain' Emacs Info or the function 
@code{octave-help}
address@hidden You can use either 'plain' Emacs Info or the function 
@code{octave-help}
 @c as your Octave info reader (for @samp{help -i}).  In the former case,
 @c use @code{info_program ("info-emacs-info")}.
 @c The latter is perhaps more attractive because it allows to look up keys
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index d2721f6..a2cc51e 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -1053,7 +1053,7 @@ is not necessary.  In that case it is sufficient to start 
Emacs as
 shown below.
 
 @lisp
-;;; Minimal setup to load latest `org-mode'
+;;; Minimal setup to load latest 'org-mode'
 
 ;; activate debugging
 (setq debug-on-error t
@@ -2356,7 +2356,7 @@ Fields that are wider become clipped and end in the 
string @samp{=>}.
 Note that the full text is still in the buffer but is hidden.
 To see the full text, hold the mouse over the field---a tool-tip window
 will show the full content.  To edit such a field, use the command
address@hidden `} (that is @kbd{C-c} followed by the backquote).  This will
address@hidden `} (that is @kbd{C-c} followed by the grave accent).  This will
 open a new window with the full field.  Edit it and finish with @kbd{C-c
 C-c}.
 
@@ -2770,7 +2770,7 @@ It is also possible to write a formula in Emacs Lisp.  
This can be useful
 for string manipulation and control structures, if Calc's functionality is
 not enough.
 
-If a formula starts with a single-quote followed by an opening parenthesis,
+If a formula starts with an apostrophe followed by an opening parenthesis,
 then it is evaluated as a Lisp form.  The evaluation should return either a
 string or a number.  Just as with @file{calc} formulas, you can specify modes
 and a printf format after a semicolon.
@@ -6330,7 +6330,8 @@ you stop working on that task, or when you mark the task 
done, the clock is
 stopped and the corresponding time interval is recorded.  It also computes
 the total time spent on each address@hidden only works if all
 headings are indented with less than 30 stars.  This is a hardcoded
-limitation of `lmax' in `org-clock-sum'.} of a project.  And it remembers a
+limitation of @code{lmax} in @code{org-clock-sum}.} of a project.  And it
+remembers a
 history or tasks recently clocked, to that you can jump quickly between a
 number of tasks absorbing your time.
 
@@ -10312,14 +10313,14 @@ macro, they are removed again (depending on the 
variable
 @code{cdlatex-simplify-sub-super-scripts}).
 @item
 @kindex `
-Pressing the backquote @kbd{`} followed by a character inserts math
+Pressing the grave accent @kbd{`} followed by a character inserts math
 macros, also outside @LaTeX{} fragments.  If you wait more than 1.5 seconds
-after the backquote, a help window will pop up.
+after the grave accent, a help window will pop up.
 @item
 @kindex '
-Pressing the single-quote @kbd{'} followed by another character modifies
+Pressing the apostrophe @kbd{'} followed by another character modifies
 the symbol before point with an accent or a font.  If you wait more than
-1.5 seconds after the single-quote, a help window will pop up.  Character
+1.5 seconds after the apostrophe, a help window will pop up.  Character
 modification will work only inside @LaTeX{} fragments; outside the quote
 is normal.
 @end itemize
@@ -12192,7 +12193,7 @@ You can control the size and scale of the embedded 
images using the
 The exporter specifies the desired size of the image in the final document in
 units of centimeters.  In order to scale the embedded images, the exporter
 queries for pixel dimensions of the images using one of a) ImageMagick's
address@hidden program or b) Emacs `create-image' and `image-size'
address@hidden program or b) Emacs @code{create-image} and @code{image-size}
 address@hidden of @file{ImageMagick} is only desirable.  However, if you
 routinely produce documents that have large images or you export your Org
 files that has images using a Emacs batch script, then the use of
@@ -13390,9 +13391,9 @@ the Org buffer and get them translated into @LaTeX{} 
without using the
 @lisp
 @group
 (defun my-latex-filter-nobreaks (text backend info)
-  "Ensure \" \" are properly handled in LaTeX export."
+  "Ensure \"_\" are properly handled in LaTeX export."
   (when (org-export-derived-backend-p backend 'latex)
-        (replace-regexp-in-string " " "~" text)))
+        (replace-regexp-in-string "_" "~" text)))
 
 (add-to-list 'org-export-filter-plain-text-functions
              'my-latex-filter-nobreaks)
@@ -15730,7 +15731,7 @@ process.  For example, compare the following two blocks:
 : bye
 @end example
 
-In non-session mode, the `2' is not printed and does not appear.
+In non-session mode, the ``2'' is not printed and does not appear.
 
 @example
 #+BEGIN_SRC python :results output :session
@@ -15745,8 +15746,8 @@ In non-session mode, the `2' is not printed and does 
not appear.
 : bye
 @end example
 
-But in @code{:session} mode, the interactive interpreter receives input `2'
-and prints out its value, `2'.  (Indeed, the other print statements are
+But in @code{:session} mode, the interactive interpreter receives input ``2''
+and prints out its value, ``2''.  (Indeed, the other print statements are
 unnecessary here).
 
 @node Noweb reference syntax, Key bindings and useful functions, Results of 
evaluation, Working With Source Code
@@ -17814,8 +17815,8 @@ scheduled, and clocking, and any additional properties 
defined in the
 entry.  The return value is an alist.  Keys may occur multiple times
 if the property key was used several address@hidden
 POM may also be @code{nil}, in which case the current entry is used.
-If WHICH is @code{nil} or `all', get all properties.  If WHICH is
-`special' or `standard', only get that subclass.
+If WHICH is @code{nil} or @code{all}, get all properties.  If WHICH is
address@hidden or @code{standard}, only get that subclass.
 @end defun
 @vindex org-use-property-inheritance
 @findex org-insert-property-drawer
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index f0241f0..646122b 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -296,7 +296,7 @@ send it to a channel.
 @cindex quotes
 @cindex double-quotes
 Many commands take parameters.  IRC commands usually ignore string
-delimiters.  Neither quote nor double-quote have special meanings in
+delimiters.  Neither apostrophe nor double-quote have special meanings in
 IRC.
 
 @example
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 1497b1f..6488ae2 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -1000,7 +1000,7 @@ In eqs. (1), (2), (3)--(4), (5) and (6)
 @item u
 Unmark a marked entry.
 
address@hidden FIXME: Do we need `A' as well for consistency?
address@hidden FIXME: Do we need 'A' as well for consistency?
 @cindex LaTeX packages, @code{saferef}
 @cindex @code{saferef}, LaTeX package
 @item a
@@ -4192,7 +4192,7 @@ List of magic words which identify a reference to be of 
this type.  If
 the word before point is equal to one of these words when calling
 @code{reftex-reference}, the label list offered will be automatically
 restricted to labels of the correct type.  If the first element of this
-word list is the symbol `regexp', the strings are interpreted as regular
+word list is the symbol @code{regexp}, the strings are interpreted as regular
 expressions.
 
 @item @var{toc-level}
@@ -4247,7 +4247,7 @@ but this process can be slow when a document contains 
thousands of
 labels.  If you use label prefixes consistently, you may speed up
 document parsing by setting this variable to a address@hidden value.  RefTeX
 will then compare the label prefix with the prefixes found in
-`reftex-label-alist' and derive the correct label type in this way.
address@hidden and derive the correct label type in this way.
 Possible values for this option are:
 
 @example
@@ -4913,7 +4913,7 @@ The keymap which is active in the @file{*Index*} buffer
 
 @defopt reftex-view-crossref-extra
 Macros which can be used for the display of cross references.
-This is used when `reftex-view-crossref' is called with point in an
+This is used when @code{reftex-view-crossref} is called with point in an
 argument of a macro.  Note that crossref viewing for citations,
 references (both ways) and index entries is hard-coded.  This variable
 is only to configure additional structures for which crossreference
@@ -5447,7 +5447,7 @@ deleted from the toc buffer with the @kbd{d} key.
 @noindent @b{Version 4.19}
 @itemize @bullet
 @item
-New command `reftex-toc-recenter' (@kbd{C-c -}) which shows the current
+New command @code{reftex-toc-recenter} (@kbd{C-c -}) which shows the current
 section in the TOC buffer without selecting the TOC window.
 @item
 Recentering happens automatically in idle time when the option
@@ -5459,7 +5459,7 @@ buffer.
 The highlight in the TOC buffer stays when the focus moves to a
 different window.
 @item
-New command `reftex-goto-label'.
+New command @code{reftex-goto-label}.
 @item
 Part numbers are no longer included in chapter numbers, and a new
 part does not reset the chapter counter.  See new option
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index c0d2ba3..13594d9 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -115,8 +115,8 @@ Have you ever noticed that having a laptop to write on 
doesn't
 @emph{actually} increase the amount of quality material that you turn
 out, in the long run?  Perhaps it's because the time we save
 electronically in one way, we're losing electronically in another; the
-tool should never dominate one's focus.  As the mystic Faridu'd-Din
-`Attar wrote: ``Be occupied as little as possible with things of the
+tool should never dominate one's focus.  As the mystic Farīd ud-Dīn
+ʿAṭṭār wrote: ``Be occupied as little as possible with things of the
 outer world but much with things of the inner world; then right action
 will overcome inaction.''
 
@@ -318,10 +318,10 @@ Save (if it is modified) and bury the current buffer.
 
 @item C-c C-c
 @itemx C-x C-s
-Remember the contents of the current buffer (`remember-finalize').
+Remember the contents of the current buffer (@code{remember-finalize}).
 
 @item C-c C-k
-Destroy the current @file{*Remember*} buffer (`remember-destroy').
+Destroy the current @file{*Remember*} buffer (@code{remember-destroy}).
 
 @end table
 
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index a97e504..a851fa2 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -1790,7 +1790,7 @@ a mail message to the Supercite mailing list:
         Martin>    tends to be a "full blown" version rather than to be
         Martin>    stripped down.
 
-        Martin> 2: `point' is at the start of the header, `mark' at the
+        Martin> 2: 'point' is at the start of the header, 'mark' at the
         Martin>    end of the message body.
 
         Martin> 3: (run-hooks 'mail-yank-hooks)
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 0907240..5f4a782 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -604,7 +604,7 @@ Emacs Lisp.  It is an LALR parser suitable for complex 
languages.
 @c Following comments are for the benefit of ispell.
 
 @c LocalWords: alist API APIs arg argc args argv asis assoc autoload Wisent
address@hidden LocalWords: backquote bnf bovinate bovinates LALR
address@hidden LocalWords: bnf bovinate bovinates LALR
 @c LocalWords: bovinating bovination bovinator bucketize
 @c LocalWords: cb cdr charquote checkcache cindex CLOS
 @c LocalWords: concat concocting const ctxt Decl defcustom
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index 726f749..da507db 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -43,16 +43,16 @@ modify this GNU manual.''
 
 Speedbar is a program for Emacs which can be used to summarize
 information related to the current buffer.  Its original inspiration
-is the `explorer' often used in modern development environments, office
+is the ``explorer'' often used in modern development environments, office
 packages, and web browsers.
 
 Speedbar displays a narrow frame in which a tree view is shown.  This
 tree view defaults to containing a list of files and directories.  Files
-can be `expanded' to list tags inside. Directories can be expanded to
+can be ``expanded'' to list tags inside. Directories can be expanded to
 list the files within itself.  Each file or tag can be jumped to
 immediately.
 
-Speedbar expands upon `explorer' windows by maintaining context with the
+Speedbar expands upon ``explorer'' windows by maintaining context with the
 user.  For example, when using the file view, the current buffer's file
 is highlighted.  Speedbar also mimics the explorer windows by providing
 multiple display modes.  These modes come in two flavors.  Major display
@@ -61,8 +61,8 @@ only when a buffer of the applicable type is shown.  This 
allows
 authors of other packages to provide speedbar summaries customized to
 the needs of that mode.
 
-Throughout this manual, activities are defined as `clicking on', or
-`expanding' items.  Clicking means using @kbd{Mouse-2} on a
+Throughout this manual, activities are defined as ``clicking on'', or
+``expanding'' items.  Clicking means using @kbd{Mouse-2} on a
 button.  Expanding refers to clicking on an expansion button to display
 an expanded summary of the entry the expansion button is
 on.  @xref{Basic Navigation}.
@@ -231,9 +231,9 @@ Groups summarize information in a single line, and provide 
a high level
 view of more complex systems, like a directory tree, or manual chapters.
 
 Groups appear at different indentation levels, and are prefixed with a
address@hidden in some sort of `box'.  The group name will summarize the
address@hidden in some sort of ``box''.  The group name will summarize the
 information within it, and the expansion box will display that
-information inline.  In File mode, directories and files are `groups'
+information inline.  In File mode, directories and files are ``groups''
 where the @samp{+} is surrounded by brackets like this:
 
 @example
@@ -246,7 +246,7 @@ In this example, we see both open and closed directories, 
in addition to
 a file.  The directories have a box consisting of angle brackets, and a
 file uses square brackets.
 
-In all modes, a group can be `edited' by pressing @kbd{RET}, meaning a
+In all modes, a group can be ``edited'' by pressing @kbd{RET}, meaning a
 file will be opened, or a directory explicitly opened in speedbar.  A
 group can be expanded or contracted using @kbd{+} or
 @kbd{-}.  @xref{Basic Key Bindings}.
@@ -292,7 +292,7 @@ Unadorned text will generally be colorless, and not 
clickable.
 Each type of Group, item indicator, and label is given a different
 color.  The colors chosen are dependent on whether the background color
 is light or dark.
-Of important note is that the `current item', which may be a buffer or
+Of important note is that the ``current item'', which may be a buffer or
 file name, is highlighted red, and underlined.
 
 Colors can be customized from the group @code{speedbar-faces}.  Some
@@ -1128,7 +1128,7 @@ The conventions allow almost anything to be inserted, but 
several helper
 functions are provided to make it easy to create the standardized
 buttons.
 
-To understand the built in functions, each `button' in speedbar consists
+To understand the built in functions, each ``button'' in speedbar consists
 of four important pieces of data.  The text to be displayed, token
 data to be associated with the text, a function to call, and some face to
 display it in.
diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi
index f58965c..3032da3 100644
--- a/doc/misc/todo-mode.texi
+++ b/doc/misc/todo-mode.texi
@@ -702,13 +702,13 @@ prompt, after typing @kbd{i} to invoke 
@code{todo-insert-item}, looks
 like this:
 
 @example
-Press a key (so far `i'):  @{ i=>default p=>copy @} @{ y=>diary k=>nonmarking 
@} @{ c=>calendar d=>date n=>dayname @} t=>time @{ h=>here r=>region @}
+Press a key (so far @kbd{i}):  @{ i=>default p=>copy @} @{ y=>diary 
k=>nonmarking @} @{ c=>calendar d=>date n=>dayname @} t=>time @{ h=>here 
r=>region @}
 @end example
 
 @noindent If you now type @kbd{y}, the prompt changes to this:
 
 @example
-Press a key (so far `i y'):  y=>diary:GO! @{ c=>calendar d=>date n=>dayname @} 
t=>time @{ h=>here r=>region @}
+Press a key (so far @kbd{i y}):  y=>diary:GO! @{ c=>calendar d=>date 
n=>dayname @} t=>time @{ h=>here r=>region @}
 @end example
 
 @noindent Notice that the pair @samp{k=>nonmarking} is now absent, since it
@@ -892,7 +892,7 @@ is on a done item, this displays the following prompt in 
the echo
 area:
 
 @example
-Press a key (so far `e'): c=>add/edit comment d=>delete comment
+Press a key (so far @kbd{e}): c=>add/edit comment d=>delete comment
 @end example
 
 @noindent
@@ -903,7 +903,7 @@ echo area, and you can continue or complete the invocation 
only by
 typing one of the listed keys:
 
 @example
-Press a key (so far `e'): e=>edit h=>header m=>multiline y=>diary 
k=>nonmarking d=>date t=>time
+Press a key (so far @kbd{e}): e=>edit h=>header m=>multiline y=>diary 
k=>nonmarking d=>date t=>time
 @end example
 
 As noted above, passing the @samp{date} parameter does not complete
@@ -912,7 +912,7 @@ following prompt, and typing any of these keys does 
complete the
 invocation:
 
 @example
-Press a key (so far `e d'): f=>full c=>calendar a=>today n=>dayname y=>year 
m=>month d=>daynum
+Press a key (so far @kbd{e d}): f=>full c=>calendar a=>today n=>dayname 
y=>year m=>month d=>daynum
 @end example
 
 In addition to the item-level invocations @kbd{e y}, to change the
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index d9cb933..1875a70 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -105,8 +105,8 @@ copy and modify this GNU manual.''
 This file documents @value{tramp} version @value{trampver}, a remote file
 editing package for @value{emacsname}.
 
address@hidden stands for `Transparent Remote (file) Access, Multiple
-Protocol'.  This package provides remote file editing, similar to
address@hidden stands for ``Transparent Remote (file) Access, Multiple
+Protocol''.  This package provides remote file editing, similar to
 @value{ftppackagename}.
 
 The difference is that @value{ftppackagename} uses FTP to transfer
@@ -704,7 +704,7 @@ the remote host, this option uses @samp{ssh -t -t 
@var{host} -l
 @var{user} /bin/sh} to open a connection.  This is useful for users
 where the normal login shell is set up to ask them a number of
 questions when logging in.  This procedure avoids these questions, and
-just gives @value{tramp} a more-or-less `standard' login shell to work
+just gives @value{tramp} a more-or-less ``standard'' login shell to work
 with.
 
 Note that this procedure does not eliminate questions asked by
@@ -856,7 +856,7 @@ the remote host, this option uses @samp{ssh -t -t 
@var{host} -l
 @var{user} /bin/sh} to open a connection.  This is useful for users
 where the normal login shell is set up to ask them a number of
 questions when logging in.  This procedure avoids these questions, and
-just gives @value{tramp} a more-or-less `standard' login shell to work
+just gives @value{tramp} a more-or-less ``standard'' login shell to work
 with.
 
 This is also useful for Windows users where @command{ssh}, when
@@ -2210,7 +2210,7 @@ When
 is @code{nil} (the default), such problems do not occur.
 
 Therefore, it is useful to set special values for @value{tramp}
-files.  For example, the following statement effectively `turns off'
+files.  For example, the following statement effectively ``turns off''
 the effect of
 @ifset emacs
 @code{backup-directory-alist}
@@ -3256,7 +3256,7 @@ file name completion, report a bug to the @value{tramp} 
developers.
 File name completion does not work in large directories
 
 @value{tramp} uses globbing for some operations.  (Globbing means to use the
-shell to expand wildcards such as `*.c'.)  This might create long
+shell to expand wildcards such as @samp{*.c}.)  This might create long
 command lines, especially in directories with many files.  Some shells
 choke on long command lines, or don't cope well with the globbing
 itself.
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index a1fa31f..8c4afbe 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -1116,7 +1116,7 @@ This the @samp{nslookup} program.  It is 
@code{"nslookup"} by default.
 @cindex network connections, suppressing
 @cindex suppressing network connections
 @cindex bugs, HTML
address@hidden HTML `bugs'
address@hidden HTML ``bugs''
 In some circumstances it is desirable to suppress making network
 connections.  A typical case is when rendering HTML in a mail user
 agent, when external URLs should not be activated, particularly to
diff --git a/doc/misc/vhdl-mode.texi b/doc/misc/vhdl-mode.texi
index 777bb10..829c4f6 100644
--- a/doc/misc/vhdl-mode.texi
+++ b/doc/misc/vhdl-mode.texi
@@ -898,7 +898,7 @@ The official Emacs VHDL Mode Home Page can be found at
 @chapter  Sample @file{.emacs} file
 @cindex   Sample @file{.emacs} file
 
-Most customizations can be done using the `Customize' entry in the
+Most customizations can be done using the ``Customize'' entry in the
 VHDL Mode menu, which requires no editing of the .emacs file.
 If you want to customize indentation, here you go:
 
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index ebb1494..250ced9 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -1023,14 +1023,14 @@ Jump to mark (and pop mark off the mark ring).
 Emacs uses the @dfn{mark ring} to store marked positions.  The commands
 @kbd{m <}, @kbd{m >} and @kbd{m .}@: not only set mark but also add it as the
 latest element of the mark ring (replacing the oldest one).  By repeating
-the command address@hidden ,}' you can visit older and older marked positions. 
 You
+the command @kbd{m ,} you can visit older and older marked positions.  You
 will eventually be in a loop as the mark ring is a ring.
 
 @node Motion Commands
 @section Motion Commands
 
 Commands for moving around in the current buffer are collected here.  These
-commands are used as an `argument' for the delete, change and yank commands
+commands are used as an ``argument'' for the delete, change and yank commands
 to be described in the next section.
 
 @table @kbd
@@ -1113,7 +1113,7 @@ considered as a sequence of non-white characters 
(@code{vip-end-of-Word}).
 @end table
 @noindent
 @cindex syntax table
-Here the meaning of the word `word' for the @kbd{w}, @kbd{b} and @kbd{e}
+Here the meaning of the word ``word'' for the @kbd{w}, @kbd{b} and @kbd{e}
 commands is determined by the @dfn{syntax table} effective in the current
 buffer.  Each major mode has its syntax mode, and therefore the meaning of
 a word also changes as the major mode changes.  See GNU Emacs Manual for
@@ -1380,7 +1380,7 @@ Delete a character before point.  Given @var{n}, delete 
@var{n} characters
 @cindex yank
 
 Yank commands @dfn{yank} a text of buffer into a (usually anonymous) register.
-Here the word `yank' is used in Vi's sense.  Thus yank commands do not
+Here the word ``yank'' is used in Vi's sense.  Thus yank commands do not
 alter the content of the buffer, and useful only in combination with
 commands that put back the yanked text into the buffer.
 
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 0ccc6ac..cfaf4e6 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -655,11 +655,12 @@ alone as a default is meaningless, since this command 
requires a file
 argument.
 @end table
 @noindent
-As in Vi, Viper's destructive commands can be re-executed by typing 
address@hidden'.
+As in Vi, Viper's destructive commands can be re-executed by typing
+a period (@kbd{.}).
 However, in addition, Viper keeps track of the history of such commands.  This
 history can be perused by typing @kbd{C-c M-p} and @kbd{C-c M-n}.
 Having found the appropriate command, it can be then executed by typing
address@hidden'.
+a period.
 @xref{Improvements over Vi}, for more information.
 
 @node Insert State
@@ -877,7 +878,8 @@ want to change this.
 @noindent
 Currently undisplayed files can be listed using the @kbd{:ar} command.  The
 command @kbd{:n} can be given counts from the @kbd{:ar} list to switch to
-other files. For example, use `:n3' to move to the third file in that list.
+other files.  For example, use @samp{:n3} to move to the third file in
+that list.
 
 @node Unimplemented Features
 @section Unimplemented Features
@@ -1457,8 +1459,8 @@ In Vi state, these commands let the user peruse the 
history of Vi-style
 destructive commands, such as @kbd{dw}, @kbd{J}, @kbd{a}, etc.
 By repeatedly typing @kbd{C-c M-p} or @kbd{C-c M-n} you will cycle Viper
 through the recent history of Vi commands, displaying the commands one by
-one.  Once
-an appropriate command is found, it can be executed by typing address@hidden'.
+one.  Once an appropriate command is found, it can be executed by
+typing a period.
 
 Since typing @kbd{C-c M-p} is tedious, it is more convenient to bind an
 appropriate function to a function key on the keyboard and use that key.
@@ -1626,7 +1628,7 @@ values.  The corresponding :se command is also indicated. 
 (The symbols
 Viper supports both the abbreviated Vi variable names and their full
 names.  Variable completion is done on full names only.  @key{TAB} and
 @key{SPC} complete
-variable names.  Typing `=' will complete the name and then will prompt for
+variable names.  Typing @kbd{=} will complete the name and then will prompt for
 a value, if applicable.  For instance, @kbd{:se au @key{SPC}} will complete the
 command to @kbd{:set autoindent}; @kbd{:se ta @key{SPC}} will complete the 
command
 and prompt further like this: @kbd{:set tabstop = }.
@@ -1800,8 +1802,8 @@ unless you are a novice, as this precludes the use
 of language-specific features provided by the major modes.
 @item viper-keep-point-on-repeat t
 If not @code{nil}, point is not moved when the user repeats the previous
-command by typing `.'  This is very useful for doing repeated changes with
-the @kbd{.} key.
+command by typing a period.  This is very useful for doing repeated
+changes with the @kbd{.} key.
 @item viper-repeat-from-history-key 'f12
 Prefix key used to invoke the macros @kbd{f12 1} and @kbd{f12 2} that repeat
 the second-last and the third-last destructive command.
@@ -2375,23 +2377,24 @@ shown above, and then setting it in the desired major 
modes as follows:
 @end example
 
 @item Vi-isms in Emacs state
-Some people find it useful to use the Vi-style search key, `/', to invoke
+Some people find it useful to use the Vi-style search key, @kbd{/}, to invoke
 search in modes which Viper leaves in emacs-state.  These modes are:
 @code{dired-mode}, @code{mh-folder-mode},
 @code{Info-mode}, and @code{Buffer-menu-mode}
-(more may be added in the future).  So, in the above modes, Viper binds `/'
+(more may be added in the future).  So, in the above modes, Viper binds @kbd{/}
 so that it will behave Vi-style.  Furthermore, in those major modes, Viper
-binds `:' to invoke ex-style commands, like in vi-state.  And, as described
-above, `//' and `///' get bound to Vi-style macros that toggle
+binds @kbd{:} to invoke ex-style commands, like in vi-state.  And, as described
+above, @kbd{//} and @kbd{///} get bound to Vi-style macros that toggle
 case-insensitivity and regexp-search.
 
 If you don't like these features---which I don't really understand---you
-can unbind `/' and `:' in @code{viper-dired-modifier-map} (for Dired) or in
address@hidden, for other modes.
+can unbind @kbd{/} and @kbd{:} in @code{viper-dired-modifier-map} (for
+Dired) or in @code{viper-slash-and-colon-map}, for other modes.
 @vindex @code{viper-slash-and-colon-map}
 @vindex @code{viper-dired-modifier-map}
 
-To unbind the macros `//' and `///' for a major mode where you feel they
+To unbind the macros @kbd{//} and @kbd{///} for a major mode where you
+feel they
 are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
 address@hidden argument.  This can be done either interactively, by supplying a
 prefix argument, or by placing
@@ -2419,16 +2422,17 @@ Change your user level interactively.
 Viper supports Emacs-style file completion when it prompts the user for a
 file name.  However, in many cases, the same directory may contain files
 with identical prefix but different suffixes, e.g., prog.c, prog.o,
-paper.tex, paper.dvi.  In such cases, completion will stop at the `.'.
+paper.tex, paper.dvi.  In such cases, completion will stop at the period.
 If the above variable is a list of strings representing suffixes, Viper will
 try these suffixes
 in the order listed and will check if the corresponding file exists.
 
-For instance, if completion stopped at `paper.'@: and the user typed
address@hidden,
-then Viper will check if the files `paper.', `paper.tex', `paper.c', etc., 
exist.
+For instance, if completion stopped at @samp{paper.} and the user
+typed @key{RET}, then Viper will check if the files @file{paper.},
address@hidden, @file{paper.c}, etc., exist.
 It will take the first such file.  If no file exists, Viper will give a chance
-to complete the file name by typing the appropriate suffix.  If `paper.'@: was
+to complete the file name by typing the appropriate suffix.
+If @file{paper.} was
 the intended file name, hitting return will accept it.
 
 To turn this feature off, set the above variable to @code{nil}.
@@ -2473,9 +2477,9 @@ major modes.
 Viper keeps track of the recent history of destructive
 commands, such as @kbd{dw}, @kbd{i}, etc.
 In Vi state,
-the most recent command can be re-executed by hitting address@hidden', as in 
Vi.
+the most recent command can be re-executed by hitting a period, as in Vi.
 However, repeated typing @kbd{C-c M-p} will cause Viper to show the
-previous destructive commands in the minibuffer.  Subsequent hitting 
address@hidden'
+previous destructive commands in the minibuffer.  Subsequent hitting period
 will execute the command that was displayed last.
 The key @kbd{C-c M-n} will cycle through the command history in the
 opposite direction.
@@ -2598,8 +2602,8 @@ your Viper customization file:
 This would bind mouse search to the action invoked by pressing the
 Meta key and clicking mouse button 1.  The allowed values of
 @code{viper-mouse-search-key} are lists that contain a mouse-button number
-(1,2, or 3) and any combination of the words `control', `meta', and
-`shift'.
+(1,2, or 3) and any combination of the words ``control'', ``meta'', and
+``shift''.
 
 If the requested mouse action (e.g., (meta 1)) is already taken for other
 purposes then you have to confirm your intention by placing the following
@@ -2616,9 +2620,9 @@ The region that is chosen as a pattern to search for is 
determined as
 follows.  If search is invoked via a single click, Viper chooses the region
 that lies between the beginning of the ``word'' under the pointer (``word''
 is understood in Vi sense) and the end of that word.  The only difference
-with Vi's words is that in Lisp major modes `-' is considered an
+with Vi's words is that in Lisp major modes @samp{-} is considered an
 alphanumeric symbol.  This is done for the convenience of working with Lisp
-symbols, which often have an `-' in them.  Also, if you click on a
+symbols, which often have an @samp{-} in them.  Also, if you click on a
 non-alphanumeric character that is not a word separator (in Vi sense) then
 this character will also be considered alphanumeric, provided that it is
 adjacent (from either side) to an alphanumeric character.  This useful
@@ -3164,7 +3168,8 @@ By default, Viper syntax preference is 
@code{reformed-vi}, which means that
 Viper considers only those symbols to be part of a word that are specified
 as word-symbols by the current Emacs syntax table (which may be different
 for different major modes) plus the underscore symbol @kbd{_}, minus the
-symbols that are not considered words in Vi (e.g., `,',;, etc.), but may be
+symbols that are not considered words in Vi (e.g., @samp{,}, @samp{;},
+etc.), but may be
 considered as word-symbols by various Emacs major modes.  Reformed-Vi works
 very close to Vi, and it also recognizes words in other
 alphabets.  Therefore, this is the most appropriate mode for editing text
@@ -3546,7 +3551,7 @@ the direction
 of older commands, while hitting @kbd{C-c M-n} does so in reverse
 order.  Each command in the history is displayed in the minibuffer.  The
 displayed command can
-then be executed by typing address@hidden'.
+then be executed by typing a period.
 
 Since typing the above sequences of keys may be tedious, the
 functions doing the perusing can be bound to unused keyboard keys in the
@@ -4261,7 +4266,7 @@ character on the previous line.
 This setting affects the current buffer only.
 @item autoindent-global
 @itemx ai-global
-Same as `autoindent', but affects all buffers.
+Same as @code{autoindent}, but affects all buffers.
 @item noautoindent
 @itemx noai
 Cancel autoindent.
@@ -4320,7 +4325,7 @@ their normal length (default 8 positions).
 This setting affects the current buffer only.
 @item tabstop-global
 @itemx ts-g
-Same as `tabstop', but affects all buffers.
+Same as @code{tabstop}, but affects all buffers.
 @item wrapmargin=<count>
 @itemx wm=<count>
 @cindex auto fill
diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 6d5b6d3..1942b79 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -66,7 +66,7 @@ modify this GNU manual.''
 @chapter Introduction
 
 Most graphical user interface toolkits provide a number of standard
-user interface controls (sometimes known as `widgets' or `gadgets').
+user interface controls (sometimes known as ``widgets'' or ``gadgets'').
 Emacs doesn't really support anything like this, except for an
 incredibly powerful text ``widget.''  On the other hand, Emacs does
 provide the necessary primitives to implement many other widgets
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index a259249..a935bed 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -12,8 +12,8 @@
 @c %**end of header
 
 @copying
-This file documents WoMan: A program to browse Unix manual pages `W.O.
-(without) man'.
+This file documents WoMan: A program to browse Unix manual pages ``W.O.
+(without) man''.
 
 Copyright @copyright{} 2001--2015 Free Software Foundation, Inc.
 
@@ -172,7 +172,7 @@ is important I will refer to them both ambiguously as 
@code{roff}.
 
 @code{roff} markup consists of @dfn{requests} and @dfn{escape
 sequences}.  A request occupies a complete line and begins with either a
-period or a single forward quote.  An escape sequences is embedded
+period or an apostrophe.  An escape sequence is embedded
 within the input text and begins (by default) with a backslash.  The
 original man macro package defines 20 new @code{roff} requests
 implemented as macros, which were considered to be sufficient for
diff --git a/etc/ChangeLog b/etc/ChangeLog.1
similarity index 99%
rename from etc/ChangeLog
rename to etc/ChangeLog.1
index f0da3a5..ed37524 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog.1
@@ -1,3 +1,7 @@
+2015-04-06  Artur Malabarba  <address@hidden>
+
+       * NEWS: Document async package-menu.
+
 2015-03-25  Stefan Monnier  <address@hidden>
 
        * TODO: Remove obsolete entries.
diff --git a/etc/NEWS b/etc/NEWS
index 6de8f03..9dd0e15 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -40,9 +40,16 @@ or by sticking with Emacs 24.4.
 If gnustep-config is not available, the old heuristics are used.
 
 ---
-** The configure option `--with-pkg-config-prog' has been removed.
+** The configure option '--with-pkg-config-prog' has been removed.
 Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
 
+---
+** The configure option '--with-mmdf' has been removed.
+It was no longer useful, as it relied on libraries that are no longer
+supported, and its presence led to confusion during configuration.
+This affects only the 'movemail' utility; Emacs itself can still
+process MMDF-format files as before.
+
 ** The configure option '--enable-silent-rules' is now the default,
 and silent rules are now quieter.  To get the old behavior where
 'make' chatters a lot, configure with '--disable-silent-rules' or
@@ -191,9 +198,14 @@ calculation.  This function is different from 
`window-body-width' in
 that it accounts for (i) continuation glyphs, (ii) the size of the
 font, and (iii) the specified window.
 
+** New possible value for `system-type': nacl.
+
 
 * Editing Changes in Emacs 25.1
 
+** Successive single-char deletions are collapsed in the undo-log just like
+successive char insertions.
+
 ** Unicode names entered via C-x 8 RET now use substring completion by default.
 
 ** New minor mode global-eldoc-mode is enabled by default.
@@ -220,9 +232,24 @@ Unicode standards.
 
 
 * Changes in Specialized Modes and Packages in Emacs 25.1
+** In xterms, killing text now also sets the CLIPBOARD/PRIMARY selection
+in the surrounding GUI (using the OSC-52 escape sequence).
+
 ** xterm-mouse-mode now supports mouse-tracking (if your xterm supports it).
 
 ** package.el
+
+*** When filtering the package menu, keywords starting with "arc:" or
+"status:" represent package archive or status, respectively, instead
+of actual keywords.
+
+*** Most functions which involve downloading information now take an
+ASYNC argument.  If it is non-nil, package.el performs the download(s)
+asynchronously.
+
+*** New variable `package-menu-async' controls whether the
+package-menu uses asynchronous downloads.
+
 *** `package-install-from-buffer' and `package-install-file' work on 
directories.
 This follows the same rules as installing from a .tar file, except the
 -pkg file is optional.
@@ -251,13 +278,19 @@ the old behavior -- *shell* buffer displays in current 
window -- use
 
 
 ** EIEIO
++++
 *** The `:protection' slot option is not obeyed any more.
++++
 *** The `newname' argument to constructors is optional&deprecated.
 If you need your objects to be named, do it by inheriting from `eieio-named'.
++++
 *** The <class>-list-p and <class>-child-p functions are declared obsolete.
++++
 *** The <class> variables are declared obsolete.
++++
 *** The <initarg> variables are declared obsolete.
 *** defgeneric and defmethod are declared obsolete.
++++
 *** `constructor' is now an obsolete alias for `make-instance'.
 
 ** ido
@@ -581,7 +614,9 @@ command line's password prompt.
 
 ** Eshell
 
++++
 *** The new built-in command `clear' can scroll window contents out of sight.
+If provided with an optional non-nil argument, the scrollback contents will be 
cleared.
 
 ** Browse-url
 
@@ -602,6 +637,14 @@ notifications, if Emacs is compiled with file notification 
support.
 ---
 *** gulp.el
 
++++
+** The character classes [:graph:] and [:print:] in regular expressions
+no longer match every multibyte character.  Instead, Emacs now
+consults the Unicode character properties to determine which
+characters are graphic or printable.  In particular, surrogates and
+unassigned codepoints are now rejected.  If you want the old behavior,
+use [:multibyte:] instead.
+
 
 * New Modes and Packages in Emacs 25.1
 
@@ -620,6 +663,9 @@ a typographically-correct documents.
 
 * Incompatible Lisp Changes in Emacs 25.1
 
+** Comint, term, and compile do not set the EMACS env var any more.
+Use the INSIDE_EMACS environment variable instead.
+
 ** `save-excursion' does not save&restore the mark any more.
 
 ** read-buffer-function can now be called with a 4th argument (`predicate').
@@ -661,9 +707,26 @@ now match multibyte characters using Unicode character 
properties.
 If you want the old behavior where they matched any character with
 word syntax, use `\sw' instead.
 
++++
+** The `diff' command uses the unified format now.  To restore the old
+behavior, set `diff-switches' to `-c'.
+
 
 * Lisp Changes in Emacs 25.1
 
+** New hook `pre-redisplay-functions', a bit easier to use than 
pre-redisplay-function.
+
+** The second arg of `looking-back' should always be provided explicitly.
+
+** Obsolete text properties `intangible', `point-entered', and `point-left'.
+Replaced by properties `cursor-intangible' and `cursor-sensor-functions',
+implemented by the new `cursor-intangible-mode' and
+`cursor-sensor-mode' minor modes.
+
+** New process type `pipe', which can be used in combination with the
+`:stderr' keyword of make-process to handle standard error output
+of subprocess.
+
 ** New function `make-process' provides an alternative interface to
 `start-process'.  It allows programs to set process parameters such as
 process filter, sentinel, etc., through keyword arguments (similar to
@@ -756,6 +819,12 @@ integers.
 ** New function `set-binary-mode' allows to switch a standard stream
 of the Emacs process to binary I/O mode.
 
+** Miscellaneous name change
+
+For consistency with the usual Emacs spelling, the Lisp variable
+`hfy-optimisations' has been renamed to `hfy-optimizations'.
+The old name should still work, as an obsolescent alias.
+
 
 * Changes in Frames and Windows Code in Emacs 25.1
 
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 87d3ec8..340360a 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -26,6 +26,9 @@ A typical error message might be something like
 This happens because some X resource specifies a bad font family for
 Emacs to use.  The possible places where this specification might be are:
 
+  - in the X server resources database, often initialized from
+    ~/.Xresources (use $ xrdb -query to find out the current state)
+
   - in your ~/.Xdefaults file
 
   - client-side X resource file, such as  ~/Emacs or
@@ -35,6 +38,12 @@ One of these files might have bad or malformed specification 
of a
 fontset that Emacs should use.  To fix the problem, you need to find
 the problematic line(s) and correct them.
 
+After correcting ~/.Xresources, the new data has to be merged into the
+X server resources database.  Depending on the circumstances, the
+following command may do the trick.  See xrdb(1) for more information.
+
+  $ xrdb -merge ~/.Xresources
+
 ** Emacs aborts while starting up, only when run without X.
 
 This problem often results from compiling Emacs with GCC when GCC was
@@ -270,8 +279,7 @@ The error message might be something like this:
 
 This happens because epop3 redefines the function gethash, which is a
 built-in primitive beginning with Emacs 21.1.  We don't have a patch
-for epop3 that fixes this, but perhaps a newer version of epop3
-corrects that.
+for epop3 to fix it, but perhaps a newer version of epop3 corrects that.
 
 *** Buffers from `with-output-to-temp-buffer' get set up in Help mode.
 
@@ -507,7 +515,7 @@ time.  Possible reasons for this include:
 
 To work around the problem, you could either (a) set the variable
 `directory-free-space-program' to nil, and thus prevent Emacs from
-invoking `df'; (b) use `df' from the GNU Fileutils package; or
+invoking `df'; (b) use `df' from the GNU Coreutils package; or
 (c) use CVS, which is Free Software, instead of ClearCase.
 
 *** ps-print commands fail to find prologue files ps-prin*.ps.
@@ -600,7 +608,7 @@ For example, XFree86 4.3.0 has one version and Gnome 
usually comes
 with a newer version.  Emacs compiled with Gtk+ will then use the
 newer version.  In most cases the problem can be temporarily fixed by
 stopping the application that has the error (it can be Emacs or any
-other application), removing ~/.fonts.cache-1, and then start the
+other application), removing ~/.fonts.cache-1, and then starting the
 application again.  If removing ~/.fonts.cache-1 and restarting
 doesn't help, the application with problem must be recompiled with the
 same version of FontConfig as the rest of the system uses.  For KDE,
@@ -700,7 +708,7 @@ frame's parameter list, like this:
 ** Underlines appear at the wrong position.
 
 This is caused by fonts having a wrong UNDERLINE_POSITION property.
-Examples are the font 7x13 on XFree prior to version 4.1, or the jmk
+Examples are the 7x13 font on XFree86 prior to version 4.1, or the jmk
 neep font from the Debian xfonts-jmk package prior to version 3.0.17.
 To circumvent this problem, set x-use-underline-position-properties
 to nil in your `.emacs'.
@@ -823,7 +831,7 @@ If all users at your site of a particular keyboard prefer 
Meta to
 Compose, you can make the remapping happen automatically by adding the
 xmodmap command to the xdm setup script for that display.
 
-*** Using X Windows, control-shift-leftbutton makes Emacs hang.
+*** Using X Window System, control-shift-leftbutton makes Emacs hang.
 
 Use the shell command `xset bc' to make the old X Menu package work.
 
@@ -987,8 +995,8 @@ while, Emacs may print a message:
 
   Timed out waiting for property-notify event
 
-A workaround is to not use `klipper'.  An upgrade to the `klipper' that
-comes with KDE 3.3 or later also solves the problem.
+A workaround is to not use `klipper'.  Upgrading `klipper' to the one
+coming with KDE 3.3 or later also solves the problem.
 
 *** CDE: Frames may cover dialogs they created when using CDE.
 
@@ -1113,8 +1121,8 @@ be carried out at the same time:
     (menu-bar-mode -1)
     (tool-bar-mode -1)
 
-   For still quicker startup, put these X resources in your .Xdefaults
-   file:
+   For still quicker startup, put these X resources in your
+   .Xresources or .Xdefaults file:
 
     Emacs.verticalScrollBars: off
     Emacs.menuBar: off
@@ -1133,7 +1141,7 @@ be carried out at the same time:
     -noatomsfile  -nowinattr  -cheaterrors -cheatevents
    Note that the -nograbcmap option is known to cause problems.
    For more about lbxproxy, see:
-   http://www.xfree86.org/4.3.0/lbxproxy.1.html
+   http://www.x.org/archive/X11R6.8.0/doc/lbxproxy.1.html
 
 5) If copying and killing is slow, try to disable the interaction with the
    native system's clipboard by adding these lines to your .emacs file:
@@ -1201,17 +1209,17 @@ To check thoroughly for such resource specifications, 
use `xrdb
 -query' to see what resources the X server records, and also look at
 the user's ~/.Xdefaults and ~/.Xdefaults-* files.
 
-*** Emacs running under X Windows does not handle mouse clicks.
+*** Emacs running under X Window System does not handle mouse clicks.
 *** `emacs -geometry 80x20' finds a file named `80x20'.
 
 One cause of such problems is having (setq term-file-prefix nil) in
 your .emacs file.  Another cause is a bad value of EMACSLOADPATH in
 the environment.
 
-*** X Windows doesn't work if DISPLAY uses a hostname.
+*** X doesn't work if DISPLAY uses a hostname.
 
 People have reported kernel bugs in certain systems that cause Emacs
-not to work with X Windows if DISPLAY is set using a host name.  But
+not to work with X if DISPLAY is set using a host name.  But
 the problem does not occur if DISPLAY is set to `unix:0.0'.  I think
 the bug has to do with SIGIO or FIONREAD.
 
@@ -1393,7 +1401,7 @@ shows how to do this with C-^ and C-\.
 ** Screen is updated wrong, but only on one kind of terminal.
 
 This could mean that the termcap entry you are using for that
-terminal is wrong, or it could mean that Emacs has a bug handing
+terminal is wrong, or it could mean that Emacs has a bug handling
 the combination of features specified for that terminal.
 
 The first step in tracking this down is to record what characters
@@ -1612,7 +1620,7 @@ http://debbugs.gnu.org/7791
 The symptoms are: you are accessing a svn repository over SSH.
 You use vc-annotate on a large (several thousand line) file, and the
 result is truncated around the 1000 line mark.  It works fine with
-other access methods (eg http), or from outside Emacs.
+other access methods (e.g. http), or from outside Emacs.
 
 This may be a similar libc/SSH issue to the one mentioned above for CVS.
 A similar workaround seems to be effective: create a script with the
@@ -1714,7 +1722,11 @@ the sequence "\E[?25h\E[?17;0;64c", and then run "tic 
linux-term" to
 produce a modified terminfo entry.
 
 Alternatively, if you want a blinking underscore as your Emacs cursor,
-change the "cvvis" capability to send the "\E[?25h\E[?0c" command.
+set the `visible-cursor' variable to nil in your ~/.emacs:
+  (setq visible-cursor nil)
+
+Still other way is to change the "cvvis" capability to send the
+"\E[?25h\E[?0c" command.
 
 ** FreeBSD
 
@@ -1906,7 +1918,7 @@ Near the bottom there is a line that reads:
 
         Ctrl<t> <quotedbl> <Y>                  : "\276"        threequarters
 
-that should read:
+while it should read:
 
         Ctrl<T> <quotedbl> <Y>                  : "\276"        threequarters
 
@@ -2049,7 +2061,7 @@ rails-mode.
 ** M-x term does not work on MS-Windows.
 
 TTY emulation on Windows is undocumented, and programs such as stty
-which are used on posix platforms to control tty emulation do not
+which are used on POSIX platforms to control tty emulation do not
 exist for native windows terminals.
 
 ** Using create-fontset-from-ascii-font or the --font startup parameter
@@ -2062,7 +2074,7 @@ use create-fontset-from-fontset-spec to define a fontset.
 
 This means no redisplay while the File or Font dialog or a pop-up menu
 is displayed.  This also means tooltips with help text for pop-up
-menus is not displayed at all (except in a TTY session, where the help
+menus are not displayed at all (except in a TTY session, where the help
 text is shown in the echo area).  This is because message handling
 under Windows is synchronous, so we cannot handle repaint (or any
 other) messages while waiting for a system function, which popped up
@@ -2087,6 +2099,21 @@ has some code to enlarge the width of the bounding box.  
Apparently,
 this display feature needs more changes to get it 100% right.  A
 workaround is to disable ClearType.
 
+** Cursor is displayed as a thin vertical bar and cannot be changed
+
+This is known to happen if the Windows Magnifier is turned on before
+the Emacs session starts.  The Magnifier affects the cursor shape and
+prevents any changes to it by setting the 'cursor-type' variable or
+frame parameter.
+
+The solution is to log off and on again, and then start the Emacs
+session only after turning the Magnifier off.
+
+To turn the Windows Magnifier off, click "Start->All Programs", or
+"All Apps", depending on your Windows version, then select
+"Accessibility" and click "Magnifier".  In the Magnifier Settings
+dialog that opens, click "Exit".
+
 ** Problems with mouse-tracking and focus management
 
 There are problems with display if mouse-tracking is enabled and the
@@ -2144,7 +2171,7 @@ daylight savings switchovers by the Windows libraries.
 
 Files larger than 4GB cause overflow in the size (represented as a
 32-bit integer) reported by `file-attributes'.  This affects Dired as
-well, since the Windows port uses a Lisp emulation of `ls' that relies
+well, since the Windows port uses a Lisp emulation of `ls', which relies
 on `file-attributes'.
 
 ** Playing sound doesn't support the :data method
@@ -2332,7 +2359,7 @@ you are working on the host called `marvin'.  Then an 
entry in the
 
     marvin:/usr/local/src /usr/local/src ...options.omitted...
 
-The solution is to remove this line from `etc/fstab'.
+The solution is to remove this line from `/etc/fstab'.
 
 *** Building a 32-bit executable on a 64-bit GNU/Linux architecture.
 
@@ -2363,7 +2390,7 @@ The linker error messages look like this:
  oo-spd/i386/ctags.o:ctags.c:(.text+0x156e): undefined reference to 
`_imp__re_set_syntax'
  collect2: ld returned 1 exit status
 
-This happens because GCC finds an incompatible header regex.h
+This happens because GCC finds an incompatible regex.h header
 somewhere on the include path, before the version of regex.h supplied
 with Emacs.  One such incompatible version of regex.h is part of the
 GnuWin32 Regex package.
@@ -2510,7 +2537,7 @@ Compiling the lisp files fails at random places, 
complaining:
 "No rule to make target `/path/to/some/lisp.elc'".
 The causes of this problem are not understood.  Using GNU make 3.81 compiled
 from source, rather than the Ubuntu version, worked.
-See <URL:http://debbugs.gnu.org/327, <URL:http://debbugs.gnu.org/821>.
+See <URL:http://debbugs.gnu.org/327>, <URL:http://debbugs.gnu.org/821>.
 
 ** Dumping
 
@@ -2618,7 +2645,7 @@ build Emacs in a directory on a local disk.
 On a system where getpagesize is not a system call, it is defined
 as a macro.  If the definition (in both unex*.c and malloc.c) is wrong,
 it can cause problems like this.  You might be able to find the correct
-value in the man page for a.out (5).
+value in the man page for a.out(5).
 
 * Problems on legacy systems
 
diff --git a/leim/ChangeLog b/leim/ChangeLog.1
similarity index 100%
rename from leim/ChangeLog
rename to leim/ChangeLog.1
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog.1
similarity index 100%
rename from lib-src/ChangeLog
rename to lib-src/ChangeLog.1
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 1618a69..231bc22 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -115,13 +115,9 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 #define MAIL_USE_SYSTEM_LOCK
 #endif
 
-#ifdef MAIL_USE_MMDF
-extern int lk_open (), lk_close ();
-#endif
-
-#if !defined (MAIL_USE_SYSTEM_LOCK) && !defined (MAIL_USE_MMDF) && \
-       (defined (HAVE_LIBMAIL) || defined (HAVE_LIBLOCKFILE)) && \
-        defined (HAVE_MAILLOCK_H)
+#if (!defined MAIL_USE_SYSTEM_LOCK                             \
+     && (defined HAVE_LIBMAIL || defined HAVE_LIBLOCKFILE)     \
+     && defined HAVE_MAILLOCK_H)
 #include <maillock.h>
 /* We can't use maillock unless we know what directory system mail
    files appear in. */
@@ -144,8 +140,7 @@ static bool mbx_delimit_end (FILE *);
 #endif
 
 #if (defined MAIL_USE_MAILLOCK                                         \
-     || (!defined DISABLE_DIRECT_ACCESS && !defined MAIL_USE_MMDF      \
-        && !defined MAIL_USE_SYSTEM_LOCK))
+     || (!defined DISABLE_DIRECT_ACCESS && !defined MAIL_USE_SYSTEM_LOCK))
 /* Like malloc but get fatal error if memory is exhausted.  */
 
 static void *
@@ -229,10 +224,6 @@ main (int argc, char **argv)
   inname = argv[optind];
   outname = argv[optind+1];
 
-#ifdef MAIL_USE_MMDF
-  mmdf_init (argv[0]);
-#endif
-
   if (*outname == 0)
     fatal ("Destination file name is empty", 0, 0);
 
@@ -256,7 +247,6 @@ main (int argc, char **argv)
 
   char *lockname = 0;
 
-#ifndef MAIL_USE_MMDF
 #ifndef MAIL_USE_SYSTEM_LOCK
 #ifdef MAIL_USE_MAILLOCK
   spool_name = mail_spool_name (inname);
@@ -335,7 +325,6 @@ main (int argc, char **argv)
       delete_lockname = lockname;
     }
 #endif /* not MAIL_USE_SYSTEM_LOCK */
-#endif /* not MAIL_USE_MMDF */
 
 #ifdef SIGCHLD
   signal (SIGCHLD, SIG_DFL);
@@ -356,15 +345,11 @@ main (int argc, char **argv)
       if (setuid (getuid ()) < 0 || setregid (-1, real_gid) < 0)
        fatal ("Failed to drop privileges", 0, 0);
 
-#ifndef MAIL_USE_MMDF
 #ifdef MAIL_USE_SYSTEM_LOCK
       indesc = open (inname, O_RDWR | O_BINARY);
 #else  /* if not MAIL_USE_SYSTEM_LOCK */
       indesc = open (inname, O_RDONLY | O_BINARY);
 #endif /* not MAIL_USE_SYSTEM_LOCK */
-#else  /* MAIL_USE_MMDF */
-      indesc = lk_open (inname, O_RDONLY | O_BINARY, 0, 0, 10);
-#endif /* MAIL_USE_MMDF */
 
       if (indesc < 0)
        pfatal_with_name (inname);
@@ -474,11 +459,7 @@ main (int argc, char **argv)
        }
 #endif /* MAIL_USE_SYSTEM_LOCK */
 
-#ifdef MAIL_USE_MMDF
-      lk_close (indesc, 0, 0, 0);
-#else
       close (indesc);
-#endif
 
 #ifndef MAIL_USE_SYSTEM_LOCK
       if (! preserve_mail)
diff --git a/lib/gnulib.mk b/lib/gnulib.mk
index 7703cbf..273b018 100644
--- a/lib/gnulib.mk
+++ b/lib/gnulib.mk
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib 
--m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux 
--avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix 
--avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die 
--avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select 
--avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib 
--makefile-name=gnulib.mk --conditional-dependencies --no-libtool --ma [...]
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -539,6 +539,13 @@ EXTRA_libgnu_a_SOURCES += gettimeofday.c
 
 ## end   gnulib module gettimeofday
 
+## begin gnulib module gitlog-to-changelog
+
+
+EXTRA_DIST += $(top_srcdir)/build-aux/gitlog-to-changelog
+
+## end   gnulib module gitlog-to-changelog
+
 ## begin gnulib module group-member
 
 if gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
index 44db241..698307b 100644
--- a/lib/stddef.in.h
+++ b/lib/stddef.in.h
@@ -83,12 +83,23 @@
 
 /* Some platforms lack max_align_t.  */
 #if address@hidden@
+/* On the x86, the maximum storage alignment of double, long, etc. is 4,
+   but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8,
+   and the C11 standard allows this.  Work around this problem by
+   using __alignof__ (which returns 8 for double) rather than _Alignof
+   (which returns 4), and align each union member accordingly.  */
+# ifdef __GNUC__
+#  define _GL_STDDEF_ALIGNAS(type) \
+     __attribute__ ((__aligned__ (__alignof__ (type))))
+# else
+#  define _GL_STDDEF_ALIGNAS(type) /* */
+# endif
 typedef union
 {
-  char *__p;
-  double __d;
-  long double __ld;
-  long int __i;
+  char *__p _GL_STDDEF_ALIGNAS (char *);
+  double __d _GL_STDDEF_ALIGNAS (double);
+  long double __ld _GL_STDDEF_ALIGNAS (long double);
+  long int __i _GL_STDDEF_ALIGNAS (long int);
 } max_align_t;
 #endif
 
diff --git a/lisp/ChangeLog.16 b/lisp/ChangeLog.16
index bf8a973..457c151 100644
--- a/lisp/ChangeLog.16
+++ b/lisp/ChangeLog.16
@@ -15547,7 +15547,7 @@
        c-set-fl-decl-start.
 
        * progmodes/cc-mode.el (c-common-init, c-after-change):
-       Changes due to pluralisation of c-before-font-lock-functions.
+       Changes due to pluralization of c-before-font-lock-functions.
        (c-set-fl-decl-start): New function, extracted from
        c-font-lock-enclosing-decls and enhanced.
 
diff --git a/lisp/ChangeLog b/lisp/ChangeLog.17
similarity index 99%
rename from lisp/ChangeLog
rename to lisp/ChangeLog.17
index 2092447..a40f8f3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog.17
@@ -1,11 +1,171 @@
-2015-04-01  Alan Mackenzie  <address@hidden>
+2015-04-06  Alan Mackenzie  <address@hidden>
+
+       Fix miscellaneous glitches in cc-mode.el.  (Bug#20245)
+       * progmodes/cc-mode.el (c-common-init): bind
+       \(before\|after\)-change-functions to nil around invocations of
+       c-get-state-before-change-functions and
+       c-before-font-lock-functions to prevent recursive invocations.
+       (c-neutralize-syntax-in-and-mark-CPP): On c-beginning-of-macro,
+       check that point has actually moved back.
+       (c-fl-decl-start): Check whether c-beginning-of-decl-1 has
+       actually found a boundary (as contrasted with hitting a search
+       limit).
+
+2015-02-01  Alan Mackenzie  <address@hidden>
+
+       CC Mode: Stop Font Lock forcing fontification from BOL.
+       * progmodes/cc-mode.el (c-font-lock-init): Setq
+       font-lock-extend-region-functions to nil.  (Bug#19669)
+
+2015-04-06  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Do not break IPython magic completions.  (Bug#19736)
+       * progmodes/python.el (python-shell-completion-setup-code):
+       Cleaner setup; import rlcompleter as last resource.
+
+2015-04-06  Artur Malabarba  <address@hidden>
+
+       * emacs-lisp/package.el: Fix lack of "new" packages.
+       (package-menu--new-package-list)
+       (package-menu--old-archive-contents): No longer local.
+       (package-menu--list-to-prompt): New function.
+       (package-menu--prompt-transaction-p): Use "Upgrade" to make the
+       package-menu-execute prompt less verbose.
+
+2015-04-06  Paul Eggert  <address@hidden>
+
+       Spelling fix for 'hfy-optimizations'
+       * htmlfontify.el (hfy-optimizations): Rename from hfy-optimisations,
+       with an obsolete alias.  All uses changed.
+
+2015-04-06  Fabián Ezequiel Gallina  <address@hidden>
+
+       python.el: Enhance docstring detection following PEP-257.
+       * progmodes/python.el (python-docstring-at-p): Remove function.
+       (python-info-assignment-statement-p): New function.
+       (python-info-assignment-continuation-line-p): Use it.
+       (python-info-docstring-p): New function.
+       (python-font-lock-syntactic-face-function)
+       (python-fill-string): Use it.
+
+2015-04-05  Eli Zaretskii  <address@hidden>
+
+       * ses.el (ses-sym-rowcol): Move up, before the first use, to avoid
+       byte-compiler warnings.
+
+2015-04-05  Alan Mackenzie  <address@hidden>
+
+       * jit-lock.el (jit-lock-after-change): Widen the buffer only
+       whilst putting the 'fontified text properties.
+
+2015-04-05  Alan Mackenzie  <address@hidden>
+
+       Rationalize use of c[ad]+r, expunging cl-c[ad]\{3,4\}r.
+       Also expunge eudc-c[ad]+r.
+       * subr.el (internal--compiler-macro-cXXr): "New" function,
+       copied from cl--compiler-macro-cXXr.
+       (caar, cadr, cdar, cddr): Change from defsubsts to defuns with
+       the above compiler-macro.
+       * net/eudc.el (eudc-cadr, eudc-cdar, eudc-caar, eudc-cdaar): Remove.
+       * emacs-lisp/cl.el (Top level dolist doing defaliases):
+       Remove caaar, etc., from list of new alias functions.
+       * emacs-lisp/cl-lib.el (cl-caaar, etc): Rename to caaar, etc.
+       (gen-cXXr--rawname, gen-cXXr-all-cl-aliases): New function/macro
+       which generate obsolete cl- aliases for caaar, etc.  Invoke them.
+       * desktop.el, edmacro.el, emacs-lisp/cl-macs.el, frameset.el:
+       * ibuffer.el, mail/footnote.el, net/dbus.el, net/eudc-export.el:
+       * net/eudc.el, net/eudcb-ph.el, net/rcirc.el, net/secrets.el:
+       * play/5x5.el, play/decipher.el, play/hanoi.el, progmodes/hideif.el:
+       * ses.el: Replace cl-caaar, eudc-cadr, etc. with caaar and cadr, etc.
+
+2015-04-05  Richard Stallman  <address@hidden>
+
+       * mail/rmail.el (rmail-show-message-1): When displaying a mime message,
+       indicate start and finish in the echo area.
+
+       * mail/rmail.el (rmail-epa-decrypt): Disregard <pre> before armor.
+       Ignore more kinds of whitespace in mime headers.
+       Modify the decrypted mime part's mime type so it will be displayed
+       by default when visiting this message again.
+
+       * net/browse-url.el (browse-url-firefox-program): Prefer IceCat, doc.
+       (browse-url-firefox-arguments)
+       (browse-url-firefox-startup-arguments): Doc fix.
+
+2015-04-05  Artur Malabarba  <address@hidden>
+
+       * emacs-lisp/package.el: Add package-initialize to user-init-file.
+       (package--ensure-init-file): New function.
+       (package-install, package-install-from-buffer): Use it.
+       (package-download-transaction, package-install-from-archive): Add
+       ASYNC and CALLBACK arguments.
+       (package-menu--prompt-transaction-p): New function.
+       (package-menu-execute): Use it to prompt the user about operations
+       to be executed.
+       (package-install): Add ASYNC and CALLBACK arguments.
+       (package-menu--perform-transaction): New function.
+       (package-menu-execute): Use it to install and delete packages.
 
-       Fix the CC Mode fixes from 2015-03-30.  Fixes debbugs#20240.
+2015-04-05  Pete Williamson  <address@hidden>  (tiny-change)
 
-       * progmodes/cc-mode.el (c-extend-after-change-region): Widen
-       before applying text properties.
-       * progmodes/cc-langs.el (c-before-font-lock-functions): Update an
-       entry to a new function name.
+       Fix .emacs and .emacs.d/init file recursion problem for NaCl
+       * files.el (file-truename): Add NaCl to the exception list ms-dos uses.
+
+2015-04-04  Alan Mackenzie  <address@hidden>
+
+       * progmodes/cc-mode.el (c-font-lock-init): Revert 2015-03-03 change
+       "Stop Font Lock forcing fontification from BOL."  (Bug#20245)
+
+2015-04-04  Artur Malabarba  <address@hidden>
+
+       * emacs-lisp/package.el (package--download-and-read-archives): Add
+       `package-archives' to `package--downloads-in-progress' instead of
+       overwriting it.
+       (package--with-work-buffer-async): Protect macro arguments.
+       (package--download-one-archive)
+       (package--download-and-read-archives): Prevent
+       downloads-in-progress list from becoming outdated.
+
+2015-04-04  Michael Albinus  <address@hidden>
+
+       * net/tramp-cache.el (tramp-flush-directory-property): Quote directory
+       name when used in regexp.
+
+2015-04-04  Alan Mackenzie  <address@hidden>
+
+       * jit-lock.el (jit-lock-after-change): Widen the buffer before
+       putting 'fontified text properties.  (Bug#20240)
+
+2015-04-03  Michael Albinus  <address@hidden>
+
+       * net/tramp-cache.el (tramp-flush-file-property)
+       (tramp-flush-directory-property): Use `directory-file-name' of the
+       truename.  (Bug#20249)
+
+2015-04-03  Nicolas Richard  <address@hidden>
+
+       * pcmpl-unix.el (pcmpl-ssh-known-hosts): Use `char-before' instead
+       of `looking-back' (bug#17284).
+
+2015-04-03  Dmitry Gutov  <address@hidden>
+
+       * progmodes/js.el (js-indent-line): Do nothing when bol is inside
+       a string (https://github.com/mooz/js2-mode/issues/227).
+
+2015-04-02  Stefan Monnier  <address@hidden>
+
+       * abbrev.el (define-abbrev-table): Treat a non-string "docstring" as
+       part of the "props" arguments rather than silently ignoring it.
+
+       * emacs-lisp/lisp-mnt.el (lm-version): Don't burp in a non-file buffer.
+
+2015-04-01  Alan Mackenzie  <address@hidden>
+
+       Fix the CC Mode fixes from 2015-03-30.  (Bug#20240)
+       * progmodes/cc-mode.el (c-extend-after-change-region):
+       Widen before applying text properties.
+       * progmodes/cc-langs.el (c-before-font-lock-functions):
+       Update an entry to a new function name.
 
 2015-04-01  Paul Eggert  <address@hidden>
 
@@ -67,7 +227,6 @@
 2015-03-30  Alan Mackenzie  <address@hidden>
 
        Correct calculation of CC Mode's font-lock region.
-
        * progmodes/cc-mode.el (c-fl-decl-start): Rename from
        c-set-fl-decl-start.  Change signature such that nil is returned
        when no declaration is found.
@@ -82,7 +241,6 @@
        the extra bit separately from the region calculated by CC Mode.
        (c-extend-after-change-region): Explicitly apply 'fontified
        properties to the extended bits of the font lock region.
-
        * progmodes/cc-langs.el (c-before-font-lock-functions)
        (c-before-context-fontification-functions): Use new names for
        existing functions (see above).
@@ -144,6 +302,7 @@
        (Bug#20084)
 
 2015-03-26  Daniel Colascione  <address@hidden>
+
        * progmodes/python.el
        (python-indent-guess-indent-offset-verbose): New defcustom.
        (python-indent-guess-indent-offset): Use it.
@@ -343,7 +502,7 @@
 
 2015-03-20  Alan Mackenzie  <address@hidden>
 
-       Fix debbugs#20146
+       Fix Bug#20146
 
        * font-lock.el (font-lock-extend-jit-lock-region-after-change):
        Return the calculated values, as per spec.
@@ -534,7 +693,7 @@
 
 2015-03-16  Alan Mackenzie  <address@hidden>
 
-       Edebug: Allow "S" to work during trace mode.  Fixes debbugs #20074.
+       Edebug: Allow "S" to work during trace mode.  Fixes Bug#20074.
        Also display the overlay arrow in go and go-nonstop modes.
 
        * emacs-lisp/edebug.el (edebug--display-1): Move the
@@ -2139,7 +2298,7 @@
        * calc/calc-ext.el (calc-init-extensions):  Autoload
        `calc-convert-exact-units' and assign it a keybinding.
 
-       * calc/calc-help (calc-u-prefix-help): Add help for the
+       * calc/calc-help.el (calc-u-prefix-help): Add help for the
        "un" keybinding.
 
 2015-01-28  Stefan Monnier  <address@hidden>
@@ -2553,7 +2712,7 @@
        * hexl.el (hexl-mode):
        * ielm.el (inferior-emacs-lisp-mode):
        * progmodes/cfengine.el (cfengine3-mode):
-       * progmodes/elisp-mode (emacs-lisp-mode):
+       * progmodes/elisp-mode.el (emacs-lisp-mode):
        * progmodes/octave.el (octave-mode):
        * progmodes/python.el (python-mode):
        * simple.el (read--expression): Set `eldoc-documentation-function'
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 7aa46e0..f9f078b 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -953,7 +953,6 @@ Abbrevs marked as \"system abbrevs\" are omitted."
          (insert "   ))\n\n")))
       nil)))
 
-(put 'define-abbrev-table 'doc-string-elt 3)
 (defun define-abbrev-table (tablename definitions
                                       &optional docstring &rest props)
   "Define TABLENAME (a symbol) as an abbrev table name.
@@ -973,10 +972,15 @@ Properties with special meaning:
 - `:enable-function' can be set to a function of no argument which returns
   non-nil if and only if the abbrevs in this table should be used for this
   instance of `expand-abbrev'."
+  (declare (doc-string 3))
   ;; We used to manually add the docstring, but we also want to record this
   ;; location as the definition of the variable (in load-history), so we may
   ;; as well just use `defvar'.
-  (eval `(defvar ,tablename nil ,@(if (stringp docstring) (list docstring))))
+  (if (and docstring props (symbolp docstring))
+      ;; There is really no docstring, instead the docstring arg
+      ;; is a property name.
+      (push docstring props) (setq docstring nil))
+  (eval `(defvar ,tablename nil ,@(if docstring (list docstring))))
   (let ((table (if (boundp tablename) (symbol-value tablename))))
     (unless table
       (setq table (make-abbrev-table))
@@ -987,6 +991,7 @@ Properties with special meaning:
     ;; if the table was pre-existing as is the case if it was created by
     ;; loading the user's abbrev file.
     (while (consp props)
+      (unless (cdr props) (error "Missing value for property %S" (car props)))
       (abbrev-table-put table (pop props) (pop props)))
     (dolist (elt definitions)
       (apply 'define-abbrev table elt))))
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index dc8057e..4baf00b 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -2064,7 +2064,8 @@ To carry out the deletions that you've marked, use 
\\<bookmark-bmenu-mode-map>\\
 (defun bookmark-bmenu-goto-bookmark (name)
   "Move point to bookmark with name NAME."
   (goto-char (point-min))
-  (while (not (equal name (bookmark-bmenu-bookmark)))
+  (while (not (or (equal name (bookmark-bmenu-bookmark))
+                  (eobp)))
     (forward-line 1))
   (forward-line 0))
 
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index ca6d021..c6e1fdb 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -1438,11 +1438,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 719164 (math-div date '(float 864 2))))
+       (setq date (math-add 719163 (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) 719164))
+       (math-add (nth 1 (math-date-parts (nth 1 date) 719163))
                  (calcFunc-tzone zone date))
       (math-reject-arg date 'datep))))
 
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index 452a672..da5d85e 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -39,7 +39,7 @@
 
 ;;; History:
 
-;;  0.07 onwards: see lisp/ChangeLog
+;;  0.07 onwards: see commit logs and ../ChangeLog*.
 
 ;;  0.06:  (2004-10-06)
 ;;  - Bugfixes regarding icalendar-import-format-*.
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog.1
similarity index 100%
rename from lisp/cedet/ChangeLog
rename to lisp/cedet/ChangeLog.1
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index ad93178..1e12190 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1707,15 +1707,6 @@ Display mechanism using tooltip for a list of possible 
completions.")
 
 ;;; Compatibility
 ;;
-(eval-and-compile
-  (if (fboundp 'window-inside-edges)
-      ;; Emacs devel.
-      (defalias 'semantic-displayor-window-edges
-        'window-inside-edges)
-    ;; Emacs 21
-    (defalias 'semantic-displayor-window-edges
-      'window-edges)
-    ))
 
 (defun semantic-displayor-point-position ()
   "Return the location of POINT as positioned on the selected frame.
@@ -2226,6 +2217,7 @@ use `semantic-complete-analyze-inline' to complete."
   ;; input.
   (when (save-window-excursion
          (save-excursion
+            ;; FIXME: Use `while-no-input'?
            (and (not (semantic-exit-on-input 'csi
                        (semantic-fetch-tags)
                        (semantic-throw-on-input 'csi)
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index 1dba9b1..7380bdd 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -723,6 +723,7 @@ form."
   "Save all semantic tag databases from idle time.
 Exit the save between databases if there is user input."
   (semantic-safe "Auto-DB Save: %S"
+    ;; FIXME: Use `while-no-input'?
     (semantic-exit-on-input 'semanticdb-idle-save
       (mapc (lambda (db)
              (semantic-throw-on-input 'semanticdb-idle-save)
diff --git a/lisp/cedet/semantic/decorate.el b/lisp/cedet/semantic/decorate.el
index 38c359e..6707fdf 100644
--- a/lisp/cedet/semantic/decorate.el
+++ b/lisp/cedet/semantic/decorate.el
@@ -88,20 +88,6 @@ If VISIBLE is non-nil, make the text visible."
   "Return non-nil if TAG is invisible."
   (semantic-overlay-get (semantic-tag-overlay tag) 'invisible))
 
-(defun semantic-set-tag-intangible (tag &optional tangible)
-  "Enable the text in TAG to be made intangible.
-If TANGIBLE is non-nil, make the text visible.
-This function does not have meaning in XEmacs because it seems that
-the extent 'intangible' property does not exist."
-  (semantic-overlay-put (semantic-tag-overlay tag) 'intangible
-                       (not tangible)))
-
-(defun semantic-tag-intangible-p (tag)
-  "Return non-nil if TAG is intangible.
-This function does not have meaning in XEmacs because it seems that
-the extent 'intangible' property does not exist."
-  (semantic-overlay-get (semantic-tag-overlay tag) 'intangible))
-
 (defun semantic-overlay-signal-read-only
   (overlay after start end &optional len)
   "Hook used in modification hooks to prevent modification.
diff --git a/lisp/cedet/semantic/decorate/mode.el 
b/lisp/cedet/semantic/decorate/mode.el
index 2a88eb7..9192ec1 100644
--- a/lisp/cedet/semantic/decorate/mode.el
+++ b/lisp/cedet/semantic/decorate/mode.el
@@ -393,7 +393,7 @@ must return non-nil to indicate that the tag should be 
decorated by
 `NAME-highlight'.
 
 To put primary decorations on a tag `NAME-highlight' must use
-functions like `semantic-set-tag-face', `semantic-set-tag-intangible',
+functions like `semantic-set-tag-face', `semantic-set-tag-read-only',
 etc., found in the semantic-decorate library.
 
 To add other kind of decorations on a tag, `NAME-highlight' must use
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index a0c3694..0e81b2c 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -38,6 +38,7 @@
   (if (featurep 'xemacs)
       (progn
        (defalias 'semantic-buffer-local-value 'symbol-value-in-buffer)
+        ;; FIXME: Why not just (require 'overlay)?
        (defalias 'semantic-overlay-live-p
          (lambda (o)
            (and (extent-live-p o)
@@ -113,12 +114,8 @@
       "Extract the window from EVENT."
       (car (car (cdr event))))
 
-    (if (> emacs-major-version 21)
-       (defalias 'semantic-buffer-local-value 'buffer-local-value)
+    (defalias 'semantic-buffer-local-value 'buffer-local-value)
 
-      (defun semantic-buffer-local-value (sym &optional buf)
-       "Get the value of SYM from buffer local variable in BUF."
-       (cdr (assoc sym (buffer-local-variables buf)))))
     )
 
 
@@ -306,7 +303,7 @@ error message.
 If `debug-on-error' is set, errors are not caught, so that you can
 debug them.
 Avoid using a large BODY since it is duplicated."
-  ;;(declare (debug t) (indent 1))
+  (declare (debug t) (indent 1))
   `(if debug-on-error
        ;;(let ((inhibit-quit nil)) ,@body)
        ;; Note to self: Doing the above screws up the wisent parser.
@@ -317,7 +314,6 @@ Avoid using a large BODY since it is duplicated."
         (message ,format (format "%S - %s" (current-buffer)
                                  (error-message-string err)))
         nil))))
-(put 'semantic-safe 'lisp-indent-function 1)
 
 ;;; Misc utilities
 ;;
@@ -378,7 +374,7 @@ If FORMS includes a call to `semantic-throw-on-input', then
 if a user presses any key during execution, this form macro
 will exit with the value passed to `semantic-throw-on-input'.
 If FORMS completes, then the return value is the same as `progn'."
-  (declare (indent 1))
+  (declare (indent 1) (debug def-body))
   `(let ((semantic-current-input-throw-symbol ,symbol)
          (semantic--on-input-start-marker (point-marker)))
      (catch ,symbol
@@ -392,10 +388,10 @@ calling this one."
   `(when (and semantic-current-input-throw-symbol
               (or (input-pending-p)
                   (with-current-buffer
-                      ;; Timers might run during accept-process-output.
-                      ;; If they redisplay, point must be where the user
-                      ;; expects. (Bug#15045)
                       (marker-buffer semantic--on-input-start-marker)
+                    ;; Timers might run during accept-process-output.
+                    ;; If they redisplay, point must be where the user
+                    ;; expects. (Bug#15045)
                     (save-excursion
                       (goto-char semantic--on-input-start-marker)
                       (accept-process-output)))))
@@ -452,12 +448,12 @@ into `mode-local-init-hook'." file filename)
 ;;
 (defmacro semanticdb-without-unloaded-file-searches (forms)
   "Execute FORMS with `unloaded' removed from the current throttle."
+  (declare (indent 1))
   `(let ((semanticdb-find-default-throttle
          (if (featurep 'semantic/db-find)
              (remq 'unloaded semanticdb-find-default-throttle)
            nil)))
      ,forms))
-(put 'semanticdb-without-unloaded-file-searches 'lisp-indent-function 1)
 
 
 ;; ;;; Editor goodies ;-)
@@ -524,12 +520,6 @@ into `mode-local-init-hook'." file filename)
 ;;   (font-lock-add-keywords 'emacs-lisp-mode
 ;;                           semantic-fw-font-lock-keywords))
 
-;;; Interfacing with edebug
-;;
-(defun semantic-fw-add-edebug-spec ()
-  (def-edebug-spec semantic-exit-on-input 'def-body))
-
-(add-hook 'edebug-setup-hook 'semantic-fw-add-edebug-spec)
 
 (provide 'semantic/fw)
 
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index 7903153..225caa5 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -216,6 +216,7 @@ current buffer.")
 And also manages services that depend on tag values."
   (when semantic-idle-scheduler-verbose-flag
     (message "IDLE: Core handler..."))
+  ;; FIXME: Use `while-no-input'?
   (semantic-exit-on-input 'idle-timer
     (let* ((inhibit-quit nil)
            (buffers (delq (current-buffer)
diff --git a/lisp/cedet/semantic/util-modes.el 
b/lisp/cedet/semantic/util-modes.el
index 6914c4b..c080642 100644
--- a/lisp/cedet/semantic/util-modes.el
+++ b/lisp/cedet/semantic/util-modes.el
@@ -684,15 +684,11 @@ when it lands in the sticky line."
 (defconst semantic-stickyfunc-header-line-format
   (cond ((featurep 'xemacs)
         nil)
-       ((>= emacs-major-version 22)
+       (t
         '(:eval (list
                  ;; Magic bit I found on emacswiki.
                  (propertize " " 'display '((space :align-to 0)))
-                 (semantic-stickyfunc-fetch-stickyline))))
-       ((= emacs-major-version 21)
-        '(:eval (list semantic-stickyfunc-indent-string
-                      (semantic-stickyfunc-fetch-stickyline))))
-       (t nil))
+                 (semantic-stickyfunc-fetch-stickyline)))))
   "The header line format used by stickyfunc mode.")
 
 ;;;###autoload
@@ -719,7 +715,7 @@ minor mode is enabled."
        (unless (boundp 'default-header-line-format)
          ;; Disable if there are no header lines to use.
          (setq semantic-stickyfunc-mode nil)
-         (error "Sticky Function mode requires Emacs 21"))
+         (error "Sticky Function mode requires Emacs"))
        ;; Enable the mode
        ;; Save previous buffer local value of header line format.
        (when (and (local-variable-p 'header-line-format (current-buffer))
diff --git a/lisp/comint.el b/lisp/comint.el
index 31649ff..de22061 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -816,8 +816,6 @@ series of processes in the same Comint buffer.  The hook
                    (format "COLUMNS=%d" (window-width)))
            (list "TERM=emacs"
                  (format "TERMCAP=emacs:co#%d:tc=unknown:" (window-width))))
-         (unless (getenv "EMACS")
-           (list "EMACS=t"))
          (list (format "INSIDE_EMACS=%s,comint" emacs-version))
          process-environment))
        (default-directory
@@ -2084,19 +2082,19 @@ Make backspaces delete the previous character."
                  (add-text-properties prompt-start (point)
                                       '(read-only t front-sticky 
(read-only)))))
              (when comint-last-prompt
-               (with-silent-modifications
-                 (font-lock--remove-face-from-text-property
-                  (car comint-last-prompt)
-                  (cdr comint-last-prompt)
-                  'font-lock-face
-                  'comint-highlight-prompt)))
+               ;; There might be some keywords here waiting for
+               ;; fontification, so no `with-silent-modifications'.
+               (font-lock--remove-face-from-text-property
+                (car comint-last-prompt)
+                (cdr comint-last-prompt)
+                'font-lock-face
+                'comint-highlight-prompt))
              (setq comint-last-prompt
                    (cons (copy-marker prompt-start) (point-marker)))
-             (with-silent-modifications
-               (font-lock-prepend-text-property prompt-start (point)
-                                                'font-lock-face
-                                                'comint-highlight-prompt)
-               (add-text-properties prompt-start (point) '(rear-nonsticky t))))
+             (font-lock-prepend-text-property prompt-start (point)
+                                              'font-lock-face
+                                              'comint-highlight-prompt)
+             (add-text-properties prompt-start (point) '(rear-nonsticky t)))
            (goto-char saved-point)))))))
 
 (defun comint-preinput-scroll-to-bottom ()
diff --git a/lisp/completion.el b/lisp/completion.el
index d3f1187..b53f2d3 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -2228,12 +2228,9 @@ TYPE is the type of the wrapper to be added.  Can be 
:before or :under."
 (defun completion-lisp-mode-hook ()
   (setq completion-syntax-table completion-lisp-syntax-table)
   ;; Lisp Mode diffs
-  (local-set-key "!" 'self-insert-command)
-  (local-set-key "&" 'self-insert-command)
-  (local-set-key "%" 'self-insert-command)
-  (local-set-key "?" 'self-insert-command)
-  (local-set-key "=" 'self-insert-command)
-  (local-set-key "^" 'self-insert-command))
+  (setq-local completion-separator-chars
+              (cl-set-difference completion-separator-chars
+                                 (append "!&%?=^" nil))))
 
 ;; C mode diffs.
 
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index f56fb6a..9cc2fa8 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4406,7 +4406,9 @@ if only the first line of the docstring is shown."))
         old-buffer-name)
 
     (with-current-buffer (let ((find-file-visit-truename t))
-                          (or old-buffer (find-file-noselect filename)))
+                          (or old-buffer
+                               (let ((delay-mode-hooks t))
+                                 (find-file-noselect filename))))
       ;; We'll save using file-precious-flag, so avoid destroying
       ;; symlinks.  (If we're not already visiting the buffer, this is
       ;; handled by find-file-visit-truename, above.)
@@ -4415,7 +4417,7 @@ if only the first line of the docstring is shown."))
        (set-visited-file-name (file-chase-links filename)))
 
       (unless (eq major-mode 'emacs-lisp-mode)
-       (emacs-lisp-mode))
+        (delay-mode-hooks (emacs-lisp-mode)))
       (let ((inhibit-read-only t)
            (print-length nil)
            (print-level nil))
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 71506cb..29ef371 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -1,4 +1,4 @@
-;;; cus-start.el --- define customization properties of builtins
+;;; cus-start.el --- define customization properties of builtins  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1997, 1999-2015 Free Software Foundation, Inc.
 
@@ -33,6 +33,14 @@
 
 ;;; Code:
 
+(defun minibuffer-prompt-properties--setter (symbol value)
+  (set-default symbol value)
+  (if (memq 'cursor-intangible value)
+      (add-hook 'minibuffer-setup-hook 'cursor-intangible-mode)
+    ;; Removing it is a bit trickier since it could have been added by someone
+    ;; else as well, so let's just not bother.
+    ))
+
 ;; Elements of this list have the form:
 ;; SYMBOL GROUP TYPE VERSION REST...
 ;; SYMBOL is the name of the variable.
@@ -46,7 +54,23 @@
 ;; :risky - risky-local-variable property
 ;; :safe - safe-local-variable property
 ;; :tag - custom-tag property
-(let ((all '(;; alloc.c
+(let (standard native-p prop propval
+      ;; This function turns a value
+      ;; into an expression which produces that value.
+      (quoter (lambda (sexp)
+                ;; FIXME: We'd like to use macroexp-quote here, but cus-start
+                ;; is loaded too early in loadup.el for that.
+               (if (or (memq sexp '(t nil))
+                       (keywordp sexp)
+                       (and (listp sexp)
+                            (memq (car sexp) '(lambda)))
+                       (stringp sexp)
+                       (numberp sexp))
+                   sexp
+                 (list 'quote sexp)))))
+  (pcase-dolist
+      (`(,symbol ,group ,type ,version . ,rest)
+           '(;; alloc.c
             (gc-cons-threshold alloc integer)
             (gc-cons-percentage alloc float)
             (garbage-collection-messages alloc boolean)
@@ -269,10 +293,10 @@ Leaving \"Default\" unchecked is equivalent with 
specifying a default of
             (make-pointer-invisible mouse boolean "23.2")
             (menu-bar-mode frames boolean nil
                            ;; FIXME?
-;                          :initialize custom-initialize-default
+                            ;; :initialize custom-initialize-default
                            :set custom-set-minor-mode)
             (tool-bar-mode (frames mouse) boolean nil
-;                          :initialize custom-initialize-default
+                            ;; :initialize custom-initialize-default
                            :set custom-set-minor-mode)
             (frame-resize-pixelwise frames boolean "24.4")
             (frame-inhibit-implied-resize frames
@@ -342,19 +366,19 @@ Leaving \"Default\" unchecked is equivalent with 
specifying a default of
                                 :doc "Prevent point from ever entering prompt"
                                 :format "%t%n%h"
                                 :inline t
-                                (point-entered minibuffer-avoid-prompt)))
+                                (cursor-intangible t)))
               (repeat :inline t
                       :tag "Other Properties"
                       (list :inline t
                             :format "%v"
                             (symbol :tag "Property")
                             (sexp :tag "Value"))))
-             "21.1")
+             "21.1"
+              :set minibuffer-prompt-properties--setter)
             (minibuffer-auto-raise minibuffer boolean)
             ;; options property set at end
             (read-buffer-function minibuffer
                                   (choice (const nil)
-                                          (function-item iswitchb-read-buffer)
                                           function))
             ;; msdos.c
             (dos-unsupported-char-glyph display integer)
@@ -550,27 +574,7 @@ since it could result in memory overflow and make Emacs 
crash."
             (x-select-enable-clipboard-manager killing boolean "24.1")
             ;; xsettings.c
             (font-use-system-font font-selection boolean "23.2")))
-      this symbol group type standard version native-p rest prop propval
-      ;; This function turns a value
-      ;; into an expression which produces that value.
-      (quoter (lambda (sexp)
-               (if (or (memq sexp '(t nil))
-                       (keywordp sexp)
-                       (and (listp sexp)
-                            (memq (car sexp) '(lambda)))
-                       (stringp sexp)
-                       (numberp sexp))
-                   sexp
-                 (list 'quote sexp)))))
-  (while all
-    (setq this (car all)
-         all (cdr all)
-         symbol (nth 0 this)
-         group (nth 1 this)
-         type (nth 2 this)
-         version (nth 3 this)
-         rest (nthcdr 4 this)
-         ;; If we did not specify any standard value expression above,
+    (setq ;; If we did not specify any standard value expression above,
          ;; use the current value as the standard value.
          standard (if (setq prop (memq :standard rest))
                       (cadr prop)
@@ -628,7 +632,11 @@ since it could result in memory overflow and make Emacs 
crash."
          (put symbol 'custom-set (cadr prop)))
       ;; Note this is the _only_ initialize property we handle.
       (if (eq (cadr (memq :initialize rest)) 'custom-initialize-delay)
-         (push symbol custom-delayed-init-variables))
+          ;; These vars are defined early and should hence be initialized
+          ;; early, even if this file happens to be loaded late.  so add them
+          ;; to the end of custom-delayed-init-variables.  Otherwise,
+          ;; auto-save-file-name-transforms will appear in M-x customize-rogue.
+         (add-to-list 'custom-delayed-init-variables symbol 'append))
       ;; If this is NOT while dumping Emacs, set up the rest of the
       ;; customization info.  This is the stuff that is not needed
       ;; until someone does M-x customize etc.
@@ -649,7 +657,6 @@ since it could result in memory overflow and make Emacs 
crash."
                ((eq prop :tag)
                 (put symbol 'custom-tag propval))))))))
 
-(custom-add-to-group 'iswitchb 'read-buffer-function 'custom-variable)
 (custom-add-to-group 'font-lock 'open-paren-in-column-0-is-defun-start
                     'custom-variable)
 
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 3eca5a6..fb803b4 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -1468,7 +1468,7 @@ after that many seconds of idle time."
            (dolist (record compacted-vars)
              (let*
                  ((var (car record))
-                  (deser-fun (cl-caddr (assq var desktop-var-serdes-funs))))
+                  (deser-fun (nth 2 (assq var desktop-var-serdes-funs))))
                (if deser-fun (set var (funcall deser-fun (cadr record))))))))
        result))))
 
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 562b294..db812c9 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -475,7 +475,8 @@ happened."
                      (when (and (not (and unconditional
                                           (eq syntax ?\")))
                                 (setq skip-whitespace-info
-                                      (if (functionp 
electric-pair-skip-whitespace)
+                                      (if (and (not (eq 
electric-pair-skip-whitespace 'chomp))
+                                               (functionp 
electric-pair-skip-whitespace))
                                           (funcall 
electric-pair-skip-whitespace)
                                         electric-pair-skip-whitespace)))
                        (electric-pair--skip-whitespace))
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 073d923..206d5bb 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -235,8 +235,9 @@ If a buffer is visiting the desired autoload file, return 
it."
        (enable-local-eval nil))
     ;; We used to use `raw-text' to read this file, but this causes
     ;; problems when the file contains non-ASCII characters.
-    (find-file-noselect
-     (autoload-ensure-default-file (autoload-generated-file)))))
+    (let ((delay-mode-hooks t))
+      (find-file-noselect
+       (autoload-ensure-default-file (autoload-generated-file))))))
 
 (defun autoload-generated-file ()
   (expand-file-name generated-autoload-file
@@ -400,7 +401,7 @@ which lists the file name and which functions are in it, 
etc."
     (erase-buffer)
     (setq buffer-undo-list t
           buffer-read-only nil)
-    (emacs-lisp-mode)
+    (delay-mode-hooks (emacs-lisp-mode))
     (setq default-directory (file-name-directory file))
     (insert-file-contents file nil)
     (let ((enable-local-variables :safe)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index e929c02..51bbf8a 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -979,6 +979,17 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
           (lambda (x) (if (symbolp x) (list 'prin1-to-string x) x))
           args))))))
 
+(defvar byte-compile--interactive nil
+  "Determine if `byte-compile--message' uses the minibuffer.")
+
+(defun byte-compile--message (format &rest args)
+  "Like `message', except sometimes don't print to minibuffer.
+If the variable `byte-compile--interactive' is nil, the message
+is not displayed on the minibuffer."
+  (apply #'message format args)
+  (unless byte-compile--interactive
+    (message nil)))
+
 ;; Log something that isn't a warning.
 (defun byte-compile-log-1 (string)
   (with-current-buffer byte-compile-log-buffer
@@ -986,7 +997,7 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
       (goto-char (point-max))
       (byte-compile-warning-prefix nil nil)
       (cond (noninteractive
-            (message " %s" string))
+            (byte-compile--message " %s" string))
            (t
             (insert (format "%s\n" string)))))))
 
@@ -1590,7 +1601,10 @@ extra args."
   "Recompile every `.el' file in DIRECTORY that already has a `.elc' file.
 Files in subdirectories of DIRECTORY are processed also."
   (interactive "DByte force recompile (directory): ")
-  (byte-recompile-directory directory nil t))
+  (let ((byte-compile--interactive
+         (or byte-compile--interactive
+             (called-interactively-p 'any))))
+    (byte-recompile-directory directory nil t)))
 
 ;;;###autoload
 (defun byte-recompile-directory (directory &optional arg force)
@@ -1620,6 +1634,9 @@ that already has a `.elc' file."
       (compilation-mode))
     (let ((directories (list default-directory))
          (default-directory default-directory)
+          (byte-compile--interactive
+           (or byte-compile--interactive
+               (called-interactively-p 'any)))
          (skip-count 0)
          (fail-count 0)
          (file-count 0)
@@ -1628,7 +1645,7 @@ that already has a `.elc' file."
       (displaying-byte-compile-warnings
        (while directories
         (setq directory (car directories))
-        (message "Checking %s..." directory)
+        (byte-compile--message "Checking %s..." directory)
          (dolist (file (directory-files directory))
            (let ((source (expand-file-name file directory)))
             (if (file-directory-p source)
@@ -1653,13 +1670,13 @@ that already has a `.elc' file."
                              (`t file-count)
                              (_ fail-count)))
                           (or noninteractive
-                              (message "Checking %s..." directory))
+                              (byte-compile--message "Checking %s..." 
directory))
                           (if (not (eq last-dir directory))
                               (setq last-dir directory
                                     dir-count (1+ dir-count)))
                           )))))
         (setq directories (cdr directories))))
-      (message "Done (Total of %d file%s compiled%s%s%s)"
+      (byte-compile--message "Done (Total of %d file%s compiled%s%s%s)"
               file-count (if (= file-count 1) "" "s")
               (if (> fail-count 0) (format ", %d failed" fail-count) "")
               (if (> skip-count 0) (format ", %d skipped" skip-count) "")
@@ -1706,7 +1723,10 @@ If compilation is needed, this functions returns the 
result of
           current-prefix-arg)))
   (let ((dest (byte-compile-dest-file filename))
         ;; Expand now so we get the current buffer's defaults
-        (filename (expand-file-name filename)))
+        (filename (expand-file-name filename))
+        (byte-compile--interactive
+         (or byte-compile--interactive
+             (called-interactively-p 'any))))
     (if (if (file-exists-p dest)
             ;; File was already compiled
             ;; Compile if forced to, or filename newer
@@ -1718,7 +1738,7 @@ If compilation is needed, this functions returns the 
result of
                                      filename "? ")))))
         (progn
           (if (and noninteractive (not byte-compile-verbose))
-              (message "Compiling %s..." filename))
+              (byte-compile--message "Compiling %s..." filename))
           (byte-compile-file filename load))
       (when load
        (load (if (file-exists-p dest) dest filename)))
@@ -1762,6 +1782,9 @@ The value is non-nil if there were no errors, nil if 
errors."
   (let ((byte-compile-current-file filename)
         (byte-compile-current-group nil)
        (set-auto-coding-for-load t)
+        (byte-compile--interactive
+         (or byte-compile--interactive
+             (called-interactively-p 'any)))
        target-file input-buffer output-buffer
        byte-compile-dest-file)
     (setq target-file (byte-compile-dest-file filename))
@@ -1799,7 +1822,7 @@ The value is non-nil if there were no errors, nil if 
errors."
             (progn
               (setq-default major-mode 'emacs-lisp-mode)
               ;; Arg of t means don't alter enable-local-variables.
-              (normal-mode t))
+              (delay-mode-hooks (normal-mode t)))
           (setq-default major-mode dmm))
         ;; There may be a file local variable setting (bug#10419).
         (setq buffer-read-only nil
@@ -1817,14 +1840,14 @@ The value is non-nil if there were no errors, nil if 
errors."
          ;;       (byte-compile-abbreviate-file filename)
          ;;       (with-current-buffer input-buffer no-byte-compile))
          (when (file-exists-p target-file)
-           (message "%s deleted because of `no-byte-compile: %s'"
+           (byte-compile--message "%s deleted because of `no-byte-compile: %s'"
                     (byte-compile-abbreviate-file target-file)
                     (buffer-local-value 'no-byte-compile input-buffer))
            (condition-case nil (delete-file target-file) (error nil)))
          ;; We successfully didn't compile this file.
          'no-byte-compile)
       (when byte-compile-verbose
-       (message "Compiling %s..." filename))
+       (byte-compile--message "Compiling %s..." filename))
       (setq byte-compiler-error-flag nil)
       ;; It is important that input-buffer not be current at this call,
       ;; so that the value of point set in input-buffer
@@ -1836,7 +1859,7 @@ The value is non-nil if there were no errors, nil if 
errors."
       (if byte-compiler-error-flag
          nil
        (when byte-compile-verbose
-         (message "Compiling %s...done" filename))
+         (byte-compile--message "Compiling %s...done" filename))
        (kill-buffer input-buffer)
        (with-current-buffer output-buffer
          (goto-char (point-max))
@@ -1862,7 +1885,7 @@ The value is non-nil if there were no errors, nil if 
errors."
                ;; recompiled).  Previously this was accomplished by
                ;; deleting target-file before writing it.
                (rename-file tempfile target-file t)
-               (or noninteractive (message "Wrote %s" target-file)))
+               (or noninteractive (byte-compile--message "Wrote %s" 
target-file)))
            ;; This is just to give a better error message than write-region
            (signal 'file-error
                    (list "Opening output file"
@@ -1896,6 +1919,9 @@ With argument ARG, insert value in current buffer after 
the form."
           (byte-compile-read-position (point))
           (byte-compile-last-position byte-compile-read-position)
           (byte-compile-last-warned-form 'nothing)
+           (byte-compile--interactive
+            (or byte-compile--interactive
+                (called-interactively-p 'any)))
           (value (eval
                   (let ((read-with-symbol-positions (current-buffer))
                         (read-symbol-positions-list nil))
@@ -1903,10 +1929,10 @@ With argument ARG, insert value in current buffer after 
the form."
                      (byte-compile-sexp (read (current-buffer)))))
                    lexical-binding)))
       (cond (arg
-            (message "Compiling from buffer... done.")
+            (byte-compile--message "Compiling from buffer... done.")
             (prin1 value (current-buffer))
             (insert "\n"))
-           ((message "%s" (prin1-to-string value)))))))
+           ((byte-compile--message "%s" (prin1-to-string value)))))))
 
 (defun byte-compile-from-buffer (inbuffer)
   (let ((byte-compile-current-buffer inbuffer)
@@ -2410,7 +2436,7 @@ not to take responsibility for the actual compilation of 
the code."
         (byte-compile-arglist-warn name arglist macro))
 
     (if byte-compile-verbose
-        (message "Compiling %s... (%s)"
+        (byte-compile--message "Compiling %s... (%s)"
                  (or byte-compile-current-file "") name))
     (cond ((not (or macro (listp body)))
            ;; We do not know positively if the definition is a macro
@@ -2580,7 +2606,7 @@ If FORM is a lambda or a macro, byte-compile it as a 
function."
        ;; error to a simple message for the known case where signaling an error
        ;; causes problems.
        ((byte-code-function-p fun)
-        (message "Function %s is already compiled"
+        (byte-compile--message "Function %s is already compiled"
                  (if (symbolp form) form "provided"))
         fun)
        (t
@@ -4398,8 +4424,8 @@ binding slots have been popped."
                   name macro arglist body rest)
            (when macro
              (if (null fun)
-                 (message "Macro %s unrecognized, won't work in file" name)
-               (message "Macro %s partly recognized, trying our luck" name)
+                 (byte-compile--message "Macro %s unrecognized, won't work in 
file" name)
+               (byte-compile--message "Macro %s partly recognized, trying our 
luck" name)
                (push (cons name (eval fun))
                      byte-compile-macro-environment)))
            (byte-compile-keep-pending form))))
@@ -4525,11 +4551,11 @@ The call tree also lists those functions which are not 
known to be called
 \(that is, to which no calls have been compiled\), and which cannot be
 invoked interactively."
   (interactive)
-  (message "Generating call tree...")
+  (byte-compile--message "Generating call tree...")
   (with-output-to-temp-buffer "*Call-Tree*"
     (set-buffer "*Call-Tree*")
     (erase-buffer)
-    (message "Generating call tree... (sorting on %s)"
+    (byte-compile--message "Generating call tree... (sorting on %s)"
             byte-compile-call-tree-sort)
     (insert "Call tree for "
            (cond ((null byte-compile-current-file) (or filename "???"))
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index afc2adb..0a6bc3a 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -528,13 +528,9 @@ If START or END is negative, it counts from the end."
   (seq-subseq seq start end))
 
 ;;;###autoload
-(defun cl-concatenate (type &rest seqs)
+(defalias 'cl-concatenate #'seq-concatenate
   "Concatenate, into a sequence of type TYPE, the argument SEQUENCEs.
-\n(fn TYPE SEQUENCE...)"
-  (cond ((eq type 'vector) (apply 'vconcat seqs))
-       ((eq type 'string) (apply 'concat seqs))
-       ((eq type 'list) (apply 'append (append seqs '(nil))))
-       (t (error "Not a sequence type name: %s" type))))
+\n(fn TYPE SEQUENCE...)")
 
 
 ;;; List functions.
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 10651cc..6b43c12 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -420,122 +420,122 @@ Signal an error if X is not a list."
 
 (defun cl-caaar (x)
   "Return the `car' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (car x))))
 
 (defun cl-caadr (x)
   "Return the `car' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (cdr x))))
 
 (defun cl-cadar (x)
   "Return the `car' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (car x))))
 
 (defun cl-caddr (x)
   "Return the `car' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (cdr x))))
 
 (defun cl-cdaar (x)
   "Return the `cdr' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (car x))))
 
 (defun cl-cdadr (x)
   "Return the `cdr' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (cdr x))))
 
 (defun cl-cddar (x)
   "Return the `cdr' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (car x))))
 
 (defun cl-cdddr (x)
   "Return the `cdr' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (cdr x))))
 
 (defun cl-caaaar (x)
   "Return the `car' of the `car' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (car (car x)))))
 
 (defun cl-caaadr (x)
   "Return the `car' of the `car' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (car (cdr x)))))
 
 (defun cl-caadar (x)
   "Return the `car' of the `car' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (cdr (car x)))))
 
 (defun cl-caaddr (x)
   "Return the `car' of the `car' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car (cdr (cdr x)))))
 
 (defun cl-cadaar (x)
   "Return the `car' of the `cdr' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (car (car x)))))
 
 (defun cl-cadadr (x)
   "Return the `car' of the `cdr' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (car (cdr x)))))
 
 (defun cl-caddar (x)
   "Return the `car' of the `cdr' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (cdr (car x)))))
 
 (defun cl-cadddr (x)
   "Return the `car' of the `cdr' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr (cdr (cdr x)))))
 
 (defun cl-cdaaar (x)
   "Return the `cdr' of the `car' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (car (car x)))))
 
 (defun cl-cdaadr (x)
   "Return the `cdr' of the `car' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (car (cdr x)))))
 
 (defun cl-cdadar (x)
   "Return the `cdr' of the `car' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (cdr (car x)))))
 
 (defun cl-cdaddr (x)
   "Return the `cdr' of the `car' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car (cdr (cdr x)))))
 
 (defun cl-cddaar (x)
   "Return the `cdr' of the `cdr' of the `car' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (car (car x)))))
 
 (defun cl-cddadr (x)
   "Return the `cdr' of the `cdr' of the `car' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (car (cdr x)))))
 
 (defun cl-cdddar (x)
   "Return the `cdr' of the `cdr' of the `cdr' of the `car' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (cdr (car x)))))
 
 (defun cl-cddddr (x)
   "Return the `cdr' of the `cdr' of the `cdr' of the `cdr' of X."
-  (declare (compiler-macro cl--compiler-macro-cXXr))
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr (cdr (cdr x)))))
 
 ;;(defun last* (x &optional n)
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index f8ddc00..5bab84e 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -70,20 +70,12 @@
       (setq form `(cons ,(car args) ,form)))
     form))
 
+;; Note: `cl--compiler-macro-cXXr' has been copied to
+;; `internal--compiler-macro-cXXr' in subr.el.  If you amend either
+;; one, you may want to amend the other, too.
 ;;;###autoload
-(defun cl--compiler-macro-cXXr (form x)
-  (let* ((head (car form))
-         (n (symbol-name (car form)))
-         (i (- (length n) 2)))
-    (if (not (string-match "c[ad]+r\\'" n))
-        (if (and (fboundp head) (symbolp (symbol-function head)))
-            (cl--compiler-macro-cXXr (cons (symbol-function head) (cdr form))
-                                     x)
-          (error "Compiler macro for cXXr applied to non-cXXr form"))
-      (while (> i (match-beginning 0))
-        (setq x (list (if (eq (aref n i) ?a) 'car 'cdr) x))
-        (setq i (1- i)))
-      x)))
+(define-obsolete-function-alias 'cl--compiler-macro-cXXr
+  'internal--compiler-macro-cXXr "25.1")
 
 ;;; Some predicates for analyzing Lisp forms.
 ;; These are used by various
@@ -1188,10 +1180,10 @@ For more details, see Info node `(cl)Loop Facility'.
                (if (memq (car cl--loop-args) '(downto above))
                    (error "Must specify `from' value for downward cl-loop"))
                (let* ((down (or (eq (car cl--loop-args) 'downfrom)
-                                (memq (cl-caddr cl--loop-args)
+                                (memq (nth 2 cl--loop-args)
                                        '(downto above))))
                       (excl (or (memq (car cl--loop-args) '(above below))
-                                (memq (cl-caddr cl--loop-args)
+                                (memq (nth 2 cl--loop-args)
                                        '(above below))))
                       (start (and (memq (car cl--loop-args)
                                          '(from upfrom downfrom))
@@ -1828,7 +1820,7 @@ from OBARRAY.
      (let (,(car spec))
        (mapatoms #'(lambda (,(car spec)) ,@body)
                  ,@(and (cadr spec) (list (cadr spec))))
-       ,(cl-caddr spec))))
+       ,(nth 2 spec))))
 
 ;;;###autoload
 (defmacro cl-do-all-symbols (spec &rest body)
@@ -2734,12 +2726,16 @@ non-nil value, that slot cannot be set via `setf'.
                 constrs))
     (while constrs
       (let* ((name (caar constrs))
-            (args (cadr (pop constrs)))
+             (rest (cdr (pop constrs)))
+             (args (car rest))
+             (doc  (cadr rest))
             (anames (cl--arglist-args args))
             (make (cl-mapcar (function (lambda (s d) (if (memq s anames) s d)))
                            slots defaults)))
        (push `(cl-defsubst ,name
                    (&cl-defs (nil ,@descs) ,@args)
+                 ,@(if (stringp doc) (list doc)
+                     (if (stringp docstring) (list docstring)))
                  ,@(if (cl--safe-expr-p `(progn ,@(mapcar #'cl-second descs)))
                        '((declare (side-effect-free t))))
                  (,(or type #'vector) ,@make))
@@ -2788,6 +2784,7 @@ non-nil value, that slot cannot be set via `setf'.
 Elements of FIELDS can be of the form (NAME UPAT) in which case the contents of
 field NAME is matched against UPAT, or they can be of the form NAME which
 is a shorthand for (NAME NAME)."
+  (declare (debug (sexp &rest [&or (sexp pcase-UPAT) sexp])))
   `(and (pred (pcase--flip cl-typep ',type))
         ,@(mapcar
            (lambda (field)
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 5da1cea..564a444 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -397,7 +397,7 @@ lexical closures as in Common Lisp.
          (macroexpand-all
            `(cl-symbol-macrolet
                 ,(mapcar (lambda (x)
-                           `(,(car x) (symbol-value ,(cl-caddr x))))
+                           `(,(car x) (symbol-value ,(nth 2 x))))
                          vars)
               ,@body)
           (cons (cons 'function #'cl--function-convert)
@@ -410,20 +410,20 @@ lexical closures as in Common Lisp.
         ;; dynamic scoping, since with lexical scoping we'd need
         ;; (let ((foo <val>)) ...foo...).
        `(progn
-           ,@(mapcar (lambda (x) `(defvar ,(cl-caddr x))) vars)
-           (let ,(mapcar (lambda (x) (list (cl-caddr x) (cadr x))) vars)
+           ,@(mapcar (lambda (x) `(defvar ,(nth 2 x))) vars)
+           (let ,(mapcar (lambda (x) (list (nth 2 x) (nth 1 x))) vars)
            ,(cl-sublis (mapcar (lambda (x)
-                              (cons (cl-caddr x)
-                                    `',(cl-caddr x)))
+                              (cons (nth 2 x)
+                                    `',(nth 2 x)))
                             vars)
                     ebody)))
       `(let ,(mapcar (lambda (x)
-                       (list (cl-caddr x)
+                       (list (nth 2 x)
                              `(make-symbol ,(format "--%s--" (car x)))))
                      vars)
          (setf ,@(apply #'append
                         (mapcar (lambda (x)
-                                  (list `(symbol-value ,(cl-caddr x)) (cadr 
x)))
+                                  (list `(symbol-value ,(nth 2 x)) (nth 1 x)))
                                 vars)))
          ,ebody))))
 
diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el
new file mode 100644
index 0000000..1d1780b
--- /dev/null
+++ b/lisp/emacs-lisp/cursor-sensor.el
@@ -0,0 +1,180 @@
+;;; cursor-sensor.el --- React to cursor movement  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Stefan Monnier <address@hidden>
+;; Keywords:
+
+;; This file is part of GNU Emacs.
+
+;; 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
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This package implements the `cursor-intangible' property, which is
+;; meant to replace the old `intangible' property.  To use it, just enable the
+;; `cursor-intangible-mode', after which this package will move point away from
+;; any position that has a non-nil `cursor-intangible' property.  This is only
+;; done just before redisplay happens, contrary to the old `intangible'
+;; property which was done at a much lower level.
+
+;;; Code:
+
+(defvar cursor-sensor-inhibit nil)
+
+(defun cursor-sensor--intangible-p (pos)
+  (let ((p (get-pos-property pos 'cursor-intangible)))
+    (if p
+        (let (a b)
+          (if (and (setq a (get-char-property pos 'cursor-intangible))
+                   (setq b (if (> pos (point-min))
+                               (get-char-property (1- pos) 
'cursor-intangible)))
+                   (not (eq a b)))
+              ;; If we're right between two different intangible thingies,
+              ;; we can stop here.  This is not quite consistent with the
+              ;; interpretation of "if it's sticky, then this boundary is
+              ;; itself intangible", but it's convenient (and it better matches
+              ;; the behavior of `intangible', making it easier to port code).
+              nil p))
+      p)))
+
+(defun cursor-sensor-tangible-pos (curpos window &optional second-chance)
+  (let ((newpos curpos))
+    (when (cursor-sensor--intangible-p newpos)
+      (let ((oldpos (window-parameter window 'cursor-intangible--last-point)))
+        (cond
+         ((or (and (integerp oldpos) (< oldpos newpos))
+              (eq newpos (point-min)))
+          (while
+              (when (< newpos (point-max))
+                (setq newpos
+                      (if (get-char-property newpos 'cursor-intangible)
+                          (next-single-char-property-change
+                           newpos 'cursor-intangible nil (point-max))
+                        (1+ newpos)))
+                (cursor-sensor--intangible-p newpos))))
+         (t ;; (>= oldpos newpos)
+          (while
+              (when (> newpos (point-min))
+                (setq newpos
+                      (if (get-char-property (1- newpos) 'cursor-intangible)
+                          (previous-single-char-property-change
+                           newpos 'cursor-intangible nil (point-min))
+                        (1- newpos)))
+                (cursor-sensor--intangible-p newpos)))))
+        (if (not (and (or (eq newpos (point-min)) (eq newpos (point-max)))
+                      (cursor-sensor--intangible-p newpos)))
+            ;; All clear, we're good to go.
+            newpos
+          ;; We're still on an intangible position because we bumped
+          ;; into an intangible BOB/EOB: try to move in the other direction.
+          (if second-chance
+              ;; Actually, we tried already and that failed!
+              curpos
+            (cursor-sensor-tangible-pos newpos window 'second-chance)))))))
+
+(defun cursor-sensor-move-to-tangible (window)
+  (let* ((curpos (window-point window))
+         (newpos (cursor-sensor-tangible-pos curpos window)))
+    (when newpos (set-window-point window newpos))
+    (set-window-parameter window 'cursor-intangible--last-point
+                          (or newpos curpos))))
+
+(defun cursor-sensor--move-to-tangible (window)
+  (unless cursor-sensor-inhibit
+    (cursor-sensor-move-to-tangible window)))
+
+;;;###autoload
+(define-minor-mode cursor-intangible-mode
+  "Keep cursor outside of any `cursor-intangible' text property."
+  nil nil nil
+  (if cursor-intangible-mode
+      (add-hook 'pre-redisplay-functions #'cursor-sensor--move-to-tangible
+                nil t)
+    (remove-hook 'pre-redisplay-functions #'cursor-sensor--move-to-tangible 
t)))
+
+;;; Detect cursor movement.
+
+(defun cursor-sensor--detect (window)
+  (unless cursor-sensor-inhibit
+    (let* ((point (window-point window))
+           ;; It's often desirable to make the cursor-sensor-functions property
+           ;; non-sticky on both ends, but that means get-pos-property might
+           ;; never see it.
+           (new (or (get-char-property point 'cursor-sensor-functions)
+                    (unless (bobp)
+                      (get-char-property (1- point) 
'cursor-sensor-functions))))
+           (old (window-parameter window 'cursor-sensor--last-state))
+           (oldposmark (car old))
+           (oldpos (or (if oldposmark (marker-position oldposmark))
+                       (point-min)))
+           (start (min oldpos point))
+           (end (max oldpos point)))
+      (unless (or (null old) (eq (marker-buffer oldposmark) (current-buffer)))
+        ;; `window' does not display the same buffer any more!
+        (setcdr old nil))
+      (if (or (and (null new) (null (cdr old)))
+              (and (eq new (cdr old))
+                   (eq (next-single-property-change
+                        start 'cursor-sensor-functions nil end)
+                       end)))
+          ;; Clearly nothing to do.
+          nil
+        ;; Maybe something to do.  Let's see exactly what needs to run.
+        (let* ((missing-p
+                (lambda (f)
+                  "Non-nil if F is missing somewhere between START and END."
+                  (let ((pos start)
+                        (missing nil))
+                    (while (< pos end)
+                      (setq pos (next-single-property-change
+                                 pos 'cursor-sensor-functions
+                                 nil end))
+                      (unless (memq f (get-char-property
+                                       pos 'cursor-sensor-functions))
+                        (setq missing t)))
+                    missing))))
+          (dolist (f (cdr old))
+            (unless (and (memq f new) (not (funcall missing-p f)))
+              (funcall f window oldpos 'left)))
+          (dolist (f new)
+            (unless (and (memq f (cdr old)) (not (funcall missing-p f)))
+              (funcall f window oldpos 'entered)))))
+
+      ;; Remember current state for next time.
+      ;; Re-read cursor-sensor-functions since the functions may have moved
+      ;; window-point!
+      (if old
+          (progn (move-marker (car old) point)
+                 (setcdr old new))
+        (set-window-parameter window 'cursor-sensor--last-state
+                              (cons (copy-marker point) new))))))
+
+;;;###autoload
+(define-minor-mode cursor-sensor-mode
+  "Handle the `cursor-sensor-functions' text property.
+This property should hold a list of functions which react to the motion
+of the cursor.  They're called with three arguments (WINDOW OLDPOS DIR)
+where WINDOW is the affected window, OLDPOS is the last known position of
+the cursor and DIR can be `left' or `entered' depending on whether the cursor 
is
+entering the area covered by the text-property property or leaving it."
+  nil nil nil
+  (if cursor-sensor-mode
+      (add-hook 'pre-redisplay-functions #'cursor-sensor--detect
+                nil t)
+    (remove-hook  'pre-redisplay-functions #'cursor-sensor--detect
+                t)))
+
+(provide 'cursor-sensor)
+;;; cursor-sensor.el ends here
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index aa7cdf9..98fb7e9 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -1725,6 +1725,17 @@ expressions; a `progn' form will be returned enclosing 
these forms."
           (t
            (error "Bad spec: %s" specs)))))
 
+       ((eq 'vector spec)
+       (if (vectorp form)
+           ;; Special case: match a vector with the specs.
+           (let ((result (edebug-match-sublist
+                          (edebug-new-cursor
+                           form (cdr (edebug-top-offset cursor)))
+                          (cdr specs))))
+             (edebug-move-cursor cursor)
+             (list (apply 'vector result)))
+         (edebug-no-match cursor "Expected" specs)))
+
        ((listp form)
        (prog1
            (list (edebug-match-sublist
@@ -1734,15 +1745,6 @@ expressions; a `progn' form will be returned enclosing 
these forms."
                   specs))
          (edebug-move-cursor cursor)))
 
-       ((and (eq 'vector spec) (vectorp form))
-       ;; Special case: match a vector with the specs.
-       (let ((result (edebug-match-sublist
-                      (edebug-new-cursor
-                       form (cdr (edebug-top-offset cursor)))
-                      (cdr specs))))
-         (edebug-move-cursor cursor)
-         (list (apply 'vector result))))
-
        (t (edebug-no-match cursor "Expected" specs)))
       )))
 
@@ -1869,8 +1871,13 @@ expressions; a `progn' form will be returned enclosing 
these forms."
   ;; Like body but body is wrapped in edebug-enter form.
   ;; The body is assumed to be executing inside of the function context.
   ;; Not to be used otherwise.
-  (let ((edebug-inside-func t))
-    (list (edebug-wrap-def-body (edebug-forms cursor)))))
+  (let* ((edebug-inside-func t)
+         (forms (edebug-forms cursor)))
+    ;; If there's no form, there's nothing to wrap!
+    ;; This happens to handle bug#20281, tho maybe a better fix would be to
+    ;; improve the `defun' spec.
+    (when forms
+      (list (edebug-wrap-def-body forms)))))
 
 
 ;;;; Edebug Form Specs
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 6fd9c14..59d8348 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -89,21 +89,8 @@ Currently under control of this var:
 (cl-defstruct (eieio--class
                (:constructor nil)
                (:constructor eieio--class-make (name &aux (tag 'defclass)))
-               (:type vector)
+               (:include cl--class)
                (:copier nil))
-  ;; We use an untagged cl-struct, with our own hand-made tag as first field
-  ;; (containing the symbol `defclass').  It would be better to use a normal
-  ;; cl-struct with its normal tag (e.g. so that cl-defstruct can define the
-  ;; predicate for us), but that breaks compatibility with .elc files compiled
-  ;; against older versions of EIEIO.
-  tag
-  ;; Fields we could inherit from cl--class (if we used a tagged cl-struct):
-  (name nil :type symbol)               ;The type name.
-  (docstring nil :type string)
-  (parents nil :type (or eieio--class (list-of eieio--class)))
-  (slots nil :type (vector cl-slot-descriptor))
-  (index-table nil :type hash-table)
-  ;; Fields specific to EIEIO classes:
   children
   initarg-tuples                  ;; initarg tuples list
   (class-slots nil :type eieio--slot)
@@ -152,12 +139,6 @@ Currently under control of this var:
       (or (eieio--class-v class) class)
     class))
 
-(defsubst eieio--class-p (class)
-  "Return non-nil if CLASS is a valid class object."
-  (condition-case nil
-      (eq (aref class 0) 'defclass)
-    (error nil)))
-
 (defun class-p (class)
   "Return non-nil if CLASS is a valid class vector.
 CLASS is a symbol."                     ;FIXME: Is it a vector or a symbol?
@@ -198,7 +179,7 @@ Return nil if that option doesn't exist."
 
 (define-obsolete-function-alias 'object-p 'eieio-object-p "25.1")
 
-(defsubst class-abstract-p (class)
+(defun class-abstract-p (class)
   "Return non-nil if CLASS is abstract.
 Abstract classes cannot be instantiated."
   (eieio--class-option (eieio--class-v class) :abstract))
@@ -673,10 +654,9 @@ the new child class."
       (let ((pslots (eieio--class-slots pcv))
             (pinit (eieio--class-initarg-tuples pcv)))
         (dotimes (i (length pslots))
-          (eieio--add-new-slot newc (cl--copy-slot-descriptor (aref pslots i))
-                               (car-safe (car pinit)) nil nil sn)
-          ;; Increment each value.
-          (setq pinit (cdr pinit))
+         (let* ((sd (cl--copy-slot-descriptor (aref pslots i)))
+                 (init (car (rassq (cl--slot-descriptor-name sd) pinit))))
+           (eieio--add-new-slot newc sd init nil nil sn))
           )) ;; while/let
       ;; Now duplicate all the class alloc slots.
       (let ((pcslots (eieio--class-class-slots pcv)))
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index bca53c0..1114595 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -348,6 +348,7 @@ variable name of the same name as the slot."
 Elements of FIELDS can be of the form (NAME UPAT) in which case the contents of
 field NAME is matched against UPAT, or they can be of the form NAME which
 is a shorthand for (NAME NAME)."
+  (declare (debug (&rest [&or (sexp pcase-UPAT) sexp])))
   (let ((is (make-symbol "table")))
     ;; FIXME: This generates a horrendous mess of redundant let bindings.
     ;; `pcase' needs to be improved somehow to introduce let-bindings more
diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el
index f9874d8..fec172d 100644
--- a/lisp/emacs-lisp/lisp-mnt.el
+++ b/lisp/emacs-lisp/lisp-mnt.el
@@ -436,8 +436,10 @@ This can be found in an RCS or SCCS header."
           ;; Look for an SCCS header
           ((re-search-forward
             (concat
-             (regexp-quote "@(#)")
-             (regexp-quote (file-name-nondirectory (buffer-file-name)))
+             "@(#)"
+             (if buffer-file-name
+                  (regexp-quote (file-name-nondirectory buffer-file-name))
+                "[^\t\n]*")
              "\t\\([012345679.]*\\)")
             header-max t)
            (match-string-no-properties 1)))))))
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 4c9a39f..26a21d5 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -181,22 +181,23 @@
             nil)))
     res))
 
-(defun lisp--el-non-funcall-position-p (&optional pos)
+(defun lisp--el-non-funcall-position-p (pos)
   "Heuristically determine whether POS is an evaluated position."
-  (setf pos (or pos (point)))
   (save-match-data
     (save-excursion
       (ignore-errors
         (goto-char pos)
         (or (eql (char-before) ?\')
-            (let ((parent
-                   (progn
-                     (up-list -1)
-                     (cond
+            (let* ((ppss (syntax-ppss))
+                   (paren-posns (nth 9 ppss))
+                   (parent
+                    (when paren-posns
+                      (goto-char (car (last paren-posns))) ;(up-list -1)
+                      (cond
                        ((ignore-errors
                           (and (eql (char-after) ?\()
-                               (progn
-                                 (up-list -1)
+                               (when (cdr paren-posns)
+                                 (goto-char (car (last paren-posns 2)))
                                  (looking-at "(\\_<let\\*?\\_>"))))
                         (goto-char (match-end 0))
                         'let)
@@ -217,6 +218,7 @@
                          (< (point) pos))))))))))
 
 (defun lisp--el-match-keyword (limit)
+  ;; FIXME: Move to elisp-mode.el.
   (catch 'found
     (while (re-search-forward "(\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>" limit t)
       (let ((sym (intern-soft (match-string 1))))
@@ -227,17 +229,6 @@
                              (match-beginning 0)))))
          (throw 'found t))))))
 
-(defun lisp--el-font-lock-flush-elisp-buffers (&optional file)
-  ;; Don't flush during load unless called from after-load-functions.
-  ;; In that case, FILE is non-nil.  It's somehow strange that
-  ;; load-in-progress is t when an after-load-function is called since
-  ;; that should run *after* the load...
-  (when (or (not load-in-progress) file)
-    (dolist (buf (buffer-list))
-      (with-current-buffer buf
-       (when (derived-mode-p 'emacs-lisp-mode)
-         (font-lock-flush))))))
-
 (pcase-let
     ((`(,vdefs ,tdefs
         ,el-defs-re ,cl-defs-re
@@ -582,10 +573,6 @@ font-lock keywords will not be case sensitive."
          (font-lock-syntactic-face-function
           . lisp-font-lock-syntactic-face-function)))
   (setq-local prettify-symbols-alist lisp--prettify-symbols-alist)
-  (when elisp
-    (add-hook 'after-load-functions #'lisp--el-font-lock-flush-elisp-buffers)
-    (setq-local electric-pair-text-pairs
-                (cons '(?\` . ?\') electric-pair-text-pairs)))
   (setq-local electric-pair-skip-whitespace 'chomp)
   (setq-local electric-pair-open-newline-between-pairs nil))
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 583598e..c69e15b 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -866,6 +866,8 @@ untar into a directory named DIR; otherwise, signal an 
error."
   (let* ((auto-name (format "%s-autoloads.el" name))
          ;;(ignore-name (concat name "-pkg.el"))
          (generated-autoload-file (expand-file-name auto-name pkg-dir))
+         ;; Silence `autoload-generate-file-autoloads'.
+         (noninteractive package--silence)
          (backup-inhibited t)
          (version-control 'never))
     (package-autoload-ensure-default-file generated-autoload-file)
@@ -1090,23 +1092,27 @@ function, call it with no arguments (instead of 
executing BODY),
 otherwise propagate the error.  For description of the other
 arguments see `package--with-work-buffer'."
   (declare (indent 3) (debug t))
-  `(if (or (not ,async)
-           (not (string-match-p "\\`https?:" ,location)))
-       (package--with-work-buffer ,location ,file ,@body)
-     (url-retrieve (concat ,location ,file)
-                   (lambda (status)
-                     (if (eq (car status) :error)
-                         (if (functionp ,async)
-                             (funcall ,async)
-                           (signal (cdar status) (cddr status)))
-                       (goto-char (point-min))
-                       (unless (search-forward "\n\n" nil 'noerror)
-                         (error "Invalid url response"))
-                       (delete-region (point-min) (point))
-                       ,@body)
-                     (kill-buffer (current-buffer)))
-                   nil
-                   'silent)))
+  (macroexp-let2* macroexp-copyable-p
+      ((async-1 async)
+       (file-1 file)
+       (location-1 location))
+    `(if (or (not ,async-1)
+             (not (string-match-p "\\`https?:" ,location-1)))
+         (package--with-work-buffer ,location-1 ,file-1 ,@body)
+       (url-retrieve (concat ,location-1 ,file-1)
+                     (lambda (status)
+                       (if (eq (car status) :error)
+                           (if (functionp ,async-1)
+                               (funcall ,async-1)
+                             (signal (cdar status) (cddr status)))
+                         (goto-char (point-min))
+                         (unless (search-forward "\n\n" nil 'noerror)
+                           (error "Invalid url response"))
+                         (delete-region (point-min) (point))
+                         ,@body)
+                       (kill-buffer (current-buffer)))
+                     nil
+                     'silent))))
 
 (defun package--check-signature-content (content string &optional sig-file)
   "Check signature CONTENT against STRING.
@@ -1195,6 +1201,8 @@ version higher than the one being used.  To check for 
package
 
 (defun package--build-compatibility-table ()
   "Build `package--compatibility-table' with `package--mapc'."
+  ;; Initialize the list of built-ins.
+  (require 'finder-inf nil t)
   ;; Build compat table.
   (setq package--compatibility-table (make-hash-table :test 'eq))
   (package--mapc #'package--add-to-compatibility-table))
@@ -1275,7 +1283,8 @@ Will throw an error if the archive version is too new."
   (let ((filename (expand-file-name file package-user-dir)))
     (when (file-exists-p filename)
       (with-temp-buffer
-        (insert-file-contents-literally filename)
+        (let ((coding-system-for-read 'utf-8))
+          (insert-file-contents filename))
         (let ((contents (read (current-buffer))))
           (if (> (car contents) package-archive-version)
               (error "Package archive version %d is higher than %d"
@@ -1311,9 +1320,12 @@ If successful, set `package-archive-contents'."
 (defun package-initialize (&optional no-activate)
   "Load Emacs Lisp packages, and activate them.
 The variable `package-load-list' controls which packages to load.
-If optional arg NO-ACTIVATE is non-nil, don't activate packages."
+If optional arg NO-ACTIVATE is non-nil, don't activate packages.
+If `user-init-file' does not mention `(package-initialize)', add
+it to the file."
   (interactive)
   (setq package-alist nil)
+  (package--ensure-init-file)
   (package-load-all-descriptors)
   (package-read-all-archive-contents)
   (unless no-activate
@@ -1331,11 +1343,26 @@ If optional arg NO-ACTIVATE is non-nil, don't activate 
packages."
 (defvar package--downloads-in-progress nil
   "List of in-progress asynchronous downloads.")
 
+(defvar package--all-keywords nil
+  "List of known keywords.
+Generated by `package-all-keywords'.  Reset to nil whenever the
+package archives are retrieved.")
+
 (declare-function epg-check-configuration "epg-config"
                   (config &optional minimum-version))
 (declare-function epg-configuration "epg-config" ())
 (declare-function epg-import-keys-from-file "epg" (context keys))
 
+(defvar package--silence nil)
+
+(defun package--message (format &rest args)
+  "Like `message', except sometimes don't print to minibuffer.
+If the variable `package--silence' is non-nil, the message is not
+displayed on the minibuffer."
+  (apply #'message format args)
+  (when package--silence
+    (message nil)))
+
 ;;;###autoload
 (defun package-import-keyring (&optional file)
   "Import keys from FILE."
@@ -1346,9 +1373,9 @@ If optional arg NO-ACTIVATE is non-nil, don't activate 
packages."
     (with-file-modes 448
       (make-directory homedir t))
     (setf (epg-context-home-directory context) homedir)
-    (message "Importing %s..." (file-name-nondirectory file))
+    (package--message "Importing %s..." (file-name-nondirectory file))
     (epg-import-keys-from-file context file)
-    (message "Importing %s...done" (file-name-nondirectory file))))
+    (package--message "Importing %s...done" (file-name-nondirectory file))))
 
 (defvar package--post-download-archives-hook nil
   "Hook run after the archive contents are downloaded.
@@ -1364,8 +1391,8 @@ Once it's empty, run 
`package--post-download-archives-hook'."
         (remove entry package--downloads-in-progress))
   ;; If this was the last download, run the hook.
   (unless package--downloads-in-progress
-    (package--build-compatibility-table)
     (package-read-all-archive-contents)
+    (package--build-compatibility-table)
     ;; We message before running the hook, so the hook can give
     ;; messages as well.
     (message "Package refresh done")
@@ -1393,8 +1420,12 @@ similar to an entry in `package-alist'.  Save the cached 
copy to
           ;; If we care, check it (perhaps async) and *then* write the file.
           (package--check-signature
            location file content async
+           ;; This function will be called after signature checking.
            (lambda (&optional good-sigs)
              (unless (or good-sigs (eq package-check-signature 
'allow-unsigned))
+               ;; Even if the sig fails, this download is done, so
+               ;; remove it from the in-progress list.
+               (package--update-downloads-in-progress archive)
                (error "Unsigned archive `%s'" name))
              ;; Write out the archives file.
              (write-region content nil local-file nil 'silent)
@@ -1410,10 +1441,16 @@ This populates `package-archive-contents'.  If ASYNC is 
non-nil,
 perform the downloads asynchronously."
   ;; The downloaded archive contents will be read as part of
   ;; `package--update-downloads-in-progress'.
-  (setq package--downloads-in-progress package-archives)
+  (setq package--downloads-in-progress
+        (append package-archives
+                package--downloads-in-progress))
   (dolist (archive package-archives)
     (condition-case-unless-debug nil
-        (package--download-one-archive archive "archive-contents" async)
+        (package--download-one-archive
+         archive "archive-contents"
+         ;; Called if the async download fails
+         (when async
+           (lambda () (package--update-downloads-in-progress archive))))
       (error (message "Failed to download `%s' archive."
                (car archive))))))
 
@@ -1426,18 +1463,19 @@ and make them available for download.
 Optional argument ASYNC specifies whether to perform the
 downloads in the background."
   (interactive)
-  ;; FIXME: Do it asynchronously.
   (unless (file-exists-p package-user-dir)
     (make-directory package-user-dir t))
+  (setq package--all-keywords nil)
   (let ((default-keyring (expand-file-name "package-keyring.gpg"
-                                           data-directory)))
+                                           data-directory))
+        (package--silence async))
     (when (and package-check-signature (file-exists-p default-keyring))
       (condition-case-unless-debug error
           (progn
             (epg-check-configuration (epg-configuration))
             (package-import-keyring default-keyring))
-        (error (message "Cannot import default keyring: %S" (cdr error))))))
-  (package--download-and-read-archives async))
+        (error (message "Cannot import default keyring: %S" (cdr error)))))
+    (package--download-and-read-archives async)))
 
 
 ;;; Dependency Management
@@ -1479,7 +1517,7 @@ SEEN is used internally to detect infinite recursion."
             ;; we re-add it (along with its dependencies) at an earlier place
             ;; below (bug#16994).
             (if (memq already seen)     ;Avoid inf-loop on dependency cycles.
-                (message "Dependency cycle going through %S"
+                (package--message "Dependency cycle going through %S"
                          (package-desc-full-name already))
               (setq packages (delq already packages))
               (setq already nil))
@@ -1543,15 +1581,20 @@ Used to populate `package-selected-packages'."
              unless (memq name dep-list)
              collect name)))
 
+(defun package--save-selected-packages (value)
+  "Set and save `package-selected-packages' to VALUE."
+  (let ((save-silently package--silence))
+    (customize-save-variable
+     'package-selected-packages
+     (setq package-selected-packages value))))
+
 (defun package--user-selected-p (pkg)
   "Return non-nil if PKG is a package was installed by the user.
 PKG is a package name.
 This looks into `package-selected-packages', populating it first
 if it is still empty."
   (unless (consp package-selected-packages)
-    (customize-save-variable
-     'package-selected-packages
-     (setq package-selected-packages (package--find-non-dependencies))))
+    (package--save-selected-packages (package--find-non-dependencies)))
   (memq pkg package-selected-packages))
 
 (defun package--get-deps (pkg &optional only)
@@ -1644,43 +1687,58 @@ if all the in-between dependencies are also in 
PACKAGE-LIST."
   "Return the archive containing the package NAME."
   (cdr (assoc (package-desc-archive desc) package-archives)))
 
-(defun package-install-from-archive (pkg-desc)
-  "Download and install a tar package."
+(defun package-install-from-archive (pkg-desc &optional async callback)
+  "Download and install a tar package.
+If ASYNC is non-nil, perform the download asynchronously.
+If CALLBACK is non-nil, call it with no arguments once the
+operation is done."
   ;; This won't happen, unless the archive is doing something wrong.
   (when (eq (package-desc-kind pkg-desc) 'dir)
     (error "Can't install directory package from archive"))
   (let* ((location (package-archive-base pkg-desc))
          (file (concat (package-desc-full-name pkg-desc)
-                       (package-desc-suffix pkg-desc)))
-         (sig-file (concat file ".sig"))
-         good-signatures pkg-descs)
-    (package--with-work-buffer location file
-      (if (and package-check-signature
-               (not (member (package-desc-archive pkg-desc)
-                            package-unsigned-archives)))
-          (if (package--archive-file-exists-p location sig-file)
-              (setq good-signatures (package--check-signature location file))
-            (unless (eq package-check-signature 'allow-unsigned)
-              (error "Unsigned package: `%s'"
-                     (package-desc-name pkg-desc)))))
-      (package-unpack pkg-desc))
-    ;; Here the package has been installed successfully, mark it as
-    ;; signed if appropriate.
-    (when good-signatures
-      ;; Write out good signatures into NAME-VERSION.signed file.
-      (write-region (mapconcat #'epg-signature-to-string good-signatures "\n")
-                    nil
-                    (expand-file-name
-                     (concat (package-desc-full-name pkg-desc)
-                             ".signed")
-                     package-user-dir)
-                    nil 'silent)
-      ;; Update the old pkg-desc which will be shown on the description buffer.
-      (setf (package-desc-signed pkg-desc) t)
-      ;; Update the new (activated) pkg-desc as well.
-      (setq pkg-descs (cdr (assq (package-desc-name pkg-desc) package-alist)))
-      (if pkg-descs
-          (setf (package-desc-signed (car pkg-descs)) t)))))
+                       (package-desc-suffix pkg-desc))))
+    (package--with-work-buffer-async location file async
+      (if (or (not package-check-signature)
+              (member (package-desc-archive pkg-desc)
+                      package-unsigned-archives))
+          ;; If we don't care about the signature, unpack and we're
+          ;; done.
+          (progn (let ((save-silently async))
+                   (package-unpack pkg-desc))
+                 (funcall callback))
+        ;; If we care, check it and *then* write the file.
+        (let ((content (buffer-string)))
+          (package--check-signature
+           location file content async
+           ;; This function will be called after signature checking.
+           (lambda (&optional good-sigs)
+             (unless (or good-sigs (eq package-check-signature 
'allow-unsigned))
+               ;; Even if the sig fails, this download is done, so
+               ;; remove it from the in-progress list.
+               (error "Unsigned package: `%s'"
+                 (package-desc-name pkg-desc)))
+             ;; Signature checked, unpack now.
+             (with-temp-buffer (insert content)
+                               (let ((save-silently async))
+                                 (package-unpack pkg-desc)))
+             ;; Here the package has been installed successfully, mark it as
+             ;; signed if appropriate.
+             (when good-sigs
+               ;; Write out good signatures into NAME-VERSION.signed file.
+               (write-region (mapconcat #'epg-signature-to-string good-sigs 
"\n")
+                             nil
+                             (expand-file-name
+                              (concat (package-desc-full-name pkg-desc) 
".signed")
+                              package-user-dir)
+                             nil 'silent)
+               ;; Update the old pkg-desc which will be shown on the 
description buffer.
+               (setf (package-desc-signed pkg-desc) t)
+               ;; Update the new (activated) pkg-desc as well.
+               (when-let ((pkg-descs (cdr (assq (package-desc-name pkg-desc) 
package-alist))))
+                 (setf (package-desc-signed (car pkg-descs)) t)))
+             (when (functionp callback)
+               (funcall callback)))))))))
 
 (defun package-installed-p (package &optional min-version)
   "Return true if PACKAGE, of MIN-VERSION or newer, is installed.
@@ -1701,22 +1759,75 @@ If PACKAGE is a package-desc object, MIN-VERSION is 
ignored."
      ;; Also check built-in packages.
      (package-built-in-p package min-version))))
 
-(defun package-download-transaction (packages)
+(defun package-download-transaction (packages &optional async callback)
   "Download and install all the packages in PACKAGES.
 PACKAGES should be a list of package-desc.
+If ASYNC is non-nil, perform the downloads asynchronously.
+If CALLBACK is non-nil, call it with no arguments once the
+entire operation is done.
+
 This function assumes that all package requirements in
 PACKAGES are satisfied, i.e. that PACKAGES is computed
 using `package-compute-transaction'."
-  (mapc #'package-install-from-archive packages))
+  (cond
+   (packages (package-install-from-archive
+              (car packages)
+              async
+              (lambda ()
+                (package-download-transaction (cdr packages))
+                (when (functionp callback)
+                  (funcall callback)))))
+   (callback (funcall callback))))
+
+(defun package--ensure-init-file ()
+  "Ensure that the user's init file calls `package-initialize'."
+  ;; Don't mess with the init-file from "emacs -Q".
+  (when user-init-file
+    (let* ((buffer (find-buffer-visiting user-init-file))
+           (contains-init
+            (if buffer
+                (with-current-buffer buffer
+                  (save-excursion
+                    (save-restriction
+                      (widen)
+                      (goto-char (point-min))
+                      (search-forward "(package-initialize)" nil 'noerror))))
+              (with-temp-buffer
+                (insert-file-contents user-init-file)
+                (goto-char (point-min))
+                (search-forward "(package-initialize)" nil 'noerror)))))
+      (unless contains-init
+        (with-current-buffer (or buffer
+                                 (let ((delay-mode-hooks t))
+                                   (find-file-noselect user-init-file)))
+          (save-excursion
+            (save-restriction
+              (widen)
+              (goto-char (point-min))
+              (insert
+               ";; Added by Package.el.  This must come before configurations 
of\n"
+               ";; installed packages.  Don't delete this line.  If you don't 
want it,\n"
+               ";; just comment it out by adding a semicolon to the start of 
the line.\n"
+               ";; You may delete these explanatory comments.\n"
+               "(package-initialize)\n")
+              (unless (looking-at-p "$")
+                (insert "\n"))
+              (let ((file-precious-flag t))
+                (save-buffer))
+              (unless buffer
+                (kill-buffer (current-buffer))))))))))
 
 ;;;###autoload
-(defun package-install (pkg &optional dont-select)
+(defun package-install (pkg &optional dont-select async callback)
   "Install the package PKG.
 PKG can be a package-desc or the package name of one the available packages
 in an archive in `package-archives'.  Interactively, prompt for its name.
 
 If called interactively or if DONT-SELECT nil, add PKG to
 `package-selected-packages'.
+If ASYNC is non-nil, perform the downloads asynchronously.
+If CALLBACK is non-nil, call it with no arguments once the
+entire operation is done.
 
 If PKG is a package-desc and it is already installed, don't try
 to install it but still mark it as selected."
@@ -1741,17 +1852,16 @@ to install it but still mark it as selected."
                   (package-desc-name pkg)
                 pkg)))
     (unless (or dont-select (package--user-selected-p name))
-      (customize-save-variable 'package-selected-packages
-                               (cons name package-selected-packages))))
-  (if (package-desc-p pkg)
-      (if (package-installed-p pkg)
-          (message "`%s' is already installed" (package-desc-full-name pkg))
-        (package-download-transaction
-         (package-compute-transaction (list pkg)
-                                      (package-desc-reqs pkg))))
-    (package-download-transaction
-     (package-compute-transaction ()
-                                  (list (list pkg))))))
+      (package--save-selected-packages
+       (cons name package-selected-packages))))
+  (if-let ((transaction
+            (if (package-desc-p pkg)
+                (unless (package-installed-p pkg)
+                  (package-compute-transaction (list pkg)
+                                               (package-desc-reqs pkg)))
+              (package-compute-transaction () (list (list pkg))))))
+      (package-download-transaction transaction async callback)
+    (package--message "`%s' is already installed" (package-desc-full-name 
pkg))))
 
 (defun package-strip-rcs-id (str)
   "Strip RCS version ID from the version string STR.
@@ -1800,8 +1910,8 @@ Downloads and installs required packages as needed."
     ;; Install the package itself.
     (package-unpack pkg-desc)
     (unless (package--user-selected-p name)
-      (customize-save-variable 'package-selected-packages
-                               (cons name package-selected-packages)))
+      (package--save-selected-packages
+       (cons name package-selected-packages)))
     pkg-desc))
 
 ;;;###autoload
@@ -1868,8 +1978,7 @@ If NOSAVE is non-nil, the package is not removed from
                ;; Don't deselect if this is an older version of an
                ;; upgraded package.
                (package--newest-p pkg-desc))
-      (customize-save-variable
-       'package-selected-packages (remove name package-selected-packages)))
+      (package--save-selected-packages (remove name 
package-selected-packages)))
     (cond ((not (string-prefix-p (file-name-as-directory
                                   (expand-file-name package-user-dir))
                                  (expand-file-name dir)))
@@ -1894,7 +2003,7 @@ If NOSAVE is non-nil, the package is not removed from
              (delete pkg-desc pkgs)
              (unless (cdr pkgs)
                (setq package-alist (delq pkgs package-alist))))
-           (message "Package `%s' deleted." (package-desc-full-name 
pkg-desc))))))
+           (package--message "Package `%s' deleted." (package-desc-full-name 
pkg-desc))))))
 
 ;;;###autoload
 (defun package-reinstall (pkg)
@@ -2241,7 +2350,7 @@ will be deleted."
     map)
   "Local keymap for `package-menu-mode' buffers.")
 
-(defvar-local package-menu--new-package-list nil
+(defvar package-menu--new-package-list nil
   "List of newly-available packages since `list-packages' was last called.")
 
 (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu"
@@ -2249,6 +2358,7 @@ will be deleted."
 Letters do not insert themselves; instead, they are commands.
 \\<package-menu-mode-map>
 \\{package-menu-mode-map}"
+  (setq mode-line-process '(package--downloads-in-progress ":Loading"))
   (setq tabulated-list-format
         `[("Package" 18 package-menu--name-predicate)
           ("Version" 13 nil)
@@ -2387,11 +2497,11 @@ KEYWORDS should be nil or a list of keywords."
 
 (defun package-all-keywords ()
   "Collect all package keywords"
-  (let (keywords)
+  (unless package--all-keywords
     (package--mapc (lambda (desc)
                      (let* ((desc-keywords (and desc (package-desc--keywords 
desc))))
-                       (setq keywords (append keywords desc-keywords)))))
-    keywords))
+                       (setq package--all-keywords (append desc-keywords 
package--all-keywords))))))
+  package--all-keywords)
 
 (defun package--mapc (function &optional packages)
   "Call FUNCTION for all known PACKAGES.
@@ -2430,12 +2540,14 @@ Built-in packages are converted with 
`package--from-builtin'."
   "Test if package DESC has any of the given KEYWORDS.
 When none are given, the package matches."
   (if keywords
-      (let* ((desc-keywords (and desc (package-desc--keywords desc)))
-             found)
-        (dolist (k keywords)
-          (when (and (not found)
-                     (member k desc-keywords))
-            (setq found t)))
+      (let ((desc-keywords (and desc (package-desc--keywords desc)))
+            found)
+        (while (and (not found) keywords)
+          (let ((k (pop keywords)))
+            (setq found
+                  (or (string= k (concat "arc:" (package-desc-archive desc)))
+                      (string= k (concat "status:" (package-desc-status desc)))
+                      (member k desc-keywords)))))
         found)
     t))
 
@@ -2499,8 +2611,9 @@ This fetches the contents of each archive specified in
   (interactive)
   (unless (derived-mode-p 'package-menu-mode)
     (user-error "The current buffer is not a Package Menu"))
-  (package-refresh-contents)
-  (package-menu--generate t t))
+  (setq package-menu--old-archive-contents package-archive-contents)
+  (setq package-menu--new-package-list nil)
+  (package-refresh-contents package-menu-async))
 
 (defun package-menu-describe-package (&optional button)
   "Describe the current package.
@@ -2549,10 +2662,31 @@ If optional arg BUTTON is non-nil, describe its 
associated package."
           (tabulated-list-put-tag "D" t)
         (forward-line 1)))))
 
+(defvar package--quick-help-keys
+  '(("install," "delete," "unmark," ("execute" . 1))
+    ("next," "previous")
+    ("refresh-contents," "g-redisplay," "filter," "help")))
+
+(defun package--prettify-quick-help-key (desc)
+  "Prettify DESC to be displayed as a help menu."
+  (if (listp desc)
+      (if (listp (cdr desc))
+          (mapconcat #'package--prettify-quick-help-key desc "   ")
+        (let ((place (cdr desc))
+              (out (car desc)))
+          ;; (setq out (propertize out 'face 'paradox-comment-face))
+          (add-text-properties place (1+ place)
+                               '(face (bold font-lock-function-name-face))
+                               out)
+          out))
+    (package--prettify-quick-help-key (cons desc 0))))
+
 (defun package-menu-quick-help ()
-  "Show short key binding help for package-menu-mode."
+  "Show short key binding help for `package-menu-mode'.
+The full list of keys can be viewed with \\[describe-mode]."
   (interactive)
-  (message "n-ext, i-nstall, d-elete, u-nmark, x-ecute, r-efresh, h-elp"))
+  (message (mapconcat #'package--prettify-quick-help-key
+                      package--quick-help-keys "\n")))
 
 (define-obsolete-function-alias
   'package-menu-view-commentary 'package-menu-describe-package "24.1")
@@ -2632,6 +2766,75 @@ call will upgrade the package."
                (length upgrades)
                (if (= (length upgrades) 1) "" "s")))))
 
+(defun package-menu--list-to-prompt (packages)
+  "Return a string listing PACKAGES that's usable in a prompt.
+PACKAGES is a list of `package-desc' objects.
+Formats the returned string to be usable in a minibuffer
+prompt (see `package-menu--prompt-transaction-p')."
+  (cond
+   ;; None
+   ((not packages) "")
+   ;; More than 1
+   ((cdr packages)
+    (format "these %d packages (%s)"
+      (length packages)
+      (mapconcat #'package-desc-full-name packages ", ")))
+   ;; Exactly 1
+   (t (format "package `%s'"
+        (package-desc-full-name (car packages))))))
+
+(defun package-menu--prompt-transaction-p (install delete)
+  "Prompt the user about installing INSTALL and deleting DELETE.
+INSTALL and DELETE are lists of `package-desc'.  Either may be
+nil, but not both."
+  (let* ((upg (cl-intersection install delete :key #'package-desc-name))
+         (ins (cl-set-difference install upg :key #'package-desc-name))
+         (del (cl-set-difference delete upg :key #'package-desc-name)))
+    (y-or-n-p
+     (concat
+      (when del "Delete ")
+      (package-menu--list-to-prompt del)
+      (when (and del ins)
+        (if upg "; " "; and "))
+      (when ins "Install ")
+      (package-menu--list-to-prompt ins)
+      (when (and upg (or ins del)) "; and ")
+      (when upg "Upgrade ")
+      (package-menu--list-to-prompt upg)
+      "? "))))
+
+(defun package-menu--perform-transaction (install-list delete-list &optional 
async)
+  "Install packages in INSTALL-LIST and delete DELETE-LIST.
+If ASYNC is non-nil, perform the installation downloads
+asynchronously."
+  ;; While there are packages to install, call `package-install' on
+  ;; the next one and defer deletion to the callback function.
+  (if install-list
+      (let* ((pkg (car install-list))
+             (rest (cdr install-list))
+             ;; Don't mark as selected if it's a new version of an
+             ;; installed package.
+             (dont-mark (and (not (package-installed-p pkg))
+                             (package-installed-p
+                              (package-desc-name pkg)))))
+        (package-install
+         pkg dont-mark async
+         (lambda () (package-menu--perform-transaction rest delete-list 
async))))
+    ;; Once there are no more packages to install, proceed to
+    ;; deletion.
+    (let ((package--silence async))
+      (dolist (elt (package--sort-by-dependence delete-list))
+        (condition-case-unless-debug err
+            (package-delete elt)
+          (error (message (cadr err)))))
+      (when package-selected-packages
+        (when-let ((removable (package--removable-packages)))
+          (package--message "These %d packages are no longer needed, type `M-x 
package-autoremove' to remove them (%s)"
+                            (length removable)
+                            (mapconcat #'symbol-name removable ", ")))))
+    (message "Transaction done")
+    (package-menu--post-refresh)))
+
 (defun package-menu-execute (&optional noquery)
   "Perform marked Package Menu actions.
 Packages marked for installation are downloaded and installed;
@@ -2653,54 +2856,14 @@ Optional argument NOQUERY non-nil means do not ask the 
user to confirm."
                 ((eq cmd ?I)
                  (push pkg-desc install-list))))
         (forward-line)))
-    (when install-list
-      (if (or
-           noquery
-           (yes-or-no-p
-            (if (= (length install-list) 1)
-                (format "Install package `%s'? "
-                        (package-desc-full-name (car install-list)))
-              (format "Install these %d packages (%s)? "
-                      (length install-list)
-                      (mapconcat #'package-desc-full-name
-                                 install-list ", ")))))
-          (mapc (lambda (p)
-                  ;; Don't mark as selected if it's a new version of
-                  ;; an installed package.
-                  (package-install p (and (not (package-installed-p p))
-                                          (package-installed-p
-                                           (package-desc-name p)))))
-                install-list)))
-    ;; Delete packages, prompting if necessary.
-    (when delete-list
-      (if (or
-           noquery
-           (yes-or-no-p
-           (if (= (length delete-list) 1)
-               (format "Delete package `%s'? "
-                       (package-desc-full-name (car delete-list)))
-             (format "Delete these %d packages (%s)? "
-                     (length delete-list)
-                     (mapconcat #'package-desc-full-name
-                                delete-list ", ")))))
-          (dolist (elt (package--sort-by-dependence delete-list))
-            (condition-case-unless-debug err
-                (package-delete elt)
-              (error (message (cadr err)))))
-        (error "Aborted")))
-    (if (not (or delete-list install-list))
-        (message "No operations specified.")
-      (when package-selected-packages
-        (let ((removable (package--removable-packages)))
-          (when (and removable
-                     (y-or-n-p
-                      (format "These %d packages are no longer needed, delete 
them (%s)? "
-                              (length removable)
-                              (mapconcat #'symbol-name removable ", "))))
-            ;; We know these are removable, so we can use force instead of 
sorting them.
-            (mapc (lambda (p) (package-delete (cadr (assq p package-alist)) 
'force 'nosave))
-                  removable))))
-      (package-menu--generate t t))))
+    (unless (or delete-list install-list)
+      (user-error "No operations specified"))
+    (when (or noquery
+              (package-menu--prompt-transaction-p install-list delete-list))
+      (message "Transaction started")
+      ;; This calls `package-menu--generate' after everything's done.
+      (package-menu--perform-transaction
+       install-list delete-list package-menu-async))))
 
 (defun package-menu--version-predicate (A B)
   (let ((vA (or (aref (cadr A) 1)  '(0)))
@@ -2749,7 +2912,7 @@ Optional argument NOQUERY non-nil means do not ask the 
user to confirm."
   (string< (or (package-desc-archive (car A)) "")
            (or (package-desc-archive (car B)) "")))
 
-(defvar-local package-menu--old-archive-contents nil
+(defvar package-menu--old-archive-contents nil
   "`package-archive-contents' before the latest refresh.")
 
 (defun package-menu--populate-new-package-list ()
@@ -2773,9 +2936,8 @@ Store this list in `package-menu--new-package-list'."
 
 (defun package-menu--post-refresh ()
   "Check for new packages, revert the *Packages* buffer, and check for 
upgrades.
-This function is called after `package-refresh-contents' is done.
-It goes in `package--post-download-archives-hook', so that it
-works with async refresh as well."
+This function is called after `package-refresh-contents' and
+after `package-menu--perform-transaction'."
   (package-menu--populate-new-package-list)
   (let ((buf (get-buffer "*Packages*")))
     (when (buffer-live-p buf)
@@ -2785,9 +2947,8 @@ works with async refresh as well."
 
 (defcustom package-menu-async t
   "If non-nil, package-menu will use async operations when possible.
-Currently, only the refreshing of archive contents supports
-asynchronous operations.  Package transactions are still done
-synchronously."
+This includes refreshing archive contents as well as installing
+packages."
   :type 'boolean
   :group 'package)
 
@@ -2806,17 +2967,17 @@ The list is displayed in a buffer named `*Packages*'."
   (add-hook 'package--post-download-archives-hook
             #'package-menu--post-refresh)
 
-  (unless no-fetch
-    (setq package-menu--old-archive-contents package-archive-contents)
-    (setq package-menu--new-package-list nil)
-    ;; Fetch the remote list of packages.
-    (package-refresh-contents package-menu-async))
-
   ;; Generate the Package Menu.
   (let ((buf (get-buffer-create "*Packages*")))
     (with-current-buffer buf
       (package-menu-mode)
-      (package-menu--generate nil t))
+
+      ;; Fetch the remote list of packages.
+      (unless no-fetch (package-menu-refresh))
+
+      ;; If we're not async, this would be redundant.
+      (when package-menu-async
+        (package-menu--generate nil t)))
     ;; The package menu buffer has keybindings.  If the user types
     ;; `M-x list-packages', that suggests it should become current.
     (switch-to-buffer buf)))
@@ -2849,9 +3010,17 @@ shown."
 (defun package-menu-filter (keyword)
   "Filter the *Packages* buffer.
 Show only those items that relate to the specified KEYWORD.
+KEYWORD can be a string or a list of strings.  If it is a list, a
+package will be displayed if it matches any of the keywords.
+Interactively, it is a list of strings separated by commas.
+
 To restore the full package list, type `q'."
-  (interactive (list (completing-read "Keyword: " (package-all-keywords))))
-  (package-show-package-list t (list keyword)))
+  (interactive
+   (list (completing-read-multiple
+          "Keywords (comma separated): " (package-all-keywords))))
+  (package-show-package-list t (if (stringp keyword)
+                                   (list keyword)
+                                 keyword)))
 
 (defun package-list-packages-no-fetch ()
   "Display a list of packages.
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 3a2fa4f..978c3f0 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -75,22 +75,32 @@
   (&or symbolp
        ("or" &rest pcase-UPAT)
        ("and" &rest pcase-UPAT)
-       ("`" pcase-QPAT)
        ("guard" form)
        ("let" pcase-UPAT form)
-       ("pred"
-        &or lambda-expr
-        ;; Punt on macros/special forms.
-        (functionp &rest form)
-        sexp)
+       ("pred" pcase-FUN)
+       ("app" pcase-FUN pcase-UPAT)
+       pcase-MACRO
        sexp))
 
 (def-edebug-spec
-  pcase-QPAT
-  (&or ("," pcase-UPAT)
-       (pcase-QPAT . pcase-QPAT)
+  pcase-FUN
+  (&or lambda-expr
+       ;; Punt on macros/special forms.
+       (functionp &rest form)
        sexp))
 
+(def-edebug-spec pcase-MACRO pcase--edebug-match-macro)
+
+(defun pcase--edebug-match-macro (cursor)
+  (let (specs)
+    (mapatoms
+     (lambda (s)
+       (let ((m (get s 'pcase-macroexpander)))
+        (when (and m (get-edebug-spec m))
+          (push (cons (symbol-name s) (get-edebug-spec m))
+                specs)))))
+    (edebug-match cursor (cons '&or specs))))
+
 ;;;###autoload
 (defmacro pcase (exp &rest cases)
   "Perform ML-style pattern matching on EXP.
@@ -253,6 +263,7 @@ of the form (UPAT EXP)."
             (push (list (car binding) tmpvar) matches)))))
       `(let ,(nreverse bindings) (pcase-let* ,matches ,@body)))))
 
+;;;###autoload
 (defmacro pcase-dolist (spec &rest body)
   (declare (indent 1) (debug ((pcase-UPAT form) body)))
   (if (pcase--trivial-upat-p (car spec))
@@ -362,11 +373,14 @@ of the form (UPAT EXP)."
 (defmacro pcase-defmacro (name args &rest body)
   "Define a pcase UPattern macro."
   (declare (indent 2) (debug defun) (doc-string 3))
-  (let ((fsym (intern (format "%s--pcase-macroexpander" name))))
-    ;; Add the function via `fsym', so that an autoload cookie placed
-    ;;  on a pcase-defmacro will cause the macro to be loaded on demand.
+  ;; Add the function via `fsym', so that an autoload cookie placed
+  ;; on a pcase-defmacro will cause the macro to be loaded on demand.
+  (let ((fsym (intern (format "%s--pcase-macroexpander" name)))
+       (decl (assq 'declare body)))
+    (when decl (setq body (remove decl body)))
     `(progn
        (defun ,fsym ,args ,@body)
+       (put ',fsym 'edebug-form-spec ',(cadr (assq 'debug decl)))
        (put ',name 'pcase-macroexpander #',fsym))))
 
 (defun pcase--match (val upat)
@@ -828,6 +842,13 @@ Otherwise, it defers to REST which is a list of branches 
of the form
        (t (error "Unknown internal pattern `%S'" upat)))))
    (t (error "Incorrect MATCH %S" (car matches)))))
 
+(def-edebug-spec
+  pcase-QPAT
+  (&or ("," pcase-UPAT)
+       (pcase-QPAT . pcase-QPAT)
+       (vector &rest pcase-QPAT)
+       sexp))
+
 (pcase-defmacro \` (qpat)
   "Backquote-style pcase patterns.
 QPAT can take the following forms:
@@ -837,6 +858,7 @@ QPAT can take the following forms:
   ,UPAT                 matches if the UPattern UPAT matches.
   STRING                matches if the object is `equal' to STRING.
   ATOM                  matches if the object is `eq' to ATOM."
+  (declare (debug (pcase-QPAT)))
   (cond
    ((eq (car-safe qpat) '\,) (cadr qpat))
    ((vectorp qpat)
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 20af59f..5202106 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -965,20 +965,20 @@ CHAR
      matches space and tab only.
 
 `graphic', `graph'
-     matches graphic characters--everything except ASCII control chars,
-     space, and DEL.
+     matches graphic characters--everything except whitespace, ASCII
+     and non-ASCII control characters, surrogates, and codepoints
+     unassigned by Unicode.
 
 `printing', `print'
-     matches printing characters--everything except ASCII control chars
-     and DEL.
+     matches whitespace and graphic characters.
 
 `alphanumeric', `alnum'
-     matches letters and digits.  (But at present, for multibyte characters,
-     it matches anything that has word syntax.)
+     matches alphabetic characters and digits.  (For multibyte characters,
+     it matches according to Unicode character properties.)
 
 `letter', `alphabetic', `alpha'
-     matches letters.  (But at present, for multibyte characters,
-     it matches anything that has word syntax.)
+     matches alphabetic characters.  (For multibyte characters,
+     it matches according to Unicode character properties.)
 
 `ascii'
      matches ASCII (unibyte) characters.
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index c5f5906..320ee20 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -4,7 +4,7 @@
 
 ;; Author: Nicolas Petton <address@hidden>
 ;; Keywords: sequences
-;; Version: 1.3
+;; Version: 1.4
 ;; Package: seq
 
 ;; Maintainer: address@hidden
@@ -221,7 +221,7 @@ TYPE must be one of following symbols: vector, string or 
list.
     (`vector (apply #'vconcat seqs))
     (`string (apply #'concat seqs))
     (`list (apply #'append (append seqs '(nil))))
-    (t (error "Not a sequence type name: %s" type))))
+    (t (error "Not a sequence type name: %S" type))))
 
 (defun seq-mapcat (function seq &optional type)
   "Concatenate the result of applying FUNCTION to each element of SEQ.
@@ -240,6 +240,26 @@ negative integer or 0, nil is returned."
         (setq seq (seq-drop seq n)))
       (nreverse result))))
 
+(defun seq-intersection (seq1 seq2 &optional testfn)
+  "Return a list of the elements that appear in both SEQ1 and SEQ2.
+Equality is defined by TESTFN if non-nil or by `equal' if nil."
+  (seq-reduce (lambda (acc elt)
+                (if (seq-contains-p seq2 elt testfn)
+                    (cons elt acc)
+                  acc))
+              (seq-reverse seq1)
+              '()))
+
+(defun seq-difference (seq1 seq2 &optional testfn)
+  "Return a list of th elements that appear in SEQ1 but not in SEQ2.
+Equality is defined by TESTFN if non-nil or by `equal' if nil."
+  (seq-reduce (lambda (acc elt)
+                (if (not (seq-contains-p seq2 elt testfn))
+                    (cons elt acc)
+                  acc))
+              (seq-reverse seq1)
+              '()))
+
 (defun seq-group-by (function seq)
   "Apply FUNCTION to each element of SEQ.
 Separate the elements of SEQ into an alist using the results as
@@ -275,7 +295,7 @@ TYPE can be one of the following symbols: vector, string or 
list."
     (`vector (vconcat seq))
     (`string (concat seq))
     (`list (append seq nil))
-    (t (error "Not a sequence type name: %s" type))))
+    (t (error "Not a sequence type name: %S" type))))
 
 (defun seq--drop-list (list n)
   "Return a list from LIST without its first N elements.
@@ -318,6 +338,11 @@ This is an optimization for lists in `seq-take-while'."
       (setq n (+ 1 n)))
     n))
 
+(defun seq--activate-font-lock-keywords ()
+  "Activate font-lock keywords for some symbols defined in seq."
+  (font-lock-add-keywords 'emacs-lisp-mode
+                          '("\\<seq-doseq\\>")))
+
 (defalias 'seq-copy #'copy-sequence)
 (defalias 'seq-elt #'elt)
 (defalias 'seq-length #'length)
@@ -325,5 +350,7 @@ This is an optimization for lists in `seq-take-while'."
 (defalias 'seq-each #'seq-do)
 (defalias 'seq-map #'mapcar)
 
+(add-to-list 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords)
+
 (provide 'seq)
 ;;; seq.el ends here
diff --git a/lisp/epg.el b/lisp/epg.el
index 1b75b50..6015048 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -40,7 +40,6 @@
 (defvar epg-debug-buffer nil)
 (defvar epg-agent-file nil)
 (defvar epg-agent-mtime nil)
-(defvar epg-error-output nil)
 
 ;; from gnupg/include/cipher.h
 (defconst epg-cipher-algorithm-alist
@@ -213,7 +212,8 @@
   result
   operation
   pinentry-mode
-  (error-output ""))
+  (error-output "")
+  error-buffer)
 
 ;; This is not an alias, just so we can mark it as autoloaded.
 ;;;###autoload
@@ -581,11 +581,9 @@ callback data (if any)."
                                 (symbol-name (epg-context-pinentry-mode
                                               context))))
                       args))
-        (coding-system-for-write 'binary)
-        (coding-system-for-read 'binary)
-        process-connection-type
         (process-environment process-environment)
         (buffer (generate-new-buffer " *epg*"))
+        error-process
         process
         terminal-name
         agent-file
@@ -642,13 +640,24 @@ callback data (if any)."
       (make-local-variable 'epg-agent-file)
       (setq epg-agent-file agent-file)
       (make-local-variable 'epg-agent-mtime)
-      (setq epg-agent-mtime agent-mtime)
-      (make-local-variable 'epg-error-output)
-      (setq epg-error-output nil))
+      (setq epg-agent-mtime agent-mtime))
+    (setq error-process
+         (make-pipe-process :name "epg-error"
+                            :buffer (generate-new-buffer " *epg-error*")
+                            ;; Suppress "XXX finished" line.
+                            :sentinel #'ignore
+                            :noquery t))
+    (setf (epg-context-error-buffer context) (process-buffer error-process))
     (with-file-modes 448
-      (setq process (apply #'start-process "epg" buffer
-                          (epg-context-program context) args)))
-    (set-process-filter process #'epg--process-filter)
+      (setq process (make-process :name "epg"
+                                 :buffer buffer
+                                 :command (cons (epg-context-program context)
+                                                args)
+                                 :connection-type 'pipe
+                                 :coding '(binary . binary)
+                                 :filter #'epg--process-filter
+                                 :stderr error-process
+                                 :noquery t)))
     (setf (epg-context-process context) process)))
 
 (defun epg--process-filter (process input)
@@ -690,14 +699,7 @@ callback data (if any)."
                        (if (and symbol
                                 (fboundp symbol))
                            (funcall symbol epg-context string)))
-                      (setq epg-last-status (cons status string)))
-                 ;; Record other lines sent to stderr.  This assumes
-                 ;; that the process-filter receives output only from
-                 ;; stderr and the FD specified with --status-fd.
-                 (setq epg-error-output
-                       (cons (buffer-substring (point)
-                                               (line-end-position))
-                             epg-error-output)))
+                      (setq epg-last-status (cons status string))))
                 (forward-line)
                 (setq epg-read-point (point)))))))))
 
@@ -740,15 +742,17 @@ callback data (if any)."
   (epg-context-set-result-for
    context 'error
    (nreverse (epg-context-result-for context 'error)))
-  (with-current-buffer (process-buffer (epg-context-process context))
-    (setf (epg-context-error-output context)
-       (mapconcat #'identity (nreverse epg-error-output) "\n"))))
+  (setf (epg-context-error-output context)
+       (with-current-buffer (epg-context-error-buffer context)
+         (buffer-string))))
 
 (defun epg-reset (context)
   "Reset the CONTEXT."
   (if (and (epg-context-process context)
           (buffer-live-p (process-buffer (epg-context-process context))))
       (kill-buffer (process-buffer (epg-context-process context))))
+  (if (buffer-live-p (epg-context-error-buffer context))
+      (kill-buffer (epg-context-error-buffer context)))
   (setf (epg-context-process context) nil)
   (setf (epg-context-edit-callback context) nil))
 
diff --git a/lisp/erc/ChangeLog.01 b/lisp/erc/ChangeLog.01
deleted file mode 100644
index be854cc..0000000
--- a/lisp/erc/ChangeLog.01
+++ /dev/null
@@ -1,1056 +0,0 @@
-2001-12-18  Mario Lang  <address@hidden>
-
-       * erc.el: * Added missing 747 numreply (banned)
-
-2001-12-15  Gergely Nagy  <address@hidden>
-
-       * debian/scripts/install, debian/rules:
-       updated to 2.1.cvs.20011215-1
-
-       * debian/changelog: Debian version 2.1.cvs.20011215-1
-
-2001-12-11  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * applied a nicer version of mhp's patch to remove the last prompt from
-         saved logs
-
-       * erc-replace.el: * Initial checkin
-
-2001-12-11  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * fixed bug triggered when reuse-buffer was enabled (the default).
-         Another silly port type problem. Maybe we should unify that once and 
for all sometimes...
-
-2001-12-10  Mario Lang  <address@hidden>
-
-       * erc.el: * erc-message-english: New QUIT and s004 entries.
-       * (erc-save-buffer-on-part): New variable.
-       * (erc-kill-buffer-on-part): New variable.
-       * (erc-server-PART): Use above variables.
-       * (erc-join-channel): Use DEF argument instead of initial input for 
completing-read.
-
-2001-12-08  Tijs van Bakel  <address@hidden>
-
-       * erc.el: added defcustom erc-nick-uniquifier ^ (i prefer _)
-
-2001-12-07  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: changelog for version 2.1.cvs.20011208-1
-
-2001-12-07  Tijs van Bakel  <address@hidden>
-
-       * erc.el:
-       Added erc-scroll-to-bottom as an erc-insert-hook function.  It still 
bugs a bit, so please test it, thanks
-
-2001-12-07  Mario Lang  <address@hidden>
-
-       * erc.el: * Fixed silly bug in erc-server-TOPIC (thanks mhp)
-
-       * erc-speak.el:
-       * Fix non-greedy matching bug. That one somehow swallowed text
-
-       * erc.el:
-       Fix Emacs20 problem. For now, we disable 
erc-track-modified-channels-minor-mode in emacs20
-
-2001-12-07  Andreas Fuchs  <address@hidden>
-
-       * erc-fill.el:
-       * Fix another stupid one-off error. This time it really works!
-        (Until I find the next bug. I guess you can hold your breath) (-:
-
-2001-12-06  Andreas Fuchs  <address@hidden>
-
-       * erc-fill.el: * Fixed static filling:
-       ** No more \ed (continued on next line) lines anymore
-       ** Fixed bug with previous version where longer lines wouldn't get
-          filled correctly (i.e. at all)
-
-2001-12-06  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: changelog for 2.1.cvs.20011206-1 added
-
-2001-12-06  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * Don't discard away status when identifying to NickServ
-       * Modify `erc-already-logged-in': check for port, too.
-
-       * erc-fill.el:
-       * Fix stupid loop non-termination error in erc-fill-static when filling
-         one-line regions.
-       * Make erc-count-lines return meaningful values
-
-2001-12-05  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-process-input): Make ' /command' work for quoting /commands
-
-       * erc-speak.el: see changelog
-
-       * erc-fill.el: see erc.el changelog
-
-       * erc.el:
-       * erc-insert-hook: Changed strategy completely, no start end parameters 
any more.
-       We narrow-to-region now, that's much cleaner.
-       * rename erc-fill-region to erc-fill and change the autoload
-       ** You'll probably need to restart Emacs
-
-2001-12-04  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-send-current-line): Fixed long outstanding bug. XEmacs users 
with erc-fill-region on erc-insert-hook knew that one a long time.
-
-       * erc.el: fix order of attack
-
-       * erc.el: * macroexpanded define-minor-mode for XEmacs
-
-       * erc.el: First try to make channel tracking mouse sensitive
-
-       * erc.el: * More erc-message-format conversion.
-         erc-format-message-english-PART as an example on how to use functions 
to format message
-       * (erc-format-message): Fallback mechanism to use english catalog if 
variable is not bound
-
-2001-12-03  Mario Lang  <address@hidden>
-
-       * erc.el: * (erc-iswitchb): Rewrite, docfix.
-       Make it use erc-modified-channels as default if available.
-
-       * erc-menu.el:
-       * Fixage related to erc-track-modified-channels-minor-mode rewrite
-
-       * erc.el:
-       * (erc-track-modified-channels-minor-mode): Use buffer objects instead 
of erc-default-target return value for internal state keeping.
-
-       * erc.el: * Made reconnect behave nicer (erc-process-sentinel)
-       * Rewrote erc-modified-channels-tracking completely.
-         Its now a minor mode (erc-track-modified-channels-minor-mode)
-         It uses a list as internal representation now, so all silly 
string-parsing
-         related bugs should be gone.
-         Use (erc-track-modified-channels-minor-mode t) now to toggle this 
functionality.
-         Don't set the erc-track-modified-channels-minor-mode variable 
yourself, use the toggle function
-
-2001-11-29  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: final version
-
-2001-11-29  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-channel-p): Make it work with string and buffer as parameter. 
buffer.
-       * (erc-format-message): Add a check for functionp. This allows a 
format-specifier also to be a function name, which gets called with args 
applied and needs to return the actual format string.
-       * Converted some formats, JOIN, JOIN-you, MODE, ...
-
-2001-11-28  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-prepare-mode-line-format): Added sanity checks to prevent it 
from having problems with server buffers where the connection failed
-
-       * erc-bbdb.el:
-       * (erc-bbdb-JOIN): regexp-quote the fingerhost before searching, some 
people have really strange characters as their user names
-
-       * erc.el: Remove a stupid debug like (message ...) call
-
-2001-11-28  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: draft of 2.1.cvs.20011128-1
-
-       * debian/rules: simplify for the all-in-one erc package
-
-       * debian/control: integrated erc-speak back into erc
-
-       * debian/maint/conffiles, debian/maint/conffiles.in, 
debian/maint/postinst,
-         debian/maint/postinst.in, debian/maint/prerm, debian/maint/prerm.in,
-         debian/scripts/install, debian/scripts/install.in, 
debian/scripts/remove,
-         debian/scripts/remove.in, debian/scripts/startup.erc-speak:
-       since erc-speak is gone, resurrect the static files, and update them to 
support the latest erc
-
-2001-11-28  Mario Lang  <address@hidden>
-
-       * erc.el: * (erc-mode): Shouldn't be interactive.
-       * (erc-info-mode): Ditto.
-
-       * erc.el: * (erc-server-352): Added hopcount parsing.
-       Added call to erc-update-channel-member to fill in channel-members 
information
-       on /WHO if the channel is joined.
-
-2001-11-27  Mario Lang  <address@hidden>
-
-       * erc-speedbar.el: *** empty log message ***
-
-       * erc-speedbar.el: * (erc-speedbar-expand-user): New function.
-       Used when more information than just the nick name is available about a 
dude.
-
-       * erc.el: * Fixed stupid edit,checkin,save cycle error :)
-
-       * erc.el:
-       * (erc-generate-log-file-name-default): Renamed to -long
-       Doc fix.
-       * (erc-generate-log-file-name-old): Renamed to -long
-       Doc fix.
-       * (erc-generate-log-file-name-function): Set default to ...-long
-       Doc fixes
-
-       * erc-speedbar.el: *** empty log message ***
-
-2001-11-26  Mario Lang  <address@hidden>
-
-       * erc-speedbar.el: * Integrated channel names list
-         what else do we need to replace info buffers???
-         please test that code and comment on erc-ehlp, thanks
-
-       * erc-speedbar.el:
-       * Added erc-speedbar-goto-buffer and therefore enable switching to the 
buffers from speedbar
-
-       * erc-speedbar.el:
-       I had to check this in, it works !! sort of,, megaalphagammaversion, 
first version. test, play, submit ideas/patches
-
-2001-11-26  Gergely Nagy  <address@hidden>
-
-       * erc.el(erc-mode): moved erc-last-saved-position here
-       moved buffer naming code from here..
-       (erc): ...to here
-       (erc-generate-log-file-name-old): only prepend target if it exists
-
-       made erc-log-insert-log-on-open a defcustom
-
-2001-11-26  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Applied antifuchs/mhp patches, the latest on erc-help, unmodified
-       * New variable: erc-reuse-buffers default to t.
-       * Modified erc-generate-new-buffer-name to use it. it checks if server 
and port are the same,
-         then one can assume that's the same channel/query target again.
-
-2001-11-23  Mario Lang  <address@hidden>
-
-       * erc-bbdb.el:
-       * new function erc-BBDB-NICK to handle nickname annotation on a 
nick-change event of a known record
-
-       * erc.el: * Remove erc-rename-buffer, its no longer necessary
-       * Remove erc-autoop-*. it was broken, and needed rewrite anyway
-       * write erc-already-logged-in in terms of erc-buffer-list and make the 
duplicate login check work again
-
-       * erc.el: * Fixed stupid typo
-
-2001-11-22  Mario Lang  <address@hidden>
-
-       * erc.el: * New local variable, erc-announced-server-name
-       * erc-mode-line-format supports a new symbol, target-and/or-server
-       * The mode-line displays the announced server name now (for autojoin 
later...,
-         greets Adam)
-       * New macro, erc-server-hook-list for a nice way to define the 
defcustoms of the erc-server-*-hook's
-         Thanks go to the guy from #emacs who helped with that
-       * erc-fill-region is now autoloaded from erc-fill.el
-         * erc-fill.el implements a new fill method, erc-fill-static
-           (setq erc-fill-function 'erc-fill-static)
-       * Some other things I forgot right now
-
-       * erc-bbdb.el: *** empty log message ***
-
-       * erc-fill.el: Initial version.
-
-       * erc-complete.el:
-       Applied antifuchs patch to make completion work with (string= 
erc-prompt "")
-
-       * erc-complete.el:
-       added function erc-nick-completion-exclude-myself
-       you can set erc-nick-completion to 'erc-nick-completion-exclude-myself 
to use it
-
-2001-11-21  Mario Lang  <address@hidden>
-
-       * erc-bbdb.el:
-       * Changed usage of 'finger-host to bbdb-finger-host-field
-
-       * erc-bbdb.el:
-       * Changed WHOIS to use finger-host instead of net field.
-       * Added 'visible as option to erc-bbdb-popup-p to only pop-up the bbdb 
buffer if a join happened in a visible buffer on any visible frame.
-       * Added (regexp-quote ...) for nickname search in erc-bbdb-JOIN
-
-2001-11-20  Mario Lang  <address@hidden>
-
-       * erc-bbdb.el: * Added JOIN support
-
-2001-11-19  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Initial message catalog code. converted erc-action-format usage to use 
it
-
-       * erc.el: * erc-play-sound: Added XEmacs related check
-
-       * erc-bbdb.el: * Initial version, many thanks to Andreas Fuchs
-
-       * erc.el: * Fixed silly problem with whois/was handling
-
-       * erc.el: * Renamed prev-rd to erc-previous-read
-       * Removed erc-next-line-add-newlines and s next-line-add-newlines to 
nil in defun erc by default
-
-       * erc.el:
-       fixed xemacs compatibility prob with delete, thanks Adam
-
-2001-11-18  Mario Lang  <address@hidden>
-
-       * erc.el: numreplies 301 & 461
-
-2001-11-13  Tijs van Bakel  <address@hidden>
-
-       * erc.el:
-       Added code for error reply 421 "Unknown command", to test the new 
server parsing system.
-       This was really easy!  Thanks ZenIRC guys & delysid :-)
-
-2001-11-13  Mario Lang  <address@hidden>
-
-       * erc.el: * Allow connecting to SSL enabled irc servers.
-          Ugly hack, but it works for now. Be sure to use the numeric irc port 
994 so that erc can recognize what you want
-         good example is
-       irc server: ircs.segfault.net
-       port: 994
-
-       meet me there, I am still delYsid :)
-
-       * erc.el: * some more numreply handlers
-       * cleanup in erc-process-away-p
-       * new function erc-display-error-notice
-
-       * erc.el: * numreply 501 and 221
-
-       * erc.el:
-       removed obsolete old hook variables. Your functions may break, but it 
is easy to hook them up to the new hooks.
-       erc-part-hook: use erc-server-PART-hook instead
-       erc-kick-hook: use erc-server-KICK-hook instead
-       and so on
-
-       * erc.el:
-       fixed serious bug which cause privmsgs vanishing when erc-auto-query 
was set to nil
-
-       * erc.el: cleaned up erc-process-filter
-
-       * erc.el: * 401 and 320 numreplies implemented
-
-       * erc.el: * Removed old/now obsolete code
-
-       * erc.el: * Fixed bug in erc-server-MODE
-
-2001-11-12  Mario Lang  <address@hidden>
-
-       * erc.el: fixed it
-
-       * erc.el:
-       *** We switched over. New server message parsing/handling is running 
now. Thanks to the zenirc developers for the great ideas I got from the 
code!!!!! Go and test it, poke at it, bug me on irc about problems
-
-       * erc.el: *** empty log message ***
-
-2001-11-12  Tijs van Bakel  <address@hidden>
-
-       * erc.el:
-       Fixed bug in erc-get-buffer, now channel names are compared in
-       a case-insensitive way.
-
-2001-11-12  Mario Lang  <address@hidden>
-
-       * erc.el: erc-server-353
-
-2001-11-12  Tijs van Bakel  <address@hidden>
-
-       * erc.el: Fixed docstring for erc-get-buffer.
-       Added erc-process to a lot of calls to erc-get-buffer, so
-       that only the local process is searched.
-
-2001-11-12  Mario Lang  <address@hidden>
-
-       * erc.el: * erc-buffer-filter: do it differently
-
-       * erc.el: ugly but working fix for mhp's query problem
-
-       * erc.el: * erc-server-PRIVMSG-or-NOTICE
-         Now, all the server word replies are finished. Going to numreplies now
-
-       * erc.el:
-       * debugging facilities for the transition. C-x 2 C-x o M-x ielm RET 
erc-server-vectors RET ; to get a list of all server messages currently not 
handled in the new code. Feel free to pick one and implement it
-
-       * erc.el: * erc-server-KICK and erc-server-TOPIC. new functions
-       * erc-server-305-or-306 and erc-server-311-or-314
-
-       * erc.el:
-       * ported PART and QUIT msgs to the new scheme, many to go. but it is a 
easy task. does someone wanna try and start with numreplies?
-
-       * erc.el: * erc-server-JOIN
-
-       * erc.el: * Ported erc-server-INVITE code
-
-       * erc.el: * erc-server-ERROR and erc-server-MODE
-
-2001-11-11  Mario Lang  <address@hidden>
-
-       * erc.el: * zen
-
-       * erc.el: * New variable erc-connect-function.
-
-       * erc.el:
-       * New function erc-channel-p and use it where appropriate
-
-       * erc.el: * Removed the variable erc-buffer-list completely now
-       * Moved erc-dbuf around a bit
-
-       * erc.el: * Fix silly change in quit/rename msg handling
-
-       * erc.el: thanks mhp, fixed
-
-       * erc.el: * Tijs van Bakel's work from 10th Nov. merged in
-       * My additions to that idea merged in too
-       Basically, this is a major rewrite, if you are scared and want avoid 
problems,
-       stay at your current version. It seems fairly stable though.
-       That changed? erc-buffer-name handling was completely rewritten,
-       and erc-buffer-list local variable handling removed.
-       Simplifies alot of code. Poke at it. read the diff. report bug/send 
patches!
-
-       * erc.el: * Added variable listing when /set is used without args
-
-2001-11-10  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Comment/structure cleanup, removal of unnecessary code
-
-       * erc.el: only some code beautification
-
-       * erc-imenu.el:
-       remove add-hook call, that's done in erc.el now for autoloadability
-
-       * erc.el: * Make erc-imenu autoloadable
-
-       * erc.el:
-       * The long promised erc-mode-line-format handling rewrite
-          Poke at it, try it, play with it, report bugs
-
-       * erc.el:
-       some regex-quote fixes, new function erc-cmd-set, and minor things
-
-2001-11-08  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * added second timestamp-format (erc-away-timestamp-format) for marking 
msgs when being away
-
-       * erc-complete.el: fixed silly defun
-
-       * erc.el: * Rewrote erc-load-irc-script (simplified)
-       * Removed deprecated code
-
-       * erc-speak.el: * reflect changes in erc.el
-
-       * erc.el:
-       * Moved completion related functions into erc-complete.el
-         placed an autoload instead into erc.el. That quite cool,
-         because erc-complete.el only gets loaded when you use
-         TAB first time in erc.
-
-       * erc-complete.el: _ Initial checkin
-
-       * erc.el: * New function: erc-chain-hook-with-args
-       * Changed calls to erc-insert-hook to use it
-
-2001-11-07  Mario Lang  <address@hidden>
-
-       * erc.el: * Patch from Fabien Penso
-         Make completion case insensitive. try it! its cool
-
-       * erc.el: * Reduction patch 2
-         This time, we move the input ring handling into erc-ring.el
-         Remember that you need (require 'erc-ring) in your .emacs to get the 
input handling as a feature
-         And remember, that you don't need it if you don't use input ring :-)
-
-       * erc-ring.el: * Initial checkin
-
-       * erc.el: * The great reduction patch :-)
-         moved relevant function from erc.el to new file erc-menu.el and 
erc-imenu.el
-
-       * erc-imenu.el: Initial version
-
-       * erc-menu.el: * Initial version
-
-       * erc.el: * wording change suggested by Benjamin Drieu
-
-2001-11-07  Tijs van Bakel  <address@hidden>
-
-       * erc.el: Added Emacs version to /SV
-
-2001-11-07  Mario Lang  <address@hidden>
-
-       * erc.el: * Hookification patch, read the diff
-
-       * erc.el: too tired for a changelog :)
-
-2001-11-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * make erc-cmd-op and erc-cmd-deop take multiple nicknames as argument
-
-2001-11-06  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: sync
-
-       * debian/rules: fixed a typo: PKGDIR, not PKIDR
-
-2001-11-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Changed timestamping when away to use erc-timestamp-format and append 
the timestamp instead of prepending it..
-       * minor cleanup, s/(if (not /(unless/ and the like
-
-2001-11-06  Tijs van Bakel  <address@hidden>
-
-       * erc.el: Fixed OP and DEOP commands to return T.
-       Added SV say-version command.
-       Added erc-send-message utility function, but it's not used everywhere 
yet.
-
-2001-11-05  Mario Lang  <address@hidden>
-
-       * erc.el: stupid delYsid, forgot require 'format-spec. good nite
-
-       * erc.el:
-       * new variable erc-action-format. Some erc-notice-prefix fixes again
-
-       * erc.el: * erc-minibuffer-privmsg defaults to t
-
-       * erc.el:
-       * Small fix in relation to the transition to erc-make-notice
-
-2001-11-05  Tijs van Bakel  <address@hidden>
-
-       * erc.el:
-       Renamed erc-message-notices to erc-minibuffer-notice, and renamed 
erc-prevent-minibuffer-privmsg to erc-minibuffer-privmsg, inverting its 
functionality
-
-       * erc.el: Added support for channel names starting with & + and !.
-       Also, many changes partially discussed on the mailing list:
-
-               * erc.el (cl): Add requirement for cl package.
-               (erc-buffer-list): Make this variable global again.
-               (erc-default-face): Fix typo.
-               (erc-timestamp-face): Add face for timestamps.
-               (erc-join-buffer, erc): Add a 'bury option.
-               (erc-send-action): Add timestamp.
-               (erc-command-table): Add /CLEAR, /DEOP, /OP, /Q.
-               (erc-send-current-line): Add timestamp.
-               (erc-send-current-line): Add call to erc-insert-hook.
-               (erc-cmd-clear): New command to clear buffer contents.
-               (erc-cmd-whois): Fix cut'n'paste-o.
-               (erc-cmd-deop): New command to deop a user.
-               (erc-cmd-op): New command to op a user.
-               (erc-make-notice): Moved a lot of duplicate code here.  Perhaps
-               this should also be done for erc-highlight-error.
-               (erc-parse-line-from-server): Now NOTICE will also open a new
-               query, just as PRIVMSG.
-               (erc-parse-line-from-server): Call erc-put-text-property on a
-               channel message/notice first, before concatenating nick and
-               timestamp &c.
-               (erc-message-notices): Add option to display notices in
-               minibuffer.
-               (erc-fill-region): No longer strip spaces in front of incoming
-               messages.
-               (erc-parse-current-line): No longer strip spaces in front of 
text
-               input by user.
-
-       Hopefully I didn't break too much :(
-
-2001-11-05  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * New function erc-nickserv-identify-autodetect for erc-insert-hook. 
Added by default currently.
-
-       * erc.el:
-       * Mini-fix in erc-process-num-reply (= n 353): Added @ as prefix 
character to make certain channels on opn work again nicely
-
-2001-10-31  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: updated to reflect changes
-
-       * debian/scripts/install.in:
-       moved #PKGFLAG# before -f batch-byte-compile
-
-2001-10-29  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Imenu fixed somehow, added IRC services interactive function for 
indentify to NickServ. Read the diff
-
-2001-10-26  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: sigh. -2
-
-2001-10-25  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: updated to reflect changes
-
-       * debian/rules: handle conffiles.in too
-
-       * debian/maint/conffiles.in: new file
-
-       * debian/maint/conffiles: superseded by conffiles.in
-
-       * debian/scripts/startup: superseded by startup.erc
-
-2001-10-25  Mario Lang  <address@hidden>
-
-       * debian/scripts/startup.erc-speak: * Initial version
-
-       * debian/scripts/startup.erc: * Added and fixes minimal typo
-
-2001-10-25  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: updated to reflect changes
-
-       * debian/rules:
-       modified to be able to build the erc-speak package too
-
-       * debian/control: added the new erc-speak package
-
-       * debian/README.erc-speak, debian/maint/postinst.in, 
debian/maint/prerm.in,
-         debian/scripts/install.in, debian/scripts/remove.in:
-       new file
-
-       * debian/maint/postinst, debian/maint/prerm, debian/scripts/install,
-         debian/scripts/remove:
-       removed, superseded by its .in counterpart
-
-2001-10-25  Mario Lang  <address@hidden>
-
-       * erc.el: * Fixed some defcustom :type 's
-       * Added erc-before-connect hook which gets called with server port and 
nick.
-         Use this hook to e.g. setup a tunnel before actually connecting.
-         something like (when (string= server "localhost") ...)
-
-2001-10-24  Mario Lang  <address@hidden>
-
-       * erc.el: * Patch by smoke: fix erc-cmd-* commands and add aliases
-
-2001-10-23  Mario Lang  <address@hidden>
-
-       * erc-speak.el:
-       * Added a new personality for channel name announcement, This makes 
streams of flooded channels much easier to listen to,
-         especially if you are on more than one channel simultaneously.
-
-       * erc.el:
-       * Made the completion postfix customizable through 
erc-nick-completion-postfix
-
-       * erc-speak.el, erc.el:
-       * Added erc-prevent-minibuffer-privmsg
-
-       * erc-speak.el:
-       * Quickish hack to allow exclusion of timestamps from speaking. see 
erc-speak-filter-timestamps
-
-2001-10-21  Mario Lang  <address@hidden>
-
-       * erc-speak.el:
-       * Removed now really obsolete code. Package size reduced by 50%
-
-       * 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!!!
-
-       * erc-speak.el: *** empty log message ***
-
-       * erc-speak.el: * Major simplification. depends on my 2001-10-21 
changes to erc.el.
-       * Things removed, read diff
-
-2001-10-21  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: oops, silly typo
-
-       * debian/changelog, debian/control, debian/copyright,
-         debian/maint/conffiles, debian/maint/postinst, debian/maint/prerm,
-         debian/rules, debian/scripts/install, debian/scripts/remove,
-         debian/scripts/startup:
-       initial check-in
-
-2001-10-21  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Changed erc-insert-hook to get two arguments, START and END of the 
region
-         which got inserted. CAREFUL! This could break stuff, but it makes the 
hook
-         much more usable.
-
-       * erc.el:
-       * Made erc-smiley a new option, currently set to t to showoff this 
feature. :)
-
-2001-10-20  Mario Lang  <address@hidden>
-
-       * erc.el: * Add missing erc-mode-hook variable
-       * Add smiley-support (preliminary test)
-
-2001-10-20  Alex Schroeder  <address@hidden>
-
-       * erc.el:
-       Replaced all occurrences of put-text-property with a call to
-       erc-put-text-property.
-       (erc-put-text-property): New function.
-       (erc-tracking-modified-channels): Moved to the front of the file such
-       that it is already defined when the menu is being defined.
-       (erc-modified-channel-string): Ditto.
-
-2001-10-18  Alex Schroeder  <address@hidden>
-
-       * erc.el: Removed some commentary.  The wiki page is the place to
-       put such information.
-       (erc-fill-prefix): Doc change.
-       (erc-notice-highlight-type): Doc change, now a user option.
-       (erc-pal-highlight-type): Doc change, now a user option.
-       (erc-fool-highlight-type): New option.
-       (erc-keyword-highlight-type): New option.
-       (erc-dangerous-host-highlight-type): New option.
-       (erc-uncontrol-input-line): Doc change.
-       (erc-interpret-controls-p): Doc change, now a user option.
-       (erc-multiline-input): Doc change.
-       (erc-auto-discard-away): Doc change.
-       (erc-pals): Changed from string to regexp.
-       (erc-fools): New option.
-       (erc-keywords): Renamed from erc-highlight-strings.  WATCH OUT:
-       Not backwards compatible change!
-       (erc-dangerous-hosts): Renamed from erc-host-danger-highlight.
-       WATCH OUT: Not backwards compatible change!
-       (erc-menu-definition): Added menu entries for fools, keywords and
-       dangerous hosts.
-       (erc-mode-map): Changed keybindings from C-c <plain ascii> to
-       various C-c <C-ascii> combinations.
-       (erc-dangerous-host-face): Renamed from erc-host-danger-face.
-       WATCH OUT: Not backwards compatible change!
-       (erc-fool-face): New face.
-       (erc-keyword-face): Renamed from erc-highlight-face.  WATCH OUT:
-       Not backwards compatible change!
-       (erc-parse-line-from-server): Fixed highlighting in the cases
-       where (equal erc-pal-highlight-type 'all), added code to handle
-       erc-fool-highlight-type, erc-dangerous-host-highlight-type
-       (erc-update-modes): Replaced erc-delete-string with delete.
-       (erc-keywords): Renamed from erc-highlight-strings, handle
-       erc-keyword-highlight-type.
-       (erc-delete-string): Removed.
-       (erc-list-match): New function.
-       (erc-pal-p): Use erc-list-match.
-       (erc-fool-p): New function.
-       (erc-keyword-p): New function.
-       (erc-dangerous-host-p): Renamed from erc-host-danger-p, use
-       erc-list-match.
-       (erc-directed-at-fool-p): New function.
-       (erc-add-entry-to-list): New function.
-       (erc-remove-entry-from-list): New function.
-       (erc-add-pal): Use erc-add-entry-to-list.
-       (erc-delete-pal): Use erc-remove-entry-from-list.
-       (erc-add-fool): New function.
-       (erc-delete-fool): New function.
-       (erc-add-keyword): New function.
-       (erc-delete-keyword): New function.
-       (erc-add-dangerous-host): New function.
-       (erc-delete-dangerous-host): New function.
-
-2001-10-07  Mario Lang  <address@hidden>
-
-       * erc.el: * irc vs ircd default port fixed
-
-       * erc.el: * Added topic-change to imenu
-
-       * erc.el: * More imenu spiffyness
-
-       * erc.el: * Added imenu support
-
-       * erc.el:
-       * Fix to /topic to show topic instead of setting it to null :)
-
-2001-10-05  Mario Lang  <address@hidden>
-
-       * erc.el: * First version of erc-rename-buffer
-
-       * erc.el: * more header-line tricks.
-
-       * erc.el:
-       * Small fix to do erc-update-mode-line-buffer in 
erc-update-channel-topic
-
-       * erc.el: * Added erc-header-line-format
-
-2001-10-04  Mario Lang  <address@hidden>
-
-       * erc.el: * mini-fix, add msgp to auto-query code
-
-       * erc.el: * Added command-names to completion (erc-command-table)
-       * New variable erc-auto-query. When set, every arriving message to you
-       will open a query buffer for that sender if not already open.
-       * Compatibility function fo non-existing line-beginning|end-position 
functions in XEmacs.
-
-2001-10-03  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Removed alot of (progn ...) where they were not necessary
-       * Changed some (if ...) without else part to (when ...)
-       * Some (while ...) to use (dolist ...)
-       * Fix for completion popup generating tracebacks.
-       * New function erc-arrange-session-in-multiple-windows
-       * Lots of other stuff, read the diff
-
-2001-10-02  Mario Lang  <address@hidden>
-
-       * erc.el: * Added erc-kill-input and keybinding C-c C-u for it
-
-2001-10-01  Mario Lang  <address@hidden>
-
-       * erc.el: * Another fix to nick-completion
-       * Additional checks in erc-track-modified-channels
-
-2001-09-26  Mario Lang  <address@hidden>
-
-       * erc.el: * Fixed completion (alex)
-         * Now popup buffer doesn't destroy your window configuration.
-       * Fixed away handling (incomplete)
-
-2001-09-24  Mario Lang  <address@hidden>
-
-       * erc.el: Fixed silly quoting-escape error
-
-2001-09-23  Mario Lang  <address@hidden>
-
-       * erc.el: * Added auto-op support (unfinished)
-       * Added erc-latest-version.
-       * Added erc-ediff-latest-version.
-
-2001-09-21  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Minor menu additions (invite only mode is now a checkbox)
-
-2001-09-20  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Fix (erc-cmd-names): This should fix C-c C-n too, hopefully it was 
the right fix and doesn't break anything else.
-
-       * erc.el: * Fixes XEmacs easymenu usage (2nd time).
-
-2001-09-19  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-complete-nick): Add ": " only if one completes directly after 
the erc-prompt, otherwise, add just one space
-
-       * erc.el:
-       * Changed menu-definition to use easymenu (hopefully this now works 
under XEmacs)
-       * Fix for custom problem with :must-match on XEmacs (thanks shapr)
-       * Added /COUNTRY command using (what-domain) from package mail-extr 
(shapr)
-       * Fix for case-sensitivity problem with pals (they are now all 
downcased)
-       * Different (erc-version) function which now can take prefix argument 
to insert the version information into the current buffer,
-         instead of just displaying it in the minibuffer.
-
-2001-09-10  Mario Lang  <address@hidden>
-
-       * erc.el: Updated erc-version-string
-
-       * erc.el: Version number change and last read-through...
-
-2001-09-04  Mario Lang  <address@hidden>
-
-       * erc.el: Added some asterisks
-
-2001-08-24  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fixed hidden channel buffer tracking (sort of), now using 
switch-to-buffer for advice.
-       This version is unofficially named 2.1prebeta1. Please test it and send
-       fixes to various problems you may encounter so that we can eventually
-       release 2.1 soon.
-
-2001-08-14  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Added function erc-bol and keybinding C-c C-a for it (contributed by 
Benjamin Rutt <address@hidden)
-
-2001-08-07  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Checked in lathis code and modified it slightly. Still unsure about 
set-window-buffer advice, current attempt doesn't seem to work.
-       Removed (nick -> #channel) from mode-line. (CLOSED) and (AWAY...) 
should still be displayed when appropriate
-
-2001-08-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       added local-variable channel-list in session-buffers and make /LIST use 
it.
-       erc-join-channel can now do completion after /LIST was executed
-
-2001-08-05  Mario Lang  <address@hidden>
-
-       * erc.el: Tweaked erc-join-channel and erc-part-from-channel
-
-2001-07-27  Mario Lang  <address@hidden>
-
-       * erc.el: some more defcustom stuff
-
-       * erc.el: Patch from Henrik Enberg <address@hidden>:
-          Adds variables erc-frame-alist and erc-frame-dedicated-p.
-
-       * erc.el: fixed erc-part-from-channel
-
-       * erc.el:
-       fixed match-string problem and added interactive topic setting function.
-
-       * erc.el: fixed silly string-match bug
-
-       * erc.el:
-       Added erc-join-channel and erc-part-from-channel (interactive prompts), 
as well as keybindings. C-c C-j #emacs RET is now enough :)
-
-2001-07-27  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-display-line-buffer): Simplified filling.
-       (erc-fill-region): New function.
-
-2001-07-27  Mario Lang  <address@hidden>
-
-       * erc.el: Added redundancy check in output
-
-2001-07-26  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-send-action): Add text-property stuff.
-       (erc-input-action): Removed text-property stuff.
-       (erc-command-table): Corrected command for DESCRIBE.  Still
-       doesn't work though.  No idea what it should do.  Looks like a no op.
-       (erc-cmd-me): Doc change.
-
-2001-07-26  Mario Lang  <address@hidden>
-
-       * erc.el:
-       fixed one occurrence of a setq with only one argument (XEmacs didn't 
like that)
-
-       * erc.el:
-       Added erc-next-line-add-newlines customization possibility.
-
-       * erc.el:
-       added erc-fill-prefix for defining your own way of filling and fixed 
filling somehow
-
-       * erc.el:
-       fixed small incompatibility in erc-parse-line-from-server at (and (= n 
353) regexp
-
-2001-07-25  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Added erc-filling and filling code to erc-display-line-buffer.
-
-2001-07-08  Alex Schroeder  <address@hidden>
-
-       * erc.el(try-complete-erc-nick): Make the ": " part of the
-       expansion
-
-       * erc.el: require ring
-
-2001-07-08  Mario Lang  <address@hidden>
-
-       * erc.el: *** empty log message ***
-
-2001-07-07  Mario Lang  <address@hidden>
-
-       * erc.el: typo
-
-       * erc.el: omit
-
-2001-07-06  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-mode): Call erc-input-ring-setup.
-       (erc-send-current-line): Call erc-add-to-input-ring.
-       (erc-input-ring): New variable.  Currently not buffer local.
-       (erc-input-ring-index): New variable.  Currently not buffer local.
-       (erc-input-ring-setup): New function.
-       (erc-add-to-input-ring): New function.
-       (erc-previous-command): New function.
-       (erc-next-command): New function.
-       (erc-mode-map): Uncommented keybindings for erc-next-command and
-       erc-previous-command.
-
-2001-07-05  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-highlight-strings): Removed debug message.
-
-       * erc.el(erc-join-buffer): Changed default to 'buffer.
-       (erc-join-info-buffer): Changed default to 'disable.
-       (erc-nick-completion): Changed default to 'all.
-
-2001-07-04  uid31117  <address@hidden>
-
-       * erc.el: Resolved...
-
-2001-07-03  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-highlight-strings): New option and new function.
-       (erc-parse-line-from-server): Use it.
-       Various empty lines removed.  Various doc strings fixed.
-
-       * erc.el: Removed more empty lines.
-
-       * erc.el(erc-member-string): replaced by plain member
-       Otherwise, lots of deleting of empty lines...  I'm not too happy with 
that
-       but I feel better when the code is "cleaned up".
-
-2001-07-03  Mario Lang  <address@hidden>
-
-       * erc.el: Ugly hack, but looks nicer when giving commands
-
-       * erc-speak.el: ugly hack, but looks nicer now
-
-2001-07-03  Alex Schroeder  <address@hidden>
-
-       * erc.el(try-complete-erc-nick): New function.
-       (erc-try-complete-nick): New function.
-       (erc-nick-completion): New option.
-       (erc-complete): Call hippie-expand such that erc-try-complete-nick
-       will be called eventually.  Based on erc-nick-completion
-       try-complete-erc-nick will then complete on the nick at point.
-
-2001-07-02  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Insert (erc-current-nick) instead of (erc-display-prompt). good night :)
-
-       * erc.el:
-       small, but it was annoying, so I just did it (defcustom for 
erc-join-buffer and erc-join-info-buffer)
-
-2001-06-29  Alex Schroeder  <address@hidden>
-
-       * erc.el: Use defface to define all faces.
-       Removed some history from the commentary, as well as some other
-       commentary editing.
-
-2001-06-28  Mario Lang  <address@hidden>
-
-       * erc.el: hmm, defcustom for erc-user-full-name
-
-       * erc-speak.el, erc.el: *** empty log message ***
-
-2001-06-27  Mario Lang  <address@hidden>
-
-       * erc.el: typo
-
-       * erc.el: Some more defcustom
-
-       * erc-speak.el: nothing, really
-
-2001-06-26  Mario Lang  <address@hidden>
-
-       * erc.el: Some defcustom stuff. Still no defgroup though :)
-
-       * erc.el:
-       Initial change to erc.el (2.0). Mainly list of ideas and features
-       and syntax-table entries.
-
-       * erc-speak.el, erc.el: Initial Import
-
-       * erc-speak.el, erc.el: New file.
-
-       Copyright (C) 2001, 2006-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
diff --git a/lisp/erc/ChangeLog.02 b/lisp/erc/ChangeLog.02
deleted file mode 100644
index 6d8b336..0000000
--- a/lisp/erc/ChangeLog.02
+++ /dev/null
@@ -1,2620 +0,0 @@
-2002-12-31  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-split-command):
-       Removed assignment to free variable "continue".
-       (erc-strip-controls): New function.  Takes a string, returns the string 
with
-       all IRC color/bold/underline/etc. control codes stripped out.
-       (erc-interpret-controls): If variable erc-interpret-controls-p is nil, 
now
-       uses erc-strip-controls to strip control codes.
-       (erc-ctcp-reply-ECHO): Changed reference and assignment to free 
variable "s"
-       into reference/assignment to "msg", which appears to be the original 
author's
-       intent.
-
-       * erc-list.el(erc-chanlist):
-       Changed to use the new erc-once-with-server-event function
-       instead of the old macro of the same name.
-
-       * erc-notify.el(erc-notify-timer):
-       Changed to use the new erc-once-with-server-event function
-       instead of the old macro of the same name.  Also fixed a bug were 
variable
-       erc-last-ison was being read from a non-server buffer (thus giving its 
default
-       value instead of its per-server value).
-
-       * erc.el(erc-once-with-server-event):
-       This is now a function.  It was a macro with a
-       bug (the call to gensym happened at byte-compile-time not 
macro-call-time).
-       (erc-toggle-debug-irc-protocol): Now [return] is bound to this function 
in
-       the *erc-protocol* buffer.
-
-2002-12-30  Alex Schroeder  <address@hidden>
-
-       * erc-autoaway.el(erc-autoaway-idletimer): Doc,
-       ref. erc-autoaway-use-emacs-idle.
-       (autoaway): Doc, explain different idle definitions.  Reestablish
-       the idletimer only when erc-autoaway-use-emacs-idle is non-nil.
-       (erc-auto-set-away): Doc, ref erc-auto-discard-away.
-       (erc-auto-discard-away): Doc, ref erc-auto-set-away.
-       (erc-autoaway-use-emacs-idle): Doc, ref erc-autoaway-mode, and
-       added a note that this feature is currently broken.
-       (erc-autoaway-reestablish-idletimer): Doc.
-       (erc-autoaway-possibly-set-away): Split test such that
-       erc-time-diff is only computed when necessary, add a comment why
-       erc-process-alive is not necessary.
-       (erc-autoaway-set-away): Test for erc-process-alive.
-
-2002-12-29  Alex Schroeder  <address@hidden>
-
-       * erc-autoaway.el:
-       Changed the order of defcustoms to avoid errors in the :set property
-       of erc-autoaway-idle-seconds.
-
-2002-12-29  Damien Elmes  <address@hidden>
-
-       * erc-track.el:
-       * (erc-track-get-active-buffer): remove superfluous (+ arg 0)
-
-2002-12-29  Alex Schroeder  <address@hidden>
-
-       * erc-autoaway.el(erc-autoaway): Moved the defgroup up to the
-       top, before the define-erc-module call.
-       (autoaway): Extended doc.
-       (erc-autoaway-idle-seconds): Use a :set property to handle
-       erc-autoaway-use-emacs-idle.
-       (erc-auto-set-away): Set default to t.  Added doc strings where
-       necessary, reformatted doc strings such that the first line can
-       stand on its own.  This is important for the output of M-x
-       apropos.
-
-2002-12-28  Jorgen Schaefer  <address@hidden>
-
-       * erc-auto.in:
-       added (provide 'erc-auto), which is required for (require 'erc-auto) :)
-
-       * erc.el(erc-display-prompt):
-       Set the face property of the prompt to
-       everything but the last character.
-
-       * erc.el(erc-send-current-line):
-       Check whether point is in the input line. If
-       not, just beep and do nothing.
-
-2002-12-28  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-bol):
-       Fixed bug when there is only a prompt, and no property
-       change.
-
-       * erc.el(erc-display-prompt): Rewrote using a save-excursion
-       and erc-propertize.  No longer use a field for the prompt, but a
-       plain text property called erc-prompt.
-       (erc-bol): Use the erc-prompt text property instead of a field.
-       Return point instead of t.
-       (erc-parse-current-line): No need to call point here, then, since
-       erc-bol now returns point.
-
-       * Makefile:
-       make ChangeLog .PHONY, thus forcing it always to be rebuilt.
-
-2002-12-28  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-log-irc-protocol):
-       Removed check whether get-buffer-create
-           returned nil. "The value is never nil", says the docstring.
-
-       * erc.el: Day Of The Small Changes
-
-       (erc-display-prompt): Make the prompt 'front-sticky, which prevents it
-           from being modified. It *should* also make end-of-line move to the
-           end of the field (i.e. the end of the prompt) when point is at the
-           beginning of the prompt, but it doesn't. Dunno why. :(
-
-2002-12-27  Francis Litterio  <address@hidden>
-
-       * Makefile:
-       Added "-f" to "rm" command in rule for target "realclean".
-
-       * erc.el:
-       New function: erc-log-irc-protocol.  Consolidates nearly duplicate code
-       from functions erc-send-command and erc-process-filter into one 
function.
-
-       * erc.el(erc-toggle-debug-irc-protocol):
-       Removed unneeded argument PREFIX and code
-       which referenced it at end of function.
-       (erc-send-command): Now we only append a newline to the logged copy
-       of output protocol text if it doesn't have one.
-
-2002-12-27  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-toggle-debug-irc-protocol):
-       Display buffer if it's not shown
-           already, and use view-mode.
-       (erc-toggle-debug-irc-protocol), (erc-send-command),
-           (erc-process-filter): inhibit-only t to insert into the
-           *erc-protocol* buffer (view-mode)
-
-2002-12-27  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-mode-map):
-       Removed keybinding for erc-toggle-debug-irc-protocol.
-       (erc-toggle-debug-irc-protocol): Now used erc-make-notice to propertize 
the
-       face of the enabled/disabled messages in the *erc-protocol* buffer.
-       (erc-send-command): Now outgoing IRC protocol traffic is logged too.
-
-       * erc.el:
-       Added user-customizable variable erc-debug-irc-protocol.
-       Added function erc-toggle-debug-irc-protocol.
-       (erc-process-filter): Now supports IRC protocol logging.  If variable
-       erc-debug-irc-protocol is non-nil, all IRC protocol traffic is appended
-       to buffer *erc-protocol*, which is created if necessary.
-
-2002-12-27  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-display-prompt):
-       Don't make the prompt intangible; that didn't
-           make things that much better for the user, but confused ispell,
-           which checked the prompt when it should check the first word
-
-2002-12-27  Alex Schroeder  <address@hidden>
-
-       * AUTHORS: fixed resolve's email add
-
-       * AUTHORS: added damien
-
-       * erc.el(erc-truncate-buffer-on-save):
-       Removed documentation that
-       described behavior now changed.  It used to say "When nil, no
-       buffer is ever truncated."  This is no longer true; even when
-       buffers are NOT truncated on save, they can be truncated, eg. by
-       adding erc-truncate-buffer to the hook.
-       (erc-logging-enabled): New function.
-       (erc-current-logfile): New function.
-       (erc): Use erc-logging-enabled and erc-current-logfile.
-       (erc-truncate-buffer-to-size): Rewrote it, and made sure to use a
-       (save-restriction (widen) ...) such that the truncation actually
-       runs in the whole buffer, not in the last message only (as
-       erc-insert-post-hook will do!).  This should fix rw's
-       out-of-bounds error.
-       (erc-generate-log-file-name-short): Made all but the BUFFER
-       argument optional.  Doc: Mention
-       erc-generate-log-file-name-function.
-       (erc-generate-log-file-name-long): Doc: Mention
-       erc-generate-log-file-name-function.
-       (erc-save-buffer-in-logs): Use erc-logging-enabled and
-       erc-current-logfile.  Doc: Mention erc-logging-enabled.
-
-       (erc-encode-string-for-target): Only do the real work when
-       featurep mule; else just return the string unchanged.
-
-2002-12-27  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       erc-encoding-default: check for (coding-system-p) for older emacs 
versions
-
-       * erc.el(erc-connect): missing ()s added. "don't commit at 2am"
-
-       * erc.el(erc-connect):
-       check if (set-process-coding-system) is available before use
-
-2002-12-27  Alex Schroeder  <address@hidden>
-
-       * AUTHORS: added franl
-
-2002-12-26  Alex Schroeder  <address@hidden>
-
-       * erc-pcomplete.el(pcomplete-parse-erc-arguments):
-       Reworked, and fixed a bug that had
-       caused completions to corrupt preceding text under some circumstances.
-
-       * erc.el(erc-encoding-default): New.
-       (erc-encode-string-for-target): Use it instead of a hard-coded ctext.
-       (erc-encoding-coding-alist): Doc.
-
-2002-12-26  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       Removed fix for bug 658552 recently checked-in, because it doesn't work.
-
-       * erc.el(erc-kill-buffer-function):
-       Removed check that connection is up
-       before running erc-kill-server-hook hooks.  Those hooks should use
-       erc-process-alive to avoid interacting with the process.
-
-       * erc.el:
-       Fixed erc-send-current-line so it no longer assigns the free variable 
"s", and
-       it doesn't move point to end-of-buffer in non-ERC buffers.  Fixed
-       erc-kill-buffer-function so it doesn't run the erc-kill-server-hook 
hooks if the
-       server connection is closed.  Fixed bug 658552, which is described in 
detail at
-       
http://sourceforge.net/tracker/index.php?func=detail&aid=658552&group_id=30118&atid=398125
-
-2002-12-26  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-cmd-SMV): Bug, now call erc-version-modules.
-
-       * erc-pcomplete.el(erc-pcomplete-version): New.
-
-2002-12-26  Francis Litterio  <address@hidden>
-
-       * erc-pcomplete.el:
-       Fix for bug where you could not complete a nick when there was text 
following
-       the nick.
-
-2002-12-25  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-already-logged-in): Use erc-process-alive.
-       (erc-prepare-mode-line-format): Use erc-process-alive.
-       (erc-process-alive): Check erc-process for boundp and processp.
-
-       * erc.el(erc-kill-buffer-function):
-       Do not check whether the process is
-       alive before running the hook, because there might be functions on
-       the hook that need to run even when the process is dead.  And
-       function that wants to check this, should use (erc-process-alive).
-       (erc-process-alive): New function.
-       (erc-kill-server): Use it.
-       (erc-kill-channel): Use it.
-
-       * erc.el(erc-kill-buffer-function):
-       Reverted ignore-error change.
-       ignore-error is dangerous because we might miss bugs in functions
-       on erc-kill-server-hook.
-
-       * erc.el(erc-kill-buffer-function): Use memq instead of member
-       when checking process-status.  Added doc string with references to
-       the other hooks.
-       (erc-kill-server): Only send the command when the erc-process is
-       still alive.  This prevents the error: "Process
-       erc-irc.openprojects.net-6667 not running" when killing the buffer
-       after having used /QUIT.
-
-2002-12-24  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-server-ERROR):
-       Show the error reason, not only the originating host.
-
-       * erc.el(erc-kill-buffer-function):
-       (ignore-errors ...) in 'erc-kill-server-hook.
-           When the process for this server does not exist anymore, the hook
-           will cause an error, effectively preventing the buffer from being
-           killed.
-
-2002-12-24  Francis Litterio  <address@hidden>
-
-       * erc-notify.el:
-       Fixed erc-notify-timer so that it passes the correct nick to
-       the functions on erc-notify-signoff-hook.
-
-2002-12-24  Alex Schroeder  <address@hidden>
-
-       * erc-track.el: Doc
-
-       * erc-track.el(erc-make-mode-line-buffer-name): Removed a
-       superfluous if construct around erc-track-showcount-string.
-       (erc-track-modified-channels): Use 1+.
-       Plus some doc and comment changes.
-
-2002-12-23  Mario Lang  <address@hidden>
-
-       * erc.el: Fix (erc-version) string
-
-2002-12-23  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       Removed unnecessary assignment to free-variable "p" in erc-downcase.
-
-       * erc.el:
-       Now /PART reason strings are generated the same way /QUIT reason strings
-       are generated (see variable erc-part-reason).  Also, when a server 
buffer
-       is killed, a QUIT command is automatically sent to the server.
-
-       * erc.el:
-       Changed erc-string-no-properties so that it is more efficient.  Now it 
uses
-       set-text-properties instead of creating and deleting a temporary buffer.
-
-2002-12-21  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-kill-input: added a check to prevent a (ding) and an error when
-           there's nothing to kill (thanks to Francis Litterio, franl on IRC)
-
-2002-12-21  Mario Lang  <address@hidden>
-
-       * erc.el:
-       AWAY notice duplication prevention. erc-prevent-duplicates now set to 
("301") by default, and timeout to 60
-
-       * erc.el: erc-prevent-duplicates: New variable, see docstring
-
-2002-12-20  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el:
-       erc-track-modified-channels: Use cddr of cell for old-face. cdr of
-           cell is '(1 . face-name), i have no idea why :)
-
-2002-12-20  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-current-nick):
-       check the server buffer is active before using
-
-       Also tabified and cleaned up some trailing whitespace
-
-2002-12-15  Mario Lang  <address@hidden>
-
-       * erc-track.el: erc-track-count patch by az
-
-2002-12-14  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       last-peers: initialize to a cons. thanks to Francis Litterio
-           <address@hidden> for the patch
-
-       * erc.el:
-       erc-kill-channel-hook, erc-kill-buffer-hook, (erc-kill-channel):
-           both hooks now call erc-save-buffer-in-logs, so that query buffers 
are
-           saved properly now, and not just channel buffers.
-
-2002-12-13  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-unique-channel-names): Fix another #hurd
-       vs. #hurd-bunny bug.
-
-       * erc-match.el(match): No longer modify erc-send-modify-hook,
-       since it does not work without a parsed text property, anyway.
-       (erc-keywords): Allow cons cells.
-       (erc-remove-entry-from-list): Deal with cons cells.
-       (erc-keyword-p): Ditto.
-       (erc-match-message): Ditto.
-
-       Moved nil to the beginning of the list, removed :tags for the
-       -type variables:
-       (erc-current-nick-highlight-type): Ditto.
-       (erc-pal-highlight-type): Ditto.
-       (erc-fool-highlight-type): Ditto.
-       (erc-keyword-highlight-type): Ditto.
-       (erc-dangerous-host-highlight-type): Ditto.
-       (erc-log-matches-flag): Moved nil to the beginning.
-
-2002-12-11  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-beg-of-input-line: Don't do (goto-char (beginning-of-line)), since
-           beginning-of-line always moves point and returns nil. Thanks to
-           franl on IRC for noting this.
-
-       * erc-stamp.el:
-       erc-insert-timestamp-left, erc-insert-timestamp-right: Made the
-           timestamp a 'field named 'erc-timestamp. Now end-of-line and
-           beginning-of-line will move over the timestamp.
-
-2002-12-10  Damien Elmes  <address@hidden>
-
-       * erc-button.el(erc-button-add-button):
-       make the created button rear-nonsticky, to allow
-       cutting and pasting of buttons without worrying about the button 
properties
-       being inherited by the text typed afterwards.
-
-       * erc.el: save logfile when killing buffer
-
-2002-12-09  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-modified-channels-display): Reworked.
-       (erc-track-face-more-important-p): Removed.
-       (erc-track-find-face): Return only one face.
-       (erc-track-modified-channels): Reworked.
-       (erc-modified-channels-string): Changed from (BUFFER FACE...) to
-       (BUFFER . FACE)
-
-       * erc-stamp.el(erc-insert-timestamp-right): Do not assume
-       erc-fill-column is available.
-
-2002-12-09  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-ech-notices-in-minibuffer-flag, erc-minibuffer-notice: Clarified
-           the difference in the docstrings.
-
-2002-12-08  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: erc-noncommands-list: added erc-cmd-SM and erc-cmd-SMV
-
-2002-12-08  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-cmd-SM): New.
-       (erc-cmd-SMV): New.
-
-       * erc.el(erc-modes): New.
-
-2002-12-08  Jorgen Schaefer  <address@hidden>
-
-       * erc-compat.el:
-       field-end: use (not (fboundp 'field-end)) instead of (featurep 'xemacs)
-
-2002-12-08  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-version-modules): New.
-
-2002-12-08  Mario Lang  <address@hidden>
-
-       * debian/changelog, debian/control, debian/scripts/startup.erc:
-       debian release 3.0.cvs.20021208
-
-2002-12-08  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-split-command): Do the right thing with CTCPs.
-
-2002-12-08  Mario Lang  <address@hidden>
-
-       * erc-stamp.el: Be a bit more functional
-
-2002-12-08  Jorgen Schaefer  <address@hidden>
-
-       * erc-compat.el:
-       XEmacs doesn't seem to have field-end, so we provide our own version 
here.
-
-2002-12-08  Mario Lang  <address@hidden>
-
-       * Makefile: Small fixes to debrelease target
-
-2002-12-08  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       make-obsolete-variable: xemacs doesn't have the WHEN parameter, remove 
it.
-
-2002-12-07  Jorgen Schaefer  <address@hidden>
-
-       * erc-imenu.el(erc-create-imenu-index):
-       Use (forward-line 0) instead of
-         (beginning-of-line) now, sine the latter ignores fields (used in the
-         prompt).
-
-       * erc.el:
-       Rewrite of the prompt stuff to use a field named 'erc-prompt:
-
-       erc-prompt: Removed getter and setter functions. The properties were
-         already set (and overwritten) in erc-display-prompt.
-       (erc-prompt): Add the trailing space here, not all over the code.
-       (erc-display-prompt): Cleaned up a bit. The text-properties now are
-         valid on the whole prompt. Also, made the prompt 'intangible to
-         avoid confused users.
-       (erc-bol): Now use the field 'erc-prompt for finding the prompt
-       (erc-parse-current-line): Cleaned up considerably. Uses (erc-bol) now.
-       (erc-load-irc-script-lines): Adjusted for the new (erc-prompt).
-       (erc-save-buffer-in-logs): Adjusted for the new (erc-prompt).
-
-       * erc.el:
-       erc-uncontrol-input-line: The comment said "Consider it deprecated",
-       so I removed it now.
-       erc-prompt-interactive-input: Marked obsolete as of previous change.
-
-       * erc.el:
-       erc-smiley, erc-unmorse: Put at the end to separate it from the
-       important parts of erc.el.
-
-2002-12-07  Alex Schroeder  <address@hidden>
-
-       * erc-stamp.el(erc-insert-timestamp-right): New algorithm.
-
-2002-12-07  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       last-peers, erc-message: Explained what last-peers is used for.
-
-2002-12-07  Alex Schroeder  <address@hidden>
-
-       * erc-page.el(erc-cmd-PAGE): New function.
-       (erc-ctcp-query-PAGE): Use the catalog entry for the message, too.
-       (erc-ctcp-query-PAGE-hook): Added custom type.
-       (erc-page-function): Changed custom type from ... function-item to
-       ... function.
-       As well as doc strings.
-
-2002-12-06  Alex Schroeder  <address@hidden>
-
-       * erc-page.el: provide feature at the end
-
-2002-12-06  Brian P Templeton  <address@hidden>
-
-       * erc-nickserv.el:
-       Added austnet in erc-nickserv.el (thanks to Damien Elmes
-       <address@hidden>)
-
-2002-12-05  Mario Lang  <address@hidden>
-
-       * erc-complete.el: Add autoload cookie
-
-       * erc-speak.el: Small fix to make proper voice-changes
-
-2002-12-05  Alex Schroeder  <address@hidden>
-
-       * erc-lang.el: New
-
-2002-12-03  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-mode-map: Put back C-c C-p (PART) and C-c C-q (QUIT)
-
-2002-12-02  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-insert-post-hook: Add :options erc-make-read-only, 
erc-save-buffer-in-logs
-       erc-send-post-hook: Add :options erc-make-read-only
-
-       * erc.el: erc-insert-hook: Removed ("this hook is obsolescent")
-       erc-insert-post-hook: Added :options '(erc-truncate-buffer)
-
-2002-12-02  Mario Lang  <address@hidden>
-
-       * erc.el: Add missing requires
-
-2002-11-29  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-quit-reason-normal):
-       Remove v before %s so it's "Version ..." not
-          "vVersion ..."
-
-2002-11-26  Alex Schroeder  <address@hidden>
-
-       * erc-compat.el(erc-encode-coding-string): Add second argument
-               coding-system, and for non-mule xemacsen, use a new defun 
instead
-               of identity.
-
-       * erc.el:  (define-erc-module): Use the appropriate group.
-       (erc-port): Changed custom type.
-       (erc-insert-hook): Custom group changed to erc-hooks.
-       (erc-after-connect): ditto
-       (erc-before-connect): ditto
-       (erc-disconnected-hook): ditto
-
-       * erc-button.el(erc-button): New group, changed all custom groups
-       from erc to erc-button, but left all erc-faces as-is.
-
-       * erc-track.el(erc-track): New group, changed all custom groups
-       from erc to erc-track.
-
-2002-11-26  Mario Lang  <address@hidden>
-
-       * erc-macs.el:
-       Macros for erc-victim handling.  Primary idea is to use setf and some 
fancy things to get nice syntax. have a look
-
-2002-11-26  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       pings, erc-cmd-PING, erc-ctcp-reply-PING, catalog entry CTCP-PING:
-       Cleaned up. Removed buffer-local variable pings which stored a list of
-       all sent CTCP PING requests. Now send our full time with the CTCP PING
-       request and interpret the answer.
-
-2002-11-25  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: nick-stk: replaced by the local variable current-nick.
-
-2002-11-25  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-send-command): Use erc-encode-string-for-target.
-       (erc-encode-string-for-target): New.
-
-       * erc-compat.el(erc-encode-coding-string): Add second argument
-       coding-system, and for non-mule xemacsen, use a new defun instead
-       of identity.
-
-       * erc-nickserv.el(erc-nickserv-version): New.
-
-2002-11-25  Jorgen Schaefer  <address@hidden>
-
-       * Makefile:
-       UNCOMPILED: erc-chess.el depends on chess-network.el, which might not
-       be installed. Don't compile it.
-
-       * erc.el:
-       erc-mode-map: Added C-a as erc-bol (no reason why it shouldn't be),
-       and removed C-c C-p (part channel) and C-c C-q (quite server) as these
-       are a bit drastic in their consequences and easy to mistype.
-
-2002-11-24  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el: erc-track-faces-priority-list: Extended list
-
-       * erc.el:
-       channel-members: Updated docstring: We have a VOICE predicate, too.
-
-       * erc-track.el(erc-unique-substrings):
-       Don't shorten a single channel to "#", but
-       always give at least 2 chars (except when there are no two chars).
-
-2002-11-23  Jorgen Schaefer  <address@hidden>
-
-       * erc-nickserv.el:
-       support for BrasNET. Thanks to rw on IRC for the settings.
-
-2002-11-23  Alex Schroeder  <address@hidden>
-
-       * erc.el: (erc-default-recipients, erc-session-user-full-name)
-               (nick-stk, pings, erc-announced-server-name, erc-connected)
-               (channel-user-limit, last-peers, invitation, away, channel-list)
-               (last-sent-time, last-ping-time, last-ctcp-time, erc-lines-sent)
-               (erc-bytes-sent, quitting, bad-nick, erc-logged-in)
-               (erc-default-nicks): Defvars.
-
-       * erc-compat.el: Switched tests to iso-8859-1 instead of latin-1.
-
-       * erc-compat.el(erc-compat-version): New.
-
-2002-11-22  Alex Schroeder  <address@hidden>
-
-       * erc.el(smiley): Smileys are a very small module, now.
-
-2002-11-22  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-event-to-hook, erc-event-to-hook-name: eval-and-compile these,
-           since we need them in a macro. ERC now compiles again!
-
-       * erc-speak.el:
-       erc-minibuffer-privmsg: Removed setting this variable to nil, since it
-           was removed from erc.el.
-
-       * erc.el(erc-interactive-input-map): Added docstring.
-       (erc-wash-quit-reason): Extended docstring.
-       (erc-server-ERROR): Added docstring.
-       (erc-server-321): buffer-local variable channel-list probably
-           shouldn't be renamed erc-channel-list - removed FIXME.
-
-       * erc.el: small cleanup.
-       ("was not used anymore" here means "not used in erc/*.el nor in
-       fsbot", thanks to deego for checking that.)
-
-       erc-minibuffer-privmsg: Removed (was not used anymore)
-       (erc-reformat-command): Removed (was not used anymore)
-       (erc-strip-erc-parsed-property): Removed (was not used anymore)
-       (erc-process-ctcp-response): Removed (replaced by ctcp-query-XXX-hook)
-       (erc-send-paragraph): Removed ("Note that this function is obsolete,
-           erc-send-current-line handles multiline input.")
-       (erc-input-hook): Removed ("This hook is obsolete. See
-           `erc-send-pre-hook', `erc-send-modify-hook' and
-           `erc-send-post-hook' instead.")
-       (erc-message-hook): Removed ("This hook is obsolete. See
-           `erc-server-PRIVMSG-hook' and `erc-server-NOTICE-hook'.")
-       (erc-cmd-default-channel): Removed ("FIXME: no clue what this is
-           supposed to do." - it was supposed to prepend the default channel
-           to a command before sending it. E.g. typing "/FOO now!" would send
-           the IRC command "FOO #mycurrentchannel now!")
-
-       * erc.el:
-       erc-ctcp-query-PING: Send the whole argument back, not just the first
-       number. This is required for many clients (e.g. irssi, BitchX, ...)
-       which send their ping times in two different numbers for microsecond
-       accuracy.
-
-2002-11-22  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-track-shorten-function): Allow nil.
-
-2002-11-21  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-unique-channel-names): Fixed bug that appeared
-       if one target name was a substring of another -- eg. #hurd and
-       #hurd-bunny.  Added appropriate test.
-
-2002-11-20  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el:
-       erc-unique-channel-names: Don't take a substring of channel that could
-       be longer than the channel, but at most (min (length candidate)
-       (length channel). (thanks to deego for noticing this)
-
-2002-11-19  Mario Lang  <address@hidden>
-
-       * erc-notify.el: * (require pcomplete): Only when compiling.
-
-2002-11-19  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el:
-       erc-track-faces-priority-list: New variable, defines what faces will
-       be shown in the modeline. If set to nil, the old behavior ("all")
-       remains.
-       erc-track-face-more-important-p: new function
-       erc-track-find-face: new function
-
-2002-11-19  Alex Schroeder  <address@hidden>
-
-       * erc-fill.el(erc-stamp): Require it.
-
-       * erc-match.el(away): devar for the compiler.
-
-       * erc-stamp.el(stamp): Moved.
-
-       * erc.el(erc-version-string): New version.
-
-       * erc-autoaway.el(erc-autoaway-idletimer): Moved to the front of
-       the file.
-
-       * erc-auto.in: (generated-autoload-file, command-line-args-left):
-       Added defvar without value to silence byte compiler.
-
-       * Makefile(realclean): renamed fullclean to realclean.
-       (UNCOMPILED): New list, for erc-bbdb.el, erc-ibuffer.el,
-       erc-speak.el.
-       (SOURCE): Do not compile UNCOMPILED.
-       (release): New target.
-       (ChangeLog): New target.
-       (todo): New target.
-
-       * erc-complete.el(erc-match): Require it.
-       (hippie-exp): Require it.
-
-       * erc-ezbounce.el(erc): Require it.
-
-       * erc-imenu.el(imenu): Require it.
-
-       * erc-nickserv.el(erc-networks): Moved up.
-
-       * erc-notify.el(pcomplete): Require it.
-
-       * erc-replace.el(erc): Require it.
-
-       * erc-sound.el(sound): Typo -- define-key in erc-mode-map.
-
-       * erc-speedbar.el(dframe): Require it.
-       (speedbar): Require it.
-
-       * erc-track.el(erc-default-recipients): devar for the compiler.
-
-       * README: New file.
-
-2002-11-18  Mario Lang  <address@hidden>
-
-       * AUTHORS: File needed for mkChangeLog
-
-       * mkChangeLog: Original code by mhp
-
-2002-11-18  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-button-list): Renamed to erc-list and moved
-       to erc.el.
-
-       * erc.el(erc-list): New.
-
-       * erc-track.el(erc-make-mode-line-buffer-name): Simplified.
-       (erc-modified-channels-display): Simplified.  Now works with all
-       faces, and fixes the bug that when two faces where used (bold
-       erc-current-nick-face), then no faces was added.
-
-       * erc-track.el: Lots of new tests.  Moved some defuns around in
-       the file.
-       (erc-all-channel-names): Renamed.
-       (erc-all-buffer-names): New name, now include query buffers as
-       well.
-       (erc-modified-channels-update-inside): New variable.
-       (erc-modified-channels-update): Use it to prevent running display
-       if already inside it.  This prevented debugging of
-       `erc-modified-channels-display'.
-       (erc-make-mode-line-buffer-name): Moved.
-       (erc-track-shorten-names): Don't test using erc-channel-p as that
-       failed with query buffers.
-       (erc-unique-substrings): Move setq i + 1 to the end of the while
-       loop, so that start is used as a default value instead of start +
-       1.
-
-2002-11-18  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el:
-       erc-unique-substrings: define this before using it in assert
-
-       * erc.el:
-       with-erc-channel-buffer: Define *before* using this macro. This
-       hopefully fixes a bug noted on IRC.
-
-       * erc-notify.el:
-       erc-notify-signon-hook, erc-notify-signoff-hook: New hooks. They're
-       even run when their name suggests!
-
-2002-11-18  Alex Schroeder  <address@hidden>
-
-       * erc-list.el: Typo.
-
-       * erc-speedbar.el: Whitespace only.
-
-       * erc.el(define-erc-module): Avoid defining an alias if name and
-       alias are the same.
-
-       * erc-ibuffer.el: URL
-
-       * erc-imenu.el(erc-imenu-version): New constant.
-
-       * erc-ibuffer.el(erc-ibuffer-version): New constant.
-
-       * erc-ibuffer.el: File header, comments.
-
-       * erc-fill.el(erc-fill-version): New constant.
-
-       * erc-ezbounce.el(erc-ezb-version): New constant.
-
-       * erc-complete.el(erc-complete-version): New constant.
-
-       * erc-chess.el(erc-chess-version): New constant.
-
-       * erc-chess.el: Whitespace only.
-
-       * erc-bbdb.el(erc-bbdb-version): Typo.
-
-       * erc-bbdb.el(erc-bbdb-version): New constant.
-       Lots of whitespace changes.  Changes to the header.
-
-       * erc-track.el(erc-track-shorten-aggressively): Doc.
-       (erc-all-channel-names): New function.
-       (erc-unique-channel-names): New function.
-       (unique-substrings): Renamed.
-       (erc-unique-substrings): New name
-       (unique-substrings-1): Renamed.
-       (erc-unique-substring-1): New name.  Added lots of tests.
-       (erc-track-shorten-names): Call erc-unique-channel-names instead
-
-       * erc-match.el(match): Rewrote a as module.
-
-2002-11-17  Alex Schroeder  <address@hidden>
-
-       * erc-netsplit.el(erc-netsplit-version): New.
-       (netsplit): Defined as a module, replacing erc-netsplit-initialize
-       and erc-netsplit-destroy.
-
-2002-11-17  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el(erc-track-switch-buffer):
-       define-erc-module defines erc-track-mode,
-       not erc-track-modified-channels-mode.
-
-       * erc.el:
-       Variables erc-play-sound, erc-sound-path, erc-default-sound,
-       erc-play-command, erc-ctcp-query-SOUND-hook and functions
-       erc-cmd-SOUND, erc-ctcp-query-SOUND, erc-play-sound, erc-toggle-sound
-       moved to erc-sound.el
-
-       Variables erc-page-function, erc-ctcp-query-PAGE-hook and function
-       erc-ctcp-query-PAGE moved to erc-page.el
-
-       * erc-page.el:
-       erc-page.el: New file. CTCP PAGE support for ERC, extracted from erc.el.
-
-       * erc-sound.el:
-       defin-erc-module: Typo. Autoload should do erc-sound-mode and 
"erc-sound".
-
-       * erc-sound.el:
-       erc-sound.el: New file. Contains all the CTCP SOUND stuff from erc.el.
-
-       * erc.el(erc-process-ctcp-request):
-       Removed (old-style CTCP handling)
-       (erc-join-autogreet): Removed (was broken anyways)
-
-2002-11-17  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-button-version): New constant.
-
-       * erc-button.el(button): rewrote as a module.
-
-2002-11-17  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: New functions:
-       (erc-event-to-hook), (erc-event-to-hook-name): Convert an event to the
-       corresponding hook. The latter only returns the name, while the former
-       interns the hook symbol and returns it.
-
-2002-11-17  Alex Schroeder  <address@hidden>
-
-       * erc-replace.el:
-       Practically total rewrite.  All smiley stuff deleted.
-
-       * erc-track.el(track): typo.
-
-       * erc.el(define-erc-module): Doc change.
-
-2002-11-17  Jorgen Schaefer  <address@hidden>
-
-       * erc-autoaway.el: Changed to use define-erc-module.
-
-       * erc.el(define-erc-module):
-       Make the enable/disable functions interactive.
-
-       * erc.el(erc):
-       Don't use switch-to-buffer when we're in the minibuffer,
-       because that does not work. Use display-buffer instead. This leaves
-       two problems: The point does not advance to the end of the buffer for
-       whatever reason, and after leaving the minibuffer, the new window gets
-       buried.
-
-2002-11-17  Alex Schroeder  <address@hidden>
-
-       * erc-stamp.el(stamp): Doc change.
-
-       * erc-stamp.el(erc-stamp-version): New constant.
-       (stamp): downcase alias name of the mode.
-
-       * erc.el(define-erc-module): Added defalias option, renamed
-       parameters again.
-
-       * erc-track.el: erc-track-modified-channels-mode is now only an
-       alias to erc-track-mode.  Only erc-track-mode is autoloaded.
-       (track): Rewrote call to define-erc-module.
-
-2002-11-16  Mario Lang  <address@hidden>
-
-       * debian/README.Debian: * Spelling fix
-
-       * erc-fill.el: * Fix autoload definition for erc-fill-mode
-
-       * debian/control, debian/maint/postinst, debian/maint/prerm:
-       * Remove /usr/doc -> /usr/share/doc link handling
-
-       * debian/changelog: * Sync with reality
-
-       * debian/scripts/startup.erc:
-       * Add /usr/share/emacs/site-lisp/erc/ to load-path
-       * (load "erc-auto")
-
-       * debian/README.Debian:
-       * Info about the changes since last release updated
-
-       * erc-pcomplete.el: * Fix emacs/xemacs compatibility
-
-       * debian/scripts/install: * Don't compile erc-compat, fix ELCDIR
-
-       * debian/control: * Change maintainer field
-
-       * erc.el:
-       * (defin-erc-module): Renamed argument mode-name to mname because silly 
byte-compiler thought we were talking about `mode-name'.
-
-       * Makefile: * Added debrelease target
-
-       * erc-bbdb.el, erc-pcomplete.el, erc-stamp.el, erc.el:
-       * (define-erc-module): Added mode-name argument.
-       * Converted erc-bbdb, erc-pcomplete and erc-stamp to new macro.
-       * autoload fixes
-
-       * erc-bbdb.el:
-       * Create a global-minor-mode (i.e., make it a proper erc-module)
-
-       * erc.el: * (define-erc-module): New defmacro
-
-2002-11-16  Jorgen Schaefer  <address@hidden>
-
-       * erc-autoaway.el(erc-autoaway-idle-seconds):
-       t in docstrings should be non-nil
-
-2002-11-16  Alex Schroeder  <address@hidden>
-
-       * erc-autoaway.el, erc-button.el, erc-fill.el, erc-match.el,
-         erc-menu.el, erc-ring.el, erc-track.el:
-       Cleanup of file headers: copyright years, GPL mumbo-jumbo, commentaries.
-
-       * erc-stamp.el(erc-insert-away-timestamp-function):
-       New custom type.
-       (erc-insert-timestamp-function): New custom type.
-
-       * erc-fill.el(erc-fill-function): Doc, new custom type.
-       (erc-fill-static): Doc.
-       (erc-fill-enable): New function.
-       (erc-fill-disable): New function.
-       (erc-fill-mode): New function.
-
-       * erc-match.el(erc-match-enable): add-hook for both
-       erc-insert-modify-hook and erc-send-modify-hook.
-       (erc-match-disable): remove-hook for both
-       erc-insert-modify-hook and erc-send-modify-hook.
-
-2002-11-15  Jorgen Schaefer  <address@hidden>
-
-       * erc-autoaway.el:
-       - Added a way to use auto-away using emacs idle timers
-       - Renamed erc-set-autoaway to erc-autoaway-possibly-set-away for 
consistency
-
-2002-11-14  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: erc-mode-map: Removed the C-c C-g binding for erc-grab
-
-       * erc.el:
-       (erc-server-341) Another instance of the channel/chnl problem i didn't
-       see last time
-
-2002-11-14  Alex Schroeder  <address@hidden>
-
-       * erc-compat.el(erc-decode-coding-string): typo
-
-2002-11-14  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-server-341):
-       variable name should be chnl not channel, as it is
-       used this way in this function, and the other erc-server-[0-9]* use
-       chnl too.
-
-       * erc-autoaway.el:
-       Set back on all servers, not just the current one, since we're set
-       away on all servers as well.
-
-       * HISTORY: Fixed typo (ngu.org => gnu.org)
-
-       * erc-autoaway.el, erc-fill.el, erc.el: erc-autoaway.el:
-       * new file
-
-       * erc.el: Removed auto-discard-away facility (now included in
-       erc-autoaway.el)
-       (erc-away-p): new function
-
-       * erc-fill.el (erc-fill-variable): Check whether erc-timestamp-format
-       is bound before using it (erc-fill.el does not require erc-stamp).
-
-2002-11-10  Alex Schroeder  <address@hidden>
-
-       * TODO:
-       TODO: moved it to http://www.emacswiki.org/cgi-bin/wiki.pl?ErcTODO
-
-       * erc.el(with-erc-channel-buffer): Rudimentary doc string.
-
-2002-11-09  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-nick-popup-alist): Made a defcustom.
-
-       * erc-button.el(erc-button-disable): New function.
-       (erc-button-enable): New function, replaces the add-hook calls at 
top-level.
-       (erc-button-mode): New minor mode.
-
-2002-11-08  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-button-entry): Use erc-button-syntax-table.
-
-       * erc.el, erc-stamp.el: Doc changes.
-
-       * erc-match.el(erc-match-mode): New function, replacing the
-       add-hook.
-       (erc-match-enable): New function.
-       (erc-match-disable): New function.
-       (erc-current-nick-highlight-type): Changed from 'nickname to 'nick
-       to make it consistent with the others.
-       (erc-match-message): Ditto.
-
-       * erc-button.el(erc-button-syntax-table): New variable.
-       (erc-button-add-buttons): Use it.
-
-2002-11-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       1) (bug) ERC pops up a new buffer and window when being messaged
-          from an ignored person. fixed
-       2) (misfeature) ERC notices the user in the minibuffer when it
-          ignores something - this can get very annoying, since the
-          minibuffer is also visible when not looking at ERC buffers.
-          Added a customizable variable for this, the default is nil.
-       3) (wishlist) There is no IGNORE or UNIGNORE command.
-          Added.
-       4) (wishlist) Some IRC clients, notably irssi, allow the user to
-          ignore "replies" to ignored people. A reply is defined as a
-          line starting with "nick:", where nick is the nick of an
-          ignored person. Added that functionality.
-       Done by Jorgen Schaefer <address@hidden>
-
-2002-11-02  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-connect): set-process-coding-system to raw-text.
-
-2002-11-01  Brian P Templeton  <address@hidden>
-
-       * erc-pcomplete.el, erc-stamp.el, erc-track.el:
-       Fixed more autoloads
-
-       * erc-compat.el: Added autoload for erc-define-minor-mode
-
-2002-11-01  Mario Lang  <address@hidden>
-
-       * erc.el: * (erc-send-command): will break long messages into
-       a bunch of smaller ones, to prevent them from being truncated by the 
server.
-       The patch also axes some trailing whitespace. :-) <resolve>
-
-2002-10-31  Alex Schroeder  <address@hidden>
-
-       * erc-pcomplete.el(erc-compat): Require.
-       (erc-completion-mode): Use erc-define-minor-mode.
-
-       * erc-track.el(erc-compat): Require.
-       (erc-track-modified-channels-mode): Use erc-define-minor-mode.
-
-       * erc-stamp.el(erc-compat): Require.
-       (erc-timestamp-mode): Use erc-define-minor-mode.
-
-       * erc-compat.el: New file with the code for erc-define-minor-mode,
-       erc-encode-coding-string and erc-decode-coding-string.  Essentially
-       all the stuff that cannot be tested for using a simple boundp or
-       fboundp -- eg. because the number of arguments are wrong.
-
-       * erc.el(erc-compat): Require.
-       (erc-process-coding-system): Moved to erc-compat.el.
-       (erc-connect): Do not set-process-coding-system.
-       (encode-coding-string): Compatibility code moved to erc-compat.el.
-       (decode-coding-string): Compatibility code moved to erc-compat.el.
-       (erc-encode-coding-string): Compatibility code moved to erc-compat.el.
-       (erc-decode-coding-string): Compatibility code moved to erc-compat.el.
-
-2002-10-27  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-display-line-1): Removed call to
-       erc-decode-coding-string.
-       (erc-parse-line-from-server): Added call to
-       erc-decode-coding-string before anything gets parsed at all.
-       (erc-decode-coding-string): Use undecided coding system.
-
-2002-10-24  Sandra Jean Chua  <address@hidden>
-
-       * erc-button.el, erc.el:
-       Added LASTLOG command and action for nick-button
-
-2002-10-22  Sandra Jean Chua  <address@hidden>
-
-       * erc-pcomplete.el:
-       Fixed nopruning bug, added /MODE channel (mode) [nicks...] completion - 
mode not completed yet.
-
-2002-10-16  Sandra Jean Chua  <address@hidden>
-
-       * erc-pcomplete.el:
-       Fixed 'Hi delysid:' bug in SAY completion after realizing that 
pcomplete on commands already took care of completing the initial nick:
-
-2002-10-15  Mario Lang  <address@hidden>
-
-       * erc-pcomplete.el: update from sachac
-
-2002-10-13  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-emacs-time-to-erc-time): Catch when tm is nil.
-
-2002-10-11  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * Fixed `erc-scroll-to-bottom' to scroll to the bottom even when
-         in the middle of a line. Might also fix the Magic ECHAN Bug[tm]. (-:
-
-2002-10-11  Mario Lang  <address@hidden>
-
-       * erc-nickserv.el: Fixed erc-networks for the opn->freenode change
-
-2002-10-08  Mario Lang  <address@hidden>
-
-       * erc-pcomplete.el:
-       Make erc-completion-mode work interactively with already joined channel 
buffers
-
-       * erc-chess.el: Add autoload cookies
-
-       * erc-notify.el: Add pcomplete support
-
-       * erc.el:
-       Remove autoload statements, remove autoload cookie from erc-mode and 
erc-info-mode
-
-       * erc-fill.el, erc-match.el: add/remove autoload cookies
-
-2002-10-06  Alex Schroeder  <address@hidden>
-
-       * erc-pcomplete.el(erc-completion-mode): New global minor mode
-       with autoload cookie.
-       (erc-pcomplete-enable): Renamed erc-pcomplete-initialize.
-       (erc-pcomplete-disable): New function.
-
-       * erc-complete.el: Doc changes.
-
-       * erc-stamp.el(erc-stamp-enable): Renamed erc-stamp-initialize.
-       (erc-stamp-disable): Renamed erc-stamp-destroy.
-       (erc-timestamp-mode): Use new names.
-
-       * erc.el: Removed autoload for erc-complete and
-       erc-track-modified-channels-mode -- the autoload cookie should do
-       that instead.
-       (erc-input-message): Doc string, removed binding for erc-complete.
-       (erc-mode-map): Removed binding for erc-complete.
-
-2002-10-03  Mario Lang  <address@hidden>
-
-       * erc-notify.el:
-       New functions erc-notify-JOIN and erc-notify-QUIT to catch some common 
cases (warning, untested)
-
-2002-10-01  Alex Schroeder  <address@hidden>
-
-       * erc-stamp.el(erc-timestamp-mode): New function.  Removed call
-       to erc-stamp-initialize at the end.
-
-2002-09-25  Brian P Templeton  <address@hidden>
-
-       * erc.el:
-       Added customizable `erc-process-coding-system' variable.
-
-2002-09-22  Brian P Templeton  <address@hidden>
-
-       * erc-fill.el:
-       `erc-fill-variable' now does the right thing when `erc-hide-timestamps' 
is non-nil
-
-2002-09-21  Mario Lang  <address@hidden>
-
-       * erc-fill.el:
-       patch from Peter Solodov <address@hidden>  (note, its slightly broken 
still
-
-2002-09-05  Mario Lang  <address@hidden>
-
-       * erc-pcomplete.el: Added LEAVE as alias for PART
-
-2002-09-04  Mario Lang  <address@hidden>
-
-       * erc-pcomplete.el:
-       By sachac (good work!) keep up doing such things
-
-2002-08-31  Mario Lang  <address@hidden>
-
-       * erc.el:
-       A fix for Bug#133267: now you can put (erc-save-buffer-in-logs) on 
erc-insert-post-hook to save *every* incoming message.
-
-2002-08-30  Brian P Templeton  <address@hidden>
-
-       * erc.el:
-       Changed default value of erc-common-server-suffixes because of the OPN
-       name change
-
-2002-08-28  Mario Lang  <address@hidden>
-
-       * erc-stamp.el: Try to reactivate isearch in xemacs
-
-       * erc-stamp.el:
-       fixes issues related to comparative emacsology and a silly bug
-
-2002-08-27  Mario Lang  <address@hidden>
-
-       * erc.el:
-       New hook erc-send-completed-hook (for robot stuff), changed alexanders 
email address to reflect reality, little fix to erc-auto-query to get a bit of 
a speedup
-
-2002-08-22  Mario Lang  <address@hidden>
-
-       * erc-button.el:
-       Fixed case-fold-search (thanks sachac), now lambda works in 
erc-button-alist, added wardwiki+google+symvar+rfc+itime regexps from the wiki
-
-2002-08-19  Mario Lang  <address@hidden>
-
-       * erc-button.el:
-       erc-nick-popup-alist: New variable to make erc-nick-popup configurable
-
-2002-08-16  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-recompute-nick-regexp): Fixed regexp.
-
-       * erc-button.el(erc-button-buttonize-nicks): Changed custom type
-       to integer.
-       (erc-button-add-buttons): Moved button removal code to new
-       function.
-       (erc-button-remove-old-buttons): New function.
-       (erc-button-add-button): Removed use of overlays and used
-       erc-button-add-face instead.
-       (erc-button-add-face): New function to merge faces as text
-       properties.  This should be much faster when lots of buttons
-       appear.
-       (erc-button-list): New helper function.
-
-       * erc.el(erc-display-message): Fixed argument list.
-       (erc-display-prompt): Reduced calls to length, use start-open
-       property for XEmacs to prevent a little box of erc-prompt-face at
-       the end of messages other people send.
-       (erc-refresh-channel-members): Fix XEmacs calls to split-string,
-       which may return an empty string at the end of the list.  This
-       would cause hangups in erc-button in re-search-forward loops.
-       (erc-get-channel-mode-from-keypress): Replaced control codes with
-       octal escape sequences.
-
-2002-08-14  Mario Lang  <address@hidden>
-
-       * erc-button.el:
-       Try to be compatible to XEmacs regexp-opt. (Im going to quit this job 
if I find more of those damn differencies
-
-       * debian/README.Debian, debian/scripts/install:
-       * Added info to README.Debian
-       * Finished debian/scripts/install
-
-2002-08-13  Mario Lang  <address@hidden>
-
-       * debian/scripts/install: First attempt to fix it
-
-       * debian/README.Debian, debian/changelog, debian/scripts/install:
-       changelog: Changed maintainer and added new entry
-       README.Debian: Re-explained the byte-compile issue
-       scripts/install: Exclude erc-bbdb|chess|ibuffer|speedbar from
-       byte-compiling
-
-       * erc-track.el: Added C-c C-SPC in addition to C-c C-@
-
-       * erc-notify.el: Little docstring change
-
-2002-08-09  Mario Lang  <address@hidden>
-
-       * erc-stamp.el:
-       Change one use of set-text-properties to add-text-properties (tnx Lathi)
-
-2002-08-02  Mario Lang  <address@hidden>
-
-       * erc-stamp.el: added erc-timestamp-only-if-changed-flag
-
-2002-07-22  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Removed timestamp related code and moved into erc-stamp.el
-
-       * erc-stamp.el:
-       Timestamping code moved out of erc.el. Additional, now we can timestamp 
either on the left or on the right side
-
-2002-07-16  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Make ctcp ping return its message in the active buffer, instead of 
the server buffer
-       * Corrected minimal typo in catalog
-       * Added var and variable as alias for /set
-
-2002-07-08  Mario Lang  <address@hidden>
-
-       * erc-track.el:
-       * New function erc-track-switch-buffer (by resolve)
-         Bound to C-c C-SPC, enjoy!
-
-2002-07-08  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: New snapshot deb
-
-       * debian/scripts/install: Rewrote in make.
-       Does not byte-compile erc-speak.el at all, and excludes erc-track.el 
too, if
-       ran for xemacs.
-
-       * debian/control: Added dependency on make
-
-       * debian/copyright: Updated copyright info
-
-       * debian/rules: Use $(wildcard *.el) instead of a hardcoded list
-
-2002-07-03  Diane Murray  <address@hidden>
-
-       * erc.el:
-       erc-iswitchb now works correctly if erc-modified-channels-alist is 
non-nil
-
-2002-07-01  Diane Murray  <address@hidden>
-
-       * erc-menu.el:
-       * changed how we check if we should activate "Track hidden channels" and
-         whether it should be selected - fixes a bug XEmacs where whole menu 
bar
-         does not work if menu is loaded
-
-       * erc-menu.el:
-       * added "Disconnect from server", only selectable if erc-connected is 
non-nil
-
-       * topic is allowed to be set by normal users if channel mode is not +t
-
-       * add " ..." after description if arguments needed after selecting menu 
item
-
-       * only allow selecting of menu points needing a channel if current 
buffer is
-         a channel buffer - done by testing if channel-members is non-nil
-
-       * put erc-match functions in new group "Pals, fools and other keywords"
-
-       * erc.el:
-       * moved definition of erc-show-my-nick to GUI variables section
-
-       * erc-connected variable now defined with defvar
-         now set in channel and query buffers, was only in server buffer before
-         upon disconnect, set erc-connected to nil in all the server's buffers
-
-       * added erc-cmd-GQUIT and its alias erc-cmd-GQ - quit all servers at 
once
-
-       * added interactive function erc-quit-server, bound to C-c C-q
-
-       * added erc-server-WALLOPS
-
-       * added WALLOPS to english catalog, fixed s461 (was showing message 
twice)
-
-       * typo fixes, spacing change
-
-2002-06-29  Mario Lang  <address@hidden>
-
-       * erc.el: Use pp-to-string in /set (without args)
-
-       * erc-netsplit.el:
-       Make /set anonymous-lign set erc-anonymous-login, also report
-       which var was set to which val.
-
-2002-06-28  Diane Murray  <address@hidden>
-
-       * erc-menu.el: added "Customize ERC"
-
-2002-06-25  Mario Lang  <address@hidden>
-
-       * erc.el: New variable: erc-use-info-buffers, defaults to nil.
-         This prevents info-buffers from being created/updated.
-         Set to t if you use :INFO buffers.
-         (by rw)
-       Delete (erc-display-prompt) from reconnect to avoid clutter
-
-2002-06-23  Diane Murray  <address@hidden>
-
-       * erc.el:
-       erc-get-channel-mode-from-keypress is now bound to C-c C-m
-       erc-insert-mode-command is taken care of by this function as well
-
-2002-06-21  Mario Lang  <address@hidden>
-
-       * erc-track.el:
-       Fixed bug where buffer-names suddenly had text-properties.
-
-2002-06-19  Diane Murray  <address@hidden>
-
-       * Makefile: changed erc-auto.el to $(SPECIAL) in make fullclean
-
-       * Makefile: remove erc-auto.el on make fullclean
-
-2002-06-18  Diane Murray  <address@hidden>
-
-       * erc-match.el: fixed spelling error
-
-       * erc-track.el, erc-match.el: * erc-match.el:
-         highlight current nickname in its own face (inactive by default):
-         - added erc-current-nick-highlight-type, erc-current-nick-face,
-           erc-current-nick-p
-
-       * erc-track.el:
-         added support for erc-current-nick-face
-
-2002-06-17  Diane Murray  <address@hidden>
-
-       * erc.el: * added beginning support for 005 numerics:
-         - added buffer local variable erc-server-parameters
-         - added erc-server-005, which sets erc-server-parameters if the 
server has
-           used this code to show its parameters
-
-2002-06-16  Diane Murray  <address@hidden>
-
-       * erc.el:
-       * bugfix: when pasting lines with blank lines in between, remove the 
blank lines
-         but send the rest
-
-       * since we know the command, use it when checking what's in 
erc-hide-list
-         added check to erc-server-KICK
-
-       * added some blank lines for better readability
-
-2002-06-16  Alex Schroeder  <address@hidden>
-
-       * erc-nickserv.el(erc-nickserv-alist): Fixed typo.
-
-2002-06-15  Alex Schroeder  <address@hidden>
-
-       * erc-nickserv.el(erc-networks): Added doc string.
-       (erc-nickserv-alist): Added doc string.
-
-2002-06-14  Diane Murray  <address@hidden>
-
-       * erc-ring.el:
-       fixed bug so that the prompt and command always get put at the end of 
the buffer
-
-2002-06-10  Mario Lang  <address@hidden>
-
-       * erc-nickserv.el: Added iip support.
-       Added :type for erc-nickserv-passwords custom.
-       Fixed hook usage.
-
-2002-06-07  Diane Murray  <address@hidden>
-
-       * erc-nickserv.el: * added GalaxyNet
-
-       * erc-nickserv-alist:
-         - sorting networks alphabetically
-         - added two more pieces of information in erc-nickserv-alist:
-           word to use for identification and whether to use the nickname
-
-       * erc-current-network:
-         - made regex case insensitive, downcase server to match
-         - uses the new information
-         - now uses new variable erc-networks instead of doing checking 
manually
-
-       * added variable erc-networks
-
-       * fixed some indentation, documentation
-
-2002-06-07  Mario Lang  <address@hidden>
-
-       * erc.el: Fix for kill-buffer hook stuff
-
-2002-06-06  Mario Lang  <address@hidden>
-
-       * erc.el: Added /squery command
-
-2002-06-06  Diane Murray  <address@hidden>
-
-       * erc-menu.el: * made group Channel modes
-         - moved change mode and invite only mode to here
-         - added secret, moderated, no external send, topic lock, limit, key
-
-       * check that user is in a channel buffer and user is a channel operator
-         for all op-related actions
-
-       * "Identify to nickserv" needs erc-nickserv-identify defined
-
-       * added "Show ERC version"
-
-       * erc.el:
-       * added erc-set-channel-limit, erc-set-channel-key, 
erc-toggle-channel-mode
-
-       * added erc-get-channel-mode-from-keypress, which is bound to C-c m
-         sends the next character which is typed to one of the 3 new functions
-         - did not remove erc-invite-only-mode and it's key binding in case
-           people are used to it, although it probably should be removed...
-
-       * in erc-server-MODE:
-         added check if tgt equal to user's nick
-         removed erc-display-line, only using the erc-display-message
-
-       * added s461 to english catalog
-
-       * fixed bug where XEmacs would not quit if erc-quit-reason was
-         set to erc-quit-reason-various and assoc-default was not defined
-
-2002-06-04  Andreas Fuchs  <address@hidden>
-
-       * erc-ezbounce.el, erc-match.el:
-       * erc-ezbounce.el: Added. Provides support for ezbouncer; automatic 
login,
-                          session management implemented. I've contacted the 
author
-                          about stuff in EZBounce's logging.
-       * erc-match.el: Fixed a stupid mistake where
-                       "*** Your new nick is <foo>" would trigger an error.
-
-2002-06-04  Diane Murray  <address@hidden>
-
-       * erc-nickserv.el, erc.el: * added erc-nickserv.el
-       * moved nickserv identification variables and functions to the new file
-         (require 'erc-nickserv) is now necessary for this to work
-
-       * erc.el:
-       * results of /COUNTRY now formatted as notice; errors are ignored,
-         fixing
-         bug which made prompt disappear
-
-       * added undefined-ctcp error message to english catalog
-
-       * changed some (when (not erc-disable-ctcp-replies) to use unless 
instead
-         and some if's without else statements to use when or use
-
-       * CTCP replies now use erc-display-message, formatted as notices
-
-       * added following to english catalog:
-         - undefined-ctcp
-         - CTCP-CLIENTINFO, CTCP-ECHO, CTCP-FINGER, CTCP-PAGE, CTCP-PING,
-           CTCP-SOUND, CTCP-TIME, CTCP-UNKNOWN, CTCP-VERSION
-         - s303, s305, s306, s353
-
-       * split erc-server-305-or-306 into erc-server-305 and erc-server-306
-
-       * KICK already had buffer set, using it
-
-       * erc.el:
-       * erc-format-timestamp now only called from erc-display-message and
-         erc-send-current-line
-
-       * all instances of erc-display-line with erc-highlight-error
-         changed to use erc-display-message
-
-       * added following error messages to english catalog:
-         bad-ping-response, bad-syntax, cannot-find-file, cannot-read-file,
-         ctcp-request, flood-ctcp-off, flood-strict-mode, no-default-channel,
-         no-target, variable-not-bound
-
-       * added following server related messages to english catalog:
-         s324, s329, s331, s332, s333, s341, s406, KICK, KICK-you, 
KICK-by-you, MODE-nick
-
-       * ignoring server codes 315, 369
-
-       * added erc-server-341, erc-server-406
-
-       * channel topic and mode notices displayed in respective channel 
buffers if they
-         exist
-
-       * erc-server-KICK: display the message before removing this channel so 
that we
-         can track the kick
-
-       * send parsed to erc-ctcp-query-ACTION-hook so that actions can be 
checked
-         by erc-match
-
-       * fixed bug where nil was shown if no reason was given by users on /PART
-
-2002-06-03  Diane Murray  <address@hidden>
-
-       * erc-match.el:
-       * fixed bug where erc-log-matches produced an error when the value of
-         (erc-default-target) was not a channel
-       * use erc-format-timestamp, if it's non-nil, for %t in 
erc-log-match-format
-
-2002-06-01  Diane Murray  <address@hidden>
-
-       * erc-button.el:
-       * made action case insensitive in erc-nick-popup and added a more 
descriptive
-         error message
-
-2002-05-30  Brian P Templeton  <address@hidden>
-
-       * erc.el:
-       Removed multiple calls of `erc-prompt' in `erc-display-prompt'
-
-2002-05-29  Mario Lang  <address@hidden>
-
-       * erc.el:
-       First step timestampkiller cleanup. I'm tired, do the rest tomorrow.
-
-       * erc.el:
-       New functionality: Catch channel/server buffer kills through 
kill-buffer-hook.
-       Currently, it only does a PART if you kill a channel buffer.
-
-2002-05-28  Mario Lang  <address@hidden>
-
-       * erc.el:
-       defvar'ed some buffer-local variables to make elint at least a bit more 
happy.
-         Moved comments into docstrings.
-       Changed some instances of member to memq.
-
-       * erc-track.el, erc.el:
-       * erc.el (erc-message-type-member): New function, used to test
-       for message type. Require erc-parsed text-property.
-       * erc-track.el (erc-track-exclude-types): New variable. Defaults
-       to ("JOIN" "PART") right now for testing, it should eventually set
-       to nil soon again.
-       (erc-track-modified-channels): Use above fun and var to optionally
-       exclude certain message types from channel tracking.
-
-2002-05-28  Diane Murray  <address@hidden>
-
-       * CREDITS: added myself, vain as it sounds ;)
-
-2002-05-25  Mario Lang  <address@hidden>
-
-       * erc.el: * Some small docstring fixes
-       * (erc-display-line): Now takes also a process object in the buffer 
argument.
-         Used for easy sending to the server buffer.
-       * Several places: Just pass proc, not (process-buffer proc)
-
-2002-05-24  Mario Lang  <address@hidden>
-
-       * erc.el: Mostly docstring fixes/additions
-
-       * erc-netsplit.el: Doc fixes, and a new netjoin-done message.
-
-       * erc-fill.el: Doc fixes, erc-fill custom group, autoloads.
-
-       * erc-netsplit.el: Fix to erc-netsplit-timer.
-
-       * erc-netsplit.el: Fixed a silly typo
-
-       * erc-maint.el: is this really necessary?
-
-       * erc.el: Added new variable erc-hide-list.
-       It affects erc globally right now, and is used to hide certain IRC type 
messages like JOIN and PART.
-
-       * Makefile: Doh, I should really test this before checkin :)
-
-       * Makefile: Silly cut&paste bug fixed
-
-       * erc-list.el: Added autoload cookie
-
-       * erc-match.el: Added missing require erc.
-
-       * erc-notify.el: Autoload cookies and a -initialize function.
-
-       * erc-chess.el: Added autoload cookies
-
-       * Makefile: Finally, we have a Makefile.
-       Primarily used for autoload definition generation right now.
-
-       * erc-auto.in: First version.
-
-       * erc-track.el: Added autoload cookie
-
-       * erc-netsplit.el:
-       New module, used to autodetect and hide netsplits.
-       (Untested, no netsplit happened yet :) )
-
-       * erc-nets.el: Added some old code I once worked on.
-       Added autoload cookie
-
-2002-05-24  Diane Murray  <address@hidden>
-
-       * erc-fill.el:
-       removed reference in documentation to old variable, changed it to the 
new one
-
-       * erc.el:
-       * added new function erc-connection-established which is called after 
receiving
-         end of MOTD (does nothing if it's been called before)
-
-       * added new hook erc-after-connect which is called from
-         erc-connection-established with the arguments server (the announced 
server)
-         and nick - which other arguments should be sent??
-
-       * added buffer variable erc-connected which is set to t the first time
-         erc-connection-established is called, set to nil again if we've been
-         disconnected
-
-       * set initial user mode
-         - added custom variable erc-user-mode which can be a string or a 
function
-           which returns a string
-         - new function erc-set-initial-user-mode gets called from
-           erc-connection-established
-
-2002-05-22  Diane Murray  <address@hidden>
-
-       * erc.el: fixed bug where prompt was missing after reconnect
-
-2002-05-21  Diane Murray  <address@hidden>
-
-       * erc.el:
-       in erc-nickserv-identify: if network is unknown, just use "Nickserv"
-
-       * erc.el: * fixed some typos
-
-       * timestamping
-         - ctcp request messages and replies now have timestamp
-         - timestamps in front of error messages now in timestamp face
-         - added timestamp to more error messages
-
-       * ctcp reply messages, server ping message updated
-
-       * added variable erc-verbose-server-ping - check this instead of 
erc-paranoid
-
-       * added whowas on no such nick:
-         - added variable erc-whowas-on-nosuchnick
-         - in erc-server-401 do WHOWAS if erc-whowas-on-nosuchnick is non-nil
-
-       * erc.el: forgot documentation for erc-nickserv-alist
-
-       * erc.el: NickServ identification changed and enhanced:
-       - erc-nickserv-identify-autodetect now called from 
erc-server-NOTICE-hook
-       - now possible to identify automatically without prompt:
-         - added custom variables erc-prompt-for-nickserv-password and
-           erc-nickserv-passwords
-       - added erc-nickserv-alist containing the different networks' nickserv 
details
-       - added function erc-current-network to determine the network symbol
-       - fixed bug where identification on dalnet didn't work, because they now
-         require address@hidden
-         now sends to all NickServ with address@hidden where possible
-
-2002-05-17  Diane Murray  <address@hidden>
-
-       * erc-fill.el:
-       * filling with erc-fill-variable now works with custom defined fill 
width:
-         - changed erc-fill-column from defvar to defcustom
-         - in erc-fill-variable: set fill-column to value of erc-fill-column
-
-       * erc.el: erc.el:
-       * fixed bug where topic wasn't being set when channel name was provided
-
-       erc-fill.el:
-       * filling with erc-fill-variable now works with custom defined fill 
width:
-         - changed erc-fill-column from defvar to defcustom
-         - in erc-fill-variable: set fill-column to value of erc-fill-column
-
-2002-05-16  John Wiegley  <address@hidden>
-
-       * erc.el: whitespace fix
-
-2002-05-15  Diane Murray  <address@hidden>
-
-       * erc.el:
-       * added explanation of empty string working in 
erc-quit-reason-various-alist
-       * removed the text property from erc-send-message, it caused problems
-         with /SV (as noticed by gbvb on IRC) and is obviously not needed
-       * when receiving a ctcp query, convert type to uppercase to allow for
-         "/ctcp nick time" and not just "/ctcp nick TIME"
-       * timestamp in front of server notices now shown in the timestamp face
-
-2002-05-13  Diane Murray  <address@hidden>
-
-       * erc.el:
-       - in erc-format-privmessage: `erc-format-timestamp' added to message 
after
-         message's text properties are applied so that it doesn't lose its face
-
-       - /quit without reason now works when `erc-quit-reason' is set to
-         `erc-quit-reason-various' and the empty string "" is defined in
-         `erc-quit-reason-various-alist'
-
-2002-05-13  Andreas Fuchs  <address@hidden>
-
-       * erc-bbdb.el:
-       * Applied Drewies patch to pop-up on nick changes when -popup-type is 
'visible
-
-2002-05-12  Andreas Fuchs  <address@hidden>
-
-       * erc-bbdb.el, erc.el:
-       * erc-bbdb.el: pop up the buffer on /whois when erc-bbdb-popup-type is 
'visible
-       * erc.el: fix for empty quit reason problem by drewie.
-
-2002-05-12  Mario Lang  <address@hidden>
-
-       * erc.el: disumu nick patch
-       - added erc-show-my-nick (default t)
-         if t, show nickname like <nickname>
-         if nil, only show a > character before the message
-       - added faces erc-nick-default-face and erc-nick-msg-face
-         - nicknames (channel, msgs, notices) are now in bold face by default
-         - the msg face matches the erc-direct-msg-face color
-
-2002-05-10  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-send-pre-hook): Doc change.
-
-       * CREDITS: Alexander L. Belikoff is confirmed original author.
-
-2002-05-10  Mario Lang  <address@hidden>
-
-       * erc.el:
-       timestamp fix by disumutimestamp fix by disumutimestamp fix by 
disumutimestamp fix by disumutimestamp fix by disumutimestamp fix by 
disumutimestamp fix by disumutimestamp fix by disumu
-
-2002-05-09  Mario Lang  <address@hidden>
-
-       * erc.el: *** empty log message ***
-
-2002-05-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       New var: erc-echo-notices-in-minibuffer-flag. defaults to t.
-
-2002-05-04  John Wiegley  <address@hidden>
-
-       * TODO: *** empty log message ***
-
-2002-05-03  Alex Schroeder  <address@hidden>
-
-       * erc.el: Copyright notice, version string updates.
-
-2002-05-02  Alex Schroeder  <address@hidden>
-
-       * erc.el: Comment: dme is David Edmondson
-
-2002-05-01  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-warn-about-blank-lines): New option.
-       (erc-send-current-line): Use it.
-       (erc-quit-reason-various-alist): New option.
-       (erc-quit-reason): New option.
-       (erc-quit-reason-normal): New function.
-       (erc-quit-reason-zippy): New function.
-       (erc-quit-reason-various): New function.
-       (erc-cmd-QUIT): Use them.
-
-2002-04-30  Alex Schroeder  <address@hidden>
-
-       * erc.el: Version 2.92
-
-       * erc.el(erc-send-modify-hook): Default value is nil.
-
-2002-04-27  John Wiegley  <address@hidden>
-
-       * erc.el:
-       Don't redisplay the prompt if the ERC buffer is no longer alive.
-
-2002-04-26  John Wiegley  <address@hidden>
-
-       * erc.el:
-       Don't call `set-buffer' on old-buf unless the buffer is valid.  It's
-       often not when separate frames are being used.
-
-2002-04-23  Mario Lang  <address@hidden>
-
-       * erc-button.el: fixed up erc-nick-regexp
-
-2002-04-22  Brian P Templeton  <address@hidden>
-
-       * erc.el:
-       `erc-prompt' may now be a function that returns a string (which is
-       used as the prompt). I don't use Customize but I think customization
-       of it may be broken if it's not a string.
-
-       There is a new `erc-prompt' function that returns the prompt as a
-       string (e.g., returning either the result of `(funcall erc-prompt)' or
-       `erc-prompt').
-
-       This allows for dynamic prompts, such as a LispWorks-like prompt, or
-       one containing simply the current channel name. It was requested by
-       Mojo Nichols (nick michols) in #emacs today, 21-Apr-2002; cf. the
-       #emacs logs at <URL:http://www.tunes.org/~nef/logs/emacs/02.04.21.
-
-2002-04-17  Mario Lang  <address@hidden>
-
-       * erc.el:
-       fix erc-send-current-line to work on empty lines again (without sending 
the prompt)
-       Fix C-c C-t to not include the nick/time info
-       (both from antifuchs)
-
-       * erc-complete.el: Fix for xemacs elt behavior
-
-2002-04-17  John Wiegley  <address@hidden>
-
-       * erc-chess.el:
-       Added a missing arg in a call to erc-chess-handler.
-
-2002-04-15  John Wiegley  <address@hidden>
-
-       * erc-chess.el: *** empty log message ***
-
-2002-04-14  John Wiegley  <address@hidden>
-
-       * erc-chess.el: *** empty log message ***
-
-2002-04-12  John Wiegley  <address@hidden>
-
-       * erc-chess.el: *** empty log message ***
-
-       * erc-chess.el: bug fixes
-
-       * erc-chess.el: *** empty log message ***
-
-2002-04-12  Mario Lang  <address@hidden>
-
-       * erc-chess.el: change order.
-
-       * erc-chess.el: more fixing.
-
-       Now, the 'match question works. It sends an accept back.
-       But display popup doesn't work..
-
-       * erc-chess.el: fixup (still far from working)
-
-2002-04-11  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Added :options entry for erc-mode-hook (erc-add-scroll-to-bottom)
-
-2002-04-11  John Wiegley  <address@hidden>
-
-       * erc.el: remove trailing \n from any sent text
-
-       * servers.pl, erc-bbdb.el, erc-button.el, erc-chess.el,
-         erc-complete.el, erc-fill.el, erc-ibuffer.el, erc-list.el,
-         erc-match.el, erc-menu.el, erc-nets.el, erc-replace.el,
-         erc-speak.el, erc-speedbar.el, erc-track.el, erc.el:
-       clean whitespace
-
-       * erc.el: Replaced erc-scroll-to-bottom.
-
-2002-04-11  Mario Lang  <address@hidden>
-
-       * erc-track.el:
-       try to fix behavior when used with different frames.
-
-2002-04-09  Mario Lang  <address@hidden>
-
-       * erc-chess.el:
-       fixup release, far from ready for real usage, but it appears to work.
-
-       * erc.el:
-       speed improvements based on elp-instrument-package RET erc- RET results
-
-       * erc-chess.el: initial version.
-       please test it
-       Get chess.el from johnw's cvs:
-       cvs -d:pserver:address@hidden:/usr/local/cvsroot login
-       cvs -d:pserver:address@hidden:/usr/local/cvsroot co chess
-
-       (as usual, blank password)
-
-       Add the resulting dir to your load-path and require erc-chess.
-
-       Usage: Just do /chess nickname
-       The remote end much use erc, as no other irc client I know of supports 
this ...
-
-       See erc-chess-default-display and maybe set it to chess-images or 
chess-ics1 if you prefer those over chess-plain.
-       Also, see erc-chess-user-full-name to set the name you use in chess 
games.
-
-2002-04-04  Mario Lang  <address@hidden>
-
-       * erc.el: New hackery latenightwise
-
-       * erc.el: upupadowndowncase
-
-2002-04-04  Gergely Nagy  <address@hidden>
-
-       * debian/changelog: Updated for the new snapshot
-
-       * debian/rules: Install README.Debian into the package
-
-       * debian/README.Debian: Initial check-in
-
-2002-04-04  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fixed that /me in query buffers ended up in server buffer
-
-       * erc.el: * Implemented joining +k channels
-
-2002-03-14  Mario Lang  <address@hidden>
-
-       * erc.el: New utility function: erc-channel-list
-       minor fix to erc-get-buffer. hopefully that helps shapr
-
-2002-03-12  Mario Lang  <address@hidden>
-
-       * erc.el:
-       New /command: /QUOTE for sending directly to the IRC server
-       Removed erc-fill from erc-insert-modify-hook. To activate filling, 
simply customize that var.
-
-2002-03-09  Brian P Templeton  <address@hidden>
-
-       * CREDITS: *** empty log message ***
-
-2002-03-09  Mario Lang  <address@hidden>
-
-       * erc-complete.el:
-       New variable: erc-nick-completion-ignore-case. Defaults to t.
-
-       * erc-track.el:
-       * erc-track-shorten-name-function can now be set to nil to avoid 
treating of channel names at all.
-
-2002-03-06  Gergely Nagy  <address@hidden>
-
-       * debian/changelog, debian/rules: update to new snapshot
-
-2002-03-06  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fixed nasty bug which prevented channel limit from correctly 
display/handling
-
-       * erc-track.el: Made shortening code highly customizable.
-       Now, there is the variable erc-track-shorten-function which holds
-       a function which gets called with one argument, CHANNEL-NAMES, which is 
a list
-       of strings of the channel names.
-       It needs to return a list of strings of the same length with the 
modified values...
-
-       * erc-track.el:
-       Added erc-track-shorten-aggressively, default to nil
-       if it is set to t, erc will shorten a bit more.
-       if nil, erc will shorten the name only if it would get shorter than just
-       one char...
-
-       * erc-speak.el: added iirc to the abbreviation expansion list.
-
-       * erc-track.el:
-       Added customization variable: erc-track-use-faces. defaults to t.
-
-       * erc-track.el: *** empty log message ***
-
-       * erc-track.el:
-       experimental: Added face support to mode-line channel activity tracker.
-       Currently we use the faces used for indicating in the buffer 
(erc-pal-face for channels with pal activity...)
-
-2002-03-05  Mario Lang  <address@hidden>
-
-       * erc-complete.el: * added docfixes (thanks ore)
-
-       * erc-track.el: Fixed channel-name reduction.
-       thanks again alex.
-       Renamed the vars to erc-track-opt-start and erc-track-opt-cutoff.
-
-       * erc.el: fixed another silly error
-
-       * erc-track.el: Implemented channel name shortening.
-       Vars erc-track-cutoff says: all channel names longer than this will be 
shortened.
-       Var erc-track-minimum-channel-length says: don't make names shorten 
than this.
-       (Thanks go out to kensanata for the nice unique-substrings utility 
function).
-
-       * erc.el 2002-07-15T00:01:address@hidden: silly typo corrected
-
-       * erc.el: New variable: erc-common-server-name-suffixes
-         This alist can be used to change the server names displayed in 
mode-line
-         to a shorter version..
-       * New function: erc-shorten-server-name (uses var above)
-       * Changed erc-prepare-mode-line to use erc-shorten-server-name.
-
-2002-02-25  Mario Lang  <address@hidden>
-
-       * erc.el:
-       CTCP handling rewritten. Seems to work. please test and report probs.
-
-2002-02-24  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fixed emacs20 backward compatibility (new defun/alias: erc-propertize)
-
-2002-02-22  Mario Lang  <address@hidden>
-
-       * erc-button.el: *** empty log message ***
-
-2002-02-21  Mario Lang  <address@hidden>
-
-       * erc-button.el, erc.el:
-       minor fixup related to read-only prompts and command renaming.
-
-2002-02-21  Andreas Fuchs  <address@hidden>
-
-       * erc.el: * modify `erc-remove-text-properties-region' to work.
-         Could even be a little faster now. (-:
-
-2002-02-21  Mario Lang  <address@hidden>
-
-       * erc-ring.el:
-       fixed erc-replace-command to behave right when text is read-only.
-       Also, use erc-insert-marker and (point-max) now.
-
-       * erc.el: * Made erc-prompt read-only
-       * new function: erc-make-read-only. Can be used on erc-insert-post-hook 
and erc-send-post-hook to ensure read-only buffer text too
-
-2002-02-19  Mario Lang  <address@hidden>
-
-       * erc-list.el: added comment to docstring
-
-       * erc-speak.el: minor updates, use erc-nick-regexp now
-
-       * erc.el:
-       ensure that erc-timer-hook is called inside the server-buffer.
-
-2002-02-19  Andreas Fuchs  <address@hidden>
-
-       * erc-match.el:
-       * Probably fixed the "number-char-or-marker-p: nil" bug.
-
-2002-02-19  Mario Lang  <address@hidden>
-
-       * erc-notify.el: Initial release.
-
-       * erc.el: added #303 handling
-       moved timer and added an arg (erc-current-time)
-
-       * erc-list.el, erc.el:
-       slightly changed the erc-once-with-server-event macro
-
-       * erc-button.el: erc-button-alist: doc fix and custom type fix
-
-2002-02-18  Mario Lang  <address@hidden>
-
-       * erc-list.el, erc.el: new macro: erc-once-with-server-event
-       erc-list.el: use it
-
-       * erc-match.el:
-       Minor fix related to hook call method change (-until-seccess now)
-
-       * erc.el: fixed ctcp behavior abit (with auto-query on)
-
-       * erc-list.el: ChanList mode.
-       Load it, and type M-x erc-chanlist RET
-       Demonstrates how the new hook system can be nicely used.
-
-       * erc.el:
-       new hook: erc-default-server-hook. This one gets called if we don't 
have anything defined for a certain IRC server message.
-       New function: erc-default-server-handler. (used by above hook).
-       New function: erc-debug-missing-hooks: Used by above hook to save a 
list of unimplemented server messages.
-       New function: erc-server-buffer, erc-server-buffer-p.
-       Various places: use it.
-       Minor fixup.
-
-       * erc-button.el: fix regexp to not buttonize address@hidden hostnames
-
-2002-02-17  Mario Lang  <address@hidden>
-
-       * erc-complete.el, erc.el: Eliminated erc-command-table
-       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!)
-         e.g. /help auto-q
-       fixed autoloads for erc-add-pal and so on to be interactive.
-
-2002-02-17  Andreas Fuchs  <address@hidden>
-
-       * erc-match.el:
-       * Fix unfunctional code in `erc-get-parsed-vector-type'.
-
-       * erc-bbdb.el, erc-button.el, erc-match.el, erc.el:
-       * Be careful: MANY changes ahead. I won't go into too much details.
-
-       * erc.el, new file erc-match.el: split out all pattern-matching code.
-       * erc.el: removed all defcusts for erc-{...}-highlight-props. They are
-         quite useless, anyway.
-       * moved erc-add-entry-to-list and -remove- over to erc-match. changed
-         their arg list.
-       * erc.el: add autoloads for 
erc-{add,delete}-{keyword,pal,fool,dangerous-host}
-       * erc.el: erc-server-PRIVMSG-or-NOTICE:
-         - remove all the highlighting crap
-         - add a (when (eq s nil) ...) so that untreated CTCP messages don't
-           get misdisplayed.
-       * erc.el: erc-mark-message: removed this function, it's useless
-       * erc.el: minor bugfixes.
-
-       * erc-match.el: first checkin. This file now contains all the pattern
-         matching stuff. there is now another defcust group, erc-match,
-         containing all match related stuff (erc-keywords, ...)
-       * erc-match.el: added functionality to log matching lines. Quite
-         customizable, check out the docstring of defun erc-log-matches
-       * erc-match.el: added functionality to make foolish messages
-         invisible/intangible. This could replace erc-ignore-list
-         sometime. it's more powerful right now, anyway.
-       * erc-match.el erc-text-matched-hook: new hook. run when Text matches
-         anything (pal, fool, etc.).
-
-       * erc-button.el: Make nick buttonization customizable.
-       * erc-button.el: Give nick buttonization a lower priority so that it
-         does not break url buttons.
-
-       * erc-bbdb.el: Add \n to the separators by which we split nicknames.
-
-2002-02-17  Mario Lang  <address@hidden>
-
-       * TODO: Added item
-
-2002-02-17  Brian P Templeton  <address@hidden>
-
-       * CREDITS, erc.el: Added invisible timestamp support.
-
-2002-02-16  Gergely Nagy  <address@hidden>
-
-       * debian/changelog, debian/rules, debian/scripts/install:
-       updated to new snapshot
-
-2002-02-16  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fixed channel limit format overflow in mode-line display.
-       (Having to use floats if integers are to large is quite strange, isn't 
it?)
-
-       * TODO: TODO list created.
-       Add comments and expand it.
-
-       * erc.el:
-       Fixed bug in query buffer handling (only happend in mixed-case 
situations)
-
-       * erc.el: shapr checkdoc patch #1
-       massive docfixes! yay, keep going!
-
-2002-02-15  Mario Lang  <address@hidden>
-
-       * erc.el: various other fixes
-       make s301 a catalog entry
-
-2002-02-15  Andreas Fuchs  <address@hidden>
-
-       * erc.el: * erc-server-NICK and erc-server-INVITE: fixed to use
-         `erc-display-message'. These I missed in the first checkin.  I
-         didn't say it in the last log message, but please test these.
-
-       * erc-fill.el, erc.el:
-       * erc.el: updated many functions to use `erc-display-message'. Now, we
-         should go for getting highlighting out of
-         erc-server-PRIVMSG-or-NOTICE. The part I want to attack has been
-         marked.
-       * erc-fill.el: updated static filling to leave the erc-parsed property 
alone.
-
-2002-02-15  Mario Lang  <address@hidden>
-
-       * erc.el:
-       first step, new function: erc-display-message
-
-       * erc.el: added numreply 379 and 405.
-
-       * erc.el: stupid typo fixed
-
-       * erc.el:
-       Finally renamed erc-frame-dedicated-p to erc-frame-dedicated-flag
-       Removed usage of erc-interpret-controls from info buffer drawing (major 
speedup)
-       Other speedups based on the results from elp.
-       ERC is now about 300%-500% faster in some situations with very full 
channels!!!!!
-
-2002-02-14  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * erc-downcase now downcases {}|^ with []\~ -- 'stolen' from zenirc.
-       * various checkdoc fixes. Just the upper third of the file, but that
-         should help a little, too. (-: Again, if you have any writing
-         skills, take out that dusty keyboard and tap it to the beat of M-x
-         checkdoc!
-
-2002-02-14  Gergely Nagy  <address@hidden>
-
-       * erc.el(erc-format-privmessage):
-       fix it, so timestamp-coloring works again (patch from antifuchs)
-
-2002-02-14  Mario Lang  <address@hidden>
-
-       * erc.el: Many fixes based on M-x checkdoc RET.
-       If you have write access, and some english knowledge, help document erc 
too!
-       M-x checkdoc RET, and follow the instructions.
-
-       * erc-button.el, erc-ibuffer.el: minor fixes
-
-       * erc.el: Use nreverse instead of reverse.
-       Use eq instead of equal where possible.
-       Rewrote erc-get-buffer to not use find-if (find-if does very deep 
function-call nesting, which isn't good in a defun which is called so often)
-
-2002-02-13  Mario Lang  <address@hidden>
-
-       * erc-button.el, erc.el:
-       In erc.el, new hook: erc-channel-members-changed-hook.
-       erc-button.el: Now highlight all nicknames. uses regexp-opt.
-
-2002-02-04  Mario Lang  <address@hidden>
-
-       * erc-nets.el:
-       Database of irc networks. Use erc-server-select to interactively select 
one.
-
-       * erc.el: * erc-format-nick-function: New variable.
-       * (erc-format-nick): The default for above var. Just return the nick.
-       * (address@hidden): Prefix NICK with @ or + if OP or VOICE.
-       * Removed erc-track-modified-channels related code and moved into 
erc-track.el
-          Its auto-loaded now
-
-       * erc-track.el: Split code from erc.el
-
-2002-02-01  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el:
-       * erc-target now uses erc-port-to-string
-
-       * servers.pl:
-       Script to convert mircs servers.ini to a elisp salist kind of thing.
-       (development tool, it doesn't help you much as a user)
-
-       * erc.el:
-       * erc-display-line-buffer: renamed to erc-display-line-1
-       * erc-port-equal: New function.
-       * erc-normalize-port: Used by erc-port-equal
-       * minor docstring fixes
-
-2002-02-01  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * erc-already-logged-in-p: compare ports is more robust now.
-
-       * erc-button.el: * Add buttonization to erc-send-modify-hook, too
-
-2002-01-31  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Use insert-before-markers instead of insert in erc-display-line-buffer
-       This fixed address@hidden 0 problem and gives us some speedup! yay
-
-       * erc-ibuffer.el, erc.el: minor fixes
-
-       * erc.el:
-       * (erc-line-beginning-position): Renamed to erc-beg-of-input-line.
-       * (erc-line-end-position): Renamed to erc-end-of-input-line.
-       * erc-multiline-input-p: Variable removed.
-
-       * erc.el:
-       Minor docstring fixes (using M-x checkdoc-current-buffer)
-         If you find time, and you are native english speaker, do that too!!
-
-       * erc.el: fixed macro-invocation
-
-2002-01-31  Andreas Fuchs  <address@hidden>
-
-       * erc.el: * erc-with-all-buffers-of-server: use erc-list-buffers
-       * erc-process-away, erc-{save,kill}-query-buffers: use it.
-       * erc-cmd-away-all: new command. Set away/back on all servers.
-
-       * erc.el:
-       * Fix last multiline bug in erc-send-distinguish-noncommands.
-
-2002-01-31  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el, erc.el: minor fixes
-
-2002-01-30  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el, erc-menu.el, erc-speak.el, erc.el:
-       Renamed erc-track-modified-channels-minor-mode to 
erc-track-modified-channels-mode (at least, its a bit shorter)
-       Added docstring to erc-server-hooks (through the macro)
-       Minor docfix in obsolete hook
-
-2002-01-30  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * erc-send-current-line: fix behavior where buffer changes.
-       * erc-mark-message: fix stupid face bug. highlighting of pals should 
work now.
-
-       * erc-ring.el, erc.el:
-       * new hooks: erc-send-pre-hook, erc-send-modify-hook, erc-send-post-hook
-       * erc-send-this: new variable
-       * erc-noncommands-list: new constant.
-       * erc-send-distinguish-noncommands: use it. (First filter function for 
sending! yay!)
-       * erc-send-current-line: nearly completely rewritten.
-         - now handles multiline input. (yay!)
-         - now uses the three hooks from above.
-       * erc-process-line: new arg, no-command: don't process this line as a 
command.
-
-2002-01-30  Mario Lang  <address@hidden>
-
-       * erc-bbdb.el, erc-button.el, erc-speak.el, erc.el:
-       hook handling rewrite phase 1.
-
-2002-01-30  Andreas Fuchs  <address@hidden>
-
-       * erc.el: * Rework erc-server-PRIVMSG-or-NOTICE
-       * New function: erc-is-message-ctcp-p
-       * New function: erc-format-privmessage
-       * New function: erc-mark-message
-       * erc-server-PRIVMSG-or-NOTICE: use them.
-
-2002-01-30  Mario Lang  <address@hidden>
-
-       * CREDITS, HISTORY:
-       Initial checkin.
-
-2002-01-29  Andreas Fuchs  <address@hidden>
-
-       * erc.el: * erc-put-text-properties: make OBJECT optional
-       * erc-put-text-property: same
-       * erc-server-PRIVMSG-or-NOTICE: use them.
-       * Make erc-display-line-buffer: add the "\n" even when the string would 
be invisible.
-       * same: make the \n invisible, too (:
-
-2002-01-29  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el, erc.el:
-       Rewrote channel tracking using window-configuration-change-hook instead 
of defadvices.
-
-2002-01-28  Andreas Fuchs  <address@hidden>
-
-       * erc-fill.el, erc.el:
-       * Macro define-erc-highlight-customization: Ease up defining
-         erc-{fool,pal,..}-highlight-props defcusts.
-       * defcusts:
-         - erc-fool-highlight-props
-         - erc-pal-highlight-props
-         - erc-dangerous-host-highlight-props
-         - erc-keyword-highlight-props
-
-         Customizable to either nil or "Hide message".
-       * erc-string-invisible-p: check for invisible chars in string
-       * erc-display-line-buffer: use it.
-       * erc-put-text-properties: put a list of props into a piece of text.
-       * erc-server-PRIVMSG-or-NOTICE: use it; set appropriate
-         highlight-props for entire incoming message. This set of changes
-         allows you to e.g. auto-ignore fools.
-
-2002-01-28  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el:
-       Added highlight detection support to the Mark column.
-       Now p, k, f, and d indicate pal, keyword, fool and dangerous-host 
related activity.
-
-       * erc.el:
-       Highlight tracking finished. All necessary info should now be in 
erc-modified-channels.
-
-       * erc.el, erc-ibuffer.el, erc-speedbar.el:
-       Added highlight tracking to track-modified-channels
-          no display code yet, the info is just kept in erc-modified-channels
-       Added erc-modified column to ibuffer
-       speedbar update
-
-       * erc-ibuffer.el: Added erc-members column
-
-       * erc-ibuffer.el: *** empty log message ***
-
-2002-01-28  Andreas Fuchs  <address@hidden>
-
-       * erc-bbdb.el:
-       * Fix a slight typo. The hook function should be called in
-         erc-server-376-hook (-:
-
-2002-01-28  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el: *** empty log message ***
-
-2002-01-27  Mario Lang  <address@hidden>
-
-       * erc-ibuffer.el: Fixup, it sort of works now. Try it
-
-       * erc-ibuffer.el: Initial version
-
-2002-01-26  Mario Lang  <address@hidden>
-
-       * erc.el: *** empty log message ***
-
-2002-01-25  Andreas Fuchs  <address@hidden>
-
-       * erc-bbdb.el: * fix two bad things:
-         - fix the "proc trick": pass proc as an arg through
-           ...-insinuate-... to ...-show-entry
-         - hook highlighting into the 376 hook. This one is bound to get
-           called (-:
-       * We now only append to hooks only.
-       * Highlighting of changing records gets updated automatically.
-
-2002-01-25  Mario Lang  <address@hidden>
-
-       * erc.el: *** empty log message ***
-
-2002-01-25  Andreas Fuchs  <address@hidden>
-
-       * erc-bbdb.el: * nearly complete rewrite of erc-bbdb:
-         -  Removed code duplication in erc-bbdb-NICK and -JOIN.
-         -  Made erc-bbdb-show-entry more general and intelligent.
-         -  erc-bbdb-insinuate-entry is now erc-bbdb-insinuate-and-show-entry
-            (note the different arglist!):
-         -  erc-search-name-and-create now creates "John Doe" users if name
-            is not specified.
-         -  No sign of "mail" anywhere anymore. It's all finger-host. (-:
-         -  erc-bbdb-popup-p is now called erc-bbdb-popup-type.
-         -  New customize values:
-            . erc-bbdb-irc-channel-field     channel field name
-            . erc-bbdb-irc-highlight-field   (see below)
-            . erc-bbdb-auto-create-on-nick-p auto-create record on join
-
-       * Highlighting based on BBDB is now here! Specify which type of
-         highlighting a person in the BBDB (whose nick you know) and have
-         fun! Read help to erc-bbdb-init-highlighting for details. Changes:
-         -  new function erc-bbdb-init-highlighting: gets called on server
-            connect.
-         -  new function erc-bbdb-highlight-record: highlights a person's
-            nick names.
-
-2002-01-24  Andreas Fuchs  <address@hidden>
-
-       * erc-button.el:
-       * Fix the erc-button-alist regexp for EmacsWiki stuff. delYsid's version
-         is better (-:
-
-       * erc-button.el: * Added an Ewiki: specifier to the url-regexp.
-         <nickname> EmacsWiki: EmacsIRCClient tells you <bla>
-         should highlight "EmacsWiki: EmacsIRCClient" and allow you to
-         browse to the wiki when the button is activated.
-       * new custom: erc-emacswiki-url.
-       * new function: erc-browse-emacswiki: use it.
-
-2002-01-23  Mario Lang  <address@hidden>
-
-       * erc-bbdb.el:
-       erc-bbdb-NICK: Added regexp-quote around fingerhost search.
-
-2002-01-10  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * Channel saving/killing on quit from server implemented:
-        - defcust erc-save-queries-on-quit: Save server's channel buffers on 
quitting from server
-        - defcust erc-kill-queries-on-quit: Kill server's channel buffers on 
quitting from server
-        - Macro erc-with-all-buffers-of-server: Run a form inside all the 
server's query buffers
-        - Functions erc-{kill,save}-query-buffers: use it.
-       * Added indent-tabs-mode: t to Local Variables section.
-
-2002-01-07  Andreas Fuchs  <address@hidden>
-
-       * erc-replace.el: * fix stupid documentation errors.
-
-2002-01-07  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (toplevel): Revert previous change. This resulted ina  recursive 
load...
-          You have to put (require 'erc-button) into your .emacs for now
-
-2002-01-05  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * Added require for erc-button. This is devel. so I need testers :)
-
-       * erc-button.el: * Added proper file headers (GPL).
-
-2002-01-04  Mario Lang  <address@hidden>
-
-       * erc-button.el: * erc-button-alist: Added entry for finger
-
-       * erc-button.el: * Removed bogus usage of :button-keymap.
-       P
-          Does anyone know what this was supposed to do anyway?
-
-       * erc-button.el: * Initial version.
-       * This module allows a way of buttonizing text in IRC buffers.
-         Default it is used for URLs, but other things could be added.
-         see if you can find another use, erc-button-alist
-
-See ChangeLog.01 for earlier changes.
-
-       Copyright (C) 2002, 2006-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
diff --git a/lisp/erc/ChangeLog.03 b/lisp/erc/ChangeLog.03
deleted file mode 100644
index 88aace8..0000000
--- a/lisp/erc/ChangeLog.03
+++ /dev/null
@@ -1,2163 +0,0 @@
-2003-12-30  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-cmd-HELP):
-       Changed to prefer giving help for erc-cmd-* functions over
-          similarly-named Elisp functions (e.g., erc-cmd-LIST vs. list).
-
-2003-12-28  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-query-buffer-p): Added this function.
-
-2003-12-28  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-cmd-SV): Use erc-emacs-build-time.
-
-       * erc-compat.el: erc-emacs-build-time: New variable.
-
-       * erc.el(erc-cmd-SAY):
-       Reintroduced the feature where the spaces between
-       "/SAY" and the rest of the line were being sent with the message.
-
-2003-12-28  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-server-buffer-p):
-       Fixed a bug where this function sometimes would return
-           nil when it should return t.
-
-2003-12-27  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-generate-new-buffer-name):
-       Really fixed a bug where ERC would reuse
-           a connected server buffer when erc-reuse-buffers is non-nil.
-       (erc-cmd-JOIN): Now we tell the user when he attempts to join the same
-           channel twice on the same server.
-
-       * erc.el(erc-generate-new-buffer-name):
-       Fixed a bug where ERC would reuse a connected server buffer when 
erc-reuse-buffers is non-nil.
-
-       * erc.el(erc-cmd-SAY):
-       Fixed a bug where the spaces between "/SAY" and the rest of the
-           line were being sent with the message.
-
-       * erc-list.el: Fixed another typo.
-
-       * erc-list.el: Fixed a typo.
-
-       * erc-list.el:
-       Added text to the top of the channel list buffer describing the 
keybinding for
-       function erc-chanlist-join-channel.
-
-       * erc-list.el: Minor appearance changes.  No functional change.
-
-       * erc-list.el:
-       Implemented function erc-chanlist-join-channel.  Added variable
-       erc-chanlist-channel-line-regexp.  Got rid of function
-       erc-chanlist-pre-command-hook.  Changed the logic for how channel lines 
are
-       highlighted.
-
-2003-12-26  Francis Litterio  <address@hidden>
-
-       * erc-list.el:
-       Removed a bunch of unused code.  No semantic change.
-
-       * erc-list.el: Added lots of functionality.
-
-2003-12-15  Mario Lang  <address@hidden>
-
-       * erc-track.el, erc.el:
-       New custom type erc-message-type, use it in erc-hide-list and 
erc-track-exclude-types
-
-2003-12-14  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(track-when-inactive): New module.
-       (erc-track-visibility): New option.
-       (erc-buffer-activity): New variable.
-       (erc-buffer-activity-timeout): New variable.
-       (erc-user-is-active): New function.
-       (erc-buffer-visible): New function.
-       (erc-modified-channels-update): Replace get-buffer-window call
-       with call to erc-buffer-visible.
-       (erc-track-modified-channels): Ditto.
-
-2003-12-14  Lawrence Mitchell  <address@hidden>
-
-       * erc-track.el(erc-modified-channels-update):
-       Force update of modeline.  Makes sure
-       that the tracked channels disappear in other buffers too.
-
-2003-12-06  Lawrence Mitchell  <address@hidden>
-
-       * erc.el(define-erc-module):
-       New optional argument LOCAL-P.  If non-nil, then
-       mode will be created as buffer-local rather than a global mode.
-       (erc-cmd-CTCP): Fix indentation from last commit.
-
-       * erc-compat.el(erc-define-minor-mode):
-       Deal with :global and :group keywords.
-
-       * erc-nickserv.el(erc-current-network):
-       Make server regex more permissive.
-
-       * erc.el(erc-cmd-CTCP):
-       Don't add a space to end of command when ARGS are
-       empty.  This fixes a bug whereby requests of the form "VERSION " were
-       being sent, and ignored.
-
-2003-11-27  Lawrence Mitchell  <address@hidden>
-
-       * erc-log.el: From Adrian Aichner <address@hidden>
-       * erc-log.el (erc-log-file-coding-system): Use 'binary
-       coding-system under XEmacs (instead of 'emacs-mule).
-       * erc-log.el (erc-w32-invalid-file-characters): Removed as no
-       longer needed.
-       * erc-log.el (erc-generate-log-file-name-long): Use
-       `convert-standard-filename', which exists in XEmacs too.
-
-2003-11-16  Mario Lang  <address@hidden>
-
-       * erc-identd.el: Code provided by johnw, thanks!
-
-2003-11-09  Lawrence Mitchell  <address@hidden>
-
-       * erc.el(erc-latest-version): Clean up docstring.
-       Remove requirement for w3, wrap REQUIRE statement in IGNORE-ERRORS.
-       Update viewcvs url to correct location.
-       (erc-ediff-latest-version): Make sure that we find the uncompiled
-       erc.el, error if not.
-
-2003-11-07  Mario Lang  <address@hidden>
-
-       * erc.el: Add more info to /sv
-
-2003-11-06  Francis Litterio  <address@hidden>
-
-       * erc.el: Added optional argument BUFFER to erc-server-buffer-p.
-
-2003-11-04  Mario Lang  <address@hidden>
-
-       * AUTHORS: Add sachac
-
-2003-11-02  Lawrence Mitchell  <address@hidden>
-
-       * erc.el(erc-server-366):
-       chnl is 4th element of parsed, not fifth.
-       (erc-channel-end-receiving-names): Pass correct number of arguments
-       to delete-if-not.
-
-       * erc.el(erc-update-current-channel-member):
-       Use erc-downcase when comparing
-       nick entries.  Cleanup indentation.
-
-2003-11-01  Lawrence Mitchell  <address@hidden>
-
-       * erc-sound.el: Added a (provide 'erc-sound) line.
-
-       * erc.el(erc-cmd-NAMES): send to TGT, not CHANNEL.
-
-2003-10-29  Sandra Jean Chua  <address@hidden>
-
-       * erc-pcomplete.el, erc.el, CREDITS:
-       Merged Jeremy Maitin-Shepard's patch for time-sensitive nick completion.
-
-2003-10-27  Mario Lang  <address@hidden>
-
-       * Makefile, debian/changelog:
-       New Debian package 4.0.cvs.20031027
-
-2003-10-25  Mario Lang  <address@hidden>
-
-       * erc.el: Fix typo tuncate->truncate
-
-2003-10-24  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: From Stephan Stahl <address@hidden>:
-       (erc-dcc-send-block): Kill buffer if transfer completed correctly.
-
-2003-10-22  Mario Lang  <address@hidden>
-
-       * erc-track.el(erc-track-disable):
-       Do not deactivate all advices for `switch-to-buffer',
-       just disable the erc specific one. (Bug#217022).
-
-2003-10-18  Lawrence Mitchell  <address@hidden>
-
-       * erc-log.el(erc-log-file-coding-system): New variable.
-       (erc-save-buffer-in-logs): Use it.
-
-2003-10-17  Mario Lang  <address@hidden>
-
-       * erc.el(erc-interpret-mirc-color): New boolean defcustom
-
-       * erc.el: Do not use -nowait on darwin (thanks johnw)
-
-2003-10-15  Lawrence Mitchell  <address@hidden>
-
-       * erc.el(define-erc-module):
-       Set erc-FOO-mode appropriately in erc-FOO-enable
-       and erc-FOO-disable.
-
-2003-10-12  Jorgen Schaefer  <address@hidden>
-
-       * erc-autoaway.el(erc-mode):
-       Reset idletime on connect. Fixes an annoying bug which
-       flooded the server with always on reconnect.
-       (erc-autoway-reset-idletime): Accept optional args so we can hook it
-       onto erc-server-001-hook.
-
-2003-10-10  Mario Lang  <address@hidden>
-
-       * erc.el(erc-hide-list): Add a nice defcustom type
-
-2003-10-08  Mario Lang  <address@hidden>
-
-       * Makefile, debian/changelog, debian/control:
-       Debian snapshot 20031008
-
-       * erc-speedbar.el:
-       Patch from Eric M. Ludlam <address@hidden>:
-        - (erc-install-speedbar-variables): Add functions list (needs new 
speedbar?)
-        - (erc-speedbar-buttons): Add doc.  Clear the buffer
-        - (erc-speedbar-sort-channel-members): New function.
-        - (erc-speedbar-expand-channel): Call new sort function.  Change some 
visuals.
-        - (erc-speedbar-insert-user): Change some visuals based on channel 
data.
-        - (erc-speedbar-line-text, erc-speedbar-item-info): New functions
-       Add proper elisp file header.
-
-2003-10-02  Lawrence Mitchell  <address@hidden>
-
-       * erc-match.el(erc-match-syntax-table): New variable.
-       (erc-match-current-nick-p): Use it.
-
-       * erc.el(erc-quit-reason-zippy, erc-part-reason-zippy): Use
-       `erc-replace-regexp-in-string' rather than
-       `replace-regexp-in-string'.
-       (erc-command-indicator-face): New face, used to show commands if
-       `erc-hide-prompt' is nil and `erc-command-indicator' is non-nil.
-       (erc-command-indicator): Clean up doc-string.
-       (erc-display-prompt): New optional argument FACE, use this rather
-       than `erc-prompt-face' to fontify the prompt if non-nil.
-       (erc-send-current-line): Pass in `erc-command-indicator-face' to
-       `erc-display-prompt'.
-
-       * erc-compat.el(erc-replace-regexp-in-string): New function.
-       Alias for `replace-regexp-in-string' on Emacs 21.
-       Argument massaging for `replace-in-string' for XEmacs.
-
-2003-09-28  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-keywords): Removed. Wasn't used by anything.
-
-2003-09-25  Lawrence Mitchell  <address@hidden>
-
-       * erc.el: ERC-HIDE-PROMPT: add custom group
-       ERC-COMMAND-INDICATOR: new variable.
-       ERC-COMMAND-INDICATOR: new function.
-       ERC-DISPLAY-PROMPT: new argument, PROMPT, used to override default
-       prompt.
-       ERC-SEND-CURRENT-LINE: pass ERC-COMMAND-INDICATOR to ERC-DISPLAY-PROMPT.
-
-2003-09-24  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-parse-line-from-server):
-       Ignore empty lines as required by RFC.
-
-2003-09-17  Mario Lang  <address@hidden>
-
-       * erc.el: Add lag time calculation
-
-2003-09-13  Mario Lang  <address@hidden>
-
-       * Makefile, debian/README.Debian, debian/changelog:
-       New debian release
-
-       * erc-notify.el:
-       Call erc-notify-install-message-catalogs on load, not on module init
-
-       * erc.el(erc-update-modules):
-       Use `load' instead of `require'.  XEmacs appears
-       to have the NOERROR arg only sometimes... Strange
-
-       * erc.el: No fboundp if we have a defvar
-
-       * erc.el: Properly defvar erc-ping-handler
-
-2003-09-11  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-setup-periodical-server-ping):
-       check if erc-ping-handler is
-           bound before referencing it
-
-2003-09-10  Mario Lang  <address@hidden>
-
-       * erc.el(erc-cmd-NICK):
-       Warn about exceeded NICKLEN if we know it.
-
-       * erc.el: Make erc-server-PONG obey erc-verbose-server-ping.
-       Cancel old `erc-ping-handler' timer when restablishing connection in 
the same
-       buffer.
-
-       * debian/changelog, Makefile: New debian snapshot
-
-       * erc-dcc.el, erc-xdcc.el:
-       Use new function erc-dcc-file-to-name to convert spaces to underscores
-
-       * erc-xdcc.el: Add autoload for erc-xdcc-add-file
-
-2003-09-08  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: indent fixes and copyright update
-
-       * erc.el:
-       erc-send-ping-interval: New defcustom which defaults to 60.
-       Every 60 seconds, we send PING now.
-       This should fix the "connection silently lost" bug.
-       Please test this change extensively, and report problems.
-
-2003-09-07  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-default-coding-system):
-       Test for undecided and utf-8
-       before setting.
-
-2003-09-01  Mario Lang  <address@hidden>
-
-       * erc.el(erc-modules): Add some more symbols to the set
-
-       * erc.el(erc-modules): Add :greedy t to the set in
-
-       * erc-dcc.el:
-       More autoloads which make dcc autoload upon ctcp dcc query received.
-
-       * erc-dcc.el(erc-cmd-DCC): Add Autoload.
-       (pcomplete/erc-mode/DCC): Ditto, makes DCC autoloadable just by using
-       completion.
-       Also only offer "send" if fboundp make-network-process.
-
-       * erc-autojoin.el: Update copyright
-
-       * erc-autojoin.el(erc-autojoin-add):
-       Only add the channel if it is not already there.
-
-       * erc-notify.el:
-       Use `define-erc-module' instead of old `erc-notify-initialize'.
-       Now defines the global minor mode erc-notify-mode, and should also
-       be controllable via `erc-modules' with symbol `notify'.
-
-       * erc.el(erc-modules):
-       Fix paren-in-column-zero bug in docstring.
-       Add a sort of bogus, but still better :type.
-       Add autojoin and netsplit by default.
-       (erc-update-modules): Don't barf with an error if `require' fails.
-       We can still error out if the mode is not defined.
-
-2003-08-31  Andreas Fuchs  <address@hidden>
-
-       * erc.el:
-       * make 353 (NAMES reply) output go into the appropriate channel buffer
-         (if it exists) or into the active erc buffer (if not).
-
-2003-08-29  mtoledo  <address@hidden>
-
-       * erc.el:
-       Added the variable erc-echo-notices-in-current-buffer to make possible 
display notices in the current buffer (queries to nickserv/chanserv/memoserv). 
Defaults to nil so nothing changes from what we have today.
-
-2003-08-29  Mario Lang  <address@hidden>
-
-       * erc.el: Fix typo in varname which led to a compiler warning
-
-       * AUTHORS: Added lawrence
-
-2003-08-27  Mario Lang  <address@hidden>
-
-       * erc-dcc.el:
-       Set process and file-coding system to 'binary (for Windows)
-
-       * erc-stamp.el: Rename custom group erc-timestamp to erc-stamp.
-
-2003-08-07  Lawrence Mitchell  <address@hidden>
-
-       * erc-fill.el(erc-fill-disable):
-       Remove erc-fill, not erc-fill-static from
-       erc-insert-modify-hook.
-
-2003-08-05  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-send-current-line):
-       Now we display the prompt for previously entered commands
-           based on the value of customization variable erc-hide-prompt.  This 
change is
-           closely related to the immediate previous version by wencem.
-
-2003-08-04  Lawrence Mitchell  <address@hidden>
-
-       * erc.el(erc-send-current-line):
-       If we're sending a command, don't display
-       the prompt.
-
-2003-08-04  Damien Elmes  <address@hidden>
-
-       * erc-track.el: patch from David Edmondson (dme AT dme DOT org)
-
-       This patch makes button 3 on the erc-track buffer names in the
-       modeline show the selected buffer in another window. It's analogous to
-       button 2 which shows the buffer in the current window.
-
-2003-07-31  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-display-line-1):
-       Fixed bad indentation on one line.  No semantic change.
-
-2003-07-29  Lawrence Mitchell  <address@hidden>
-
-       * erc-match.el:
-       Quote open paren in docstring of erc-text-matched-hook
-
-       * erc.el: Anchor match only at beginning in erc-ignored-user-p.
-
-       * erc-button.el: New variable erc-button-wrap-long-urls.
-       Modified erc-button-add-buttons:
-         New optional argument REGEXP.
-         If we're buttonizing a URL and erc-button-wrap-long-urls is
-         non-nil, try and wrap them
-
-       Modified erc-button-add-buttons-1:
-         Pass regexp to erc-button-add-buttons.
-
-2003-07-28  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-network-name):
-       Improved docstring.  Removed an unnecessary call to erc-server-buffer.
-
-2003-07-28  Mario Lang  <address@hidden>
-
-       * erc.el: By lawrence:
-       (erc-ignored-user-p): Use anchored regexp.
-       (smiley): Fix missing quote in `remove-hook' call.
-
-2003-07-26  Francis Litterio  <address@hidden>
-
-       * erc-nets.el, erc-nickserv.el, erc.el:
-       Changed all references to Openprojects into references to Freenode.
-
-2003-07-25  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       Now variable erc-debug-irc-protocol is defvar'ed instead of 
defcustom'ed.
-       Made the docstring clearer too.
-
-       * erc.el: Fixed a wrong-type-argument error from window-live-p.
-
-2003-07-15  Damien Elmes  <address@hidden>
-
-       * erc-log.el(erc-log-setup-logging):
-       set buffer-file-name to "", as (basic-save-buffer)
-           will prompt for a buffer name before invoking hooks. the 
buffer-file-name
-           will be overridden by (erc-save-buffer-in-logs) anyway - the main 
danger
-           of doing this is write-file-contents hooks. Let's see if anyone 
complains.
-       (erc-save-buffer-in-logs): return t, so that further write hooks are 
not run
-
-2003-07-09  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-open-network-stream):
-       -nowait still crashes emacs cvs - disable for now
-
-2003-07-02  Francis Litterio  <address@hidden>
-
-       * erc.el(erc): Minor docstring modification.
-
-2003-07-01  Damien Elmes  <address@hidden>
-
-       * erc-match.el(erc-match-current-nick-p):
-       match only on word boundaries
-
-       * erc-log.el(erc-log-setup-logging):
-       not sure how this crept in again - make sure we set
-           buffer-file-name to nil, since otherwise it is not possible to open
-           previous correspondence in another buffer while a conversation is 
open
-
-2003-06-28  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-network-name):
-       Now makes some intelligent guesses if the server didn't tell
-           us the network name.
-
-2003-06-28  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-default-coding-system): Use utf-8 as the default
-       encoding for outgoing stuff and undecided as the default for
-       incoming stuff.
-       (erc-coding-sytem-for-target): New.
-       (erc-encode-string-for-target): Use it.
-       (erc-decode-string-from-target): Use it.  Removed the flet
-       erc-default-target hack and documented the dynamically bound
-       variable `target' instead.
-
-2003-06-25  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-log-irc-protocol):
-       Now we keep point on the bottom line of the window
-           displaying the *erc-protocol* buffer if it is at the end of the
-           *erc-protocol* buffer.
-
-       * erc.el:
-       Added some text to the docstring for variable erc-debug-irc-protocol.
-
-2003-06-23  Francis Litterio  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-auto-mask-p):
-       Fixed a docstring typo that caused a load-time error.
-
-       * erc-dcc.el(erc-dcc-auto-mask-p):
-       Changed reference to undefined variable erc-dcc-auto-mask-list
-           to erc-dcc-auto-masks.
-       Changed default value of variable erc-dcc-auto-masks to nil and added 
text to its
-           docstring.
-
-       * erc-notify.el(erc-notify-timer and erc-notify-QUIT):
-       Added network name to notify_off message.
-
-       * erc.el(erc-network-name):
-       Now returns the name of the IRC server if the network name
-           cannot be determined.
-
-       * erc-notify.el(erc-notify-JOIN and erc-notify-NICK):
-       Added argument ?m to call to erc-display-message.
-
-       * erc-dcc.el(erc-dcc-do-LIST-command):
-       Fixed a bug where I assumed (plist-get elt :type)
-           returns a string -- it really returns a symbol.
-
-       * erc-notify.el(erc-notify-timer):
-       Now we include the network name in the notify_on message.
-
-       * erc.el:
-       New function: erc-network-name.  Returns the name of the network that 
the
-           current buffer is associate with.  Not every server sends the 005 
messages
-           that enable the network name to be known.  If the network name is
-           not known, the string "UNKNOWN" is returned.
-
-       * erc-dcc.el(erc-dcc-chat-setup):
-       Added a comment.  Fixed a bug where a DCC CHAT buffer has no
-           prompt when it first appears.
-
-       * erc-dcc.el(erc-dcc-chat-parse-output):
-       Now a DCC chat buffer displays the nick using
-           erc-nick-default-face just like in a channel buffer.
-
-2003-06-22  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-display-prompt):
-       Fixed incorrect indentation.  No semantic change.
-
-       * erc.el(erc-strip-controls):
-       Minor change to regexp that matches IRC color control
-           codes.  I was seeing usage as follows: ^C07colored text^C^C04other 
color.
-           Now we strip a ^C followed by zero, one, or two digits.  Before 
this change,
-           we stripped a ^C followed by one or two digits.
-
-       * erc-dcc.el(erc-dcc-do-LIST-command):
-       Improved format of output of /DCC LIST.  Now the
-           "Size" column for a DCC GET includes the percentage of the file 
that has
-           been retrieved.
-       (erc-dcc-do-GET-command): Now it works if erc-dcc-default-directory is 
set.
-
-2003-06-19  Damien Elmes  <address@hidden>
-
-       * erc-log.el:
-       * added quickstart information to the comments up the top
-
-2003-06-16  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Default to open-network-stream on MS Windows. (thanks lawrence)
-
-2003-06-11  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-process-input-line):
-       refactor so that wrong-number-of-arguments is
-           caught when using do-not-parse-args - this lets do-not-parse-args
-           commands display help messages on incorrect syntax in a uniform 
manner.
-           This no longer raises a bad-syntax error - was this a catch-all to 
stop a
-           backtrace? Does it belong?
-       (erc-cmd-APPENDTOPIC): the correct way to display help when you want to
-           accept an arbitrary string is to (signal 'wrong-number-of-arguments 
nil).
-           This fixes a bug where people could not /at topics with a space in 
them.
-
-2003-06-09  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       Re-add the last few changes which weren't merged for some reason.
-
-       * erc.el(erc-cmd-APPENDTOPIC): show help when given no arguments
-
-       Patch from MrBump. Fixes problem with erc-set-topic inserting ^C 
characters
-       into the topic. Also removes dependency on CL.
-
-2003-06-08  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       Added comment to explain (eval-after-load "erc" '(erc-update-modules)).
-
-2003-06-01  Mario Lang  <address@hidden>
-
-       * erc-pcomplete.el: Add completion for /unignore
-
-2003-05-31  Alex Schroeder  <address@hidden>
-
-       * erc-compat.el(erc-encode-coding-string): The default binding,
-       if encode-coding-string was not available, must be a defun that
-       takes multiple arguments.  Did that.
-
-2003-05-30  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Add handlers for 313 and 330 (by address@hidden, thanks)
-
-2003-05-30  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       patch from MrBump to make /mode #foo +b work again (erc-cmd-BANLIST only
-       temporarily changes them now)
-
-2003-05-29  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-select):
-       server is now defaulted with erc-compute-server.
-       A few cosmetic fixes.
-       (erc-default-coding-system): Renamed from erc-encoding-default.
-       (erc-encoding-default): Renamed to erc-default-coding-system.
-       (erc-encoding-coding-alist): Documentation updated to cover regexps.
-       (erc-encode-string-for-target): Now considers keys of
-       erc-encoding-coding-alist to be regexps.  Rely on erc-compat
-       wrt. MULE support.
-       (erc-decode-string-from-target): New function.
-       (erc-send-current-line): eq -> char-equal fix.
-       (erc-server-TOPIC): topic is now decoded with
-       erc-decode-string-from-target.
-       (erc-parse-line-from-server): Line from server is no longer decoded
-       here.
-       (erc-server-PRIVMSG-or-NOTICE): Message from a user is decoded here,
-       sspec -> sender-spec for clarity.  Cosmetic if -> when fix.
-       (erc-server-TOPIC): sspec -> sender-spec
-       (erc-server-WALLOPS): Ditto.
-
-       * erc-compat.el(erc-decode-coding-string):
-       Now requires coding-system as an argument.
-
-2003-05-15  Mario Lang  <address@hidden>
-
-       * erc.el:
-       erc-part|quit-hook is only run on a part|quit directed to our nick, 
reflect that in the docstring to avoid confusion
-
-2003-05-01  Andreas Fuchs  <address@hidden>
-
-       * erc-truncate.el:
-       * erc-truncate-buffer-to-size: use fboundp. Scheme takes its toll...
-
-2003-05-01  Jorgen Schaefer  <address@hidden>
-
-       * erc-truncate.el: remove require of erc-log
-       (erc-truncate-buffer-to-size): use erc-save-buffer-in-logs when it's
-       there, else, don't.
-
-2003-04-29  Andreas Fuchs  <address@hidden>
-
-       * erc-log.el, erc-truncate.el, erc.el: erc.el:
-               * erc-cmd-QUIT: Remove references to code in erc-log.el, to
-                 not force autoloading of erc-log.el
-               * erc-server-PART: ditto.
-               * erc-quit-hook: new hook, run when /quit command is
-                 processed.
-               * erc-cmd-QUIT: use it.
-               * erc-part-hook: new hook, run then PART message is
-                 processed.
-               * erc-cmd-PART: use it.
-               * erc-connect-pre-hook: new hook, run before connection to IRC
-                 server is started.
-               * erc: use it.
-               * erc-max-buffer-size: Move truncation variables and functions
-                 to erc-truncate.el
-               * erc-truncate-buffer-on-save: moved to erc-log.el
-               * erc-initialize-log-marker: new function.
-       * erc-log.el:
-               * erc-truncate-buffer-on-save: New defcust here; from erc.el
-               * erc-truncate-buffer-on-save: Put it in group `erc-log'
-               * erc-log-channels-directory: Remove trailing slash from
-                 default value.
-               * Add functions to erc-connect-pre-hook, erc-part-hook and
-                 erc-quit-hook to avoid getting autoloaded.
-
-       * erc-truncate.el:
-               * Contains the truncation functions and defcusts from erc.el.
-               * define-erc-module clause added; new erc-truncate-mode.
-
-2003-04-29  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc):
-       Check whether erc-save-buffer-in-logs is bound, too
-
-       * erc.el(erc):
-       Check whether erc-logging-enabled is bound before using it - not
-       everyone is using erc-log.el!
-
-2003-04-28  Andreas Fuchs  <address@hidden>
-
-       * erc-log.el:
-       * while we're at it, remove the (declare (ignore ignore)) statements.
-
-       * erc-log.el:
-       * add autoload statement for erc-log-mode/etc. Sorry for the delay.
-
-       * erc-log.el, erc.el: * erc.el:
-               - move variables and functions to erc-log.el:
-                        defgroup `erc-log'
-                        defcustom `erc-log-channels-directory'
-                        defcustom `erc-log-insert-log-on-open'
-                        defcustom `erc-generate-log-file-name-function'
-                        defun `erc-save-buffer-in-logs' (autoloads from 
erc-log.el)
-                        defuns `erc-generate-log-file-name-*'
-                        defun `erc-current-logfile'
-                        defun `erc-logging-enabled' (autoloads from erc-log.el)
-               - erc-truncate-buffer-to-size: fix for double-saving bug when
-                 writing out truncated buffer contents. Thanks, lawrence 
mitchell <address@hidden>!
-               - erc-remove-text-properties-region: Fix case for read-only 
text.
-               - erc-send-current-line: update insert-marker before calling 
the hooks.
-                                        also, wrap (erc-display-prompt) so 
that it doesn't toggle
-                                        buffer-modified-p.
-               - erc-interpret-controls: remove /very/ old commented-out 
function
-               - erc-last-saved-position: make it a marker
-               - erc: use it.
-
-       * erc-log.el: (thanks, lawrence mitchell <address@hidden>!)
-               - Move logging code from erc.el here
-               - define-erc-module log: add; minor mode erc-log-mode is the
-                 same as adding the `erc-save-buffer-in-logs' to
-                 erc-send-post-hook and `erc-insert-post-hook'.
-               - erc-w32-invalid-file-characters: add.
-               - erc-enable-logging: add.
-               - erc-logging-enabled: use it.
-               - erc-logging-enabled: autoload.
-               - erc-save-buffer-in-logs: fix for truncating saved buffer with 
read-only text.
-               - erc-save-buffer-in-logs: use erc-last-saved-position.
-               - erc-save-buffer-in-logs: fix saving half-written messages on
-                 the prompt when saving the log file. (simply uses
-                 erc-insert-marker as an upper bound for saving).
-
-2003-04-27  Damien Elmes  <address@hidden>
-
-       * erc.el: erc-modules: added
-
-2003-04-27  Alex Schroeder  <address@hidden>
-
-       * Makefile(UNCOMPILED): Added erc-compat.el.
-       (clean): Remove .elc files, too.
-       Patch by Hynek Schlawack <address@hidden>
-
-2003-04-22  Damien Elmes  <address@hidden>
-
-       * erc-button.el:
-       erc-button-keymap: set the parent keymap to erc-mode-map
-
-2003-04-20  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       erc-official-location: shouldn't the official location be the base URL 
of erc?
-
-       * erc.el:
-       erc-modules: updated the docstring to make the semantics clearer
-
-2003-04-19  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fix problem where % in NOTICE produced errors (from mmc)
-
-2003-04-18  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-toggle-debug-irc-protocol):
-       moved a reference to 'buf' inside the let
-           statement which defines it. it's difficult to tell what the original
-           intentions were here - at the moment the debug window is displayed 
when
-           toggling either way.
-
-       * README, erc.el:
-       (erc-update-modules: added a condition in for erc-nickserv -> 
erc-services
-
-       * erc-pcomplete.el:
-       - that change to erc-update-modules making it require the modules first 
means
-         we don't need any special case handling here, so i reverted the 
previous
-         change
-
-       * erc.el:
-       - don't require 'erc-auto, since windows users don't have access to 
make.
-         instead, we handle it in (erc-update-modules)
-
-2003-04-17  Damien Elmes  <address@hidden>
-
-       * README, Makefile:
-       Updated Makefile and documentation to reflect the new release
-
-       * erc.el:
-       - note the previous change also updated the release number to erc 4.0!
-       (erc-connect): fix a bug introduced by the previous release
-
-       * erc.el:
-       fixed about 20 instances of (message (format ...)) which will break if 
the
-       format returns a string with %s in it
-
-       * erc.el: erc-error-face: make it red, not pink
-
-       * erc-pcomplete.el:
-       since pcomplete is autoloaded via erc-completion-mode, and completion 
is in
-       erc-modules by default, we remove completion when pcomplete is added
-
-       * erc.el(define-erc-module): no need for delete, use delq
-
-       * erc-members.el(erc-nick-channels):
-       (erc-person-channels) takes one arg
-       (erc-format-user): again, they all take an arg
-
-       * erc.el:
-       - require erc-auto when loading, so the default `erc-modules' can be 
loaded.
-         this makes erc-auto no longer a convenience but a necessity - all the 
name
-         of user friendliness.
-       (define-erc-module): the enable and disable routines now update 
erc-modules
-           accordingly
-       erc-modules: new variable controlling the modules which erc has 
loaded/will
-           load. when customizing, it will automatically enable modules. it 
won't
-           automatically disable modules which are removed, yet.
-       (erc-update-modules): enable all modules in `erc-modules'
-
-       * erc-dcc.el(erc-dcc-open-network-stream):
-       use the -nowait equiv if available
-       erc-dcc-server-port: removed
-       erc-dcc-port-range: allows a range of values, so you can have more than 
one
-           dcc
-       (erc-dcc-server): support erc-dcc-port-range
-       (erc-dcc-chat): use OCHAT for outgoing chat for now. we need to fix the
-           issues with allowing more than one chat with the same person
-
-       * erc.el:
-       erc-log-channels: removed; set the directory to start logging
-       (erc-directory-writeable-p): create directory if it doesn't exist, 
check if
-           it's writable
-       (erc-logging-enabled): don't reference erc-log-channels
-
-2003-04-07  Damien Elmes  <address@hidden>
-
-       * erc.el(erc):
-       but when inserting the contents of a previous logfile, use the logfile
-           name, not ""!
-
-       * erc.el(erc):
-       set buffer-file-name to "", since we have a custom saving function and
-           it's not needed. this enables one to open a log file with previous
-           correspondence, while talking to the person at the same time
-
-2003-03-29  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-prepare-mode-line-format):
-       Now strips all text properties from the target before
-           putting it in the mode line.  Keeps the mode line looking 
consistent.
-       (erc-channel-p): Improved docstring.
-
-2003-03-28  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-generate-log-file-name-with-date): New function.
-       (erc-generate-log-file-name-function): Make it available.
-
-2003-03-24  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fix erc-prompt and erc-user-mode custom :type (Closes: #185794)
-
-2003-03-20  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       erc-server-hook-list: correct documentation of ordering of (proc parsed)
-
-2003-03-16  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-modified-channels-string):
-       Make it a risky-local-variable.
-
-2003-03-16  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el(erc-track-modified-channels):
-       Use (point-min) if we don't find a
-       parsed-property, so it won't error out with nil...
-
-2003-03-16  Damien Elmes  <address@hidden>
-
-       * erc-track.el(erc-track-switch-buffer):
-       removed call to erc-modified-channels-update, as
-           this is done correctly on buffer switching in both emacs and xemacs 
now
-
-2003-03-15  Damien Elmes  <address@hidden>
-
-       * erc-track.el(erc-find-parsed-property):
-       simplified a little, so it shouldn't return nil anymore
-
-       * erc.el: erc-send-post-hook: document narrowing which occurs
-
-2003-03-14  Alex Schroeder  <address@hidden>
-
-       * erc-track.el(erc-find-parsed-property): New function.
-       (erc-track-modified-channels): Use it instead of relying on
-       point-min.
-
-2003-03-12  Mario Lang  <address@hidden>
-
-       * erc.el:
-       Fix erc-set-topic to accept a channel name as first word
-
-2003-03-11  Jorgen Schaefer  <address@hidden>
-
-       * erc-dcc.el:
-       Small patch (<10 lines, also slightly modified by Jorgen Schäfer) from
-       David Spreen <address@hidden> to add hostmask-authentication to
-       DCC auto-accept.
-
-       erc-dcc-auto-mask-list: New variable
-       (erc-dcc-handle-ctcp-send): Check erc-dcc-auto-mask-list
-       (erc-dcc-auto-mask-p): New function
-       erc-dcc-send-request: Docstring now mentions erc-dcc-auto-mask-list
-
-2003-03-10  Francis Litterio  <address@hidden>
-
-       * erc-ring.el(erc-clear-input-ring):
-       New function.  Erases the contents of the input ring for
-          the current ERC buffer.
-
-2003-03-08  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       (erc-display-line-1) and (erc-send-current-line): Now these functions 
reset erc-insert-this
-           to t as soon as possible after consuming the value of that 
variable.  See the comments in
-           the code for the strange symptom this fixes.
-       (erc-bol): Changed to call point-at-eol instead of line-end-position.  
This increases XEmacs
-           portability, since XEmacs doesn't have line-end-position.  Patch 
suggested by Scott Evans
-           on the ERC mailing list.
-
-2003-03-04  Damien Elmes  <address@hidden>
-
-       * erc.el: banlist*: patch from mrbump to avoid using cl packages
-
-2003-03-04  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       Changed erc-noncommands-list from a constant to variable, so that users 
can
-           add their own erc-cmd-* functions to the list.  Improved the 
docstring too.
-
-2003-03-02  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-server-353):
-       Now the output of "/NAMES #channel" appears in the currently
-           active ERC buffer, even if the user is not a member of #channel.
-
-       * erc.el(erc-cmd-DEOP):
-       Fixed a syntax error: invalid read syntax ")" caused by my last change.
-
-2003-03-01  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-cmd-DEOP):
-       Fixed a wrong-type-argument error caused by calling split-string
-           on a list instead of on a string.  Removed the call to split-string 
entirely,
-           because it wasn't needed.
-
-       * erc.el(erc-cmd-HELP):
-       Changed to use intern-soft instead of intern.  Now "/HELP floob"
-           doesn't create a void function symbol erc-cmd-FLOOB.
-
-2003-02-25  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-SERVER):
-       remove erroneous references to line, use server instead
-
-2003-02-23  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-toggle-debug-irc-protocol):
-       Fixed a bug where the global value of
-           kill-buffer-hook was being modified instead of the buffer-local 
value.
-
-2003-02-22  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-cmd-KICK):
-       Now supports any number of words in the REASON string.  Examples
-           of the /KICK command are:
-             /KICK franl You don't belong here
-             /KICK franl Bye
-             /KICK franl
-             /KICK #channel franl Go away now
-             /KICK #channel franl Bye
-             /KICK #channel franl
-
-2003-02-16  Jorgen Schaefer  <address@hidden>
-
-       * erc-stamp.el(erc-insert-timestamp-right):
-       Make the timestamp rear-nonsticky, so
-       C-e works at the beginning of the next line.
-
-2003-02-16  Andreas Fuchs  <address@hidden>
-
-       * erc-stamp.el:
-       * s/choose/choice/ in customize options, as kensanata requested.
-
-2003-02-15  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-toggle-debug-irc-protocol):
-       Now if the *erc-protocol* buffer is killed,
-           logging is turned off.  Prior to this change, the buffer would come 
back
-           into existence (generally unbeknownst to the user) after being 
killed.
-
-2003-02-11  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-send-current-line):
-       we can't inhibit everything here when not connected,
-           as the user will expect commands like /server still to work. the
-           erc-cmd-handler should recover from errors instead
-
-2003-02-10  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       * we now run erc-after-connect on 422 (no motd) messages as well as the 
motd
-         messages
-       (erc-login): revert the previous change
-
-       * erc.el(erc-login): register that we're connected
-
-2003-02-10  Mario Lang  <address@hidden>
-
-       * erc-members.el: * Provide erc-members
-       * Fix excessive )
-       * Comment out broken self-tests
-
-2003-02-07  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-connect):
-       notify the user we're trying to connect when using asych
-           connections
-
-       * erc.el(erc-connect): support an asynchronous connection
-       (erc-process-sentinel): ditto
-
-       * erc-track.el:
-       * advise switch-to-buffer in the case of xemacs, since it doesn't have
-         window-configuration-change-hook
-
-       * erc.el(erc-send-current-line):
-       if not connected, refuse to send either a message or
-           a command
-
-       * erc.el: (erc-save-buffer-in-logs):
-           - check for a sensible region before saving the buffer. if the
-             connection process is killed early on, there is not a sensible 
region
-             to save
-           - don't set buffer-file-name on save. we don't need it, and it 
means we
-             can now find-file a log while an existing query is open with that
-             user
-
-       * erc.el(erc-process-input-line):
-       when displaying the help for a function, if no
-           documentation exists, don't fall over
-       (erc-cmd-SAY): new function for quoting lines beginning with /
-       (erc-server-NICK):
-           - fix a bug where the "is now known as" message doesn't appear on 
newly
-             created /query buffers
-           - when a user changes their nick, update the query to point to the 
new
-             nick
-
-       * erc.el(erc-send-current-command):
-       don't reject multi-line commands. since
-           multiline-p is used as the no-command arg to 
erc-process-current-line,
-           multi-line text is never interpreted as a command. i believe this 
is the
-           correct behavior - it allows people to post the output of things 
like df
-           (sans header). if you want to change this, please provide a 
rationale
-           in the changelog
-
-       * erc.el(erc-send-current-line):
-       only match the first line when determining if a
-           multi-line command is allowed
-
-2003-02-07  Jorgen Schaefer  <address@hidden>
-
-       * erc-bbdb.el(erc-bbdb-highlight-record):
-       Use alternate strings, not character
-       classes to split the nick-field.
-
-2003-02-06  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-process-sentinel):
-       Now we set erc-connected to nil every time we disconnect
-           from a server, not just when an unexpected disconnect happens.
-
-       * erc.el(erc-connected):
-       Removed redundant defvar of this variable.  Improved the
-           docstring.
-       (erc-login): Changed to send a correct RFC2812 USER message (see section
-           3.1.3 of RFC2812 for the documentation of the semantics of each 
argument
-           of the USER message.
-
-2003-02-02  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-NOTICE): fix from mrbump
-
-2003-01-31  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-cmd-JOIN):
-       Now we only send one JOIN command to the server when a channel
-           key is provided.
-
-2003-01-30  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-remove-channel-member):
-       Fixed so that it runs erc-channel-members-changed-hook
-           with the channel buffer current, as is documented in the docstring 
for variable
-           erc-channel-members-changed-hook: "The buffer where the change 
happened is
-           current while this hook is called."
-
-2003-01-28  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       (erc-ignored-user-p),(erc-cmd-IGNORE),(erc-cmd-UNIGNORE): Now nicks are 
ignored
-           on a per-server basis.  Now, erc-ignore-list is only valid in server
-           buffers!  Do not reference it in channel buffers.
-
-       * erc.el(erc-cmd-IGNORE):
-       Now says "Ignore list is empty" if it erc-ignore-list is empty
-           instead of showing an empty list.
-
-2003-01-25  Alex Schroeder  <address@hidden>
-
-       * erc-nickserv.el(services): Defined a module
-
-2003-01-25  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-process-ctcp-query):
-       Display recipient of CTCP query if it's not
-       our current nick.
-
-       * erc.el(erc-cmd-WHOIS):
-       Accept an optional second argument SERVER.
-
-2003-01-25  Alex Schroeder  <address@hidden>
-
-       * erc-stamp.el(stamp): erc-add-timestamp must always be added
-       with the APPEND parameter -- not only when adding it on the right.
-
-2003-01-24  Alex Schroeder  <address@hidden>
-
-       * erc-members.el(erc-channel-members-changed-hook): Obsolete, use
-       erc-members-changed-hook instead.  When it is set, add its content
-       to erc-members-changed-hook.
-       (erc-update-channel-member): Obsolete, use erc-update-member
-       instead.  Defalias to that effect.
-       (erc-remove-channel-member): New and already obsolete.  Use
-       erc-remove-nick-from-channel instead.
-       (erc-update-channel-info-buffer): Obsolete, use ignore instead.
-       Yes, these have to go.
-       (erc-channel-member-to-user-spec): Obsolete, use erc-format-user
-       instead.
-       (erc-format-user): New.
-       (erc-ignored-reply-p): New, use it.
-
-       * erc-members.el:
-       Further along the way.  Any function from erc.el that uses
-       channel-members should end up in this file, rewritten to use
-       erc-members.
-
-       (erc-person): Call erc-downcase before getting
-       something from the hash.
-       (erc-nick-in-channel): Checking whether erc-process must be used is
-       unnecessary -- this will be done in erc-person.
-       (erc-nick-channels): New.
-       (erc-add-nick-to-channel, erc-update-member): Call erc-downcase
-       before putting something into the hash.
-       (erc-buffer-list-with-nick): New.
-       (erc-format-nick, address@hidden): New, backwards incompatible.
-       Must check for other places that call these!
-       (erc-server-PRIVMSG-or-NOTICE): Use the new version.
-
-       * erc-compat.el(view-mode-enter): defalias to view-mode, if
-       view-mode-enter is not fboundp and view-mode is -- as is the case
-       in XEmacs.  We need view-mode-enter in erc-match.el.
-
-2003-01-23  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-default-server-handler):
-       Minor performance improvement: allow the lambda
-           expression to be byte-compiled.
-
-2003-01-23  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-BANLIST):
-       in the absence of a fill-column, use the screen width
-
-2003-01-22  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       patch from MrBump to delay fetching the banlist until /bl is run, so we 
don't
-       fetch it when joining a channel anymore
-
-       * erc-ring.el:
-       * instead of adjusting hooks when loaded, provide (erc-ring-mode). 
you'll
-         need to run (erc-ring-mode 1) now to get the ring
-       * (erc-previous-command), (erc-next-command):
-           - check if the ring exists and create it if necessary
-           - don't do anything if the ring is empty
-
-       * erc-pcomplete.el:
-       Put "how to use" documentation in the comments up the top
-
-2003-01-21  Alex Schroeder  <address@hidden>
-
-       * erc-autojoin.el(erc-autojoin-version): New.
-
-       * erc-autojoin.el(erc-autojoin-add): Added body.
-       (erc-autojoin-remove): Added body.
-       (erc-autojoin): Provide it.
-
-2003-01-21  Damien Elmes  <address@hidden>
-
-       * erc.el: erc-cmd-*: removed a bunch of references to force
-
-2003-01-21  Alex Schroeder  <address@hidden>
-
-       * erc-autojoin.el(erc-autojoin-channels-alist): More doc.
-
-2003-01-20  Alex Schroeder  <address@hidden>
-
-       * erc-autojoin.el:
-       new, based on resolve's mail, and the stuff on the wiki
-
-       * erc-members.el: new
-
-2003-01-19  Mario Lang  <address@hidden>
-
-       * debian/README.Debian, debian/changelog, debian/scripts/install,
-         debian/scripts/startup.erc, Makefile:
-       Prepare for 20030119 debian package
-
-       * erc-dcc.el: <rant>
-       * (erc-decimal-to-ip): Since XEmacs decides that return a completely
-       and utterly wrong number from string-to-number if it is larger than
-       the integer boundary, instead of sanely converting the thing to
-       a float, we now (concat dec ".0").
-       </rant>
-
-       * erc.el:
-       * (erc-log-irc-protocol): Use erc-propertize, not propertize
-
-2003-01-19  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-button-add-buttons): Added regexp-quote for
-       the list case, too.
-
-2003-01-19  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-member): fix for case where a prop is nil
-
-       * erc-dcc.el(erc-dcc-member):
-       fix for xemacs's version of plist-member
-
-2003-01-19  Mario Lang  <address@hidden>
-
-       * erc-notify.el: Delete empty strings from the ison-list
-
-       * erc-track.el:
-       * (erc-track-switch-buffer): Call erc-modified-channels-update here.
-
-       * erc-track.el: * toplevel: require 'erc-match
-
-       * erc-track.el: * (erc-track-mode): Make autoload interactive
-
-       * erc-button.el: * (button): Make the autoload interactive
-
-       * erc.el:
-       * (erc-mode): Comment out the case-table stuff, breaks xemacs
-       * (erc-downcase): Revert.
-
-       * erc-dcc.el:
-       * (erc-dcc-handle-ctcp-send): Use erc-decimal-to-ip on the ip we get...
-
-       * erc-speak.el:
-       Eliminate reference to erc-nick-regexp, which no longer exists
-
-2003-01-19  Alex Schroeder  <address@hidden>
-
-       * erc-stamp.el(erc-timestamp-right-column): New, default nil.
-       (erc-insert-timestamp-right): Use it, if non-nil.  Verbose
-       doc string.
-
-2003-01-18  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-downcase): Use the old behavior in non-CVS Emacs.
-
-       * erc.el(erc-cmd-QUIT): Remove &rest. The correct fix follows.
-       (erc-cmd-GQUIT): Pass "" to erc-cmd-QUIT.
-       (erc-mode): Use the case-table only in CVS Emacs. See comment.
-
-       * erc.el(erc-cmd-QUIT): make reason optional.
-
-       * erc.el(erc-cmd-GQUIT): Fixed typo.
-
-2003-01-17  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-current-logfile): call expand-file-name, so that downcase 
doesn't mess up ~
-
-       * erc.el: * (erc-mode): Define a proper case-table.
-       * (erc-downcase): just call downcase for now, let's see if the 
case-table is portable, if yes, we'll remove all erc-downcase references 
anyway...
-
-       * erc-button.el: * (erc-button-add-buttons): regex-quote the nick
-
-2003-01-17  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(button): erc-channel-members-changed-hook no
-       longer has erc-recompute-nick-regexp.
-       (erc-button-alist): Use channel-members instead of
-       erc-nick-regexp.
-       (erc-button-add-buttons): Split some code into
-       erc-button-add-buttons-1, and now handle strings, lists, and
-       alists.  Regular expressions in lists and alists are enclosed in
-       < and >.
-       (erc-button-add-buttons-1): New.
-       (erc-nick-regexp): Deleted.
-       (erc-recompute-nick-regexp): Deleted.
-
-       * erc-button.el: Remove require cl again.
-       (erc-mode-map): No longer bind widget-backward and widget-forward.
-       (erc-button-alist): Explain why byte-compiling makes no sense, and
-       remove all calls to byte-compile.
-       (erc-button-keymap): Define it the standard way, without exposing
-       the list nature of the keymap.
-       (erc-button-marker-list): Deleted.
-       (erc-button-add-buttons): Simplify.  In particular, create the
-       button using the real callback, instead of using the intermediate
-       erc-button-push, and only store the data as described for
-       erc-button-alist.
-       (erc-button-remove-old-buttons): Simplify.  No more list munging.
-       Instead, just remove all the properties that we add in
-       erc-button-add-button.
-       (erc-widget-press-button): Deleted.
-       (erc-button-click-button): New, for mouse clicks.  Moves point to
-       where the mouse is, and calls erc-button-push.
-       (erc-button-push): Instead of matching again, just use the
-       erc-callback and erc-data properties at point to do the right
-       thing.
-       (erc-button-entry): Deleted.
-       (erc-button-next): Use error instead of the beep plus message
-       combo.
-
-2003-01-17  Jorgen Schaefer  <address@hidden>
-
-       * erc-autoaway.el(erc-autoaway-set-back):
-       Don't pass a force argument to erc-cmd-GAWAY.
-
-       * erc.el(erc-cmd-AWAY): Removed usage of the force variable.
-
-2003-01-17  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(button):
-       erc-recompute-nick-regexp is no longer added to
-       erc-channel-members-changed-hook unconditionally, but only if
-       erc-button-mode is enabled, and if it is disabled, it is removed
-       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,
-       so another solution needs to be found.
-
-2003-01-17  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-banlist-store):
-       Don't assume there's always a setter in the banlist reply.
-
-2003-01-17  Alex Schroeder  <address@hidden>
-
-       * erc-button.el(erc-button-url-regexp): Changed regexp according
-       to a suggestion by Max Froumentin <address@hidden>.
-
-2003-01-17  Mario Lang  <address@hidden>
-
-       * erc.el:
-       fix erc-remove-channel-member again to not error out on nil as first 
arg...
-
-       * erc.el: * (erc-occur): New function
-
-2003-01-17  Damien Elmes  <address@hidden>
-
-       * erc.el: erc-banlist-*: return nil so further hooks are called
-
-       * erc.el(erc-server-368):
-       suppress "end of ban list" messages - use /listbans now
-
-       * erc.el(erc-send-current-line):
-       removed the check for leading whitespace again - the
-           only time we want to prohibit multi-line commands is if / is the 
first
-           thing on the line
-       (erc-get-arglist): new defun for reading a function's arglist which 
should
-           work with older copies of emacs. we use help-function-arglist if 
it's
-           available, though, since that has support for reading subrs, etc
-
-       * erc.el(erc-cmd-JOIN): fixed (again)
-
-       * erc.el: * fixed call to erc-cmd-NICK when connecting
-       * support for listing bans and mass unbanning, again thanks to MrBump
-
-       * erc.el(erc-set-topic):
-       patch from MrBump (Mark Triggs, address@hidden) to strip
-           control chars and topic attribution in C-c C-t
-
-2003-01-16  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-remove-channel-member): Do not use delq, modify the list using 
setcdr like delq does.
-       In theory, this should be way faster since the list doesn't get 
traverse two times.
-       Measurement didn't show any real difference though :(, this system is 
flawed for channels with >300 users it seems...
-       Also moved some defcustoms up.
-
-2003-01-16  Brian P Templeton  <address@hidden>
-
-       * erc.el: moved misplaced paren
-
-2003-01-16  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-UNIGNORE):
-       reference argument directly - no string matching
-
-       * erc.el(erc-extract-command-from-line):
-       hmm, thinko in the canonicalization. should
-           be fixed
-
-2003-01-16  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-send-current-line):
-       Changed the regexp used to match /COMMANDs so that leading
-           whitespace is taken into account.
-
-2003-01-16  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: * (erc-dcc-do-SEND-command): Fix it
-
-       * erc-ezbounce.el, erc-lang.el: Arglist changes...
-
-       * erc.el: Various docstring fixes and additions.
-
-       * erc-notify.el:
-       * (erc-cmd-NOTIFY): Change the function arglist to (&rest args)
-
-       * erc-netsplit.el: * (erc-cmd-WHOLEFT): Has no args...
-
-2003-01-16  Damien Elmes  <address@hidden>
-
-       * erc-fill.el:
-       erc-fill-column: default to 78, so things like docstrings don't get 
wrapped
-           in an ugly manner
-
-2003-01-16  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-cmd-default): Take a substring, now /mode works again.
-       * (erc-cmd-AWAY): Put do-not-parse-args t
-       * (erc-cmd-GAWAY): Ditto, and fix it.
-       * (erc-cmd-CTCP): Switch to argument system.
-       * (erc-cmd-KICK): Do the same.
-
-2003-01-15  Mario Lang  <address@hidden>
-
-       * erc-dcc.el:
-       * (erc-cmd-DCC): Fixed for the new scheme, simplified.
-       * (erc-dcc-do-CHAT-command): Ditto.
-       * (erc-dcc-do-CLOSE-command): Ditto.
-       * (erc-dcc-do-LIST-command): Ditto.
-
-2003-01-15  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       erc-error-face: setting a background doesn't work so well with 
multi-line
-           messages, so we don't. fg color is negotiable ;-)
-       (erc-cmd-QUERY): fixed, new doco, suppress (erc-delete-query) until we 
fix it
-       (erc-send-current-line): allow multi-line messages provided they don't 
start
-           with a slash - there's no need to prohibit them if the slash isn't 
the
-           first character
-
-       * erc.el: * bad-syntax now reports like incorrect-args
-       * bunch of extra cmds fixed, nick, sv etc.
-
-       * erc.el(erc-cmd-HELP): fixed
-       (erc-extract-command-from-line): when determining canon-defun, make 
sure we
-           have a valid symbol
-       (erc-cmd-KICK): fixed
-
-       * erc.el:
-       * removed duplicate do-no-parse-args properties for the defaliased 
defuns
-       (erc-process-input-line): show function signature when incorrect args
-       (erc-extract-command-from-line): canonicalize defaliases before 
extracting
-           plist
-       (erc-cmd-CLEAR): fixed
-       (erc-cmd-UNIGNORE): fixed again
-
-       * erc.el(erc-cmd-SET): fixed
-       (erc-cmd-UNIGNORE): fixed
-       (erc-process-input-line): report when incorrect arguments are provided 
to a
-           command, and show the command's docstring
-
-       * erc.el(erc-cmd-APPENDTOPIC): fixed
-       (erc-process-input-line): more informative error message than 'bad 
syntax'
-
-2003-01-15  Mario Lang  <address@hidden>
-
-       * erc.el: * (erc-cmd-IGNORE): fixed
-
-       * erc.el: * (erc-cmd-NAMES): fixed
-
-       * erc.el:
-       * (erc-cmd-CLEARTOPIC): Simplify, fix doc, make interactive
-
-2003-01-15  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-JOIN):
-       correct invite behavior, and document it.
-
-2003-01-15  Mario Lang  <address@hidden>
-
-       * erc.el: * (erc-cmd-PART): Put 'do-not-parse-args t
-
-2003-01-15  Damien Elmes  <address@hidden>
-
-       * erc.el(erc-cmd-JOIN): new cmd argument syntax
-       (erc-process-input-line): check if (erc-extract-command-from-line) 
returned a
-           list, and apply if that's the case
-
-       * erc.el:
-       erc-cmd-*: remove optional force and references to `force' in the code
-       (erc-cmd-AMSG): call erc-trim-string, not trim-string
-
-2003-01-15  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-cmd-CLEARTOPIC): LINE is now ARGS and already parsed.
-       Set erc-cmd-TOPIC to 'do-not-parse-args for now.
-       (comment: I think we should have 'first, so that only first word is 
parsed...
-        Or we could autodetect erc-channel-p in the parser before that 
somehow...)
-
-       * erc.el: * (erc-cmd-OP): LINE is PEOPLE now, and already parsed.
-
-       * erc-notify.el:
-       * (erc-cmd-NOTIFY): Arg LINE is now ARGS, and already parsed.
-
-2003-01-15  Jorgen Schaefer  <address@hidden>
-
-       * erc-stamp.el(erc-insert-timestamp-right):
-       Prefer erc-fill-column to window-width,
-       because on wide screens the timestamp could wander off too far to the
-       right.
-
-2003-01-15  Mario Lang  <address@hidden>
-
-       * erc.el: This is the "everything is suddenly broken!" release
-       You know, this is CVS, you can still go back, and wait until the 
transition
-       is finished, but here is patch one, which basically breaks every command
-       which is typed on the prompt.
-       Hit me, we can still revert, but something needs to be done about this.
-       * (erc-extract-command-from-line): intern-soft the function here.
-       If the function symbol has a property 'do-not-parse-args, operate as 
before,
-       otherwise, split the arguments prior to calling the command handler.
-       * (erc-process-input-line): Updated to accommodate the change above.
-       * (erc-send-distinguish-noncommands): Ditto.
-       * (erc-cmd-NAMES): Ditto.
-       * (erc-cmd-ME): Put 'do-not-parse-args property.
-
-       * erc-dcc-list: Renamed
-       * (erc-dcc-member). Treat :nick as either a address@hidden or nick,
-       do appropriate comparisons, simplified.
-       * (erc-dcc-list-add): New functions
-       various callers of (cons (list ...) erc-dcc-list) updated.
-       Other stuff I'm too bored to document now
-
-2003-01-15  Jorgen Schaefer  <address@hidden>
-
-       * erc-stamp.el(erc-insert-timestamp-right):
-       Removed redundant code that overrid the
-       window-width. Now subtracts (length string) from every found
-       indentation positions.
-
-2003-01-14  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * (erc-cmd-AMSG): Remove useless call to erc-display-message.
-
-       * erc-dcc.el:
-       * erc-dcc-chat/send-request: New variables, control how to treat
-       incoming dcc chat or send requests. Can be set to 'ask, which behaves
-       like it did before, 'auto, which accepts automatically, and
-       'ignore, which ignores those type of requests completely.
-       * (erc-cmd-CREQ): New user-level command.
-       * (erc-cmd-SREQ): Ditto.
-
-       * erc.el: * (erc-cmd-AMSG). New command.
-
-       * erc-xdcc.el: * (erc-xdcc): delete empty strings from ARGS
-
-       * erc-dcc.el: * erc-dcc-ipv4-regexp: New constant
-       * (erc-ip-to-decimal): Use it.
-       * erc-dcc-host:valid-regexp erc-dcc-ipv4-regexp:
-       * erc-dcc-host: :type
-       * (pcomplete/erc-mode/DCC): Add completion for GET and CLOSE.
-       * Some docstring/comment fixes.
-
-       * erc-stamp.el:
-       * (erc-insert-timestamp-right): Subtract (length string) from
-       POS in any case, otherwise, linewrap occurs.
-
-       * erc-dcc.el:
-       * Fixed the unibyte-multibyte problem (now a dcc get buffer is 
(set-buffer-multibyte nil),
-         and saves correctly (tried with 21.3.50)). Thanks to Eli for 
suggesting it!
-       * Added :start-time plist property/value to GET handling so that we can 
calculate elapsed-time.
-       * Some (unwind-protect (progn (set-buffer ...) ...)) constructs 
replaced with (with-current-buffer ...)
-
-2003-01-13  Mario Lang  <address@hidden>
-
-       * erc-xdcc.el:
-       * erc-xdcc-help-text: New variable which makes replies to the originator
-       much more flexible.
-       * erc-xdcc-help-format: Removed.
-       * (erc-xdcc-help): Handle the new variable.
-       * (erc-xdcc): Simplified
-
-       * erc-xdcc.el: * erc-xdcc-handler-alist: New variable.
-       * (erc-xdcc): Move code for list and send sub-commands into
-       * (erc-xdcc-help): New function.
-       * (erc-xdcc-list): New function.
-       * (erc-xdcc-send): New function.
-
-2003-01-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-server-JOIN):
-       Oops, send MODE command only when *we* joined a channel.
-
-       * erc.el:
-       Fixing ERCs behavior wrt IRCnet's !channels have a different name for
-       JOIN than in reality (e.g. you can join !forcertest or !!forcertest
-       and really get to !ABCDEforcertest)
-
-       (erc-cmd-JOIN): Removed erc-send-command MODE.
-       (erc-server-JOIN): Ask for MODE now.
-
-2003-01-12  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el:
-       (erc-dcc-get-filter), (erc-dcc-get-file): store size as a string, not an
-           integer. check size > 0 for the case where a size wasn't provided, 
since
-           string-to-int will return 0 on an empty string
-
-2003-01-12  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: * Use RAWFILE arg with find-file-noselect
-       * Fix alist/plist conversion left-over
-       * Add verbose-info about sending blocks.
-
-2003-01-11  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: * (pcomplete-erc-mode/DCC): Fixes
-
-       * erc-xdcc.el: Initial version.
-
-       * erc-pcomplete.el:
-       * (erc-pcomplete): Fix so that cycle-completion works again.
-       * (pcomplete-parse-erc-arguments): If there is a space after the last 
word
-       before point, we need to return a "" arg, and it's position.
-
-       * erc-dcc.el: Fix to pcomplete/erc-mode/DCC
-
-       * erc-dcc.el: * (pcomplete/erc-mode/DCC): New function
-
-       * erc-dcc.el: *** empty log message ***
-
-       * erc-dcc.el: Move code around, just basic changes
-
-2003-01-11  Jorgen Schaefer  <address@hidden>
-
-       * erc-stamp.el(erc-insert-timestamp-right):
-       Check whether erc-fill-column is
-       available before using it. Else default to fill-column or if
-       everything else fails, the window width of the current window. For the
-       fill-columns, use them directly as the starting position for the
-       timestamp.
-
-2003-01-11  Andreas Fuchs  <address@hidden>
-
-       * erc-stamp.el:
-       erc-insert-timestamp-right: use correct window's window-width. If
-                         buffer is not in a window, use erc-fill-column.
-
-2003-01-11  Mario Lang  <address@hidden>
-
-       * erc-dcc.el (erc-dcc-do-LIST-command): Fix
-
-       * erc-dcc.el:
-       * buffer-local variables erc-dcc-sent-marker and erc-dcc-send-confirmed 
marker removed
-         Keep This info in erc-dcc-member :sent and :confirmed plist values
-       :buffer plist for :type 'SEND removed, since we can get this with 
(marker-buffer
-       * erc-dcc-send-connect-hook: New hook, defaults to erc-dcc-send-block 
and erc-dcc-send-connected, which now prints a msg...
-
-       * erc-dcc.el:
-       * (erc-dcc-chat-accept): Renamed from erc-dcc-chat. Callers updated.
-       * (erc-dcc-chat): Renamed from erc-dcc-chat-request.
-       Callers updated, and interactive form added.
-       * (erc-dcc-server-accept): No longer do any type-specific stuff.
-       * (erc-dcc-chat-sentinel): Call erc-dcc-chat-setup if event is "open 
from "
-       from here, otherwise call erc-dcc-chat-close.
-
-       * (
-
-       * erc-dcc.el: *** empty log message ***
-
-       * erc-dcc.el: Moved some functions around.
-       Doc string fixes.
-       "/dcc send nick filename" works now
-
-2003-01-11  Alex Schroeder  <address@hidden>
-
-       * erc.el(erc-send-command): Fixed flood protect message.
-
-       * erc-button.el(erc-button-syntax-table): Make `-' a legal nick
-       constituent.
-
-2003-01-10  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: Some more steps toward dcc send.
-
-2003-01-10  Francis Litterio  <address@hidden>
-
-       * erc-notify.el(erc-notify-timer):
-       Changed to make it IRC-case-insensitive when comparing nicks.
-       (erc-notify-JOIN): Changed to make it IRC-case-insensitive when 
comparing nicks.
-       (erc-notify-NICK): Changed to make it IRC-case-insensitive when 
comparing nicks.
-       (erc-notify-QUIT): Changed to make it IRC-case-insensitive when 
comparing nicks.
-       (erc-cmd-NOTIFY): Now "/notify -l" lists the nicks on your notify list. 
 Now
-           when you remove a nick from your notify list, you no longer receive 
a spurious
-           signoff notification for that nick.  Changed to make it 
IRC-case-insensitive when
-           comparing nicks.
-
-       * erc.el(erc-ison-p):
-       Fixed so it calls erc-member-ignore-case instead of member.
-
-       * erc.el(erc-member-ignore-case):
-       New function.  Just like member-ignore-case, but obeys
-           the IRC protocol case matching rules.
-
-2003-01-10  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el:
-       (erc-dcc-do-GET-command), (erc-dcc-get-file): use the plist syntax, this
-           fixes dcc get again
-
-2003-01-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: erc-complete-functions: New variable.
-       erc-mode-map: Bind \t to 'erc-complete-word
-       erc-complete-word: New function.
-
-       * erc-pcomplete.el(erc-pcomplete-mode):
-       Use new erc-complete-functions
-       (erc-pcomplete): Check that we're in the input line, else return nil.
-
-       * erc-button.el(erc-button-mode): Use new erc-complete-functions
-       erc-button-old-tab-command: Removed.
-       (erc-button-next-or-old): Removed
-       (erc-button-next): check that we're not in the input line, else just 
return nil.
-
-2003-01-10  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: cleanup
-
-       * erc-dcc.el:
-       * (erc-dcc-chat-request): No longer use erc-send-ctcp-message.
-
-       * erc-dcc.el:
-       * (erc-dcc-no-such-nick): Also call delete-process if we have a peer 
already
-
-       * erc-dcc.el:
-       * (erc-dcc-no-such-nick): New function, server event handler for event 
401.
-       If we send a CTCP message requesting something dcc related, we set up an
-       entry in erc-dcc-list before sending the request (for the server proc 
object
-       for listening conns for example).  But if that nick does not exist
-       on that server, we now nicely cleanup erc-dcc-list again.
-
-2003-01-09  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: Moved code around a bit, and doc fixes
-
-       * erc-dcc.el: *** empty log message ***
-
-       * erc-dcc.el: Rename erc-dcc-plist to erc-dcc-list
-
-2003-01-09  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-server (erc-dcc-chat-setup):
-       use erc's (erc-setup-buffer) to determine how to
-           display new DCC windows
-       (erc-dcc-chat-buffer-killed): buffer-local hook for DCC buffers to 
close the
-           process
-       (erc-dcc-chat-close): code common to a killed buffer or a disconnection 
from
-           the other side
-       (erc-dcc-chat-sentinel): use (erc-dcc-chat-close)
-       (erc-dcc-server-accept): use (erc-log) instead of (message)
-
-       * erc.el:
-       (erc), (erc-setup-buffer): factor out window generation code so DCC can 
use
-           it too
-
-       * erc-dcc.el:
-       (erc-dcc-do-CLOSE-command), (erc-dcc-do-LIST-command): work with 
erc-dcc-plist
-
-       * erc-dcc.el:
-       erc-dcc-alist: became erc-dcc-plist, so we can more easily grab 
particular
-           properties
-       dcc catalog: unify use of DCC: and [dcc] (either's fine, but let's be
-           consistent)
-       (erc-dcc-member): takes an arbitrary list of constraints now
-       (erc-dcc-proc-member): removed, as (erc-dcc-member) can be used for this
-       (erc-dcc-do-CHAT-command): use the catalog to show the user what's 
going on
-       (erc-dcc-chat-server): removed
-       (erc-dcc-server): takes name sentinel and filter arguments, can be used 
for
-           both send and chat now
-
-       .. this release means all send/get support is broken until we fix up the
-       things that still expect to be using an alist. this include /dcc list, 
/dcc
-       close
-
-2003-01-09  Francis Litterio  <address@hidden>
-
-       * erc-ring.el(erc-previous-command):
-       If you have a partially typed input line and press M-p,
-           you lose what you typed.  Now we save it so you can come back to it.
-
-2003-01-09  Jorgen Schaefer  <address@hidden>
-
-       * erc-ring.el(erc-add-to-input-ring): s/nullp/null/
-
-2003-01-09  Damien Elmes  <address@hidden>
-
-       * erc-ring.el(erc-add-to-input-ring):
-       set up the ring if it's not already setup
-
-       * erc-dcc.el(erc-dcc-member): case insensitive match of nicknames
-       (erc-dcc-do-CHAT-command): echo what we're doing (at least for now)
-
-2003-01-09  Mario Lang  <address@hidden>
-
-       * erc-dcc.el: (temporarily) fix erc-process setting...
-
-       * erc-dcc.el: * (erc-dcc-chat-send-line): Removed
-
-       * erc.el:
-       Check if target is stringp (we can now also have 'dcc as value...)
-
-       * erc-dcc.el(erc-dcc-chat-send-input-line):
-       New function, used for
-       erc-send-input-line-function.
-       Use erc-send-current-line now.
-
-       * erc-dcc.el: evt to elt...
-
-       * erc-dcc.el: Remove () from a var (how silly!)
-
-       * erc-dcc.el: * (erc-dcc-get-host): Use format-network-address.
-       * (erc-dcc-host): Change semantic.  If erc-dcc-host is set, use it.
-       Otherwise, try to figure out the host by calling erc-dcc-get-host.
-       * (erc-dcc-server-port): New variable.
-       * erc-dcc-chat-log: Renamed to erc-dcc-server-accept
-
-       * erc-dcc.el(erc-dcc-do-CHAT-command):
-       Change arg of call to erc-dcc-chat-request from elt to nick
-
-2003-01-09  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-send-current-line):
-       Now rejects multi-line commands (i.e., lines that
-           start with "/" and contain newlines).
-
-2003-01-09  Jorgen Schaefer  <address@hidden>
-
-       * erc-button.el:
-       Functionality to use TAB to jump to the next button:
-
-       (erc-button-next-or-old): New function.
-       (erc-button-next): New function.
-       erc-button-keymap: added erc-button-next
-       erc-button-old-tab-command: New variable.
-       define-erc-module button: Add and remove 'erc-button-next-or-old as
-       appropriate.
-
-2003-01-09  Francis Litterio  <address@hidden>
-
-       * erc.el:
-       New variable: erc-auto-reconnect (defaults to t).  If non-nil, ERC will
-           automatically reconnect to a server after an unexpected 
disconnection.
-       (erc-process-sentinel): Changed to refer to variable erc-auto-reconnect.
-
-2003-01-08  Mario Lang  <address@hidden>
-
-       * erc.el:
-       * erc-send-input-line-function: New variable, used for dispatch...
-
-2003-01-08  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-chat-sentinel):
-       check event type before killing process
-       (erc-dcc-chat-log): new, handles the setup of dcc chats for incoming
-           connections
-       (erc-dcc-chat): use (erc-dcc-chat-setup)
-       (erc-dcc-chat-setup): code common to incoming and outgoing DCC chats
-       (erc-dcc-chat-request): request a DCC chat with another user
-       (erc-dcc-proc-member): locate a member in erc-dcc-alist by process
-
-       The very first ERC to ERC DCC chat was held between delysid and resolve 
today!
-
-2003-01-08  Mario Lang  <address@hidden>
-
-       * erc-track.el(erc-all-buffer-names):
-       Check for erc-dcc-chat-mode too
-
-2003-01-08  Francis Litterio  <address@hidden>
-
-       * erc-ring.el, erc.el(erc-kill-input):
-       Resets erc-input-ring-index to nil, so that invoking this
-           command conceptually puts you after your most recent input in the 
input
-           history.
-       (erc-previous-command and erc-next-command): Changed so that history 
movement
-           is more intuitive.  Also preserves the blank input line that marks 
the
-           place after the newest command in the history ring (i.e., you'll 
see a
-           blank command once every trip around the ring in either direction).
-
-2003-01-08  Mario Lang  <address@hidden>
-
-       * erc-dcc.el(erc-dcc-chat): Add docstring
-       Add self-test.
-       Fix error if /dcc chat nick doesn't find the nick
-
-2003-01-08  Francis Litterio  <address@hidden>
-
-       * Makefile:
-       Changed so that "make" works correctly under Cygwin.  Before this 
change, the
-       pathname passed to Emacs on the command line under Cygwin had the form
-       "/cygwin/c/...", which prevented emacs from finding the file.  Now the 
pathname
-       has the form "c:/...".  This works for any drive letter.
-
-2003-01-08  Mario Lang  <address@hidden>
-
-       * erc-button.el: reindent some code, and add TODO to comments
-
-       * erc-dcc.el: *** empty log message ***
-
-       * erc-dcc.el: Make dcc-chat-ended a notice
-       Remove now bogus comment
-
-2003-01-08  Damien Elmes  <address@hidden>
-
-       * erc-dcc.el(erc-pack-int): from erc-packed-int
-       (erc-unpack-int): new
-
-       * erc-dcc.el(erc-unpack-str): added
-
-2003-01-08  Mario Lang  <address@hidden>
-
-       * erc.el(erc-server-482):
-       New handler, handles KICK reply if you're not channel-op
-
-       * erc-dcc.el: Document SEND in erc-dcc-alist.
-       Move sproc, parent-proc and file into erc-dcc-alist
-
-       * erc-dcc.el: stubs
-
-       * erc-dcc.el(erc-dcc-get-host):
-       Change :iface to :local since Kim committed it now to CVS emacs
-
-       * erc-dcc.el(erc-dcc-get-host):
-       New function, requires the not-yet-in-CVS-emacs local-address.patch to 
process.c.
-       Some other minor additions
-
-2003-01-08  Francis Litterio  <address@hidden>
-
-       * erc.el(erc-cmd-IGNORE):
-       Now returns t to prevent "Bad syntax" error.
-       (erc-cmd-UNIGNORE): Now returns t to prevent "Bad syntax" error.
-       (erc-server-PRIVMSG-or-NOTICE): Capitalized first word in message to 
user.
-
-       * erc.el(erc-scroll-to-bottom):
-       Temporarily bind resize-mini-windows to nil so that
-           users who have it set to a non-nil value will not suffer from 
premature
-           minibuffer shrinkage due to the below recenter call.  I have no 
idea why
-           this works, but it solves the problem, and has no negative side 
effects.
-
-2003-01-07  Jorgen Schaefer  <address@hidden>
-
-       * erc-dcc.el:
-       erc-dcc-ctcp-query-chat-regexp: The IP is not really an IP, but a
-       number (no . allowed there).
-       (erc-dcc-send-ctcp-string): use let* here to avoid cluttering up the
-       match data.
-       Also, use erc-decimal-to-ip to get the IP.
-       (erc-ip-to-decimal): Removed some pasted ERC timestamps
-       (erc-decimal-to-ip): New function.
-       erc-dcc-chat-mode-map: Return map in the initialization.
-
-2003-01-07  Francis Litterio  <address@hidden>
-
-       * erc-match.el(erc-match-fool-p):
-       Changed to call erc-match-directed-at-fool-p instead of
-            erc-directed-at-fool-p.
-
-2003-01-07  Mario Lang  <address@hidden>
-
-       * erc-dcc.el(erc-cmd-DCC):
-       Change (cond ... (t nil)) to (when ...)
-
-       * erc-dcc.el: Use erc-current-nick-p
-
-2003-01-07  Jorgen Schaefer  <address@hidden>
-
-       * erc.el:
-       erc-join-buffer: Added 'window-noselect to docstring and :type.
-       erc-auto-query: Added 'window-noselect to :type.
-       (erc): Treat erc-join-buffer being 'window-noselect appropriately.
-
-       * erc.el(erc-current-nick-p): New function.
-       (erc-nick-equal-p): New function.
-       (erc-already-logged-in), (erc-server-JOIN), (erc-auto-query),
-       (erc-server-PRIVMSG-or-NOTICE): Use erc-current-nick-p.
-       (erc-update-channel-member): Use erc-nick-equal-p.
-
-       * erc-match.el(erc-match-current-nick-p):
-       Renamed from erc-current-nick-p
-       (erc-match-pal-p): Renamed from erc-pal-p
-       (erc-match-fool-p): Renamed from erc-fool-p
-       (erc-match-keyword-p): Renamed from erc-keyword-p
-       (erc-match-dangerous-host-p): Renamed from erc-dangerous-host-p
-       (erc-match-directed-at-fool-p): Renamed from erc-directed-at-fool-p
-       (erc-match-message): Use erc-match-TYPE-p instead of erc-TYPE-p
-
-       * erc.el:
-       Support for IRCnets' "nick/channel temporarily unavailable"
-
-       (erc-nickname-in-use): New function (mostly copied from erc-server-433).
-       (erc-server-433): Use erc-nickname-in-use
-       (erc-server-437): New function.
-       erc-server-hook-list: Added (437 erc-server-437).
-
-2003-01-07  Mario Lang  <address@hidden>
-
-       * erc-fill.el: Add autoload cookie
-
-       * erc-notify.el:
-       Now also pass SERVER argument to signon/off hooks, and provide a 
erc-notify-signon/off function for echo-area printing
-
-       * erc-notify.el(erc-notiy-QUIT):
-       Change use of delq to delete, delq does not work with strings
-
-2003-01-06  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-ctcp-query-VERSION):
-       v%s -> %s, so we are no longer vVersion...
-
-2003-01-06  Mario Lang  <address@hidden>
-
-       * erc.el: Small change to erc-ison-p, and fixme tag
-
-2003-01-06  Francis Litterio  <address@hidden>
-
-       * erc.el(erc):
-       Fixed bug where variable "away" would be nil in new channel buffers
-              even if the user is away when joining the channel.
-       (erc-strip-controls): Fixed a bug where erc-strip-controls accidentally
-              removed all text properties from the string.
-
-2003-01-06  Mario Lang  <address@hidden>
-
-       * erc-dcc.el:
-       Some stub functions, some code, nothing really works yet
-
-       * erc.el(erc-ison-p): New function
-
-       * erc-dcc.el: Some functions which will be needed for dcc send
-
-       * erc-dcc.el(erc-ip-address-to-decimal):
-       New function, thanks lawrence
-
-       * erc-dcc.el: Again, simplify code, fix stuff, DCC CHAT works now
-
-       * erc-dcc.el: Many fixes, chat nearly works now
-
-       * erc-netsplit.el: Also detect fast netsplit/joins
-
-       * erc-dcc.el: some more fixes
-
-       * erc-dcc.el: Fixup stage 1, now dcc get works
-
-       * erc-dcc.el: make /dcc LIST work
-
-       * erc-dcc.el:
-       Initial checkin, don't use it!  its really far from complete.  Hackers: 
help!
-
-       * erc-notify.el:
-       New function erc-notify-NICK, and added signon/off hooks which were 
missing
-
-2003-01-05  Jorgen Schaefer  <address@hidden>
-
-       * erc.el(erc-truncate-buffer-to-size):
-       set inhibit-read-only to t for the
-       deletion. This is usually done by the function calling the hook, but
-       not if it's called interactively. Also, rewrote some weird if/if
-       combination.
-
-       * erc-track.el(erc-track-shortennames):
-       Documentation fix (erc-all-buffers is really
-       erc-all-buffer-names)
-
-       These changes make server buffers be tracked as well, as there are
-       quite a few interesting things going on there (e.g. CTCP etc.)
-       (erc-all-buffer-names): Check for (eq major-mode 'erc-mode) instead of
-       erc-default-recipients.
-       (erc-track-modified-channels): Don't require a default target (e.g.,
-       this-channel being non-nil)
-
-2003-01-03  Damien Elmes  <address@hidden>
-
-       * erc.el:
-       erc-auto-query: can now be set to a symbol to control how new messages 
should
-           be popped up (or not popped up, as the case may be)
-       (erc-query): new function which handles the bulk of what 
(erc-cmd-QUERY) did
-           previously
-       (erc-cmd-QUERY): use (erc-query)
-       (erc-auto-query): use (erc-query)
-
-       * erc.el(erc-current-logfile):
-       Downcase result of log generation function, as IRC is
-       case insensitive. Fixes problems where "/query user" results in a 
different
-       log file to a query from "User". Avoided adding an extra flag to 
control this
-       behavior - if you think this was the wrong decision, please correct it 
and
-       I'll remember it for next time.
-
-See ChangeLog.02 for earlier changes.
-
-       Copyright (C) 2003, 2006-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
diff --git a/lisp/erc/ChangeLog.04 b/lisp/erc/ChangeLog.04
deleted file mode 100644
index 43b5a75..0000000
--- a/lisp/erc/ChangeLog.04
+++ /dev/null
@@ -1,2094 +0,0 @@
-2004-12-29  Francis Litterio  <address@hidden>
-
-       * erc-goodies.el (erc-interpret-controls-p): Changed docstring to
-       reflect the new meaning if this is set to 'remove.
-       (erc-controls-interpret): Rephrased docstring to be more accurate.
-       (erc-controls-strip): New function that behaves like the
-       recently-removed erc-strip-controls -- it removes all IRC color
-       and highlighting control characters.
-       (erc-controls-highlight): Changed to support the new 'remove value
-       that variable erc-interpret-controls-p might have.
-
-2004-12-28  Francis Litterio  <address@hidden>
-
-       * erc-ibuffer.el, erc-list.el, erc-page.el, erc-speedbar.el:
-       Changed all calls to erc-interpret-controls (which no longer
-       exists) to call erc-controls-interpret (the new name of the same
-       function).
-
-2004-12-28  Francis Litterio  <address@hidden>
-
-       * erc-goodies.el (erc-controls-interpret): Added this function to
-       replace the recently-removed erc-interpret-controls.  Also added
-       a (require 'erc) to solve a byte-compile problem.
-
-2004-12-28  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-controls-interpret): Added this function to replace
-       the recently-removed erc-interpret-controls.
-
-2004-12-27  Jorgen Schaefer  <address@hidden>
-
-       * erc-truncate.el (erc-truncate-buffer-to-size): Check for
-       logging even better (via lawrence).
-
-2004-12-26  Jorgen Schaefer  <address@hidden>
-
-       * erc-truncate.el (erc-truncate-buffer-to-size): Much saner
-       logging detection (via lawrence).
-
-2004-12-25  Jorgen Schaefer  <address@hidden>
-
-       * erc-goodies.el (erc-controls-highlight): Treat single C-c
-       correctly.
-
-2004-12-24  Jorgen Schaefer  <address@hidden>
-
-       * erc-goodies.el, erc.el: Deleted IRC control character processing
-       and implemented a sane version in erc-goodies.el as a module.
-
-       * erc.el (erc-merge-controls, erc-interpret-controls,
-       erc-decode-controls, erc-strip-controls, erc-make-property-list,
-       erc-prepend-properties): Removed.
-
-       (erc-interpret-controls-p, erc-interpret-mirc-color, erc-bold-face
-       erc-inverse-face, erc-underline-face, fg:erc-color-face0,
-       fg:erc-color-face1, fg:erc-color-face2, fg:erc-color-face3,
-       fg:erc-color-face4, fg:erc-color-face5, fg:erc-color-face6,
-       fg:erc-color-face7, fg:erc-color-face8, fg:erc-color-face9,
-       fg:erc-color-face10, fg:erc-color-face11, fg:erc-color-face2,
-       fg:erc-color-face13, fg:erc-color-face14, fg:erc-color-face15,
-       bg:erc-color-face1, bg:erc-color-face2, bg:erc-color-face3,
-       bg:erc-color-face4, bg:erc-color-face5, bg:erc-color-face6,
-       bg:erc-color-face7, bg:erc-color-face8, bg:erc-color-face9,
-       bg:erc-color-face10, bg:erc-color-face11, bg:erc-color-face2,
-       bg:erc-color-face13, bg:erc-color-face14, bg:erc-color-face15,
-       erc-get-bg-color-face, erc-get-fg-color-face,
-       erc-toggle-interpret-controls): Moved.
-
-       * erc-goodies.el (erc-beep-p, irccontrols, erc-controls-highlight,
-       erc-controls-propertize): New.
-
-2004-12-24  Jorgen Schaefer  <address@hidden>
-
-       * erc-goodies.el, erc.el: The Small Extraction of Stuff[tm] commit.
-       Moved some functions from erc.el to erc-goodies.el, and
-       transformed them to erc modules in the process.
-       - imenu autoload stuff moved.  I don't know why it is here at all.
-       - Moved: scroll-to-bottom, make-read-only, distinguish-noncommands,
-       smiley, unmorse, erc-occur (the last isn't a module, but still
-       moved)
-       (erc-input-line-position, erc-add-scroll-to-bottom,
-       erc-scroll-to-bottom, erc-make-read-only, erc-noncommands-list,
-       erc-send-distinguish-noncommands, erc-smiley, erc-unmorse,
-       erc-occur): Moved from erc.el to erc-goodies.el.
-       (smiley): Module moved from erc.el to erc-goodies.el.
-       (scrolltobottom, readonly, noncommands, unmorse): New modules.
-
-2004-12-20  Diane Murray  <address@hidden>
-
-       * erc.el (erc-format-away-status): Use `a', not `away' - that's
-       why it's there.
-       (erc-update-mode-line-buffer): The values of `mode-line-process'
-       and `mode-line-buffer-identification' are normally lists.
-       Conform.
-
-2004-12-18  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-process-ctcp-query, erc-process-ctcp-reply): Display
-       message in the active window, not the server window.
-
-2004-12-16  Edward O'Connor  <address@hidden>
-
-       * erc-track.el (erc-track-position-in-mode-line): Check for
-       'erc-track-mode variable with boundp.  From Adrian Aichner
-       <address@hidden>.
-
-2004-12-16  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-upcase-first-word): New function.  The old way used
-       in erc-send-ctcp-message would eat consecutive whitespace etc.
-       (erc-send-ctcp-message, erc-send-ctcp-notice): Use it.
-
-2004-12-15  Edward O'Connor  <address@hidden>
-
-       * erc.el (erc-send-ctcp-message): Fix braino with my previous
-       patch.  It always helps to C-x C-s before `cvs commit'.
-
-2004-12-15  Edward O'Connor  <address@hidden>
-
-       * erc.el (erc-send-ctcp-message): Only upcase the ctcp command,
-       and not the entire message.  Brian Palmer's change of 2004-12-12 had 
broken /me.
-       Shouting is bad! :)
-
-2004-12-14  Diane Murray  <address@hidden>
-
-       * erc-nets.el (erc-networks-alist): Change undernet to Undernet as
-       is used in `erc-server-alist', so that completion works when using
-       `erc-server-select'.  This should fix Debian bug #282003 (erc:
-       cannot connect to Undernet).
-
-2004-12-14  Diane Murray  <address@hidden>
-
-       * erc-backend.el (def-edebug-spec): Only run this if 'edebug is
-       available.
-
-2004-12-14  Diane Murray  <address@hidden>
-
-       * erc.el: The last change to `erc-mode-line-format' introduced a
-       bug in XEmacs - it can't handle the #(" "...) strings at all.  The
-       following changes fix the bug and simplify the mode-line handling
-       considerably.  (erc-mode-line-format): Now defined as a string
-       which will be formatted using `format-spec' and take the place of
-       `mode-line-buffer-identification' in the mode line.
-       (erc-header-line-format): Now defined as a string to be formatted
-       using `format-spec'.
-       (erc-prepare-mode-line-format): Removed.
-       (erc-format-target, erc-format-target-and/or-server,
-       erc-format-away-status, erc-format-channel-modes): New functions.
-       Basically the old `erc-prepare-mode-line-format' split apart.
-       (erc-update-mode-line-buffer): Set
-       `mode-line-buffer-identification' to the formatted
-       `erc-mode-line-format', set `mode-line-process' to ": CLOSED" if
-       the connection has been terminated, and set `header-line-format'
-       (if it is bound) to the formatted `erc-header-line-format', then
-       do a `force-mode-line-update'.
-
-2004-12-12  Diane Murray  <address@hidden>
-
-       * erc.el (erc-modules): Disable modules removed with `customize'.
-       (erc-update-modules): Try to give a more descriptive error
-       message.
-
-2004-12-12  Diane Murray  <address@hidden>
-
-       * erc-complete.el, erc.el, erc-list.el, erc-nets.el,
-       * erc-nicklist.el, erc-pcomplete.el, erc-replace.el, erc-speak.el,
-       * erc-truncate.el (erc-buffers, erc-coding-systems, erc-display,
-       erc-mode-line-and-header, erc-ignore, erc-query,
-       erc-quit-and-part, erc-paranoia, erc-scripts, erc-old-complete,
-       erc-list, erc-networks, erc-nicklist, erc-pcomplete, erc-replace,
-       erc-truncate): New customization groups.
-       (erc-join-buffer, erc-frame-alist, erc-frame-dedicated-flag,
-       erc-reuse-buffers): Use 'erc-buffers as `:group'.
-       (erc-default-coding-system, erc-encoding-coding-alist):
-       Use 'erc-coding-systems as `:group'.
-       (erc-hide-prompt, erc-show-my-nick, erc-prompt,
-       erc-input-line-position, erc-command-indicator, erc-notice-prefix,
-       erc-notice-highlight-type, erc-interpret-controls-p,
-       erc-interpret-mirc-color, erc-minibuffer-notice,
-       erc-format-nick-function): Use 'erc-display as `:group'.
-       (erc-mode-line-format, erc-header-line-format,
-       erc-header-line-uses-help-echo-p, erc-common-server-suffixes,
-       erc-mode-line-away-status-format): Use 'erc-mode-line-and-header
-       as `:group'.
-       (erc-hide-list, erc-ignore-list, erc-ignore-reply-list,
-       erc-minibuffer-ignored): Use 'erc-ignore as `:group'.
-       (erc-auto-query, erc-query-on-unjoined-chan-privmsg,
-       erc-format-query-as-channel-p): Use 'erc-query as `:group'.
-       (erc-kill-buffer-on-part, erc-kill-queries-on-quit,
-       erc-kill-server-buffer-on-quit, erc-quit-reason-various-alist,
-       erc-part-reason-various-alist, erc-quit-reason, erc-part-reason):
-       Use 'erc-quit-and-part as `:group'.
-       (erc-verbose-server-ping, erc-paranoid, erc-disable-ctcp-replies,
-       erc-anonymous-login, erc-show-channel-key-p): Use 'erc-paranoia as
-       `:group'.
-       (erc-startup-file-list, erc-script-path, erc-script-echo): Use
-       'erc-scripts as `:group'.
-       (erc-nick-completion, erc-nick-completion-ignore-case,
-       erc-nick-completion-postfix): Use 'erc-old-complete as `:group'.
-       (erc-chanlist-progress-message, erc-no-list-networks,
-       erc-chanlist-frame-parameters, erc-chanlist-hide-modeline,
-       erc-chanlist-mode-hook): Use 'erc-list as `:group'.
-       (erc-server-alist, erc-networks-alist): Use 'erc-networks as
-       `:group'.
-       (erc-settings): Use `defvar' instead of `defcustom' since this is
-       only a draft which doesn't work.
-       (erc-nicklist-window-size): Use 'erc-nicklist as `:group'.
-       (erc-pcomplete-nick-postfix,
-       erc-pcomplete-order-nickname-completions): Use 'erc-pcomplete as
-       `:group'.
-       (erc-replace-alist): Use 'erc-replace as `:group'.
-       (erc-speak-filter-timestamp): Use 'erc-speak as `:group'.
-       (erc-max-buffer-size): Use 'erc-truncate as `:group'.
-
-2004-12-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-scroll-to-bottom): Go to the end of the buffer
-       before recentering.  This allows editing multiple lines more
-       conveniently in CVS Emacs.  This also undos a change by antifuchs
-       who said this goto-char would mess up redisplay.  Extensive testing
-       couldn't reproduce that problem.
-
-2004-12-12  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-send-ctcp-message): upcase the ctcp message (so that
-       version becomes VERSION, for example).
-       (erc-iswitchb): Make the argument optional in non-interactive
-       invocation, so erc-iswitchb can be substituted directly for
-       iswitchb in code.
-
-2004-12-11  Diane Murray  <address@hidden>
-
-       * erc-track.el (erc-track-position-in-mode-line): Allow for the
-       fact that `erc-track-mode' isn't bound when file is loaded.
-
-2004-12-11  Diane Murray  <address@hidden>
-
-       * erc-track.el (erc-track-position-in-mode-line): New customizable
-       variable.  (erc-track-remove-from-mode-line): New function.
-       Remove `erc-modified-channels-string' from the mode-line.
-       (erc-track-add-to-mode-line): New function.  Add
-       `erc-modified-channels-string' to the mode-line using the value of
-       `erc-track-position-in-mode-line' to determine whether to add it
-       to the beginning or the end of `mode-line-modes' (only available
-       with GNU Emacs versions above 21.3) or to the end of
-       `global-mode-string'.
-       (erc-track-mode, erc-track-when-inactive-mode): Use the new
-       functions.
-
-2004-12-11  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST): Use (buffer-name) and not
-       (erc-default-target) for the buffer name - buffer names are case
-       sensitive.
-
-2004-12-11  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-message-type): Added the message "MODE" to the known
-       erc-message-type widget, so that (for example) people can tell
-       erc-track-exclude-types to ignore mode changes.  The others tag
-       also needed to be made an inline list, so that it's merged with
-       the given constants, instead of being inserted as a list.
-
-2004-12-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el, erc.el: Update to get ERC look nicely in CVS Emacs.
-
-       * erc.el (erc-mode-line-format): When on CVS emacs, use the new
-       format.
-
-       * erc-track.el (track module): When on CVS emacs, modify
-       mode-line-modes instead of global-mode-string.  The latter is way
-       to far too the right.
-
-2004-11-18  Mario Lang  <address@hidden>
-
-       * Makefile, debian/changelog: debian release 20041118-1
-
-2004-11-03  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-buttonize-nicks): Set default value to
-       `t'.  Updated documentation and customization `:type' to reflect
-       usage.
-
-2004-10-29  Johan Bockgård  <address@hidden>
-
-       * AUTHORS: Added self.
-
-2004-10-17  Diane Murray  <address@hidden>
-
-       * erc-list.el: Added local variables for this file.
-       (erc-list-version): New.
-       (erc-cmd-LIST): Take &rest rather than &optional arguments, as was
-       done in revision 1.21.  Allow for input when called interactively.
-       (erc-prettify-channel-list, erc-chanlist-toggle-sort-state): Use
-       `unless' instead of when not.
-
-2004-10-17  Diane Murray  <address@hidden>
-
-       * erc-backend.el (erc-handle-unknown-server-response): Fixed so
-       that the contents are only shown once.
-       (MOTD): Display lines in the server buffer if it's the first MOTD
-       sent upon connection.  This is to avoid the problem of having the
-       MOTD of one server showing up in another server's buffer if it took
-       a while to get connected.
-       (004): Fixed to show the user modes and channel modes correctly.
-       (303): Now displays the nicknames returned by ISON instead of the
-       user's nickname.
-       (367, 368): Moved up into 300's section of the code.  Added
-       documentation.  Use `multiple-value-bind' to set variables in 367.
-       (391): Fixed so that the server name is shown correctly.
-
-2004-10-17  Diane Murray  <address@hidden>
-
-       * erc.el (erc-process-sentinel): Use CPROC instead of
-       `erc-process' in debug message.  Should fix a bug where an error
-       saying "Buffer *scratch* has no process" would occur when
-       disconnected.
-       (erc-cmd-SV): Check for X toolkit after checking for more specific
-       features.  (erc--kill-server): Set `quitting' to non-nil so that
-       we don't automatically reconnect.
-
-2004-10-05  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-ignored-user-p): Don't require regexes to match the
-       beginning.
-
-2004-09-11  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: group erc: Moved to 'applications (patch by bojohan)
-
-2004-09-08  Jorgen Schaefer  <address@hidden>
-
-       * erc-button.el (erc-button-remove-old-buttons): Remove 'keymap
-       not 'local-map.
-
-2004-09-03  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el: JOIN response handler: Typo fix of the last
-       commit.
-
-2004-09-03  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el: JOIN response handler: Run `erc-join-hook'
-       without arguments as specified in the docstring.
-
-2004-08-27  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-send-current-line): Removed unused variable SENTP.
-
-2004-08-19  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: ERC-SEND-COMPLETED-HOOK used to be run when the prompt
-       was already displayed.  We restore this behavior (thanks to bojohan
-       and TerryP for noticing).  We also fix the docstring of
-       ERC-SEND-COMPLETED-HOOK, since the hook is (and used to be) called
-       even if nothing was sent to the server.
-       (erc-send-completed-hook): Fixed docstring.
-       (erc-send-current-line): Add incantation for
-       erc-send-completed-hook.
-       (erc-send-input): Remove incantation for erc-send-completed-hook.
-
-2004-08-18  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el: response-handler 368: Use s368, not s367.
-
-2004-08-17  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-scroll-to-bottom): Don't scroll when we're not
-       connected anymore.
-
-2004-08-17  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el, erc.el: Handle /mode #emacs b output without
-       errors and such.  First, handle unknown format specs gracefully
-       (that is, give a useful error).  Then, provide handlers for the
-       banlist replies.
-
-       * erc-backend.el: New handler for 367 and 368.  Removed from default
-       handler.
-
-       * erc.el: Provide english catalog for s367 and s368.
-       (erc-format-message): Give an error message when we don't find an
-       entry.
-
-2004-08-17  Jorgen Schaefer  <address@hidden>
-
-       * erc-fill.el: erc-fill-variable could be confused about really
-       long nicks.  We put an upper limit on the length of the fill prefix.
-       (erc-fill-variable): Adjust fill-prefix.
-       erc-fill-variable-maximum-indentation: New variable.
-
-2004-08-17  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-send-input): Fixed a bug where this function
-       referenced variable "input" instead of variable "str".
-
-2004-08-16  Francis Litterio  <address@hidden>
-
-       * erc-list.el (erc-chanlist-highlight-line): Fixed a bug where
-       this function failed to set the correct face for highlighting the
-       current line.
-
-2004-08-14  Jorgen Schaefer  <address@hidden>
-
-       * erc-fill.el (erc-fill-variable): Don't fuck up when the
-       looking-at didn't work.
-
-2004-08-14  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-send-single-line): Call the hooks to change the
-       appearance for something only if we actually inserted something,
-       doh.
-       (erc-display-command): Display the prompt outside of the area that
-       set the text properties on.
-
-2004-08-14  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: Refactored erc-send-current-line.  This should fix some
-       dormant bugs, and make the whole thing actually readable.  Yay.
-       Some changes in behavior were made.  Whitespace at the end of lines
-       sent is not removed anymore, but that shouldn't bother anyone.
-       Additionally, errors in commands or hooks shouldn't prevent the
-       prompt from showing up again now.
-       (erc-parse-current-line): Removed.
-       (erc-send-current-line): Refactored.
-       (erc-send-input): New function.
-       (erc-send-single-line): New function.
-       (erc-display-command): New function.
-       (erc-display-msg): New function.
-       (erc-user-input): New function.
-
-2004-08-13  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-cmd-SERVER): Use newer keyword call interface to
-       erc-select, and handle the error if it can't resolve the host.
-
-2004-08-11  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el, erc.el: erc-backend.el (404 response handler):
-       New function.  We now support "cannot send to channel".
-
-       * erc.el (erc-define-catalog call): Added s404.
-       (erc-ctcp-ECHO-reply, erc-ctcp-CLIENTINFO-reply,
-       erc-ctcp-FINGER-reply, erc-ctcp-PING-reply, erc-ctcp-TIME-reply,
-       erc-ctcp-VERSION-reply): Display reply in the active window, not
-       the server window.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-with-all-buffers-of-server): Actually make it left
-       to right, doh.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-with-all-buffers-of-server): Evaluate left-to-right
-       so we don't surprise a user.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-process-input-line): Parentophobia! Another
-       paren-fix.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el: PRIVMSG NOTICE response handler: Killed one paren
-       too much.  Poor paren.  Got resurrected.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-track.el: Make server buffers showing up in the mode line
-       optional.  Thanks to Daniel Knapp on the EmacsWiki for this patch.
-
-       erc-track-exclude-server-buffer: New variable.
-       (erc-track-modified-channels): Return a server buffer only if
-       erc-track-exclude-server-buffer is nil.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-cmd-DESCRIBE): Don't parse arguments.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-truncate.el (erc-truncate-buffer-to-size): Use
-       erc-insert-marker, not (point-max), to decide the length of the
-       buffer.  A long input line shouldn't make the buffer smaller.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-macs.el, erc-members.el: The change to hashes for channel
-       members has been made some time ago.  Clean up the various tries to
-       do this in the past.
-
-       * erc-macs.el, erc-members.el: Removed.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-backend.el, erc-ibuffer.el, erc-members.el, erc.el: Nothing
-       big changed here.  Really.  Uhm, maybe the info-buffers are gone or
-       so.  Can't really remember.  Don't worry, nothing important is
-       missing.
-
-       erc-speedbar.el looks nice btw, did you know?
-
-       Adjusted various places in erc.el, erc-backend.el, erc-ibuffer.el
-       and erc-members.el - too numerous to list here, sorry.
-
-       * erc.el: erc-use-info-buffers: Removed.  erc-info-mode-map:
-       Removed.
-       (erc-info-mode): Removed.
-       (erc-find-channel-info-buffer): Removed.
-       (erc-update-channel-info-buffer): Removed.
-       (erc-update-channel-info-buffers): Removed.
-
-       * erc-members.el: erc-update-member renamed to
-       erc-update-channel-member for better clarity.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: This change improves the help output on a bogus command
-       invocation.  We display the command as it would be typed by the
-       user, not as it is seen by Emacs.
-
-       (erc-get-arglist): Is now called erc-function-arglist, and returns
-       now an arglist without the enclosing parens.
-       (erc-command-name): New function.
-       (erc-process-input-line): Pass the command name, not the function
-       name.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-process-input-line): Fix bug when the command
-       doesn't have an arglist or no documentation.  Thanks bojohan again
-       :)
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el (erc-add-entry-to-list),
-       (erc-remove-entry-from-list): Update docstring, a TEST argument is
-       not given.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-with-buffer): Really fix this docstring.
-
-2004-08-10  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-with-buffer): Fix double evaluation in macro, and
-       fix docstring.
-
-2004-08-10  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-cmd-JOIN): Use erc-member-ignore-case instead of
-       member-ignore-case.
-
-2004-08-09  Johan Bockgård  <address@hidden>
-
-       * erc-backend.el: Define an "Edebug specification" for the
-       `define-erc-response-handler' macro.  This means that one can step
-       through response handlers defined by this macro with edebug.  Maybe
-       more macros would benefit from this?
-
-2004-08-09  Johan Bockgård  <address@hidden>
-
-       * erc-pcomplete.el (pcomplete/erc-mode/CTCP): New function.
-       Completion for the /CTCP command.  (erc-pcomplete-ctcp-commands):
-       New variable.  List of ctcp commands.
-
-2004-08-09  Johan Bockgård  <address@hidden>
-
-       * erc-list.el: Clean up docstrings.
-       (erc-prettify-channel-list): Extend properties to cover the entire
-       line, including the newline, to make it look
-       better.
-       (erc-chanlist-highlight-line): Ditto.
-       (erc-chanlist-mode-hook): Make it a defcustom.
-
-2004-08-09  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-compute-full-name): Typo fix, should be full-name,
-       not name.
-
-2004-08-09  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc): Setup the buffer to be shown in a window at the
-       end of this function.  This enables 'window-noselect to work
-       properly.
-       (erc, erc-send-current-line): Fix some
-       goto-char/open-line/goto-char to goto-char/insert.
-
-2004-08-08  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-parse-user): Live with bogus info from bouncers.
-
-2004-07-31  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-select): Change the docstring to reflect the new
-       arguments; include the arguments in the docstring for non-cvs
-       emacs.  Change the parameters to call erc-compute-* instead of
-       using the erc-* variables directly.
-       (erc-compute-server): Made argument optional.
-       (erc-compute-nick): ditto.
-       (erc-compute-full-name): ditto.  (erc-compute-port): ditto.
-
-2004-07-30  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST): Fixed a bug where channel-banlist was
-       not reset to nil before fetching an updated banlist from the
-       server.
-
-2004-07-30  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST): Fixed a bug where the
-       'received-from-server property on variable channel-banlist was not
-       being reset to nil.  This fixes the symptom where one types
-       /BANLIST and sees "No bans for channel: #whatever" when you know
-       there are bans.
-
-2004-07-23  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-select-read-args): Use erc-compute-nick to
-       calculate the default nickname
-
-2004-07-20  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-process-sentinel-1): New function.  This is an
-       auxiliary function refactored out of erc-process-sentinel to
-       decide a server buffer's fate (whether it should be killed, and
-       whether erc should attempt to auto-reconnect).  Michael Olson
-       <address@hidden> helped with this.
-       (erc-kill-server-buffer-on-quit): New variable.  Used in
-       erc-process-sentinel-1 to decide whether to kill a server buffer
-       when the user quit normally.
-       (erc-process-sentinel): Auxiliary function erc-process-sentinel-1
-       split out.  The function body has `with-current-buffer' wrapped
-       around it, to ensure separation of messages if multiple
-       connections were being made.  Use `if' instead of `cond' in places
-       where the decision is binary.  The last (useless, since the server
-       connection is closed) prompt in the server buffer is removed.
-       Color "erc terminated" and "erc finished" messages with
-       erc-error-face.  Mark the buffer unmodified so that, if not killed
-       automatically, the user is not prompted to save it.
-
-2004-07-16  Brian Palmer  <address@hidden>
-
-       * erc.el (erc-select-read-args): New function.  Prompts the user
-       for arguments to pass to erc-select and erc-select-ssl.
-       (erc-select): Use (erc-select-read-args) when called interactively
-       to get its arguments.  When non-interactively, use keyword
-       arguments.
-       (erc-select-ssl): Ditto.
-       (erc-compute-port): New function.  Parallel to erc-compute-server,
-       but comes up with a default value for an IRC server's port.
-
-2004-07-16  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el (erc-match-message): Quote the current nickname.
-
-2004-07-12  Brian Palmer  <address@hidden>
-
-       * erc-list.el (erc-chanlist-mode): Remove explicit invocation of
-       erc-chanlist-mode-hook, since it's automatically invoked by
-       define-derived-mode
-
-2004-07-03  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el (erc-match-current-nick-p): Quote current nick for
-       regexp parsing.
-
-2004-06-27  Johan Bockgård  <address@hidden>
-
-       * erc-nickserv.el (erc-nickserv-identify-mode): Fix erroneous
-       parentheses in call to `completing-read'.
-
-2004-06-23  Alex Schroeder  <address@hidden>
-
-       * Makefile (release): Depend on autoloads, and copy erc-auto.el
-       into the tarball.
-
-2004-06-14  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-log-irc-protocol): Fixed minor bug where each line
-       received from a server was logged as two lines (one with text and
-       one blank).
-
-2004-06-08  Brian Palmer  <address@hidden>
-
-       * erc-list.el (erc-chanlist-frame-parameters): Made customizable.
-       (erc-chanlist-header-face): Changed to use defface with some
-       reasonable defaults instead of make-face, and removed the
-       associated -face variable.
-       (erc-chanlist-odd-line-face): Ditto.
-       (erc-chanlist-even-line-face): Ditto.
-       (erc-chanlist-highlight-face): New variable.  Holds a face used for
-       highlighting the current line.
-       (erc-cmd-LIST): Use erc-member-ignore-case instead of
-       member-ignore-case.
-       (erc-chanlist-post-command-hook): Change to move the highlight
-       overlay instead of refontifying the entire buffer.
-       (erc-chanlist-dehighlight-line): Added to detach the highlight
-       overlay from the buffer.
-
-2004-05-31  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: erc-mode-line-format: Add column numbers.
-
-2004-05-31  Adrian Aichner  <address@hidden>
-
-       * erc-autojoin.el: Typo fix.
-
-       * erc-dcc.el (erc-dcc-do-GET-command): Use expand-file-name.
-       (erc-dcc-get-file): XEmacs set-buffer-multibyte compatibility.
-
-       * erc-log.el: Append `erc-log-setup-logging' to
-       `erc-connect-pre-hook' so that `erc-initialize-log-marker' is run
-       first (markers are needed by `erc-log-setup-logging').
-       (erc-enable-logging): Docstring fix.
-       (erc-log-setup-logging): Move `erc-log-insert-log-on-open' to (1-
-       (point-max)) when doing `erc-log-insert-log-on-open'.  Modified
-       version of a patch by Lawrence Mitchell.
-       (erc-log-all-but-server-buffers): Do `save-excursion' as well.
-       (erc-current-logfile): Pass buffer name as target
-       argument to `erc-generate-log-file-name-function' if
-       `erc-default-target' is nil.
-       (erc-generate-log-file-name-with-date): Use expand-file-name.
-       (erc-generate-log-file-name-short): Ditto.
-       (erc-save-buffer-in-logs): Do `save-excursion' and test whether
-       erc-last-saved-position is a marker.
-
-       * erc-members.el: Avoid miscompiling macro `erc-log' and
-       `with-erc-channel-buffer' by requiring 'erc at compile time.
-
-       * erc-sound.el: Use expand-file-name.
-
-       * erc.el (erc-debug-log-file): Ditto.
-       (erc-find-file): Ditto.
-
-2004-05-26  Francis Litterio  <address@hidden>
-
-       * erc.el, erc-backend.el (erc-cmd-BANLIST): Added a missing "'"
-       that was preventing /BANLIST from working.  In erc-backend.el,
-       added server response handler for 367 and 368 responses to get
-       /BANLIST working.
-
-2004-05-26  Francis Litterio  <address@hidden>
-
-       * erc.el: Removed an eval-when-compile that was preventing the
-       byte-compiled version of this file from loading.
-
-2004-05-26  Francis Litterio  <address@hidden>
-
-       * erc.el: Undid part of my last change.  I suspect it was wrong.
-
-2004-05-26  Francis Litterio  <address@hidden>
-
-       * erc.el: Silenced several byte-compiler warnings.
-
-2004-05-26  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-log-irc-protocol): Fixed problem where this function
-       misformatted IRC protocol text if multiple lines were received from
-       the server at one time.
-
-2004-05-25  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-toggle-debug-irc-protocol): Cosmetic changes to the
-       informational text in the *erc-protocol* buffer.
-
-2004-05-24  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-log-irc-protocol, erc-process-filter): Now the lines
-       inserted in the *erc-protocol* buffer are prefixed with the name
-       of the network to/from which the data is going/coming.  This makes
-       reading the *erc-protocol* buffer much easier when connected to
-       multiple networks.
-
-2004-05-23  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * erc-backend.el: Fixes server message parsing so that command
-       arguments specified after the colon are not treated specially.  All
-       arguments are added to the `command-args' field, and the
-       `contents' points to the last element in the `command-args' list.
-       This allows ERC to connect to networks such as Undernet.  Although
-       keeping `contents' allows many of the response handlers to
-       continue to work as-is, many other are probably broken by this
-       patch.
-
-2004-05-20  Lawrence Mitchell  <address@hidden>
-
-       * HACKING: Add comment that C-c C-a can be useful if you write
-       ChangeLog entries using Emacs' standard functions.
-
-2004-05-17  Diane Murray  <address@hidden>
-
-       * erc-speedbar.el: Ignore errors when attempting to require dframe
-       (there are a couple implementations of speedbar, one of which uses
-       of dframe).
-       (erc-speedbar-version): New.
-       (erc-speedbar-goto-buffer): Use dframe functions if dframe is
-       available.
-
-2004-05-17  Diane Murray  <address@hidden>
-
-       * erc-autojoin.el: Added local variables for this file.
-       (erc-autojoin-add): The channel name is in `erc-response.contents'.
-
-2004-05-17  Mario Lang  <address@hidden>
-
-       * erc-log.el: Don't autoload a define-key statement, erc-mode-map
-       might not be known yet
-
-2004-05-16  Lawrence Mitchell  <address@hidden>
-
-       * erc-backend.el (erc-parse-server-response): Revert to original
-       `erc-parse-line-from-server' version, since new version breaks for
-       a number of edge cases.
-
-2004-05-14  Diane Murray  <address@hidden>
-
-       * erc-backend.el (erc-handle-unknown-server-response): New
-       function.  Added to `erc-default-server-functions'.  Display
-       unknown responses to the user.
-       (221): Don't show nickname in modes list.
-       (254): Fixed to use 's254.
-       (303): Added docstring.
-       (315, 318, 323, 369): Ignored responses grouped together.
-       (391): New.
-       (406, 432): Use ?n, not ?c in `erc-display-message'.
-       (431, 445, 446, 451, 462, 463, 464, 465, 481, 483, 485, 491, 501,
-       502): All error responses with no arguments grouped together.
-
-2004-05-14  Diane Murray  <address@hidden>
-
-       * erc.el (erc-message-type-member): Use `erc-response.command'.
-       `erc-track-exclude-types' should be respected again.
-       (erc-cmd-TIME): Fixed to work with and without server given as
-       argument.
-       (erc-define-catalog): Added, s391, s431, s445, s446, s451, s462,
-       s463, s464, s465, s483, s484, s485, s491, s501, s502.
-
-2004-05-14  Lawrence Mitchell  <address@hidden>
-
-       * HACKING: Typo fix.
-
-2004-05-14  Lawrence Mitchell  <address@hidden>
-
-       * Makefile (erc-auto.el): Pass -f flag to rm so that we don't fail
-       if erc-auto.elc doesn't exist.
-
-2004-05-14  Lawrence Mitchell  <address@hidden>
-
-       * erc-backend.el (erc-with-buffer): Autoload.
-       (erc-parse-server-response): XEmacs' `replace-match' only replaces
-       subexpressions when operating on buffers, not strings, work around
-       it.
-       (461): Command with invalid arguments is `second', not `third'.
-
-2004-05-14  Diane Murray  <address@hidden>
-
-       * erc-notify.el (erc-notify-NICK): Use `erc-response.contents' to
-       get nickname.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-track.el: Indentation fixes.
-       (track-when-inactive): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-notify.el (notify): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-       (erc-notify-timer, erc-notify-JOIN, erc-notify-NICK)
-       (erc-notify-QUIT): Use new accessors for PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-nickserv.el (services, erc-nickserv-identify-mode): Use
-       `erc-server-FOO-functions', not `erc-server-FOO-hook.
-       (erc-nickserv-identify-autodetect): Use new accessors for PARSED
-       argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-netsplit.el (netsplit): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-       (erc-netsplit-JOIN, erc-netsplit-MODE, erc-netsplit-QUIT): Use new
-       accessors for PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-nets.el: Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-menu.el (erc-menu-definition): Only allow listing of
-       channels if `erc-cmd-LIST' is fboundp.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-match.el: Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-       (erc-get-parsed-vector-nick, erc-get-parsed-vector-type): Use new
-       accessors for PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-list.el (erc-chanlist, erc-chanlist-322): Use new accessors
-       for PARSED argument.  Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-ezbounce.el (erc-ezb-notice-autodetect): Use new accessors
-       for PARSED argument.
-       (erc-ezb-initialize): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-dcc.el: Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-       (erc-dcc-no-such-nick): Use new accessors for PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-bbdb.el (erc-bbdb-whois, erc-bbdb-JOIN, erc-bbdb-NICK): Use
-       new accessors for PARSED argument.
-       (BBDB): Use `erc-server-FOO-functions', not `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-autojoin.el (autojoin): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-       (erc-autojoin-add, erc-autojoin-remove): Use new accessors for
-       PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-autoaway.el (autoaway): Use `erc-server-FOO-functions', not
-       `erc-server-FOO-hook.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-backend): Require.
-       (erc-disconnected-hook, erc-join-hook, erc-quit-hook)
-       (erc-part-hook, erc-kick-hook): Docstring fix, we now use
-       `erc-server-FOO-functions', rather than `erc-server-FOO-hook'.
-       (erc-event-to-hook-name, erc-event-to-hook): Remove.
-       (erc-once-with-server-event)
-       (erc-once-with-server-event-global): Use `erc-get-hook'
-       (erc-process-filter): Use `erc-parse-server-response'.
-       (erc-cmd-IDLE, erc-cmd-BANLIST, erc-cmd-MASSUNBAN): New accessors
-       for PARSED argument.  Rename all `erc-server-FOO-hook' to
-       `erc-server-FOO-functions'.
-       (erc-server-364-hook, erc-server-365-hook, erc-server-367-hook)
-       (erc-server-368-hook, erc-server-KILL-hook)
-       (erc-server-PONG-hook, erc-server-200-hook, erc-server-201-hook)
-       (erc-server-202-hook, erc-server-203-hook, erc-server-204-hook)
-       (erc-server-205-hook, erc-server-206-hook, erc-server-208-hook)
-       (erc-server-209-hook, erc-server-211-hook, erc-server-212-hook)
-       (erc-server-213-hook, erc-server-214-hook, erc-server-215-hook)
-       (erc-server-216-hook, erc-server-217-hook, erc-server-218-hook)
-       (erc-server-219-hook, erc-server-241-hook, erc-server-242-hook)
-       (erc-server-243-hook, erc-server-244-hook, erc-server-249-hook)
-       (erc-server-261-hook, erc-server-262-hook, erc-server-302-hook)
-       (erc-server-323-hook, erc-server-342-hook, erc-server-351-hook)
-       (erc-server-381-hook, erc-server-382-hook, erc-server-391-hook)
-       (erc-server-392-hook, erc-server-393-hook, erc-server-394-hook)
-       (erc-server-395-hook, erc-server-402-hook, erc-server-404-hook)
-       (erc-server-407-hook, erc-server-409-hook, erc-server-411-hook)
-       (erc-server-413-hook, erc-server-414-hook, erc-server-415-hook)
-       (erc-server-422-hook, erc-server-423-hook, erc-server-424-hook)
-       (erc-server-431-hook, erc-server-436-hook, erc-server-437-hook)
-       (erc-server-441-hook, erc-server-443-hook, erc-server-444-hook)
-       (erc-server-445-hook, erc-server-446-hook, erc-server-451-hook)
-       (erc-server-462-hook, erc-server-463-hook, erc-server-464-hook)
-       (erc-server-465-hook, erc-server-467-hook, erc-server-471-hook)
-       (erc-server-472-hook, erc-server-473-hook, erc-server-483-hook)
-       (erc-server-491-hook, erc-server-502-hook): Remove.
-       (erc-call-hooks, erc-parse-line-from-server): Remove
-       (erc-server-hook-list): Remove.  Remove top-level call too.
-       (erc-server-ERROR, erc-server-INVITE, erc-server-JOIN)
-       (erc-server-KICK, erc-server-MODE, erc-server-NICK)
-       (erc-server-PART, erc-server-PING, erc-server-PONG)
-       (erc-server-PRIVMSG-or-NOTICE, erc-server-QUIT)
-       (erc-server-TOPIC, erc-server-WALLOPS, erc-server-001)
-       (erc-server-004, erc-server-005, erc-server-221, erc-server-252)
-       (erc-server-253, erc-server-254, erc-server-301, erc-server-303)
-       (erc-server-305, erc-server-306, erc-server-311-or-314)
-       (erc-server-312, erc-server-313, erc-server-317, erc-server-319)
-       (erc-server-320, erc-server-321, erc-server-322, erc-server-324)
-       (erc-server-329, erc-server-330, erc-server-331, erc-server-332)
-       (erc-server-333, erc-server-341, erc-server-352, erc-server-353)
-       (erc-server-366, erc-server-MOTD, erc-server-379)
-       (erc-server-401, erc-server-403, erc-server-405, erc-server-406)
-       (erc-server-412, erc-server-421, erc-server-432, erc-server-433)
-       (erc-server-437, erc-server-442, erc-server-461, erc-server-474)
-       (erc-server-475, erc-server-477, erc-server-481, erc-server-482)
-       (erc-server-501): Move to erc-backend.el
-       (erc-auto-query, erc-banlist-store, erc-banlist-finished)
-       (erc-banlist-update, erc-connection-established)
-       (erc-process-ctcp-query, erc-display-server-message): Use new
-       accessors for PARSED argument.
-
-2004-05-13  Lawrence Mitchell  <address@hidden>
-
-       * erc-backend.el (erc-parse-server-response)
-       (erc-handle-parsed-server-response, erc-get-hook)
-       (define-erc-response-handler): New functions.
-       (erc-response): New struct for server responses.
-       (erc-server-responses): New variable.
-       (erc-call-hooks): Move from erc.el and rework.
-       (ERROR, INVITE, JOIN, KICK, MODE, NICK, PART, PING, PONG)
-       (PRIVMSG, NOTICE, QUIT, TOPIC, WALLOPS, 001, MOTD, 376, 004)
-       (252, 253, 254, 250, 301, 303, 305, 306, 311, 312, 313, 315)
-       (317, 318, 319, 320, 321, 322, 324, 329, 330, 331, 332, 333)
-       (341, 352, 353, 366, 369, 379, 401, 403, 405, 406, 412, 421)
-       (432, 433, 437, 442, 461, 474, 477, 481, 482, 501, 323, 221)
-       (002, 003, 371, 372, 374, 375, 422, 251, 255, 256, 257, 258)
-       (259, 265, 266, 377, 378, 314, 475, 364, 365, 367, 368, 381)
-       (382, 391, 392, 393, 394, 395, 200, 201, 202, 203, 204, 205)
-       (206, 208, 209, 211, 212, 213, 214, 215, 216, 217, 218, 219)
-       (241, 242, 243, 244, 249, 261, 262, 302, 342, 351, 402, 404)
-       (407, 409, 411, 413, 414, 415, 423, 424, 431, 436, 441, 443)
-       (444, 445, 446, 451, 462, 463, 464, 465, 467, 471, 472, 473)
-       (483, 491, 502, 005, KILL): Move from erc.el and rework using
-       `define-erc-response-handler' and erc-response struct.
-
-2004-05-12  Diane Murray  <address@hidden>
-
-       * erc.el: A few bug fixes to avoid errors after disconnect,
-       including the "Selecting deleted buffer" bug.
-       (erc-channel-user-op-p, erc-channel-user-voice-p): Make sure NICK
-       is non-nil (`erc-current-nick' can return nil).
-       (erc-server-buffer): Make sure the buffer isn't a #<killed
-       buffer>.
-       (erc-server-buffer-live-p): New function.
-       (erc-display-line, erc-join-channel, erc-prepare-mode-line-format,
-       erc-away-p): Use `erc-server-buffer-live-p' to make sure process
-       buffer exists.
-       (erc-send-current-line): If there is no server buffer, let the
-       user know.
-
-2004-05-12  Diane Murray  <address@hidden>
-
-       * erc.el, erc-log.el: C-c C-l keybinding now defined in
-       erc-log.el.
-       (erc-log-version): New.
-       (erc-cmd-JOIN): Fix applied for bug where /join -invite causes
-       errors when there's no `invitation'.
-
-2004-05-11  Diane Murray  <address@hidden>
-
-       * erc.el (erc-cmd-JOIN): Make sure `chnl' is non-nil before trying
-       to join anything (chnl is not set if /join -invite is used but
-       there's no `invitation').
-
-2004-05-10  Diane Murray  <address@hidden>
-
-       * erc-log.el: Define C-c C-l keybinding outside of `erc-log-mode',
-       making it available all the time; autoload definition.
-       (erc-log-version): New.
-
-2004-05-09  Diane Murray  <address@hidden>
-
-       * AUTHORS, CREDITS, Makefile, erc-autoaway.el, erc-autojoin.el,
-       erc-button.el, erc-chess.el, erc-dcc.el, erc-ezbounce.el,
-       erc-fill.el, erc-ibuffer.el, erc-imenu.el, erc-lang.el,
-       erc-list.el, erc-log.el, erc-macs.el, erc-match.el, erc-members.el,
-       erc-menu.el, erc-nets.el, erc-netsplit.el, erc-nickserv.el,
-       erc-notify.el, erc-page.el, erc-ring.el, erc-speak.el,
-       erc-speedbar.el, erc-stamp.el, erc-track.el, erc-truncate.el,
-       erc-xdcc.el, erc.el: Applied all relevant bug fixes and code
-       cleanup made between the time of the ERC_4_0_RELEASE tag until now.
-
-2004-05-09  Diane Murray  <address@hidden>
-
-       * erc-menu.el: Updated copyright years.
-
-2004-05-09  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-channel-info-buffer): Correct bug in sorting
-       of channel users.  Tiny change from Andreas Schwab
-       <address@hidden>.
-
-2004-05-09  Lawrence Mitchell  <address@hidden>
-
-       * erc-fill.el (erc-fill-variable): Fix docstring.
-
-2004-05-09  Lawrence Mitchell  <address@hidden>
-
-       * erc-button.el (erc-button-add-button): Use 'keymap
-       text-property, rather than 'local-map, since it's cross-emacs
-       compatible.  Pass :mouse-down-action into `widget-convert-button'
-       as 'erc-button-click-button, to make XEmacs happy.  Replace bogus
-       reference to erc-widget-press-button with erc-button-press-button.
-       (erc-button-click-button): New (ignored) first argument, to make
-       XEmacs behave when pressing buttons.
-       (erc-button-press-button): New (ignored) &rest argument.
-
-2004-05-09  Adrian Aichner  <address@hidden>
-
-       * erc-log.el (erc-conditional-save-buffer): Fix docstring
-       reference to erc-save-queries-on-quit.
-       (erc-conditional-save-queries): Ditto.
-
-2004-05-06  Diane Murray  <address@hidden>
-
-       * erc-speedbar.el: Updated copyright years.  Added local variables
-       for this file; fixed indenting.
-       (erc-speedbar): New group.
-       (erc-speedbar-sort-users-type): New variable.
-       (erc-speedbar-buttons): Handle query buffers (fixes a bug where an
-       error would be thrown if the current buffer was a query).  Ignore
-       unknown buffers.
-       (erc-speedbar-expand-channel): Show limit and key with channel
-       modes.  Sort users according to `erc-speedbar-sort-users-type'.
-       (erc-speedbar-insert-user): Fixed bug where only nicks with more
-       info were being listed, and those were shown twice.
-       (erc-speedbar-goto-buffer): Don't use dframe functions, as dframe
-       isn't available with the default speedbar.
-
-2004-05-06  Diane Murray  <address@hidden>
-
-       * erc.el (erc-sort-channel-users-alphabetically): New function.
-       (erc-server-412, erc-server-432, erc-server-475): New functions.
-       (erc-server-412-hook, erc-server-432-hook, erc-server-475-hook):
-       Use them.
-       (erc-server-401, erc-server-403, erc-server-405)
-       (erc-server-421, erc-server-474, erc-server-481): Use catalog
-       messages.
-       (erc-define-catalog): Added s401, s403, s405, s412, s421, s432,
-       s474, s475, and s481.
-
-2004-05-06  Diane Murray  <address@hidden>
-
-       * erc-nickserv.el: Added documentation to Commentary, Usage.
-       Removed `outline-mode' from file local variables.
-       (erc-services-mode): Use `erc-nickserv-identify-mode' to add
-       hooks.
-       (erc-nickserv-identify-mode): New function.
-       (erc-nickserv-identify-mode): New variable.
-       (erc-prompt-for-nickserv-password, erc-nickserv-passwords):
-       Changed docstring.
-       (erc-nickserv-identify-autodetect): Use
-       `erc-nickserv-call-identify-function'.  Docstring change.
-       (erc-nickserv-identify-on-connect,
-       erc-nickserv-identify-on-nick-change,
-       erc-nickserv-call-identify-function): New functions.
-       (erc-nickserv-identify): PASSWORD is not optional.  Autoload
-       function.
-
-2004-05-05  Diane Murray  <address@hidden>
-
-       * erc.el (erc-join-hook, erc-quit-hook, erc-part-hook,
-       erc-kick-hook, erc-connect-pre-hook): Now customizable.
-       (erc-nick-changed-functions): New hook.
-       (erc-server-NICK): Run `erc-nick-changed-functions' with the
-       arguments NEW-NICK and OLD-NICK.
-       (erc-channel-user-voice-p, erc-channel-user-voice-p): Shortened
-       docstring.
-
-2004-05-05  Lawrence Mitchell  <address@hidden>
-
-       * HACKING: New section on function/variable naming and coding
-       conventions.
-
-2004-05-05  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-wash-quit-reason): Quote regexp special characters
-       in NICK, LOGIN and HOST.
-
-2004-05-04  Diane Murray  <address@hidden>
-
-       * erc.el (erc-server-parameters): Typo fix in docstring.
-       (erc-input-line-position): `:type' is now a choice between integer
-       and nil.  (erc-mode-map): Bind `erc-get-channel-mode-from-keypress'
-       to C-c C-o instead of C-c RET (C-c C-m).  (erc-cmd-GQUIT): Use
-       REASON as argument when calling `erc-cmd-QUIT'.
-
-2004-05-03  Lawrence Mitchell  <address@hidden>
-
-       * erc-nicklist.el: Initial version.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc-menu.el: Added local variables for file, fixed indenting.
-       (erc-menu-version): New variable.
-       (erc-menu-definition): "List channels": New.  "Join channel": Use
-       `erc-connected' as test.  "Start a query": New.  "List channel
-       operators": New.  "Input action": Moved up.  "Set topic": Fixed
-       test so it's only active in channels.  "Leave this channel": Moved
-       down.  "Track hidden channel buffers": Removed.  "Enable/Disable
-       ERC Modules": New.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc.el (erc-mode-map): Removed binding for
-       `erc-save-buffer-in-logs' (moved to erc-log.el).
-       (erc-cmd-QUERY, erc-cmd-OPS): Now interactive.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc-log.el: Added local variables for this file.
-       (erc-log-channels-directory): Added directory as a choice in
-       `:type'.
-       (define-erc-module): Define and undefine key binding (C-c
-       C-l) for `erc-save-buffer-in-logs' here.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc-nets.el: Added local variables for this file.
-       (erc-networks-alist): Fixed `:type' to work better in
-       customization.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc-match.el: Added local variables for file.  (erc-keywords):
-       Use `list' instead of `cons' in `:type'.  Fixes bug where mismatch
-       was shown in customization.  (erc-current-nick-highlight-type):
-       Escape parentheses in docstring.  Added keyword, nick-or-keyword as
-       options in `:type'.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc-stamp.el: Added local variables for file.
-       (erc-away-timestamp-format): Allow nil as a choice in `:type'.
-       (erc-timestamp-intangible): Changed `:type' to boolean.
-       (erc-timestamp-right-column): Added `:group' and `:type'.
-
-2004-04-28  Diane Murray  <address@hidden>
-
-       * erc.el (erc-modules): Added bbdb, log, match, sound, and stamp
-       as `:type' options; changed documentation for autojoin, fill,
-       pcomplete, track.  (erc-prompt-for-channel-key): New variable.
-       (erc-join-channel): Only prompt for key if
-       `erc-prompt-for-channel-key' is non-nil.  (erc-format-my-nick): New
-       function.  (erc-send-message, erc-send-current-line): Use it.
-
-2004-04-24  Johan Bockgård  <address@hidden>
-
-       * erc-track.el (erc-track-modified-channels): Fix indentation.
-
-2004-04-24  Johan Bockgård  <address@hidden>
-
-       * erc-match.el (erc-hide-fools): Docstring fix.
-       (erc-log-matches-types-alist): Added `current-nick' to valid
-       choices.
-
-2004-04-20  Diane Murray  <address@hidden>
-
-       * erc-page.el, erc-ezbounce.el, erc-speak.el, erc-match.el,
-       erc-track.el (erc-ezbounce, erc-page, erc-speak): Groups defined.
-       (erc-match, erc-track): `erc' is parent group.
-       (erc-ezb-regexp, erc-ezb-login-alist): Added `:group'.
-
-2004-04-20  Jorgen Schaefer  <address@hidden>
-
-       * erc-fill.el: Fixed erc-fill-static so it breaks the lines at the
-       right column and respects timestamps.  Patch by Simon Siegler
-       <address@hidden>
-       (erc-fill-static): Major rewrite and split up into some functions.
-       (erc-count-lines): Removed.
-       (erc-fill-regarding-timestamp): New function.
-       (erc-timestamp-offset): New function.
-       (erc-restore-text-properties): New function.
-       (erc-fill-variable): Respect leftbound timestamp.  This is still
-       broken if someone has both erc-timestamp-only-if-changed-flag set
-       and erc-insert-timestamp-function set to
-       'erc-insert-timestamp-left, but otherwise it works now.
-
-2004-04-20  Diane Murray  <address@hidden>
-
-       * erc.el (erc-cmd-SV): Show features gtk, mac-carbon, multi-tty.
-       Fixed so that arguments fit the format (build date was not being
-       shown).
-
-2004-04-19  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-channel-topic): Error if `channel-topic' is
-       unbound.  Remove %-sign substitution.
-       (erc-update-mode-line-buffer): Escape %-signs in `channel-topic'
-       here.
-
-2004-04-19  Diane Murray  <address@hidden>
-
-       * erc.el (erc-send-action, erc-ctcp-query-ACTION,
-       erc-ctcp-reply-ECHO-hook): Let `erc-display-message-highlight'
-       propertize the message.
-       (erc-display-message-highlight): Allow for any erc-TYPE-face.
-       (erc-cmd-JOIN): Display error message instead of throwing an error
-       if there's no `invitation'.
-       (erc-cmd-PART): Allow for no reason if channel is provided.  Fixes
-       bug where user would part the current channel with the other
-       channel's name as reason when no reason was given.
-       (erc-server-vectors, erc-debug-missing-hooks): Added docstring.
-       (erc-server-JOIN): Moved `erc-join-hook' to JOIN-you section.
-       `erc-join-hook' called by `run-hook-with-args', sending the ARGS
-       `chnl' and the channel's buffer.  Changed an instance of if
-       without else to when.
-       (erc-server-477): New function.
-       (erc-server-477-hook): Use `erc-server-477'.
-       (erc-define-catalog): Added `no-invitation'.
-
-2004-04-14  Diane Murray  <address@hidden>
-
-       * erc-nickserv.el: Local variables for file added.
-       (erc-nickserv-passwords): Customization: Network symbols updated
-       to reflect `erc-nickserv-alist'.  Allow user to type in network
-       symbol.
-       (erc-nickserv-alist): Now customizable variable.
-
-2004-04-09  Diane Murray  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-reset-idletime): Make sure `line'
-       is a string to avoid errors upon startup.
-
-2004-04-06  Diane Murray  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-version): New variable.
-       (erc-auto-discard-away): Updated docstring.
-       (erc-autoaway-no-auto-back-regexp): New variable.
-       (erc-autoaway-reset-idletime): Use it.  Hopefully a better solution
-       which allows for aliases to "/away" and any other text that the
-       user wants to ignore when `erc-auto-discard-away' is non-nil.
-
-2004-04-06  Diane Murray  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-reset-idletime): Forgot /gaway in
-       regexp.
-
-2004-04-06  Diane Murray  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-reset-idletime): If the user sends
-       an "/away" command, don't call `erc-autoaway-set-back', fixes bug
-       where ERC would send "/away" when user was already away and sent an
-       "/away reason".  Changed `l' to `line' for better understanding.
-       (erc-autoaway-set-back): Changed `l' to `line' for better
-       understanding.
-
-2004-04-05  Diane Murray  <address@hidden>
-
-       * erc.el (erc-set-channel-key): Now able to remove key.
-       (erc-set-channel-limit): Now able to remove limit.
-       (erc-get-channel-mode-from-keypress): Fixed docstring.
-
-2004-04-04  Diane Murray  <address@hidden>
-
-       * erc.el (erc-join-channel): Allow for optional channel key.
-       (erc-set-modes): Need to set `channel-key' to nil in case of mode
-       changes during split.
-       (erc-show-channel-key-p): New variable.
-       (erc-prepare-mode-line-format): Only show key if
-       `erc-show-channel-key-p' is non-nil.
-
-2004-04-04  Diane Murray  <address@hidden>
-
-       * erc.el (channel-key): New variable.
-       (erc-update-channel-key): New function.
-       (erc-set-modes, erc-parse-modes, erc-update-modes, erc,
-       erc-update-channel-info-buffer): Deal with channel keys.
-       (erc-prepare-mode-line-format): Show channel key in header-line.
-       (erc-server-NICK): Show nick change in server buffer as well.
-       (erc, erc-send-command, erc-banlist-store, erc-banlist-update,
-       erc-load-irc-script-lines,
-       erc-arrange-session-in-multiple-windows, erc-handle-login,
-       erc-find-channel-info-buffer): Changed when not to unless.
-       (erc-server-MODE): Changed if without else to when.
-
-2004-03-27  Adrian Aichner  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST): Use `truncate-string-to-width'
-       instead of `truncate-string' alias.
-       (erc-nickname-in-use): Ditto.
-
-2004-03-27  Francis Litterio  <address@hidden>
-
-       * erc-list.el (erc-cmd-list): Fixed error caused by erc-cmd-LIST
-       passing a non-sequence to erc-chanlist.
-
-2004-03-22  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * erc.el: Add new hook `erc-join-hook', which is run when we join a
-       channel.
-
-2004-03-22  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * erc.el: Replaced existing notice user notification system and
-       the configuration options, which consisted of
-       `erc-echo-notices-in-minibuffer-flag' and
-       `erc-echo-notices-in-current-buffer' with two new hooks,
-       `erc-echo-notice-hook' and `erc-echo-notice-always-hook'.
-
-       When user notification is needed, `erc-echo-notice-always-hook' is
-       first run using `run-hook-with-args', then `erc-echo-notice-hook'
-       is run using `run-hook-with-args-until-success'.
-
-       In addition to these hooks, a large number of functions, which are
-       described in the documentation strings of those hooks, were added
-       which can be used to achieve a large variety of different
-       behaviors.
-
-       The current default behavior, which is identical to the existing
-       default behavior, is for `erc-echo-notice-always-hook' to be set to
-       `(erc-echo-notice-in-default-buffer).
-
-2004-03-21  Diane Murray  <address@hidden>
-
-       * erc-track.el (erc-modified-channels-display): Added a space
-       before opening bracket.
-
-2004-03-21  Diane Murray  <address@hidden>
-
-       * erc.el (erc-format-query-as-channel-p): New variable.
-       (erc-server-PRIVMSG-or-NOTICE): If `erc-format-query-as-channel-p'
-       is nil, messages in the query buffer are formatted like private
-       messages.
-
-       (erc-server-252-hook, erc-server-253-hook, erc-server-254-hook,
-       erc-server-256-hook, erc-server-257-hook, erc-server-258-hook,
-       erc-server-259-hook, erc-server-371-hook, erc-server-372-hook,
-       erc-server-374-hook, erc-server-374-hook, erc-server-442-hook,
-       erc-server-477-hook): Removed, now defined in
-       `erc-server-hook-list'.
-       (erc-display-server-message): New function.
-       (erc-server-252, erc-server-253, erc-server-254, erc-server-442):
-       New functions.
-       (erc-server-hook-list): Added 250, 256, 257, 258, 259, 265, 266,
-       377, 378, 477 - using `erc-display-server-message'.  251, 255 now
-       use `erc-display-server-message'.  Added 252, 253, 254, 442 -
-       using respective erc-server-* functions.  371, 372, 374, 375 now
-       defined here.
-       (erc-define-catalog): Added s252, s253, s254, s442.
-       (erc-server-001, erc-server-004, erc-server-005): Fixed
-       documentation.
-
-2004-03-20  Diane Murray  <address@hidden>
-
-       * erc-stamp.el: Commentary: Changed `erc-stamp-mode' to
-       `erc-timestamp-mode'.
-       (erc-insert-timestamp-left): Use `erc-timestamp-face' on filler
-       spaces as well.
-
-2004-03-19  Diane Murray  <address@hidden>
-
-       * erc.el (erc-send-action): Use `erc-input-face'.
-       (erc-display-message-highlight): If the requested highlighting
-       type doesn't match, just display the string with no highlighting
-       and warn about it with `erc-log'.
-       (erc-cmd-JOIN): If user is already on the requested channel,
-       switch to that channel's buffer.
-       (erc-ctcp-query-ACTION): Use `erc-action-face' for nick as well.
-       (erc-header-line-use-help-echo-p): New variable.
-       (erc-update-mode-line-buffer): Use `help-echo' for header-line if
-       `erc-header-line-use-help-echo-p' is non-nil.
-
-2004-03-18  Adrian Aichner  <address@hidden>
-
-       * erc-nets.el: Use two arguments version of `make-obsolete', if
-       third argument is not supported (for XEmacs).
-
-2004-03-18  Andreas Fuchs  <address@hidden>
-
-       * CREDITS: added CREDITS entry for Adrian Aichner
-
-2004-03-18  Andreas Fuchs  <address@hidden>
-
-       * erc-xdcc.el, erc.el, erc-autoaway.el, erc-autojoin.el,
-       erc-button.el, erc-dcc.el, erc-ezbounce.el, erc-imenu.el,
-       erc-list.el, erc-log.el, erc-match.el, erc-members.el,
-       erc-menu.el, erc-netsplit.el, erc-notify.el, erc-speedbar.el,
-       erc-stamp.el, erc-track.el, erc-truncate.el:
-       (erc-coding-sytem-for-target): Removed.
-       (erc-coding-system-for-target): New.
-       (erc-autoaway-use-emacs-idle): Typo fix.
-       (erc-auto-set-away): Ditto.
-       (erc-auto-discard-away): Ditto.
-       (autojoin): Ditto.
-       (erc-button-alist): Ditto.
-       (erc-dcc-auto-masks): Ditto.
-       (erc-dcc-chat-send-input-line): Ditto.
-       (erc-ezb-get-login): Ditto.
-       (erc-unfill-notice): Ditto.
-       (erc-save-buffer-in-logs): Ditto.
-       (match): Ditto.
-       (erc-log-matches-types-alist): Ditto.
-       (erc-match-directed-at-fool-p): Ditto.
-       (erc-match-message): Ditto.
-       (erc-update-member): Ditto.
-       (erc-ignored-reply-p): Ditto.
-       (erc-menu-definition): Ditto.
-       (erc-netsplit-QUIT): Ditto.
-       (erc-notify-list): Ditto.
-       (erc-speedbar-update-channel): Ditto.
-       (erc-speedbar-item-info): Ditto.
-       (erc-stamp): Ditto.
-       (erc-timestamp-intangible): Ditto.
-       (erc-add-timestamp): Ditto.
-       (erc-timestamp-only-if-changed-flag): Ditto.
-       (erc-show-timestamps): Ditto.
-       (erc-track-priority-faces-only): Ditto.
-       (erc-modified-channels-alist): Ditto.
-       (erc-unique-substrings): Ditto.
-       (erc-find-parsed-property): Ditto.
-       (erc-track-switch-direction): Ditto.
-       (erc-truncate-buffer-to-size): Ditto.
-       (erc-xdcc): Ditto.
-       (erc-auto-reconnect): Ditto.
-       (erc-startup-file-list): Ditto.
-       (erc-once-with-server-event): Ditto.
-       (erc-once-with-server-event-global): Ditto.
-       (erc-mode): Ditto.
-       (erc-generate-new-buffer-name): Ditto.
-       (erc): Ditto.
-       (erc-open-ssl-stream): Ditto.
-       (erc-default-coding-system): Ditto.
-       (erc-encode-string-for-target): Ditto.
-       (erc-decode-string-from-target): Ditto.
-       (erc-scroll-to-bottom): Ditto.
-       (erc-decode-controls): Ditto.
-       (erc-channel-members-changed-hook): Ditto.
-       (erc-put-text-property): Ditto.
-       (erc-add-default-channel): Ditto.
-
-2004-03-17  Diane Murray  <address@hidden>
-
-       * erc.el (erc-process-sentinel): Cancel ping timer upon
-       disconnect.
-       (erc-cmd-PART): Use same regexp as `erc-cmd-QUIT' when no #channel
-       is provided.
-       (erc-nick-uniquifier, erc-manual-set-nick-on-bad-nick-p): `:group'
-       was missing, added.
-       (erc-part-reason-zippy, erc-part-reason-zippy): Removed FIXME
-       comments.  I see no problem allowing typed in reasons.
-
-2004-03-16  Diane Murray  <address@hidden>
-
-       * erc-stamp.el (erc-insert-timestamp-left): Added support for
-       `erc-timestamp-only-if-changed-flag' and added docstring.
-       (erc-timestamp-only-if-changed-flag): Updated documentation.
-
-2004-03-13  Francis Litterio  <address@hidden>
-
-       * erc-nets.el (erc-network-name): No longer marked as obsolete.
-       Why was this function made obsolete?  There is no other function
-       that performs this task.  Some of us use these functions in our
-       personal ERC configs.
-
-2004-03-12  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-buffer-filter): Use `with-current-buffer'.
-       (erc-process-input-line): Append newline to documentation.  Fixes a
-       bug whereby the prompt would be put on the same line as the output.
-       (erc-cmd-GQUIT): Only try and send QUIT if the process is alive.
-
-2004-03-12  Lawrence Mitchell  <address@hidden>
-
-       * erc-log.el: Only add top-level hooks if `erc-enable-logging' is
-       non-nil.
-
-2004-03-10  Damien Elmes  <address@hidden>
-
-       * erc-nets.el: From Adrian Aichner (adrian /at/ xemacs /dot/ org)
-       * erc-nets.el: XEmacs make-obsolete only takes two arguments.
-
-2004-03-10  Diane Murray  <address@hidden>
-
-       * erc-nets.el (erc-determine-network): Use `erc-session-server' if
-       `erc-announced-server' is nil to avoid error if server does not
-       send 004 (RPL_MYINFO) message.
-
-2004-03-10  Lawrence Mitchell  <address@hidden>
-
-       * erc-nets.el (erc-server-alistm erc-settings): Use lowercase
-       "freenode", as in `erc-networks-alist'.
-
-2004-03-10  Lawrence Mitchell  <address@hidden>
-
-       * erc-nickserv.el (erc-nickserv-alist): Use lowercase "freenode",
-       as in `erc-networks-alist'.
-
-2004-03-10  Lawrence Mitchell  <address@hidden>
-
-       * erc-dcc.el (pcomplete/erc-mode/DCC): Append "send" as a list.
-
-2004-03-10  Francis Litterio  <address@hidden>
-
-       * erc-nets.el (erc-networks-alist): Changed "Freenode" to
-       "freenode".
-
-2004-03-10  Francis Litterio  <address@hidden>
-
-       * erc-list.el (erc-cmd-LIST): Improved the docstring.  Made
-       message to user more accurate depending on whether a single
-       channel is being listed or not.
-
-2004-03-10  Lawrence Mitchell  <address@hidden>
-
-       * erc-nets.el (erc-determine-network): Make matching logic simpler
-       (suggested by Damian Elmes).
-       (erc-current-network, erc-network-name): Add `make-obsolete' form.
-       (erc-set-network-name): Indentation fix.
-       (erc-ports-list): Add docstring.  Rework function body to use
-       `nconc'.
-
-2004-03-09  Diane Murray  <address@hidden>
-
-       * erc-list.el, erc-notify.el (require 'erc-nets): Added.
-
-2004-03-08  Diane Murray  <address@hidden>
-
-       * erc.el (erc-network-name): Function definition moved to
-       erc-nets.el.  The functions `erc-determine-network' and
-       `erc-network' in erc-nets.el do what this did before.  Deprecated.
-       Use (erc-network) instead.
-
-2004-03-08  Diane Murray  <address@hidden>
-
-       * erc-nickserv.el: Changed copyright notice.  Now require
-       erc-nets.  erc-nets.el now takes care of network-related functions
-       and variables.
-       (erc-nickserv-alist): Changed network symbols to match those in
-       `erc-networks-alist' in erc-nets.el.
-       (erc-nickserv-identify-autodetect): Use `erc-network'.
-       (erc-nickserv-identify): Use `erc-network'.  Changed wording for
-       interactive use, now shows current nick.
-       (erc-networks): Removed.  Use `erc-networks-alist' as defined in
-       erc-nets.el.
-       (erc-current-network): Function definition moved to erc-nets.el.
-       The functions `erc-determine-network' and `erc-network' in
-       erc-nets.el do what this did before.  Deprecated.  Use
-       (erc-network) instead.
-
-2004-03-08  Diane Murray  <address@hidden>
-
-       * erc-nets.el: Added commentary, `erc-nets-version'.
-       (erc-server-alist): Changed Brasnet to BRASnet.
-       (erc-networks-alist): All networks (except EFnet and IRCnet) now
-       have a MATCHER.  (erc-network): New variable.
-       (erc-determine-network): New function.  Determine the network the
-       user is on.  Use the server parameter NETWORK, if provided, else
-       parse the server name and search for a match (regexp and loop by
-       wencem) in `erc-networks-alist'.  Return the name of the network
-       or "Unknown" as a symbol.
-       (erc-network): New function.  Returns value of `erc-network'.  Use
-       this when the current buffer is not the server process buffer.
-       (erc-current-network): Returns the value of `erc-network' as
-       expected by users who used the function as it was defined in
-       erc-nickserv.el.  Deprecated.
-       (erc-network-name): Returns the value of `erc-network' as expected
-       by users who used the function as it was defined in erc.el.
-       Deprecated.
-       (erc-set-network-name): New function.  Added to
-       `erc-server-375-hook' and `erc-server-422-hook'.
-       (erc-unset-network-name): New function.  Added to
-       `erc-disconnected-hook'.
-       (erc-server-select): Small documentation word change.
-
-2004-03-07  Diane Murray  <address@hidden>
-
-       * AUTHORS, CREDITS: disumu info updated
-
-2004-03-06  Lawrence Mitchell  <address@hidden>
-
-       * erc-list.el (erc-cmd-LIST): Take &rest rather than &optional
-       arguments.
-       (erc-chanlist): Construct correct LIST command from list of
-       channels.
-
-2004-03-06  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-mode-line-buffer): Add 'help-echo property to
-       header-line text.  This allows header lines longer than the width
-       of the current window to be seen.
-
-2004-03-06  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el (erc-match-directed-at-fool-p): Also check for
-       "FOOL, "
-
-2004-03-06  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el (erc-match-message): Only use nick-or-keyword if
-       we're matching our nick.
-
-2004-03-06  Jorgen Schaefer  <address@hidden>
-
-       * erc-match.el: The highlight type for the current nickname can
-       now also be 'nick-or-keyword, to highlight the nick of the sender
-       if that is available, but fall back to highlighting your nickname
-       in the whole message otherwise.
-       (erc-current-nick-highlight-type): Adapted docstring accordingly.
-       (erc-match-message): Added new condition.  Also added some comments
-       to this monster of a function.
-
-2004-03-06  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-is-valid-nick-p): Don't check for length less or
-       equal to 9.
-
-2004-03-06  Damien Elmes  <address@hidden>
-
-       * erc-nickserv.el (erc-current-network): the last change resulted
-       in this function failing when a network identifies itself as
-       anything other than var.netname.com, so for instance
-       'vic.au.austnet.org' fails.  This version is only a marginal
-       improvement over the original, but if we want to be more flexible
-       we'll probably have to do the iteration ourselves instead of using
-       assoc.
-
-2004-03-05  Diane Murray  <address@hidden>
-
-       * erc.el: Added erc-server-001 which runs when the server sends
-       its welcome message.  It sets the current-nick to reflect the
-       server's settings.  This fixes a bug where nicks that were too long
-       and got truncated by the server were still set to the old value.
-       (nickname-in-use): If user wants to try again manually, let user
-       know that the nick is taken.  If not, go through erc-default-nicks
-       until none are left, and then try one last time with
-       erc-nick-uniquifier.  If it's still a bad-nick, make the user
-       change nick manually.  When applying uniquifier, use NICKLEN if
-       it's in the server parameters, otherwise use what RFC 2812 says is
-       the max nick length (9 chars).  Added custom variable
-       erc-manual-set-nick-on-bad-nick-p, which is set to nil and
-       erc-nick-change-attempt-count.  Reset erc-default-nicks and
-       erc-nick-change-attempt-count when the nick has been changed
-       successfully.  This fixes the bug where ERC would get caught in a
-       neverending loop of trying to set the same nick if the nick was
-       too long and the uniquified nick was not available.
-
-       * added erc-cmd-WHOAMI
-
-       * added custom variable erc-mode-line-away-status-format, use this
-       instead of the previous hard-coded setting
-
-       * erc-server-315|318|369-hook defvar lines removed - they're
-       already defined in erc-server-hook-list
-
-2004-03-04  Lawrence Mitchell  <address@hidden>
-
-       * HACKING: Initial commit.  Some thoughts on coding standards.
-
-2004-03-03  Diane Murray  <address@hidden>
-
-       * erc-track.el: added the variable erc-track-priority-faces-only
-       which adds the option to ignore changes in a channel unless there
-       are faces from the erc-track-faces-priority-list in the message
-       options are nil, 'all, or a list of channel name strings
-
-2004-03-01  Diane Murray  <address@hidden>
-
-       * erc.el, erc-ibuffer.el, erc-menu.el: Changed erc-is-channel-op
-       and erc-is-channel-voice to erc-channel-user-op-p and
-       erc-channel-user-voice-p to better match erc-channel-user
-       structure (and emacs lisp usage)
-
-2004-03-01  Diane Murray  <address@hidden>
-
-       * erc.el, erc-ibuffer.el, erc-menu.el:
-       erc-track-modified-channels-mode is now erc-track-mode
-
-2004-02-29  Diane Murray  <address@hidden>
-
-       * erc-match.el: Added 'keyword option to
-       erc-current-nick-highlight-type highlights all instances of
-       current-nick in the message ('nickname option in cvs revisions 1.9
-       - 1.11 had same effect)
-
-2004-02-28  Jorgen Schaefer  <address@hidden>
-
-       * erc-button.el: Add Lisp: prefix for the EmacsWiki Elisp area.
-       (erc-button-alist): Added Lisp: prefix.
-       (erc-emacswiki-lisp-url): New variable.
-       (erc-browse-emacswiki-lisp): New function.
-
-2004-02-27  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-get-arglist): Use `substitute-command-keys', rather
-       than hard-coding C-h f for `describe-function'.
-
-2004-02-26  Johan Bockgård  <address@hidden>
-
-       * erc-log.el (erc-save-buffer-in-logs): bind `inhibit-read-only'
-       to t around call to `erase-buffer'.
-
-2004-02-23  Edward O'Connor  <address@hidden>
-
-       * erc-chess.el, erc-dcc.el, erc-ezbounce.el, erc-list.el,
-       erc-macs.el, erc-ring.el, erc-stamp.el, erc.el: Normalized buffer
-       local variable creation.
-
-2004-02-17  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-scroll-to-bottom, erc-add-scroll-to-bottom): Mention
-       `erc-input-line-position' in docstring.
-
-2004-02-13  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-kick-hook): Typo fix.
-
-2004-02-13  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * erc.el: Added `erc-kick-hook', which is called when the local
-       user is kicked from a channel.  Fixed a bug in `erc-cmd-OPS', such
-       that the command now works.  Added `erc-remove-channel-users', in
-       order to fix a number of significant bugs relating to channel
-       parting.
-
-2004-02-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-display-prompt): Remove last change.  This caused a
-       lot of trouble :(
-
-2004-02-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-display-prompt): Also set 'field property, so C-j
-       works on an empty prompt.
-
-2004-02-12  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-channel-topic): Ensure that `channel-topic'
-       does not contain any bare format controls.
-
-2004-02-10  Jorgen Schaefer  <address@hidden>
-
-       * erc-stamp.el (erc-timestamp-intangible): New variable (user
-       feature request)
-       (erc-format-timestamp): Use erc-timestamp-intangible.
-
-2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * erc-button.el: Fixed bug related to nickname buttonizing and text
-       fields due to erc-stamp.
-
-2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * CREDITS: Added mention of my change of ERC to use hash tables.
-
-2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
-
-       * AUTHORS: Added myself to the list.
-
-2004-02-05  Lawrence Mitchell  <address@hidden>
-
-       * erc.el: From Jeremy Maitin-Shepard <address@hidden>:
-       (erc-remove-channel-user): Use `delq' not `delete'.
-       (erc-get-buffer): Pass PROC through to `erc-buffer-filter'.
-       (erc-process-sentinel): Use `erc' rather than `erc-reconnect' for
-       auto-reconnection.
-
-2004-02-02  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-buffer-list-with-nick): Apply `erc-downcase' NICK.
-
-2004-01-30  Alex Schroeder  <address@hidden>
-
-       * erc.el (erc-get-buffer): Use erc-buffer-filter.
-
-2004-01-30  Johan Bockgård  <address@hidden>
-
-       * erc.el: From jbms:
-       (erc-get-channel-nickname-list): New function.
-       (erc-get-server-nickname-list): New function.
-       (erc-get-server-nickname-alist): New function.
-       (erc-get-channel-nickname-alist): New function.
-
-2004-01-30  Johan Bockgård  <address@hidden>
-
-       * erc-match.el (erc-add-entry-to-list,
-       erc-remove-entry-from-list): Use `erc-member-ignore-case' to
-       compare entries.
-       (erc-add-pal, erc-add-fool): Fix type bug.  Use
-       `erc-get-server-nickname-alist'.
-
-2004-01-29  Johan Bockgård  <address@hidden>
-
-       * erc.el: From jbms: Adds xemacs compatibility to hash table
-       channel-members patch.
-
-2004-01-29  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-update-undo-list): Rewritten.  Update
-       buffer-undo-list in place.  Deal with XEmacsesque
-       entries (extents) in the list.
-       (erc-channel-users): Fix unescaped open-paren in left column in
-       docstring.
-
-2004-01-29  Johan Bockgård  <address@hidden>
-
-       * erc-ring.el (erc-replace-current-command): Exclude the prompt
-       from the deleted region and don't redisplay the prompt (because
-       `erc-display-prompt' flushes `buffer-undo-list').
-
-2004-01-29  Johan Bockgård  <address@hidden>
-
-       * erc-match.el (erc-add-entry-to-list): Use `symbol-value' instead
-       of `eval'.
-
-2004-01-28  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-kill-buffer-function): maphash was missing an
-       argument.
-
-2004-01-28  Jorgen Schaefer  <address@hidden>
-
-       * Makefile, erc-autoaway.el, erc-button.el, erc-ibuffer.el,
-       erc-lang.el, erc-list.el, erc-match.el, erc-menu.el, erc-page.el,
-       erc-pcomplete.el, erc-speedbar.el, erc.el: HUGE change by jbms.
-       This makes channel-members a hash, erc-channel-users.
-
-       Modified files: Makefile erc-autoaway.el erc-button.el
-       erc-ibuffer.el erc-lang.el erc-list.el erc-match.el erc-menu.el
-       erc-page.el erc-pcomplete.el erc-speedbar.el erc.el
-
-       The changes are too numerous to document properly.  Have fun with
-       the breakage.
-
-2004-01-27  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-send-input-line): Add a space to empty lines so the
-       server likes them.
-
-2004-01-25  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: erc-send-whitespace-lines: New variable.
-       (erc-send-current-line): Use erc-send-whitespace-lines.  Also,
-       removed superfluous test for empty line in the mapc, since the
-       blank line test should find all.  I do like to be able to send an
-       empty line when i want to!
-       (erc-send-current-line): Check for point being in input line
-       before checking for blank lines.
-
-2004-01-21  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-display-line-1): Move `erc-update-undo-list' outside
-       `save-restriction'.  Removing need for temporary variable.
-       (erc-send-current-line): Fix bug introduced by last change, remove
-       complement in blank line regexp.
-
-2004-01-20  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-undo-list): Add logic to catch the case when
-       `buffer-undo-list' is t, indentation cleanup.
-       (erc-send-current-line): Reverse logic for matching blank lines.
-
-2004-01-20  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-input-line-position): New variable.  If non-nil,
-       specifies the argument to `recenter' in `erc-scroll-to-bottom'.
-       (erc-scroll-to-bottom): Use it.
-
-2004-01-20  Lawrence Mitchell  <address@hidden>
-
-       * erc.el: From Johan Bockgård <address@hidden>:
-       (erc-update-undo-list): New function.  Update `buffer-undo-list'
-       so that calling `undo' in an ERC buffer doesn't mess up the
-       existing text.
-       (erc-display-line-1): Use it.
-
-2004-01-19  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-beg-of-input-line): Use `forward-line' rather than
-       `beginning-of-line'.  Docstring fix.
-       (erc-end-of-input-line): Docstring fix.
-
-2004-01-13  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-display-prompt): Remove the undo list after
-       displaying the prompt, so the user can't undo ERC changes, which
-       breaks some stuff anyways.  This way the user can still undo his
-       editing, but not ours.
-
-2004-01-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-scroll-to-bottom): Should recenter on the bottom
-       line, not the second-to-last one.
-
-2004-01-12  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-bol): Fix bug introduced in my changes from 2004-01-11.
-
-2004-01-12  Lawrence Mitchell  <address@hidden>
-
-       * erc.el: From Brian Palmer <address@hidden>
-       (erc-cmd-JOIN): Use `erc-member-ignore-case', rather than
-       `member-ignore-case'.
-
-2004-01-12  Jorgen Schaefer  <address@hidden>
-
-       * erc.el: There was an inconsistency where the values of op and
-       voice in channel-names could be 'on or 'off after an update, t and
-       nil before.  The intended version was to have t or nil, so i fixed
-       it to do so.
-       (channel-names): Updated docstring.
-       (erc-update-current-channel-member): Clarified docstring, fixed so
-       it sets t or nil on an update as well, not only on an add.
-       (erc-cmd-OPS): Updated not to check for 'on (the only function that
-       did this!)
-
-2004-01-12  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-part-reason-various-alist,
-       erc-update-mode-line-buffer): Fix docstring
-
-2004-01-11  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-update-mode-line): Fix typo.
-
-2004-01-11  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-prompt-interactive-input): Removed.
-       (erc-display-prompt): Removed `erc-prompt-interactive-input'
-       option.  (erc-interactive-input-map): Removed.
-
-       Major docstring fixes.
-
-2004-01-07  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-cmd-OPS): Added this function.
-       (erc-cmd-IDLE): Switched from using erc-display-message-highlight
-       to erc-make-notice.
-
-2004-01-07  Francis Litterio  <address@hidden>
-
-       * erc-list.el (erc-cmd-LIST): Switched from using
-       erc-display-message-highlight to erc-make-notice.
-
-2004-01-07  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-once-with-server-event): Added a sentence to the
-       docstring.  Now returns the uninterned symbol that is added to the
-       server hook.
-       (erc-cmd-IDLE): Changed to use erc-once-with-server-event instead
-       of erc-once-with-server-event-global.
-
-2004-01-06  Francis Litterio  <address@hidden>
-
-       * erc-list.el (erc-chanlist-hide-modeline): New variable.
-       (erc-chanlist): Now displays message as a notice.  Also hides the
-       modeline if erc-chanlist-hide-modeline is non-nil.
-
-2004-01-05  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-server-PRIVMSG-or-NOTICE): Now nicks appear as
-       <nick> in query buffers, instead of as *nick*.
-
-2004-01-03  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-once-with-server-event-global): Changed to return
-       the uninterned symbol that it creates.
-       (erc-cmd-LIST): Changed to clean up hooks that don't run.
-
-2004-01-03  Francis Litterio  <address@hidden>
-
-       * erc-pcomplete.el (pcomplete/erc-mode/IDLE): Added to support new
-       /IDLE command.
-
-2004-01-03  Francis Litterio  <address@hidden>
-
-       * erc.el (erc-once-with-server-event-global): New function.  Like
-       erc-once-with-server-event, except it modifies the global value of
-       the event hook.
-       (erc-cmd-IDLE): New function.  Implements the new /IDLE command.
-       Usage: /IDLE NICK (erc-seconds-to-string): New function.  Converts
-       a number of seconds to an English phrase.
-
-2004-01-02  Francis Litterio  <address@hidden>
-
-       * erc-list.el: Added variable erc-chanlist-mode-hook.
-
-See ChangeLog.03 for earlier changes.
-
-       Copyright (C) 2004, 2006-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
diff --git a/lisp/erc/ChangeLog.05 b/lisp/erc/ChangeLog.05
deleted file mode 100644
index b5fe177..0000000
--- a/lisp/erc/ChangeLog.05
+++ /dev/null
@@ -1,1240 +0,0 @@
-2005-11-23  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-cmd-SAY): Strip leading space in input line.
-
-2005-10-29  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE: Add stuff that needs to be done before the 5.1
-       release.  Longer-term items can be added to the 5.2 section.
-
-       * Makefile (SITEFLAG): New variable that indicates what variant of
-       "--site-flag" to use.  XEmacs needs "-site-flag".
-       (INSTALLINFO): New variable indicating how we should call
-       install-info when installing documentation.
-       (erc-auto.el, .elc.el): Use $(SITEFLAG).
-
-       * NEWS: Note that last release was 5.0.4.
-
-       * erc.texi: Initial and incomplete draft of ERC documentation.
-       Commence collaborate-documentation-hack-mode :^) .
-
-2005-10-29  Diane Murray  <address@hidden>
-
-       * erc-ring.el (erc-replace-current-command): Revert last change
-       since it made the prompt disappear when using `erc-next-command'
-       and `erc-previous-command'.
-
-2005-10-28  Michael Olson  <address@hidden>
-
-       * erc.el (erc-input-marker): New variable that indicates the
-       position where text from the user begins, after the prompt.
-       (erc-mode-map): Bind <HOME> to erc-bol, just like C-a.
-       (erc): Initialize erc-input-marker.
-       (erc-display-prompt): Even in case where no prompt is desired by
-       the user, clear the undo buffer and set the input marker.
-       (erc-bol, erc-user-input): Simplify by using erc-input-marker.
-
-       * erc-pcomplete.el (pcomplete-parse-erc-arguments): Use
-       erc-insert-marker.
-
-       * erc-ring.el (erc-previous-command)
-       (erc-replace-current-command): Use erc-insert-marker.
-
-       * erc-spelling.el (erc-spelling-init): Make sure that even Emacs21
-       obeys erc-spelling-flyspell-verify.
-       (erc-spelling-flyspell-verify): Use erc-input-marker.  This should
-       make it considerably faster when switching to a buffer that has
-       seen a lot of activity since last viewed.
-
-2005-10-25  Diane Murray  <address@hidden>
-
-       * erc-backend.el (erc-server-version, 004): Re-added setting of
-       `erc-server-version'.  It doesn't hurt to set, and it could be
-       used in modules or users' settings.
-
-       * NEWS: Added descriptions of some new features.
-
-2005-10-20  Diane Murray  <address@hidden>
-
-       * erc-match.el (erc-current-nick-highlight-type): Set to `keyword'
-       as default.
-       (erc-beep-match-types): New variable.
-       (erc-text-matched-hook): Doc fix.  Added `erc-beep-on-match' to
-       customization options.
-       (erc-beep-on-match): New function.  If the MATCH-TYPE is found in
-       `erc-beep-match-types', beep.
-
-       * erc-compat.el (erc-make-obsolete, erc-make-obsolete-variable):
-       New functions to deal with the difference in the number of
-       arguments accepted by `make-obsolete' and `make-obsolete-variable'
-       in Emacs and XEmacs.
-
-       * erc.el, erc-nets.el: Use `erc-make-obsolete' and
-       `erc-make-obsolete-variable'.
-
-       * erc-compat.el (erc-make-obsolete, erc-make-obsolete-variable):
-       Handle `wrong-number-of-arguments' error instead of checking for
-       xemacs feature as future versions of XEmacs might accept three
-       arguments.
-
-2005-10-18  Edward O'Connor  <address@hidden>
-
-       * erc.el: Tell emacs-lisp-mode how to font-lock define-erc-module
-       docstrings.
-
-2005-10-08  Diane Murray  <address@hidden>
-
-       * AUTHORS, CREDITS, ChangeLog, ChangeLog.2002, ChangeLog.2004:
-       Updated my email address.
-
-2005-10-06  Michael Olson  <address@hidden>
-
-       * erc.el (erc-send-input-line, erc-cmd-KICK, erc-cmd-PART)
-       (erc-cmd-QUIT, erc-cmd-TOPIC, erc-kill-server, erc-kill-channel):
-       Adapt to new TARGET parameter of erc-server-send.
-
-       * erc-backend.el (erc-server-connect): Don't specify encoding for
-       erc-server-process, since we set this each time we send a line to
-       the server.
-       (erc-encode-string-for-target): Remove.
-       (erc-server-send): Allow TARGET to be specified.  This was how it
-       used to be before my more-backend work.  Set encoding of server
-       process just before sending text to it.  Associate encoding with
-       text if we are using the queue.
-       (erc-server-send-queue): Pull encoding from queue.
-       (erc-message, erc-send-ctcp-message, erc-send-ctcp-notice): Adapt
-       to new TARGET parameter of erc-server-send.
-
-2005-10-05  Michael Olson  <address@hidden>
-
-       * erc.el (erc-toggle-debug-irc-protocol): Use erc-view-mode-enter
-       rather than view-mode.
-
-       * erc-backend.el (erc-encode-string-for-target): If given a nil or
-       empty string, return "".
-       (erc-server-send-queue): XEmacs fix: Use erc-cancel-timer rather
-       than cancel-timer.
-
-       * erc-compat.el (erc-view-mode-enter): New function that is
-       aliased to the correct way of entering view-mode.
-
-       * erc-match.el (erc-log-matches-make-buffer): Use
-       erc-view-mode-enter rather than view-mode-enter.
-
-2005-10-05  Edward O'Connor  <address@hidden>
-
-       * erc-backend.el (erc-encode-string-for-target): If str is nil,
-       pass the empty string to erc-encode-coding-string instead, which
-       allows one to /part and /quit without providing a reason again.
-
-2005-10-03  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-message, erc-send-ctcp-message)
-       (erc-send-ctcp-notice): Encode string for target before sending.
-
-       * erc.el (erc-cmd-KICK, erc-cmd-PART, erc-cmd-QUIT, erc-cmd-TOPIC)
-       (erc-kill-server, erc-kill-channel): Ditto.
-
-2005-09-05  Johan Bockgård  <address@hidden>
-
-       * erc-page.el (erc-ctcp-query-PAGE): (message text) -> (message
-       "%s" text).
-       (erc-cmd-PAGE): Simplify regexp. Put `do-not-parse-args' t.
-
-2005-09-05  Michael Olson  <address@hidden>
-
-       * erc.el (erc-flood-limit, erc-flood-limit2): Remove since they
-       are no longer needed.
-       (erc-send-input): Detect whether we want flood control to be
-       active.  The previous behavior was to always force the message.
-       (erc-toggle-flood-control): Adapt to new flood control method.  No
-       more 'strict.
-       (erc-cmd-SV): Use concat rather than
-       format-time-string.
-       (erc-format-target, erc-format-target-and/or-server): Shorten
-       logic statements.
-
-       * erc-compat.el (erc-emacs-build-time): Use a string
-       representation rather than trying to coerce a time out of a string
-       on XEmacs.
-
-       * erc-identd.el (erc-identd-start): Use make-network-process
-       instead of open-network-stream.  Error out if this is not defined.
-
-       * erc-backend.el (erc-send-line): New command that sends a line
-       using flood control, using a callback for display.  It isn't used
-       yet.
-
-2005-09-04  Michael Olson  <address@hidden>
-
-       * erc.el: Add defvaralias and make-obsolete-variable for
-       erc-default-coding-system.
-       (channel-topic, channel-modes, channel-user-limit, channel-key,
-       invitation, away, channel-list, bad-nick): Rename globally to
-       erc-{name-of-variable}.
-
-2005-09-03  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-message): Simplify regexp.
-       (erc-cmd-DEOP, erc-cmd-OP): Simplify.
-
-2005-08-29  Michael Olson  <address@hidden>
-
-       * erc.el: Alias erc-send-command to erc-server-send.  ErBot needs
-       this to work without modification.  Add defvaralias for
-       erc-process.  Make this and the other backwards-compatibility
-       functions and variables be marked obsolete as of ERC 5.1.
-
-       * erc-backend.el: Add autoload for erc-log macro.
-       (erc-server-connect): Set some variables before defining process
-       handlers.  It probably doesn't make any difference.
-
-2005-08-26  Michael Olson  <address@hidden>
-
-       * erc.el: Add defvaralias for erc-announced-server-name, since
-       this seems to be widely used.
-
-2005-08-17  Michael Olson  <address@hidden>
-
-       * erc.el (erc): Remove unnecessary boundp check.
-
-       * erc-autoaway.el: Fix compiler warning.
-
-       * erc-backend.el (erc-server-version): Since this isn't used by
-       any code, and isn't generally useful, remove it.
-       (erc-server-send-queue): Use erc-current-time rather than
-       float-time.
-       (004): Don't set erc-server-version.
-
-       * erc-dcc.el (erc-dcc-chat-request, erc-dcc-get-parent): Move to
-       fix a compiler warning.
-
-       * erc-ibuffer.el (erc-server): Remove unnecessary boundp check.
-
-       * erc-identd.el (erc-identd-start): Use read-string instead of
-       read-input.
-
-       * erc-imenu.el (erc-unfill-notice): Use a while loop instead of
-       replace-regexp.
-
-       * erc-nicklist.el: Add conditional dependency on erc-bbdb.
-       (erc-nicklist-insert-contents): Tighten some regexps.
-
-       * erc-notify.el (erc-notify-list): Docfix.
-
-       * erc-spelling.el (erc-spelling-dictionaries): Add :type and
-       :group to silence a compiler warning.
-
-2005-08-14  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-session-server, erc-session-port)
-       (erc-announced-server-name, erc-server-version)
-       (erc-server-parameters): Moved here from erc.el.
-       (erc-server-last-peers): Moved, renamed from last-peers.
-       (erc-server-lag): Moved, renamed from erc-lag.
-       (erc-server-duplicates): Moved, renamed from erc-duplicates.
-       (erc-server-duplicate-timeout): Moved, renamed from
-       erc-duplicate-timeout.
-       (erc-server): New customization group hosting all options from
-       this file.
-       (erc-server-prevent-duplicates): Moved, renamed from
-       erc-prevent-duplicates.
-       (erc-server-duplicate-timeout): Moved, renamed from
-       erc-duplicate-timeout.
-       (erc-server-auto-reconnect, erc-split-line-length)
-       (erc-server-coding-system, erc-encoding-coding-alist)
-       (erc-server-connect-function, erc-server-flood-margin)
-       (erc-server-flood-penalty): Change group to 'erc-server.
-       (erc-server-send-ping-interval): Moved, renamed from
-       erc-ping-interval.
-       (erc-server-ping-handler): Moved, renamed from erc-ping-handler.
-       (erc-server-setup-periodical-server-ping): Moved, renamed from
-       erc-setup-periodical-server-ping.
-       (erc-server-connect): Add to docstring.  Move more initialization
-       here.
-       (erc-server-processing-p): Docfix.
-       (erc-server-connect): Use 'raw-text like in the original version.
-       (erc-server-filter-function): Don't reset process coding system.
-
-       * erc-stamp.el (erc-add-timestamp): If the text at point is
-       invisible, don't insert a timestamp.  Thanks to Pascal
-       J. Bourguignon for the suggestion.
-
-       * erc-match.el (erc-text-matched-hook): Don't hide fools by
-       default, but include it in the available options.
-
-2005-08-13  Michael Olson  <address@hidden>
-
-       * erc-*.el: s/erc-send-command/erc-server-send/g.
-       s/erc-process/erc-server-process/g (sort of).  Occasional
-       whitespace and indentation fixes.
-
-       * erc-backend.el: Specify a few local variables for indentation.
-       Take one item off of the TODO list.
-       (erc-server-filter-data): Renamed from erc-previous-read.  From
-       circe.
-       (erc-server-processing-p): New variable that indicates when we're
-       currently processing a message.  From circe.
-       (erc-split-line-length): New option that gives the maximum line
-       length of a single message.  From circe.
-       (erc-default-coding-system): Moved here from erc.el.
-       (erc-split-line): Renamed from erc-split-command and taken from
-       circe.
-       (erc-connect-function, erc-connect, erc-process-sentinel-1)
-       (erc-process-sentinel, erc-flood-exceeded-p, erc-send-command)
-       (erc-message, erc-upcase-first-word, erc-send-ctcp-message)
-       (erc-send-ctcp-notice): Moved here from erc.el.
-       (erc-server-filter-function): Renamed from erc-process-filter.
-       From circe.
-       (erc-server-process): Renamed from `erc-process' and moved here
-       from erc.el.
-       (erc-server-coding-system): Renamed from
-       `erc-default-coding-system'.
-       (erc-encoding-coding-alist): Moved here from erc.el.
-       (erc-server-flood-margin, erc-server-flood-penalty):
-       (erc-server-flood-last-message, erc-server-flood-queue):
-       (erc-server-flood-timer): New options from circe that allow
-       tweaking of flood control.
-       (erc-server-connect-function): Renamed from erc-connect-function.
-       (erc-flood-exceeded-p): Removed.
-       (erc-coding-system-for-target)
-       (erc-encode-string-for-target, erc-decode-string-from-target):
-       Moved here from erc.el
-       (erc-server-send): Renamed from erc-send-command.  Adapted from
-       the circe function by the same name.
-       (erc-server-send-queue): New function from circe that implements
-       handling of a flood queue.
-       (erc-server-current-nick): Renamed from current-nick.
-       (erc-server-quitting): Renamed from `quitting'.
-       (erc-server-last-sent-time): Renamed from `last-sent-time'.
-       (erc-server-last-ping-time): Renamed from `last-ping-time'.
-       (erc-server-lines-sent): Renamed from `lines-sent'.
-       (erc-server-auto-reconnect): Renamed from `erc-auto-reconnect'.
-       (erc-server-coding-system): Docfix.
-       (erc-server-connect): Renamed from `erc-connect'.  Require SERVER
-       and PORT parameters.  Initialize several variables here.  Don't
-       set `erc-insert-marker'.  Use a per-server coding system via
-       erc-server-default-encoding.
-
-       * erc.el (erc-version-string): Changed to indicate we are running
-       the `more-backend' branch.
-       (erc-send-single-line): Implement flood control using
-       erc-split-line.
-       (erc-send-input): Move functionality of erc-send-single-line in
-       here.
-       (erc-send-single-line): Assimilated!
-       (erc-display-command, erc-display-msg): Handle display hooks.
-       (erc-auto-reconnect, current-nick, last-sent-time)
-       (last-ping-time, last-ctcp-time, erc-lines-sent, erc-bytes-sent)
-       (quitting): Moved to erc-backend.el.
-       (erc): Docfix.  Don't initialize quite so many things here.
-
-2005-08-10  Michael Olson  <address@hidden>
-
-       * debian/copyright (Copyright): Remove notices for 4 people, since
-       they didn't contribute legally-significant changes, or have had
-       these changes overwritten.
-
-       * erc-log.el: Remove copyright notice.
-
-       * erc.el: Remove 3 copyright notices.
-
-2005-08-09  Michael Olson  <address@hidden>
-
-       * debian/changelog: Create 5.0.4-3 package.  This doesn't serve
-       any purpose other than to thank Romain Francoise for some advice.
-
-       * Makefile (debrelease): Allow last upload and extra build options
-       to be specified.
-
-2005-08-08  Michael Olson  <address@hidden>
-
-       * debian/changelog: Create 5.0.4-2 package.
-
-       * debian/control (Uploaders): Add Romain Francoise.
-       (Standards-Version): Update to 3.6.2.
-       (Depends): Add `emacsen'.
-
-       * debian/scripts/startup.erc (load-path): Minor whitespace fixup.
-
-       * Makefile (clean): Split target from realclean and make it remove
-       files that aren't packaged in releases.
-       (clean, release): Minor cleanups.
-       (debrelease): Use debuild rather than dpkg-buildpackage since the
-       former calls lintian.  Minor cleanups.
-       (debrelease-mwolson): New target that removes old Debian packages,
-       calls debrelease, and copies the resulting package to my dist dir.
-       (upload): New target that automates the process of uploading an
-       ERC release to sourceforge.
-
-       * erc.el (erc-mode): Use `make-local-variable' instead of
-       `make-variable-buffer-local'.
-
-2005-07-12  Michael Olson  <address@hidden>
-
-       * debian/changelog: Build 5.0.4-1.
-
-       * Makefile (release): Prepare zip file in addition to tarball.
-
-       * NEWS: Add item for the undo fix.
-
-2005-07-09  Michael Olson  <address@hidden>
-
-       * erc-nicklist.el (erc-nicklist-insert-contents): Check
-       erc-announced-name before erc-session-server.  Make sure that we
-       can never get a stringp (nil) error.
-       (erc-nicklist-call-erc-command): If given no command, do nothing.
-       This fixes an error that used to occur when a stray mouse click
-       was made outside of the popup window, but on the erc-nicklist
-       menu.
-
-       * erc-bbdb.el (erc-bbdb-search-name-and-create): Get rid of the
-       infinite input loop when you want to create a new record.  Replace
-       most of that with a completing read of existing nicks.  If no nick
-       is chosen, create a new John Doe record.  The net effect of this
-       is that the old behavior is re-instated, with the addition of one
-       completing read that happens when you do a /whois.
-
-2005-07-09  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-process-input-line): Docfix.
-       (erc-update-mode-line-buffer): Use `erc-propertize' instead of
-       `propertize'.
-       (erc-propertize): Move to erc-compat.el.
-
-       * erc-compat.el (erc-propertize): Move here from erc.el. Always
-       return a copy of the string (like `propertize' in GNU Emacs).
-
-       * erc-nicklist.el (erc-nicklist-icons-directory)
-       (erc-nicklist-voiced-position)
-       (erc-nicklist-insert-medium-name-or-icon): Docfix.
-       (erc-nicklist-insert-contents): Simplify.
-       (erc-nicklist-mode-map): Bind RET instead of `return'. Bind
-       `down-mouse-3' instead of `mouse-3'.
-       (erc-nicklist-kbd-cmd-QUERY): Cleanup regexp.
-       (erc-nicklist-channel-users-info): Docfix. Simplify.
-
-2005-07-02  Michael Olson  <address@hidden>
-
-       * images: New directory containing the images that are used by
-       erc-nicklist.el.  These are from Gaim, and are thought to be
-       available under the terms of the GPL.
-
-       * erc-bbdb.el: Add local variables section to preserve tabs, since
-       that is the style used throughout this file.  Apply patch from
-       Edgar Gonçalves as follows.
-       (erc-bbdb-bitlbee-name-field): New variable that indicates the
-       field name to use for annotating the "displayed name" of a bitlbee
-       contact.
-       (erc-bbdb-irc-highlight-field): Docfix.
-       (erc-bbdb-search-name-and-create): Prompt the user for the name of
-       a contact if none was found.  Merge the new entries into the
-       specified contact.  If new arg SILENT is non-nil, do not prompt
-       the user for a name or offer to merge the new entry.
-       (erc-bbdb-insinuate-and-show-entry): New arg SILENT is accepted,
-       which is passed on to erc-bbdb-search-name-and-create.
-       (erc-bbdb-whois): Tell erc-bbdb-search-name-and-create to prompt
-       for name if necessary.
-       (erc-bbdb-JOIN, erb-bbdb-NICK): Forbid
-       erc-bbdb-search-name-and-create from prompting for a name.
-
-       * erc-nicklist.el: Add local variables section to preserve tabs,
-       since that is the style used throughout this file.  Apply patch
-       from Edgar Gonçalves as follows.
-       (erc-nicklist-use-icons): New option; if non-nil, display an icon
-       instead of the name of the chat medium.
-       (erc-nicklist-icons-directory): New option indicating the path to
-       the PNG files that are used for chat icons.
-       (erc-nicklist-use-icons): New option indicating whether to put
-       voiced nicks on top, bottom, or not to differentiate them.  The
-       default is to put them on the bottom.
-       (erc-nicklist-bitlbee-connected-p): New variable that indicates
-       whether or not we are currently using bitlbee.  An attempt will be
-       made to auto-detect the proper value.  This is bound in the
-       `erc-nicklist-insert-contents' function.
-       (erc-nicklist-nicklist-images-alist): New variable that maps a
-       host type to its icon.  This is set by `erc-nicklist'.
-       (erc-nicklist-insert-medium-name-or-icon): New function that
-       inserts an icon or string that identifies the current host type.
-       (erc-nicklist-search-for-nick): New function that attempts to find
-       a BBDB record that corresponds with this contact given its
-       finger-host.  If found, return its bitlbee-nick field.
-       (erc-nicklist-insert-contents): New function that inserts the
-       contents of the nick list, including text properties and images.
-       (erc-nicklist): Populate `erc-nicklist-images-alist'.  Move
-       nicklist content generation code to
-       `erc-nicklist-insert-contents'.
-       (erc-nicklist-mode-map): Map C-j to erc-nicklist-kbd-menu and RET
-       to erc-nicklist-kbd-cmd-QUERY.
-       (erc-nicklist-call-erc-command): Make use of
-       `switch-to-buffer-other-window'.
-       (erc-nicklist-cmd-QUERY): New function that opens a query buffer
-       for the given contact.
-       (erc-nicklist-kbd-cmd-QUERY): Ditto; contains most of the code.
-       (erc-nicklist-kbd-menu): New function that shows the nicklist
-       action menu.
-       (erc-nicklist-channel-users-info): Renamed from
-       `erc-nicklist-channel-nicks'.  Implement sorting voiced users.
-
-2005-06-29  Johan Bockgård  <address@hidden>
-
-       * erc-nickserv.el (erc-nickserv-alist): Fix regexp for Azzurra.
-
-2005-06-26  Michael Olson  <address@hidden>
-
-       * erc-autojoin.el (erc-autojoin-add, erc-autojoin-remove): Use
-       `erc-session-server' if `erc-announced-server-name' is nil.  This
-       happens when servers don't send a 004 message.
-
-       * erc.el (erc-quit-server): Ditto.
-
-       * erc-ibuffer.el (erc-server, erc-server-name): Ditto.
-
-       * erc-notify.el (erc-notify-JOIN, erc-notify-NICK)
-       (erc-notify-QUIT): Ditto.
-
-2005-06-24  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-default-coding-system)
-       (erc-handle-user-status-change): Docstring fix.
-       (with-erc-channel-buffer): Removed.
-       (erc-ignored-reply-p): Replace `with-erc-channel-buffer' with
-       `erc-with-buffer'.
-       (erc-display-line-1): Fix broken undo.
-
-2005-06-23  Michael Olson  <address@hidden>
-
-       * CREDITS: Add entries for Luigi Panzeri and Andreas Schwab.
-
-       * erc-nickserv.el (erc-nickserv-alist): Add entries for Azzurra
-       and OFTC.  Thanks to Luigi Panzeri and Andreas Schwab for
-       providing these.
-
-2005-06-16  Michael Olson  <address@hidden>
-
-       * CREDITS: Add John Paul Wallington.
-
-       * erc.el: Thanks to John Paul Wallington for the following.
-       (erc-nickname-in-use): Use `string-to-number' instead of
-       `string-to-int'.
-
-       * erc-dcc.el (erc-dcc-handle-ctcp-send)
-       (erc-dcc-handle-ctcp-chat, erc-dcc-get-file)
-       (erc-dcc-chat-accept): Ditto.
-
-       * erc-identd.el (erc-identd-start): Ditto.
-
-2005-06-16  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-mode-map): Suppress `font-lock-fontify-block' key
-       binding since it destroys face properties.
-
-2005-06-08  Michael Olson  <address@hidden>
-
-       * erc.el (erc-cmd-UNIGNORE): Use `erc-member-ignore-case' instead
-       of `member-ignore-case'.  Thanks to bpalmer for the heads up.
-
-2005-06-06  Michael Olson  <address@hidden>
-
-       * erc.el (erc-modules): Fix a mistake I made when editing this a
-       few days ago.  Modes should now be disabled properly.
-       (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Remove unnecessary call to
-       `format'.  Thanks to Andreas Schwab for reporting this.
-
-       * debian/changelog: Close "README file missing" bug.
-
-       * debian/rules (binary-erc): Install README file.
-
-2005-06-03  Michael Olson  <address@hidden>
-
-       * erc.el (erc-with-buffer): Set `lisp-indent-function' so Emacs
-       Lisp mode knows how to indent erc-with-buffer blocks.
-       (with-erc-channel-buffer): Ditto.
-       (erc-with-all-buffers-of-server): Ditto.
-       (erc-modules): Use pcomplete by default, not completion, since
-       erc-complete.el is deprecated.  Use `fboundp' instead of
-       `symbol-value' to check for existence of a function before calling
-       it.  This was causing an error when untoggling the `completion'
-       option and trying to save via the customize interface.
-
-       * erc-track.el (erc-modified-channels-update): If a buffer is not
-       currently connected, remove it from the modified channels list.
-       This should fix the problem where residue was left on the mode
-       line after quitting ERC.
-
-       * erc-list.el (erc-prettify-channel-list): Docfix; thanks to John
-       Paul Wallington for reporting this.
-
-2005-05-31  Michael Olson  <address@hidden>
-
-       * debian/changelog: First draft of entries for the 5.0.3 release.
-
-       * debian/README.Debian: Note that ERC will now install correctly
-       on versions of Emacs or XEmacs that do not have the `format-spec'
-       library.  Correct some grammar and prune the content a bit.
-
-       * debian/scripts/install (emacs20): Remove line since we no longer
-       need to deal with format-spec.el.
-
-       * NEWS: Add entries for the upcoming 5.0.3 release.
-
-       * erc.el: Don't require format-spec since this is provided in
-       erc-compat.el now.
-       (erc-process-sentinel, erc-setup-periodical-server-ping): Use
-       `erc-cancel-timer' instead of `cancel-timer'.
-       (erc-version-string): Update to 5.0.3.
-
-       * erc-autoaway.el (autoaway, erc-autoaway-reestablish-idletimer):
-       Use `erc-cancel-timer' instead of `cancel-timer'.
-
-       * erc-compat.el (format-spec, format-spec-make): If we cannot load
-       the `format-spec' library, provide versions of these functions.
-       This should keep problems from surfacing with Emacs21 Debian
-       builds.
-       (erc-cancel-timer): New function created to take the place of
-       `cancel-timer' since XEmacs calls it something else.
-
-       * erc-track.el (erc-modified-channels-update): Accept any number
-       of arguments, which are ignored.  This allows it to be run from
-       `erc-disconnected-hook' without extra bother.
-       (track): Add `erc-modified-channels-update' to
-       `erc-disconnected-hook' so that the indicators are removed
-       correctly in some edge cases.
-       (erc-modified-channels-display): Make sure that we never pass nil
-       to the function in `erc-track-shorten-function'.  This happens
-       when we have deleted buffers in `erc-modified-channels-alist'.
-       Also, make sure that the buffer has a non-nil short-name before
-       adding it to the string list.  This should fix some XEmacs
-       warnings when running /quit with unchecked buffers, as well as get
-       rid of a stray buffer problem (or so it is hoped).
-
-2005-05-31  Johan Bockgård  <address@hidden>
-
-       * erc-replace.el, erc-speak.el: Clean up comment formatting.
-
-       * erc-ring.el (ring, erc-input-ring-index, erc-clear-input-ring):
-       Clean up docstring formatting.
-
-2005-05-30  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Delete superfluous
-       arg to `format'.
-       (erc-load-irc-script): Use `insert-file-contents' instead of
-       `insert-file'. Simplify.
-
-2005-05-29  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Move this up so that it is
-       evaluated before the `require' statements.  Not a major change.
-
-2005-04-27  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-complete-word): Simplify.
-
-2005-04-27  Michael Olson  <address@hidden>
-
-       * Makefile (debrelease): Use a slightly different approach when
-       removing CVS and Arch cruft.
-
-       * debian/changelog: Update for 5.0.2-1 package.
-
-2005-04-25  Michael Olson  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move code
-       block higher in file to fix a load failure when using Emacs21.
-       Thanks to Daniel Brockman for the report and fix.
-
-2005-04-24  Adrian Aichner  <address@hidden>
-
-       * erc-backend.el (JOIN): save-excursion so that
-       `erc-current-logfile' inserts into the correct channel buffers
-       when using erc-log-insert-log-on-open in combination with autojoin
-       to multiple channels.
-
-2005-04-17  Adrian Aichner  <address@hidden>
-
-       * erc-log.el: Remove stray whitespace.
-       * erc.el: Ditto.
-
-2005-04-09  Aidan Kehoe  <address@hidden>
-
-       * erc.el: autoload erc-select-read-args, which, because it parses
-       erc-select's args, can be called before erc.el is loaded. 
-
-2005-04-07  Edward O'Connor  <address@hidden>
-       
-       * erc-viper.el: Remove final newlines from previously-existing ERC
-       buffers. (Minor bug fix.)
-
-2005-04-06  Michael Olson  <address@hidden>
-
-       * Makefile (debrelease): Ignore errors from deleting Arch and CVS
-       metadata.
-
-2005-04-05  Michael Olson  <address@hidden>
-
-       * ChangeLog, CREDITS, AUTHORS: Correct name and email address of
-       Marcelo Toledo.
-
-2005-04-04  Michael Olson  <address@hidden>
-
-       * erc.el (erc-modules): Add entry for spelling module.
-
-       * erc-spelling.el: Add autoload line.
-
-       * erc-backend.el: Apply latest non-ascii patch from Kai Fan.
-       (erc-decode-parsed-server-response): Search
-       erc-response.command-args for channel name.  Decode the
-       erc-response struct using this channel name as key according to
-       the `erc-encoding-coding-alist'.
-
-       * erc-track.el: Apply patch from Henrik Enberg.
-       (erc-modified-channels-object): Use optimal amount of whitespace
-       around modified channels indicator.
-
-2005-04-02  Johan Bockgård  <address@hidden>
-
-       * erc.el (define-erc-module, erc-with-buffer)
-       (erc-with-all-buffers-of-server, with-erc-channel-buffer): Add
-       edebug-form-spec.
-
-       * erc-compat.el (erc-define-minor-mode): Ditto.
-
-2005-03-29  Jorgen Schaefer  <address@hidden>
-
-       * erc-spelling.el: New file.
-
-2005-03-24  Johan Bockgård  <address@hidden>
-
-       * erc-backend.el (define-erc-response-handler): Add
-       `definition-name' property to constructed symbols so that
-       find-function and find-variable will find them.
-
-2005-03-21  Michael Olson  <address@hidden>
-
-       * erc-dcc.el, erc-goodies.el, erc-list.el, erc-notify.el,
-       erc-ring.el, erc.el: Copyright assignment occurred.
-
-       * debian/scripts/install: Make a shell wrapper around the original
-       Makefile and inline the Makefile.  The problem is that Debian
-       passes all the Emacs variants at once, rotating them at every
-       invocation of the install script, which happens once per variant.
-       This caused each installation to happen N-1 times more often than
-       it should have.  As a result, we need to only deal with the first
-       argument.
-       (ELFILES): Only add format-spec.el if we are compiling for
-       emacs21.  Don't filter out erc-compat.el.
-       (SITEFLAG): New variable that indicates that the "nosite" option
-       should look like.
-       (.DEFAULT): Use $(FLAVOUR) instead of $@ for clarity.
-
-       * debian/rules: Install NEWS file and compress it.
-
-       * debian/maint/postinst: Be more cautious about configuration
-       step.
-
-       * debian/copyright (Copyright): Another assignment came in.
-
-       * debian/control (Standards-Version): Update to a newer version as
-       recommended by lintian.
-
-       * debian/changelog: Changes made for the Debian package.
-
-       * debian/README.Debian: Keep only the General Notes section.
-
-       * NEWS: Move old history items here from debian/README.Debian.
-
-       * Makefile (SNAPSHOTDATE): Deprecate this option since we hope to
-       release more often.
-
-2005-03-20  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-define-catalog, `ctcp-request-to'): Fix typo (%: ->
-       %t:).
-
-2005-03-01  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-save-buffer-in-logs): Replace tabs with spaces
-       in code indentation.
-
-2005-02-28  Michael Olson  <address@hidden>
-
-       * erc.el (erc-display-message): Apply corrected patch from Henrik
-       Enberg.
-
-2005-02-27  Michael Olson  <address@hidden>
-
-       * erc.el (erc-display-message): Apply patch from Henrik Enberg.
-       Check here to see if a message should be hidden, rather than
-       relying on code in each individual command.
-       (erc-version-string): Add "(CVS)" to the version string for
-       clarity.
-
-       * erc-backend.el (JOIN, KICK, MODE, NICK, PART, QUIT, TOPIC):
-       Don't check `erc-hide-list' here.
-
-       * erc-list.el, erc-match.el, erc.el, debian/copyright: Update
-       copyright information as a few more people have assignments
-       registered.
-
-2005-02-06  Michael Olson  <address@hidden>
-
-       * erc-backend.el: Apply patch from Kai Fan for non-ASCII character
-       support.
-       (erc-parse-server-response): Add call to
-       `erc-decode-parsed-server-response'.
-       (erc-decode-parsed-server-response): New function that decodes a
-       pre-parsed server response before it can be handled.
-       (PRIVMSG): Comment out call to `erc-decode-string-from-target'.
-       (TOPIC): Ditto.
-
-2005-02-01  Jorgen Schaefer  <address@hidden>
-
-       * erc.el (erc-process-sentinel-1): Don't reconnect on connection
-       refused. This error is reported differently when using
-       open-network-stream-nowait.
-
-2005-01-26  Diane Murray  <address@hidden>
-
-       * erc.el (erc-cmd-APPENDTOPIC, erc-set-topic): The control
-       character in `channel-topic' was changed to \C-o - replaced \C-c
-       with \C-o so that these functions work as expected again.
-       (erc-get-channel-mode-from-keypress): Doc fix.
-
-2005-01-25  Diane Murray  <address@hidden>
-
-       * erc.el, erc-button.el, erc-compat.el, erc-goodies.el,
-       erc-match.el, erc-nets.el, ChangeLog, NEWS: Merged bug fixes made
-       on release_5_0_branch since 5.0.1 release.
-
-2005-01-24  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-input-action): Quote `erc-action-history-list' so
-       that input history actually works.
-       (erc-process-ctcp-query): Fix and simplify logic.
-       (erc-get-channel-mode-from-keypress): Use `C-' string syntax.
-       (erc-load-irc-script-lines): Use `erc-command-indicator' instead
-       of `erc-prompt'.
-
-2005-01-23  Edward O'Connor  <address@hidden>
-       
-       * erc-viper.el: Ensure that `viper-comint-mode-hook' runs in
-       buffers whose `erc-mode-hook' has already run when this file is
-       loaded.
-       Explicitly `require' erc.el.
-
-2005-01-22  Edward O'Connor  <address@hidden>
-       
-       * erc.el (erc-mode): Remove frobbing of `require-final-newline'.
-
-       * erc-log.el (erc-save-buffer-in-logs): Remove frobbing of
-       `require-final-newline'.
-
-       * erc-viper.el: New file. This is where all ERC/Viper
-       compatibility code should live. When and if ERC is bundled with
-       Emacs, some of the hacks in this file should be merged into Viper
-       itself.
-
-2005-01-21  Edward O'Connor  <address@hidden>
-       
-       * erc.el (erc-mode): Set `require-final-newline' to nil in ERC
-       buffers. This prevents a Viper misfeature whereby extraneous
-       newlines are inserted into the ERC buffer when switching between
-       viper states.
-
-       * erc-log.el (erc-save-buffer-in-logs): Bind `require-final-newline'
-       to t when calling `write-region' to ensure that further log
-       entries start on fresh lines.
-       
-2005-01-21  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-add-face): Reverted my change to the
-       order faces since it had the unwanted effect of putting the button
-       face after all others.
-       (erc-button-face-has-priority): Removed this variable as it is not
-       necessary anymore - it was used to compensate for the above
-       mentioned change.
-
-       * NEWS: Added the latest fixes.
-
-2005-01-20  Diane Murray  <address@hidden>
-
-       * erc-button.el, erc-match.el:
-       (erc-button-syntax-table, erc-match-syntax-table): Added \ as a
-       legal character for nicknames.
-
-       * erc-nets.el (erc-server-select): Fixed so that only networks
-       with servers found in `erc-server-alist' are available as choices.
-
-       * erc.el, erc-compat.el, erc-goodies.el:
-       (erc-replace-match-subexpression-in-string): New function.  Needed
-       because `replace-match' in XEmacs doesn't replace regular
-       expression subexpressions in strings, only in buffers.
-       (erc-seconds-to-string, erc-controls-interpret): Use the new
-       function.
-
-       * erc-button.el (erc-button-add-button): Use the `:button-face'
-       key combined with an `erc-mode' local `widget-button-face' set to
-       nil to get the widget overlay face suppressed in XEmacs.
-
-2005-01-19  Francis Litterio  <address@hidden>
-
-       * erc-button.el (erc-button-add-face): The face added by this
-       function is more important than the existing text's face, so we
-       now prepend erc-button-face to the list of existing faces when
-       adding a button.  To instead append erc-button-face to existing
-       faces, set variable `erc-button-face-has-priority' to nil.
-       (erc-button-face-has-priority): New variable to control how
-       erc-button-add-face adds erc-button-face to existing faces.
-       (erc-button-press-button): Silenced a byte-compiler warning about
-       too few arguments in a call to `error'.
-
-2005-01-19  Diane Murray  <address@hidden>
-
-       * NEWS: Added list of 5.0.1 fixes.
-
-2005-01-19  Michael Olson  <address@hidden>
-
-       * AUTHORS: Move to format that cscvs can understand.  As an added
-       perk, entries line up nicer.
-
-       * erc.el, erc-fill.el, erc-pcomplete.el, debian/copyright: Merge a
-       few more copyright lines thanks to Alex Schroeder's BBDB file.
-
-       * Makefile: Change version to correspond with our new scheme.
-
-2005-01-18  Diane Murray  <address@hidden>
-
-       * erc-list.el (erc-chanlist-channel-line-regexp): Now matches
-       private channels, the channels `#' and `&', and channels with
-       names including non-ascii characters.
-       (erc-chanlist-join-channel): Don't attempt to join private
-       channels since the channel name is unknown.
-
-       * erc-goodies.el (erc-make-read-only): Add `rear-nonsticky'
-       property to avoid `Text is read-only' errors during connection.
-       `front-nonsticky' does not exist, changed to `front-sticky'.
-       (erc-controls-interpret, erc-controls-strip): Just work on the
-       string, don't open a temporary buffer.
-       (erc-controls-propertize): Now accepts optional argument STR.
-
-2005-01-17  Michael Olson  <address@hidden>
-
-       * Makefile: Version is 5.01, but only in the Makefile.  It has not
-       been released yet.
-
-       * erc-auto.in, erc-autojoin.el, erc-bbdb.el, erc-button.el,
-       erc-chess.el, erc-complete.el, erc-dcc.el, erc-fill.el,
-       erc-goodies.el, erc-ibuffer.el, erc-identd.el, erc-imenu.el,
-       erc-list.el, erc-match.el, erc-menu.el, erc-nets.el,
-       erc-netsplit.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el,
-       erc-ring.el, erc-speak.el, erc-speedbar.el, erc-stamp.el,
-       erc-track.el, erc-xdcc.el, erc.el, debian/copyright: Update
-       copyright notices.  If anyone has signed papers for Emacs in
-       general, merge them with the FSF's entry.
-
-2005-01-16  Diane Murray  <address@hidden>
-
-       * erc.el (erc): `erc-set-active-buffer' was being called before
-       `erc-process' was set, so that channels weren't being marked
-       active correctly upon join; fixed.
-
-2005-01-15  Johan Bockgård  <address@hidden>
-
-       * erc-backend.el (def-edebug-spec): This macro caused problems (in
-       XEmacs). Use its expansion directly.
-
-2005-01-15  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-add-button): Reverted previous change
-       since `:suppress-face' doesn't seem to be checked for a certain
-       face.
-       (erc-button-add-face): FACE is now appended to the `old' face.
-       This should fix the problem of faces being "covered" by
-       `erc-button-face'.
-
-2005-01-14  Diane Murray  <address@hidden>
-
-       * erc.el, erc-backend.el (erc-cmd-OPS, erc-cmd-COUNTRY,
-       erc-cmd-NICK, erc-process-ctcp-query, ERROR, PONG, 311, 312, 313,
-       314, 317, 319, 320, 321, 322, 330, 352): Use catalog entries
-       instead of hard-coded text messages.
-       (english): Added new catalog entries `country', `country-unknown',
-       `ctcp-empty', `ctcp-request-to', `ctcp-too-many', `nick-too-long',
-       `ops', `ops-none', `ERROR', `PONG', `s311', `s312', `s313',
-       `s314', `s317', `s317-on-since', `s319', `s320', `s321', `s322',
-       `s330', and `s352'.
-       (erc-send-current-line): Use `erc-set-active-buffer' (change was
-       lost in previous bug fix).
-
-2005-01-14  Francis Litterio  <address@hidden>
-
-       * erc-button.el (erc-button-add-button): Fixed a bug where the
-       overlay created by widget-convert-button has a `face' property
-       that hides the `face' property set on the underlying button text.
-
-       * erc-goodies.el: Docstring fix.
-
-       * erc-button.el: Improved docstring for variable erc-button-face.
-
-2005-01-13  Diane Murray  <address@hidden>
-
-       * erc-menu.el (erc-menu-definition): "Topic set by channel
-       operator": Small word change.  "Identify to NickServ...": Check
-       that we're connected to the server.  Added "Save buffer in log"
-       and "Truncate buffer".
-
-2005-01-13  Lawrence Mitchell  <address@hidden>
-
-       * erc.el (erc-display-line-1): Widen before we try to insert
-       anything, this makes sure input isn't broken when the buffer is
-       narrowed by the user.
-       (erc-beg-of-input-line): Simplify, just return the position of
-       `erc-insert-marker' or error if does not exist.
-       (erc-send-current-line): Widen before trying to send anything.
-
-2005-01-13  Diane Murray  <address@hidden>
-
-       * erc.el, erc-backend.el, erc-list.el:
-       (erc-update-mode-line-buffer): Strip controls characters from
-       `channel-topic' since we add our own control character to it.
-       (TOPIC, 332): Use \C-o instead of \C-c to force an end of IRC
-       control characters as it also ends bold, underline, and inverse -
-       \C-c only ends colors.
-       (erc-chanlist-322): Strip control characters from channel and
-       topic.  No need to interpret controls when we're applying overlays
-       to the lines.
-
-       * erc.el, erc-backend.el, erc-button.el, erc-netsplit.el,
-       erc-nicklist.el: Fixed so that each server has an active buffer.
-       (erc-active-buffer): Now a buffer-local variable.
-       (erc-active-buffer, erc-set-active-buffer): New functions.
-       (erc-display-line, erc-echo-notice-in-active-non-server-buffer,
-       erc-process-away, MODE): Call `erc-active-buffer' to get the
-       active buffer for the current server.
-       (erc, erc-process-sentinel-1, erc-grab-region, erc-input-action,
-       erc-send-current-line, erc-invite-only-mode,
-       erc-toggle-channel-mode, erc-channel-names, MODE, erc-nick-popup,
-       erc-nicklist-call-erc-command): Use `erc-set-active-buffer' to set
-       the active buffer for the current server.
-       (erc-cmd-WHOLEFT): Use 'active as BUFFER in `erc-display-message'.
-
-       * erc-track.el (erc-track-modified-channels): Server buffers are
-       now treated the same as channels and queries.  This means that
-       `erc-track-priority-faces-only', `erc-track-exclude', and
-       `erc-track-exclude-types' now work with server buffers.
-
-2005-01-12  Diane Murray  <address@hidden>
-
-       * erc-backend.el (475): Prompt for the channel's key if
-       `erc-prompt-for-channel-key' is non-nil.  Send a new JOIN message
-       with the key if a key is provided.
-
-       * erc.el (erc-command-indicator): Fixed customization choices so
-       that there's no `mismatch' message when nil is the value.
-
-2005-01-11  Michael Olson  <address@hidden>
-
-       * erc-bbdb.el (bbdb): Lowercase the name of the module.  This
-       fixes a bug which caused an error to occur when trying to enable
-       the module using the customization interface.
-
-2005-01-08  Edward O'Connor  <address@hidden>
-
-       * erc-track.el: Support using faces to indicate channel activity
-       in the modeline under XEmacs.
-       (erc-modified-channels-object): New function.
-       (erc-modified-channels-display): Use it.
-       `erc-modified-channels-string' renamed to
-       `erc-modified-channels-object' (because it's no longer a string on
-       XEmacs). The new function `erc-modified-channels-object' is used
-       to generate updated values for the same-named variable.
-
-2005-01-08  Diane Murray  <address@hidden>
-
-       * ChangeLog.2002: Changed instances of my sourceforge username and
-       email address to real name and email.
-
-       * erc.el (erc-modules): Changed customization tag descriptions, so
-       that they all start with a verb; added new modules to choices.
-
-2005-01-08  Mario Lang  <address@hidden>
-
-       * debian/rules: Introduce new variable DOCDIR to simplify stuff a
-       bit.
-
-2005-01-08  Michael Olson  <address@hidden>
-
-       * AUTHORS, ChangeLog.2004: Change bpalmer's email address as
-       requested.
-
-       * CREDITS: Add everyone who is mentioned in the ChangeLogs.
-
-       * debian/copyright (Copyright): Add last few people.  This can now
-       be considered a complete list, as far as CVS entries are
-       concerned.  If people have assigned copyright to the FSF, merge
-       them with the entry for the FSF.
-
-       * debian/README.Debian: Add entry for XEmacs-related change in
-       `erc-track.el'.
-
-       * erc.el (erc-cmd-MODE): New command that changes or displays the
-       mode for a channel or user.  The functionality was present before
-       this change, but there was no documentation for it.
-
-       * erc-auto.in, erc-*.el: Fully investigate copyright headers and
-       change them appropriately.  If a file has been pulled off of
-       erc.el at one time, keep track of copyright from the time of
-       separation, but not before.  If a file has been derived from a
-       work outside of erc, keep copyright statements in place.
-
-       * Makefile (VERSION): Change to 5.0! :^) Congrats on all the great
-       work.  I'll wait until hober commits his XEmacs compatibility
-       patch to erc-track.el, and then release.
-       (distclean): Alias for `realclean' target.
-
-2005-01-07  Michael Olson  <address@hidden>
-
-       * AUTHORS: Add Marcelo Toledo, who has CVS access to this project.
-
-       * ChangeLog.2004: Add my name to my one contribution to erc last
-       year.
-
-       * CREDITS: Add people that were discovered while scouring
-       ChangeLogs.
-
-       * debian/copyright: Add everyone from `AUTHORS' to Upstream
-       Authors.  Anyone who has contributed 15 or more lines of
-       code (according to ChangeLogs) is listed in Copyright section.
-       Accurate years are included.
-
-       * debian/README.Debian: Paste content of NEWS and reformat
-       slightly.
-
-       * debian/rules: Concatenate the ChangeLogs during the Debian
-       install process and then gzip them.
-
-       * Makefile (MISC): Add ChangeLog.yyyy files to list.
-       (ChangeLog): Remove rule since we do not dynamically generate the
-       ChangeLog anymore.
-
-       * MkChangeLog: Removed since we do not use it to generate the
-       ChangeLog anymore.  cvs2cl does a much better job anyway.
-
-       * NEWS: Use 3rd level heading instead of bullets for lists that
-       contain descriptions.
-
-2005-01-07  Diane Murray  <address@hidden>
-
-       * erc-list.el: Require 'sort.
-       (erc-chanlist): Disable undo in the channel list buffer.
-
-       * erc.el, erc-menu.el: The `IRC' menu is now automatically added
-       to the menu-bar.  Add the call to `easy-menu-add' to
-       `erc-mode-hook' when running in XEmacs (without this the menu
-       doesn't appear).
-
-       * NEWS: Added the information from
-       http://emacswiki.org/cgi-bin/wiki/ErcCvsFeatures and the newer
-       changes which weren't yet documented on that page.
-
-2005-01-06  Hoan Ton-That  <address@hidden>
-
-       * erc-log.el (erc-current-logfile): Only downcase the logfile
-       name, not the whole filename.  Also expand relative to
-       `erc-log-channels-directory'.
-       (erc-generate-log-file-name-with-date)
-       (erc-generate-log-file-name-short)
-       (erc-generate-log-file-name-long): Don't expand filename, done in
-       `erc-current-logfile'.
-
-2005-01-06  Lawrence Mitchell  <address@hidden>
-
-       * NEWS: New file, details user visible changes from version to
-       version.
-
-       * HACKING (NEWS entries): Mention NEWS file, and what its purpose
-       is.
-
-2005-01-05  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE: New file containing the list of release-critical
-       tasks.  Feel free to add to it.
-
-       * debian/rules (binary-erc): Add ChangeLog files.
-
-2005-01-04  Michael Olson  <address@hidden>
-
-       * ChangeLog.2001, ChangeLog.2002, ChangeLog.2003, ChangeLog.2004:
-       ChangeLog entries from previous years.
-
-       * ChangeLog: New file containing ChangeLog entries for the current
-       year.  Please update this file manually whenever a change is
-       committed.  This is a new policy.
-
-       * AUTHORS: Add myself to list.  Some entries were space-delimited
-       instead of TAB-delimited, and since the latter seemed to be the
-       default, make the other entries conform.
-
-       * HACKING (ChangeLog Entries): Update section to reflect new
-       policy toward ChangeLog entries, which is that they should be
-       manually updated whenever a change is committed.
-
-2005-01-04  Diane Murray  <address@hidden>
-
-       * erc.el (erc-connection-established, erc-login): Update the
-       mode-line.
-       (erc-update-mode-line-buffer): If `erc-current-nick' returns nil,
-       use an empty string for ?n character in format spec.  Set
-       `mode-line-process' to ":connecting" while the connection is being
-       established.
-
-2005-01-04  Lawrence Mitchell  <address@hidden>
-
-       * AUTHORS: Update list of authors.
-
-2005-01-02  Diane Murray  <address@hidden>
-
-       * erc-goodies.el (erc-control-characters): New customization
-       group.
-       (erc-interpret-controls-p): Small fix, addition to
-       documentation. Updated customization to allow 'remove as a value.
-       Use 'erc-control-characters as `:group'.
-       (erc-interpret-mirc-color): Use 'erc-control-characters as
-       `:group'.
-       (erc-beep-p): Updated documentation.  Use 'erc-control-characters
-       as `:group'.
-       (define-erc-module irccontrols): Add `erc-controls-highlight' to
-       `erc-insert-modify-hook' and `erc-send-modify-hook' since it
-       changes the text's appearance.
-       (erc-controls-remove-regexp, erc-controls-interpret-regexp): New
-       variables.
-       (erc-controls-highlight): Fixed so that highlighting works even if
-       there is no following control character.  Fixed mirc color
-       highlighting; now respecting `erc-interpret-mirc-color'.  Fixed a
-       bug where emacs would get stuck in a loop when \C-g was in a
-       message and `erc-beep-p' was set to nil (default setting).
-
-See ChangeLog.04 for earlier changes.
-
-       Copyright (C) 2005-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; End:
-
diff --git a/lisp/erc/ChangeLog.06 b/lisp/erc/ChangeLog.06
deleted file mode 100644
index 04358af..0000000
--- a/lisp/erc/ChangeLog.06
+++ /dev/null
@@ -1,1454 +0,0 @@
-2006-12-28  Michael Olson  <address@hidden>
-
-       * erc-list.el: Change header to mention that this is part of ERC,
-       rather than GNU Emacs.
-
-       * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
-       LinuxChix networks.  Thanks to Angelina Carlton for mentioning
-       them.  Properly escape periods in Konfido.Net and Kewl.Org.
-       (erc-networks-alist): Add entries for Ars and LinuxChix, though
-       the latter does not actually provide an announced network name.
-
-       * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
-       which waits for a NickServ message if the network supports it,
-       otherwise sends the password after connecting.
-       (erc-nickserv-identify-mode): Default to 'both.
-       (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
-       (erc-nickserv-alist): Indentation fix.
-       (erc-nickserv-identify-on-connect)
-       (erc-nickserv-identify-on-nick-change): Handle 'both method.
-
-2006-12-28  Leo Liu  <address@hidden>  (tiny change)
-
-       * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
-       hitting C-g does not leave iswitchb-mode on.
-
-2006-12-27  Michael Olson  <address@hidden>
-
-       * erc.el (erc-cmd-RECONNECT): New command that calls
-       erc-server-reconnect.
-
-       * erc-backend.el (erc-server-reconnect-count): New server variable
-       that keeps track of reconnection attempts.
-       (erc-server-reconnect-attempts): New option that determines the
-       number of reconnection attempts that ERC will make per server.
-       (erc-server-reconnect-timeout): New option that determines the
-       amount of time, in seconds, that ERC will wait between successive
-       reconnect attempts.
-       (erc-server-reconnect): New function that reestablishes the
-       current IRC connection.  Move some commands from
-       erc-process-sentinel-1 here.
-       (erc-process-sentinel-1): If we have been disconnected, loop until
-       we either reconnect or run out of attempts.
-       (erc-server-reconnect-p): Move higher and make this a defsubst,
-       since I'm worried about the current buffer changing from
-       underneath us.  Implement limit of number of reconnect attempts..
-
-       * erc.texi (Getting Started): Update for /RECONNECT command.
-
-2006-12-26  Michael Olson  <address@hidden>
-
-       * erc.el (erc-open): Restore old point correctly, or at least get
-       closer to doing so than before.
-
-2006-12-13  Leo Liu  <address@hidden>  (tiny change)
-
-       * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
-       isn't active already, instead of leaving it on.
-
-2006-12-10  Juanma Barranquero  <address@hidden>
-
-       * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
-
-2006-12-08  Michael Olson  <address@hidden>
-
-       * erc.el: Re-evaluate contributions from a contributor, and found
-       them under 15 lines of non-obvious code, so it is safe to remove
-       the copyright notice.
-       (erc-modules): Remove list module.
-
-       * erc-list.el: Remove, since a contributor who has not completed
-       their assignment has contributed significantly more than 15 lines
-       of code to this file.
-
-2006-11-28  Juanma Barranquero  <address@hidden>
-
-       * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
-       (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
-       (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
-       (erc-modules, erc-display-message-highlight, erc-process-input-line)
-       (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
-       (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
-       (erc-echo-notice-in-first-user-buffer, erc-connection-established)
-       (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
-       (erc-command-symbol, erc-add-query, erc-process-script-line)
-       (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
-       (erc-script-echo): Fix typos in docstrings.
-       (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
-       (define-erc-module, erc-once-with-server-event)
-       (erc-once-with-server-event-global, erc-debug-irc-protocol)
-       (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
-       (erc-update-current-channel-member, erc-load-script):
-       (erc-mode-line-away-status-format): Doc fixes.
-
-2006-11-20  Andrea Russo  <address@hidden>  (tiny change)
-
-       * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
-       before calling `erc-display-prompt'.
-
-2006-11-24  Juanma Barranquero  <address@hidden>
-
-       * erc.el (erc-after-connect, erc-open-ssl-stream)
-       (erc-display-line-1, erc-display-line):
-       * erc-backend.el (005): Fix space/tab mixup in docstrings.
-
-2006-11-20  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Call this Version 5.2 stable
-       pre-release, since it diverges slightly from our 5.2 branch, in
-       that unstable features are not included.
-       (erc-update-modules): Display better error message when module not
-       found.
-
-2006-11-12  Michael Olson  <address@hidden>
-
-       * erc-log.el: Save all log buffers when Emacs exits, in case
-       someone ignores the warning about open processes.  Remove the
-       advice code in the commentary.
-       (erc-save-query-buffers): Docfix.
-       (erc-log-save-all-buffers): New function that saves all ERC
-       buffers to logs.
-       (erc-current-logfile): Fix bug in filename selection, where the
-       current buffer was erroneously being preferred over the given
-       buffer.
-
-2006-11-08  Michael Olson  <address@hidden>
-
-       * erc.el (erc-string-to-port): Avoid error when a numerical port
-       is passed.  Thanks to Zekeriya KOÇ for the report.
-
-2006-11-08  Łukasz Demianiuk  <address@hidden>  (tiny change)
-
-       * erc.el (erc-header-line): Fix typo.
-
-2006-11-06  Juanma Barranquero  <address@hidden>
-
-       * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
-
-       * erc.el (read-passwd):
-       * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
-       * erc-truncate.el (truncate): Fix typo in docstring.
-
-2006-10-21  Michael Olson  <address@hidden>
-
-       * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
-       first loading iswitchb.  Thanks to Leo for the report.
-
-2006-10-10  Michael Olson  <address@hidden>
-
-       * erc.el (erc-default-port): Make the default be 6667 instead of
-       ircd. since Mac OS X apparently has problems with looking up that
-       port name.
-
-       * erc-backend.el (353): Receive names after displaying the initial
-       message, instead of before.
-
-2006-10-05  Diane Murray  <address@hidden>
-
-       * erc.el (erc-my-nick-face): New face.
-       (erc): Use FULL-NAME argument, not `erc-user-full-name'.  This
-       fixes a bug where the :full-name argument passed to the function
-       was not respected.
-       (erc-format-my-nick): Use `erc-my-nick-face'.  This should help
-       make it easier to find messages you sent in conversations when
-       `erc-show-my-nick' is non-nil.
-       (erc-compute-server): Doc fix.
-
-2006-10-01  John J Foerch  <address@hidden>  (tiny change)
-
-       * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
-       from the erc-timestamp field.
-
-2006-09-11  Michael Olson  <address@hidden>
-
-       * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
-       parenthesis.  Thanks to Stephan Stahl for the report.
-
-2006-09-10  Eric Hanchrow  <address@hidden>
-
-       * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
-       instead of a single user.
-
-2006-09-10  Michael Olson  <address@hidden>
-
-       * erc.el (erc-generate-new-buffer-name): If this is a server
-       buffer and a process exists already, create a new buffer.
-       (erc-open): If the IRC session was continued, restore the old
-       point.  Thanks to Stephan Stahl for the report.
-       (erc-member-ignore-case): Coding style tweak.
-       (erc-cmd-UNIGNORE): Quote the user before comparison.  If we don't
-       find the user listed verbatim, try to match them against the list
-       using string-match.  In this case, prompt as to whether the regexp
-       should be removed.
-       (erc-ignored-user-p): Remove CL-ism.
-
-       * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
-       whether we are already away.
-
-       * erc-menu.el: Fix potential compiler warning.
-
-2006-09-07  Diane Murray  <address@hidden>
-
-       * erc.el: Updated Commentary and URL.
-       (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
-       (erc-arrange-session-in-multiple-windows): No need to check if
-       `erc-server-process' is bound.
-       (erc-server-buffer-live-p): Doc fix.
-       (erc-part-from-channel): Don't use any initial contents at prompt.
-       (erc-format-nick, address@hidden): Doc fix.  Use `when'.
-       (s367): Fixed to support only banmask and channel which is the
-       standard.  Also, there's no reason to add a message to each banned
-       user entry trying to persuade the user to use /banlist instead of
-       /mode #channel +b.  That part of the message was a little
-       confusing, anyways.
-       (s367-set-by): New catalog entry.  The user who set the ban and
-       the time of ban seem to be specific to only certain servers such
-       as freenode.
-
-       * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
-
-       * erc-backend.el (erc-server-process-alive): No need to check if
-       `erc-server-process' is bound.
-       (367): Use s367 or s367-set-by where appropriate.
-
-       * erc-compat.el: Fixed URL.
-
-       * erc-dcc.el: Updated copyright years.  Added Usage section.
-       Changed supported Emacs version number from 21.3.50 to 22 in
-       Commentary.
-
-       * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
-       to check if `erc-server-process' is bound.
-
-       * erc-nicklist.el: Added to the Commentary section an explanation
-       that `erc-nicklist-quit' should be called from within the nicklist
-       buffer.  Set file coding to utf-8 so a contributor's name is
-       displayed correctly.
-       (erc-nicklist-icons-directory): Use customize type directory
-       instead of string.
-       (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
-       if it wasn't found.  This fixes a bug where an error would occur
-       when using `string=' on bbdb-nick if it was nil.
-
-       * erc-replace.el: Removed URL from file information since it
-       doesn't exist.
-
-       * erc-sound.el: Updated copyright years.  Fixed Commentary and
-       added Usage section.
-       (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
-       `erc-ctcp-query-SOUND-hook' here.  Removed the keybinding
-       definitions.
-       (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
-       (erc-ctcp-query-SOUND): Doc fix.
-       (erc-play-command): Removed, not necessary anymore.
-       (erc-ctcp-query-SOUND-hook): Set to nil as default.  Moved up
-       higher in code, added docstring.
-       (erc-play-sound): Use `play-sound-file'.  It exists in GNU Emacs
-       as well since version 21 or earlier.  Removed commented-out older
-       version of function.
-
-       * NEWS: Fixed formatting, added channel tracking change.
-
-2006-09-03  Diane Murray  <address@hidden>
-
-       * erc.el: M-x erc RET can now be used to start ERC.
-       (erc-open): Renamed from `erc'.
-       (erc-before-connect): Change erc-select to erc.
-       (erc): Renamed from `erc-select'.  Use `erc-open'.
-       (erc-select): Defined as alias of `erc'.
-       (erc-ssl): Renamed from `erc-select-ssl'.  Use `erc'.
-       (erc-select-ssl): Defined as alias of `erc-ssl'.
-       (erc-cmd-SERVER): Use `erc'.
-       (erc-query, erc-handle-irc-url): Use `erc-open'.
-
-       * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
-
-       * erc-menu.el (erc-menu-definition): Use `erc'.
-
-       * erc-networks.el: Updated copyright years.
-       (erc-server-select): Use keyword arguments when calling `erc'.
-
-       * erc.texi (Getting Started, Connecting): Changed erc-select to
-       erc.
-
-       * README: Changed erc-select to erc.
-
-       * NEWS: Added note about these changes.
-
-       * FOR-RELEASE: Marked this item as done.
-
-2006-08-21  Diane Murray  <address@hidden>
-
-       * erc-track.el (erc-track-mode-line-mouse-face): New variable.
-       (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
-       properties to channel name.
-
-2006-08-20  Michael Olson  <address@hidden>
-
-       * erc-identd.el (erc-identd): New customization group.
-       (erc-identd-port): New option that specifies the port to use if
-       none is given as an argument to erc-identd-start.
-       (identd): Place erc-identd-quickstart in erc-connect-pre-hook
-       instead of erc-identd-start so that we deal with the different
-       meaning of the first argument.
-       (erc-identd-start): Use erc-identd-port.
-       (erc-identd-quickstart): New function that ignores any arguments
-       and calls erc-identd-start.
-
-       * erc.el (erc-with-server-buffer): New macro that switches to the
-       current ERC server buffer and runs some code.  If no server buffer
-       is available, return nil.  This is a useful way to access
-       variables in the server buffer.
-       (erc-get-server-user, erc-add-server-user)
-       (erc-remove-server-user, erc-change-user-nickname)
-       (erc-get-server-nickname-list, erc-get-server-nickname-alist)
-       (erc-ison-p, erc-active-buffer, erc-cmd-IGNORE)
-       (erc-cmd-UNIGNORE, erc-cmd-IDLE, erc-cmd-NICK, erc-cmd-BANLIST)
-       (erc-cmd-MASSUNBAN, erc-nickname-in-use, erc-ignored-user-p)
-       (erc-format-channel-modes): Use it.
-       (erc-once-with-server-event, erc-once-with-server-event-global)
-       (erc-with-buffer, erc-with-all-buffers-of-server): Use make-symbol
-       instead of gensym.
-       (erc-open-server-buffer-p): New function that returns non-nil if
-       the given buffer is an ERC server buffer that has an open IRC
-       process.
-       (erc-with-buffer): Use buffer-live-p here to set a good example,
-       though it isn't really needed here.
-       (erc-away): Mention erc-away-time.
-       (erc): Don't propagate the erc-away setting, since it makes more
-       sense to access it from the server buffer.  Set up the prompt
-       before connecting rather than after.  Run erc-connect-pre-hook
-       with the buffer as an argument, instead of no arguments.
-       (erc-cmd-GAWAY): Use erc-open-server-buffer-p instead of
-       erc-server-buffer-p so that only open connections are set away.
-       (erc-cmd-GQUIT): Use erc-open-server-buffer-p.
-       (erc-process-away): Docfix.  Don't set erc-away in channel
-       buffers.
-       (erc-set-current-nick): Make this uniform with the style used in
-       erc-current-nick.
-       (erc-away-time): Rename from erc-away-p, since this is no longer a
-       boolean-style predicate.
-       (erc-format-away-status): Use it.
-       (erc-initialize-log-marker): Accept a `buffer' argument.
-       (erc-connect-pre-hook): Docfix.
-       (erc-connection-established): Make sure this runs in the correct
-       buffer.
-       (erc-set-initial-user-mode): Accept a `buffer' argument.
-
-       * erc-stamp.el (erc-add-timestamp): Use erc-away-time.
-
-       * erc-spelling.el (erc-spelling-init): Use
-       erc-with-server-buffer.  Accept `buffer' argument.
-       (spelling): Call erc-spelling-init with the `buffer' argument.
-
-       * erc-speedbar.el (erc-speedbar-buttons): Use erc-server-buffer-p.
-
-       * erc-pcomplete.el (pcomplete/erc-mode/UNIGNORE)
-       (pcomplete-erc-all-nicks): Use erc-with-server-buffer.
-
-       * erc-notify.el (erc-notify-timer, erc-cmd-NOTIFY): Use
-       erc-with-server-buffer.
-
-       * erc-networks.el (erc-network, erc-current-network)
-       (erc-network-name): Use erc-with-server-buffer.
-
-       * erc-netsplit.el (erc-cmd-WHOLEFT): Use erc-with-server-buffer.
-
-       * erc-match.el (erc-log-matches, erc-log-matches-come-back): Use
-       erc-away-time.
-
-       * erc-log.el (log): Use erc-away-time.  Remove unnecessary check.
-       Pass `buffer' argument to erc-log-setup-logging instead of setting
-       the current buffer.  Ditto for erc-log-disable-logging.
-       (erc-log-setup-logging, erc-log-disable-logging): Accept a `buffer'
-       argument.
-
-       * erc-list.el (erc-chanlist): Use erc-with-server-buffer.
-
-       * erc-ibuffer.el (erc-away): Use erc-away-time.
-
-       * erc-dcc.el (erc-dcc-get-filter): Temporarily make the buffer
-       read only instead of permanently doing so.
-
-       * erc-compat.el (erc-gensym, *erc-sym-counter*): Remove, since
-       Emacs Lisp has make-symbol, which is better.
-
-       * erc-chess.el (erc-chess-handler, erc-cmd-CHESS): Use
-       erc-with-server-buffer.
-
-       * erc-capab.el (capab-identify): Only deal with server buffers
-       that have an open IRC process.
-       (erc-capab-identify-add-prefix): Use erc-with-server-buffer.
-
-       * erc-backend.el (erc-server-connected): Docfix.  Recommend the
-       `erc-server-process-alive' function.
-       (erc-coding-system-for-target): Supply a default target if one is
-       not given.
-       (erc-server-send): Simplify slightly.
-       (erc-call-hooks): Use erc-with-server-buffer.
-       (erc-server-connect, erc-server-setup-periodical-ping): Accept
-       `buffer' argument.
-
-       * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move
-       higher to avoid an automatic load snafu.
-       (erc-autoaway-some-server-buffer): New function that returns an
-       ERC server buffer with a live connection, or nil otherwise.
-       (erc-autoaway-insinuate-maybe): New function that adds the
-       autoaway reset function to post-command-hook if at least one ERC
-       process is alive.
-       (erc-autoaway-remove-maybe): New function that removes the
-       autoaway reset function from post-command-hook if no ERC process
-       is alive.
-       (autoaway): Don't touch post-command-hook unless an IRC process is
-       already open.  Remove our addition to post-command-hook as soon as
-       there are no more IRC processes open.  Reset the indicators before
-       connecting to an IRC server, which fixes a bug when re-connecting.
-       (erc-autoaway-reset-idle-user): Call erc-autoaway-remove-maybe if
-       there are no more IRC processes open.
-       (erc-autoaway-set-back): Pick an open IRC process.  Accept an
-       argument which is a function call if we can't find one.
-       (erc-autoaway-some-open-server-buffer): New function which returns
-       an ERC server buffer with an open connection and a user that is
-       not away.
-       (erc-autoaway-possibly-set-away, erc-autoaway-set-away): Use it.
-       (erc-autoaway-set-away): Accept a `notest' argument which is used
-       to avoid testing the same thing twice.
-       (erc-autoaway-last-sent-time, erc-autoaway-caused-away): Move
-       higher in file to fix byte-compile warning.
-
-2006-08-20  Diane Murray  <address@hidden>
-
-       * erc-backend.el (erc-process-sentinel-1): Doc fix.  Let
-       `erc-server-reconnect-p' check all condition cases.
-       (erc-server-reconnect-p): Moved rest of checks from
-       `erc-process-sentinel-1' to here.  Now takes an argument, EVENT.
-
-2006-08-14  Diane Murray  <address@hidden>
-
-       * erc-menu.el: Updated copyright years.  Removed EmacsWiki URL.
-       (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
-       avoid confusion with rcirc and other clients.
-
-       * erc-backend.el (erc-server-banned): New variable.
-       (erc-server-connect): Set `erc-server-banned' to nil.
-       (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
-       (erc-server-reconnect-p): New function.  Return non-nil if the
-       user wants automatic reconnects and if the user has not been
-       banned from the server.  This should fix a bug where ERC gets into
-       a loop trying to reconnect with no way to stop it when the user is
-       denied access to the server due to a server ban.  It might also
-       help when Tor users are blocked from freenode if freenode servers
-       send the 465 message before disconnecting.
-       (465): Handle "banned from server" error notices.
-
-2006-08-13  Romain Francoise  <address@hidden>
-
-       * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
-       prompt with a space.
-
-2006-08-13  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-timed-out): New variable that
-       indicates whether the current connection has timed out due to
-       failure to respond to a ping.
-       (erc-server-send-ping): Set erc-server-timed-out to t.
-       (erc-server-connect): Initialize erc-server-timed-out to nil.
-       (erc-process-sentinel-1): Consult erc-server-timed-out.
-
-2006-08-11  Michael Olson  <address@hidden>
-
-       * erc-fill.el (erc-fill): Skip any initial empty lines so that we
-       avoid errors when inserting disconnect messages and other messages
-       that begin with newlines.
-
-2006-08-07  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
-       in several places instead of inserting text.
-       (erc-process-sentinel): Move to the input-marker before removing
-       the prompt.
-
-       * erc.el (erc-port): Fix customization options.
-       (erc-display-message): Handle null type explicitly.  Previously,
-       this was relying on a chance side-effect.  Cosmetic indentation
-       tweak.
-       (english): Add 'finished and 'terminated entries to the catalog.
-       Add initial and terminal newlines to 'disconnected and
-       'disconnected-noreconnect entries.  Avoid long lines.
-       (erc-cmd-QUIT): Bind the current erc-server-process to
-       server-proc.  If the IRC server responds quickly, it is possible
-       for the connection to close, and hence server buffer to be killed,
-       if erc-kill-server-buffer-on-quit is non-nil.  This avoids that
-       problem.
-
-2006-08-06  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-send-queue): Update from Circe
-       version of this function.
-       (erc-server-ping-timer-alist): New variable that keeps track of
-       ping timers according to their associated server.
-       (erc-server-last-received-time): New variable that specifies the
-       time of the last message we received from the server.  This is
-       used to detect hung processes.
-       (erc-server-send-ping): New function that sends a ping to the IRC
-       process corresponding with the given buffer.  Split from
-       erc-server-setup-periodical-ping.  If the server buffer no longer
-       exists, cancel the timer.  If the server process has not given us
-       a message, including PING responses, since the last PING, kill it.
-       This is necessary to deal with some aberrant freenode behavior.
-       Idea taken from rcirc.
-       (erc-server-setup-periodical-ping): Rename from
-       erc-server-setup-periodical-server-ping.
-       (erc-server-filter-function): Use erc-current-time instead of
-       current-time.
-
-       * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
-       multi-tty Emacs.
-       (erc-select-startup-file): Fix bug introduced by recent change.
-       (erc-cmd-QUIT): If the IRC process has not terminated itself
-       within 4 seconds of completing our quit-hook, kill it manually.
-       Freenode in particular needs this.
-       (erc-connection-established): Use erc-server-setup-periodical-ping
-       instead of erc-server-setup-periodical-server-ping.
-
-2006-08-05  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-log-standardize-name): New function that returns
-       a filename that is safe for use for a log file.
-       (erc-current-logfile): Use it.
-
-       * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
-       since that is a fairly standard directory.
-       (erc-select-startup-file): Re-write to use
-       convert-standard-filename, which will ensure that MS-DOS systems
-       look for the _ercrc.el file.
-
-2006-08-02  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Release ERC 5.1.4.
-
-       * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
-
-       * erc.el (erc-active-buffer): Fix bug that caused messages to go
-       to the wrong buffer.  Thanks to offby1 for the report.
-
-       * erc-backend.el (erc-coding-system-for-target): Handle case where
-       target is nil.  Thanks to Kai Fan for the patch.
-
-2006-07-29  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-log-setup-logging): Don't offer to save the
-       buffer.  It will be saved automatically killed.  Thanks to Johan
-       Bockgård and Tassilo Horn for pointing this out.
-
-2006-07-27  Johan Bockgård  <address@hidden>
-
-       * erc.el (define-erc-module): Make find-function and find-variable
-       find the names constructed by `define-erc-module' in Emacs 22.
-
-2006-07-14  Michael Olson  <address@hidden>
-
-       * erc-log.el (log): Make sure that we enable logging on
-       already-opened buffers as well, in case the user toggles this
-       module after loading ERC.  Also be sure to remove logging ability
-       from all ERC buffers when the module is disabled.
-       (erc-log-setup-logging): Set buffer-file-name to nil rather than
-       the empty string.  This should fix some errors that occur when
-       quitting Emacs without first killing all ERC buffers.
-       (erc-log-disable-logging): New function that removes the logging
-       ability from the current buffer.
-
-       * erc-spelling.el (spelling): Use dolist and buffer-live-p.
-
-2006-07-12  Michael Olson  <address@hidden>
-
-       * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
-       than call toggle-read-only.
-
-       * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
-       add autoload cookie.
-
-2006-07-09  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Release ERC 5.1.3.
-
-       * erc.texi: Update for the 5.1.3 release.
-
-       * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
-       from being set automatically away and current buffer is not an ERC
-       buffer.
-
-       * erc-identd.el: Fix compiler error.
-
-       * erc.texi (Development): Use @subheading instead of @subsection.
-       (Advanced Usage): Add menu.
-       (Connecting): Fully document how to connect to an IRC server.
-       (Options, Tips and Tricks, Sample Configuration): New unwritten
-       sections.
-
-       * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
-       (erc-user-full-name, erc-password): Docfixes and customization
-       interface tweaks.
-       (erc-try-new-nick-p): Rename from
-       `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
-       (erc-nickname-in-use): Use `erc-try-new-nick-p'.  Check the length
-       of `erc-nick-uniquifier', in case someone wants multiple
-       characters.
-       (erc-compute-server, erc-compute-nick, erc-compute-full-name)
-       (erc-compute-port): Docfixes.
-
-       * erc-log.el (log): Move all add-hook calls here, rather than
-       executing them immediately, and also cause them to be un-hooked
-       when the module is removed.
-       (erc-save-buffer-on-part): Move next to
-       `erc-save-queries-on-quit'.
-       (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
-       (erc-log-write-after-send, erc-log-write-after-insert): Default to
-       nil.  This makes things fast, but reasonably failsafe, by default.
-
-2006-07-08  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-log-insert-log-on-open): Make this nil by
-       default, since most IRC clients don't do this.
-       (erc-log-write-after-send): New option that determines whether the
-       log file will be written to after every sent message.
-       (erc-log-write-after-insert): New option that determines whether
-       the log file will be written to when new text is added to a logged
-       ERC buffer.
-       (log): Use the aforementioned options.
-
-       * erc.texi (Modules): Document the "completion" module.
-
-       * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
-       have a nil element in the list when ignore-self is non-nil.
-
-2006-07-05  Michael Olson  <address@hidden>
-
-       * erc.el (erc-modules): Use `set' instead of `set-default', since
-       this setting should never be buffer-local.  Add the `page' module
-       to the list.
-
-       * erc.texi (Modules): Add entries for `list' and `page' modules.
-       Change "spell" to "spelling".
-       (History): Use past tense throughout.
-
-2006-07-02  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
-       can happen when doing /PART.
-
-       * erc.el (erc-quit-reason-various-alist)
-       (erc-part-reason-various-alist): In the example, use "^$" as an
-       example, since "" matches anything.
-       (erc-quit-reason-various, erc-part-reason-various): If no argument
-       is given, and no matches are found, use our default reason instead
-       of "nil".
-
-2006-06-30  Michael Olson  <address@hidden>
-
-       * erc.texi (Modules): Mention identd.
-       (Releases): Update mailing list address and download location.
-       (Development): Refactor.  Provide updated directions for Arch.
-       Make URLs clickable.
-       (Keystroke Summary): Typo fix.  Use more Texinfo syntax.
-       (Getting Started): Give simpler example.  We do not need to
-       explicitly load every module.
-       (History): Update.
-
-       * erc-autoaway.el, erc-join.el, erc-backend.el, erc-bbdb.el:
-       erc-button.el, erc-chess.el, erc-compat.el, erc-hecomplete.el:
-       erc-dcc.el, erc-ezbounce.el, erc-fill.el, erc-ibuffer.el:
-       erc-imenu.el, erc-list.el, erc-log.el, erc-match.el, erc-menu.el:
-       erc-networks.el, erc-netsplit.el, erc-nicklist.el:
-       erc-services.el, erc-pcomplete.el, erc-replace.el, erc-ring.el:
-       erc-speedbar.el, erc-spelling.el, erc-stamp.el, erc-track.el:
-       erc.el: Remove version strings.
-
-       * erc.el (erc-cmd-SMV): Remove, since we do not have meaningful
-       module versions anymore.
-       (erc-version-modules): Remove, since we do not use this function
-       anymore.
-       (erc-latest-version, erc-ediff-latest-version): Remove, since this
-       was only useful back when ERC consisted of one file.
-       (erc-modules): Add line for identd.
-       (erc-get-channel-mode-from-keypress): Typo fix.
-
-       * erc-imenu.el: Remove unnecessary lines in header.
-
-       * erc-goodies.el (erc-handle-irc-url): Docfix.
-
-       * erc-identd.el: Define an ERC module for this.
-       (erc-identd-start): Don't create a process buffer if possible.
-       Otherwise, use conventional hidden names for process buffers.
-
-2006-06-29  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-coding-system-for-target): Match
-       case-insensitively.  Use a pattern match instead of `assoc', as
-       per the documentation for `erc-encoding-coding-alist'.
-
-       * erc-track.el (erc-track-shorten-aggressively): Fix typo.
-
-2006-06-27  Michael Olson  <address@hidden>
-
-       * erc.el: Update maintainer information and URLs.
-
-2006-06-14  Michael Olson  <address@hidden>
-
-       * erc.el (erc-active-buffer): If the active buffer has been
-       deleted, default to the server buffer.
-       (erc-toggle-flood-control): When the user hits C-c C-f, make flood
-       control really toggle, not unconditionally turn off.
-
-2006-06-12  Michael Olson  <address@hidden>
-
-       * NEWS: Add items since the 5.1.2 release.
-
-       * erc-autoaway.el (erc-autoaway-caused-away): New variable that
-       indicates whether the current away status was caused by this
-       module.
-       (erc-autoaway-set-back): Only set back if this module set the user
-       away.
-       (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
-       (erc-autoaway-reset-indicators): New function that resets some
-       indicators when the user is no longer away.
-       (autoaway): Add the above function to the 305 hook.
-
-2006-06-05  Romain Francoise  <address@hidden>
-
-       * erc.texi (History): Fix various typos.
-
-2006-06-04  Michael Olson  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-idle-method): Move after the
-       definition of the autoaway module.
-       (autoaway): Don't do anything if erc-autoaway-idle-method is
-       unbound.  This prevents an error on startup.
-
-2006-06-03  Michael Olson  <address@hidden>
-
-       * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
-       (erc-autoaway-idle-method): Renamed from
-       `erc-autoaway-use-emacs-idle'.  We have more than two choices for
-       how to do this, so it's best to make this take symbol values.
-       Improve documentation.  Remove warning against Emacs idle-time;
-       the point is moot now that we get user idle time via a different
-       method.  Make sure we disable and re-enable the module when
-       changing this value.
-       (autoaway): Conditionalize on the above option.  If using the idle
-       timer or user idle methods, don't add anything to the
-       send-completed or server-001 hooks, since it is unnecessary.
-       (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
-       Docfix.
-       (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
-       (erc-autoaway-reset-idle-irc): Renamed from
-       `erc-autoaway-reset-idle'.  Don't pass line to
-       `erc-autoaway-set-away', since it is not used.
-       (erc-autoaway-reset-idle-user): New function that resets the idle
-       state for user idle time.
-       (erc-autoaway-set-back): Remove line argument, since it is not
-       used.
-
-2006-06-01  Michael Olson  <address@hidden>
-
-       * erc.el (erc-buffer-filter): Make sure all buffers returned from
-       this are live.
-
-2006-05-01  Edward O'Connor  <address@hidden>
-
-       * erc-goodies.el (erc-handle-irc-url): New function, suitable as
-       a value for `url-irc-function'.
-
-2006-04-18  Diane Murray  <address@hidden>
-
-       * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
-       argument IGNORE-SELF.  If this is non-nil, don't return the user's
-       current nickname.  Doc fix.
-       (pcomplete/erc-mode/complete-command): Don't complete the current
-       nickname.
-
-2006-04-05  Diane Murray  <address@hidden>
-
-       * erc.el (erc-cmd-SV): Removed the exclamation point.  Show the
-       build date as it's shown in `emacs-version'.
-
-       * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
-       with the same face property as the previous character.
-
-2006-04-02  Michael Olson  <address@hidden>
-
-       * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
-       erc.el: Make sure to include a newline inside of negated classes,
-       so that a newline is not matched.
-
-2006-04-01  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-connect-function): Don't try to
-       detect the existence of the `open-network-stream-nowait' function,
-       since I can't find it in Emacs21, XEmacs21, or Emacs22.
-
-2006-03-27  Michael Olson  <address@hidden>
-
-       * erc.texi: Update direntry.  Remove unneeded local variables.
-
-2006-03-26  Michael Olson  <address@hidden>
-
-       * erc.el (erc-header-line): New face that will be used to colorize
-       the text of the header-line, provided that
-       `erc-header-line-face-method' is non-nil.
-       (erc-prompt-face): Fix formatting.
-       (erc-header-line-face-method): New option that determines the
-       method used for colorizing header-line text.  This may be a
-       function, nil, or non-nil.
-       (erc-update-mode-line-buffer): Use the aforementioned option and
-       face to colorize the header-line text, if that is what the user
-       wants.
-       (erc-send-input): If flood control is not activated, don't split
-       the input line.
-
-2006-03-25  Michael Olson  <address@hidden>
-
-       * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
-       that fixes the case where there is no leading whitespace.  Only
-       remove the first space character, though.
-
-       * erc-identd.el (erc-identd-start): Fix a bug by making sure that
-       erc-identd-process is set properly.
-       (erc-identd-start, erc-identd-stop): Add autoload cookies.
-       (erc-identd-start): Pass :host parameter so this works with Emacs
-       22.
-
-2006-03-09  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-keymap): Use <backtab> rather than
-       <C-tab> for `erc-button-previous' as it is a more standard key
-       binding for this type of function.
-
-2006-02-28  Diane Murray  <address@hidden>
-
-       * erc-capab.el: Removed things that were accidentally committed on
-       2006-02-20.  Removed Todo section.
-       (erc-capab-unidentified): Removed.
-
-2006-02-26  Michael Olson  <address@hidden>
-
-       * erc-capab.el: Use (eval-when-compile (require 'cl)).
-       (erc-capab-unidentified): Fix compiler warning by specifying
-       group.
-
-2006-02-20  Diane Murray  <address@hidden>
-
-       * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
-       to explain thoughts better.  `erc-server-parameters' is an
-       associated list when it's set, not a string.
-
-2006-02-19  Michael Olson  <address@hidden>
-
-       * erc-capab.el (erc-capab-send-identify-messages): Make sure some
-       parameters are strings before using them.  Thanks to Alejandro
-       Benitez for the report.
-
-       * erc.el (erc-version-string): Release ERC 5.1.2.
-
-2006-02-19  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
-       <C-tab>.
-       (erc-button-previous): New function.
-
-2006-02-15  Michael Olson  <address@hidden>
-
-       * NEWS: Add category for ERC 5.2.
-
-       * erc.el (erc): Move to the end of the buffer when a continued
-       session is detected.  Thanks to e1f and indio for the report and
-       testing a potential fix.
-
-2006-02-14  Michael Olson  <address@hidden>
-
-       * debian/changelog: Prepare a new Debian package.
-
-       * Makefile (debprepare): New rule that creates an ERC snapshot
-       directory for use in both new Debian releases and revisions for
-       Debian packages.
-       (debrelease, debrevision-mwolson): Use debprepare.
-
-       * NEWS: Bring up-to-date.
-
-       * erc-stamp.el (erc-insert-timestamp-right): For now, put
-       timestamps before rather than after erc-fill-column when
-       erc-timestamp-right-column is nil.  This way we won't surprise
-       anyone unpleasantly, or so it is hoped.
-
-2006-02-13  Michael Olson  <address@hidden>
-
-       * erc-dcc.el: Use (eval-when-compile (require 'cl)).
-
-2006-02-12  Michael Olson  <address@hidden>
-
-       * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
-       * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
-       * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
-       * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
-       * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
-       * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
-       * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
-       Add 2006 to copyright years, to comply with the changed guidelines.
-
-2006-02-11  Michael Olson  <address@hidden>
-
-       * erc.el (erc-update-modules): Handle erc-capab-identify
-       correctly.  Make some requirements shorter, so that it's easier to
-       see why they are needed.
-
-       * erc-capab.el: Add autoload cookie for capab-identify.
-       (erc-capab-send-identify-messages, erc-capab-identify-activate):
-       Minor whitespace fix in code.
-
-       * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
-       `erc-timestamp-right-align-by-pixel'.  Set the default based on
-       whether we are in Emacs 22, and using X.  Improve documentation.
-       (erc-insert-aligned): Remove calculation of offset, since
-       :align-to pos works after all.  Unlike the previous solution, this
-       one works when erc-stamp.el is compiled.
-       (erc-insert-timestamp-right): Don't add length of string, and then
-       later remove its displayed width.  This puts timestamps after
-       erc-fill-column when erc-timestamp-right-column is nil, rather
-       than before it.  It also fixes a subtle bug.  Remove use of
-       `current-window', since there is no variable by that name in
-       Emacs21, Emacs22, or XEmacs21 beta.  Check to see whether
-       `erc-fill-column' is non-nil before using it.
-
-2006-02-11  Diane Murray  <address@hidden>
-
-       * erc-list.el: Define `list' module which sets the alias
-       `erc-cmd-LIST' to `erc-list-channels' when enabled and
-       `erc-list-channels-simple' when disabled.
-       (erc-list-channels): Was `erc-cmd-LIST', renamed.
-       (erc-list-channels-simple): New function.
-
-       * erc.el (erc-modules): Added `list' to enabled modules.  Changed
-       `capab-identify' description.  Moved customization options left in
-       source code.
-
-       * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
-
-       * erc-capab.el: Put a little more detail into Usage section.
-       (define-erc-module): Run `erc-capab-identify-setup' in all open
-       server buffers when enabling.
-       (erc-capab-identify-setup): Make PROC and PARSED optional
-       arguments.
-       (erc-capab-identify-add-prefix): Simplified nickname regexp.  This
-       should now also match nicknames that are formatted differently
-       than the default.
-
-       * erc-spelling.el (define-erc-module): Make sure there's a buffer
-       before calling `with-current-buffer'.
-
-2006-02-10  Michael Olson  <address@hidden>
-
-       * Makefile (debbuild): Split from debrelease.
-       (debrevision-mwolson): New rule that causes a Debian revision to
-       be built.
-
-       * erc.el (erc-migrate-modules): Use a better algorithm.  Thanks to
-       Johan Bockgård.
-       (erc-modules): Change use of 'pcomplete to 'completion.
-
-2006-02-09  Diane Murray  <address@hidden>
-
-       * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
-       * erc-capab.el: Require erc.
-       (erc-capab-send-identify-messages): Use `erc-server-send'.
-       (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
-       the flags so we can also check whether the `erc-identified' text
-       property is there at all.
-       (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
-       This fixes a bug where the prefix wasn't inserted when timestamps
-       are inserted on the right.  Tweaked nickname regexp.
-       (erc-capab-find-parsed): New function.
-       (erc-capab-get-unidentified-nickname): Updated to check for 0
-       flag.  Only get nickname if there's a nickuserhost associated with
-       this message.
-
-       * erc-capab.el: New file.  Adds the new module
-       `erc-capab-identify', which allows flagging of unidentified users
-       on servers running an ircd based on dancer - irc.freenode.net, for
-       example.
-
-       * erc.el (erc-modules): Added `capab-identify' to options.
-       (erc-get-parsed-vector, erc-get-parsed-vector-nick)
-       (erc-get-parsed-vector-type): Moved here from erc-match.el.
-
-       * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
-       (erc-get-parsed-vector-type): Moved these functions to erc.el
-       since they can be useful outside of the text matching module.
-
-       * NEWS: Added erc-capab.el.
-
-       * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
-       to "ERC".
-
-2006-02-07  Michael Olson  <address@hidden>
-
-       * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
-       ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
-       the filenames in DOS.
-
-       * erc-goodies.el: Comment fix.
-
-       * erc-hecomplete.el: Rename from erc-complete.el.  Update
-       commentary.  Use define-erc-module so that it's possible to
-       actually use this.
-       (erc-hecomplete): Rename function from `erc-complete'.
-       (erc-hecomplete): Rename group from `erc-old-complete'.  Docfix.
-
-       * erc-join.el: Rename from erc-autojoin.el.
-
-       * erc-networks.el: Rename from erc-nets.el.
-
-       * erc-services.el: Rename from erc-nickserv.el.
-
-       * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument.  Use
-       the simpler `indent-to' function when
-       `erc-timestamp-right-align-by-pixel' is nil.
-       (erc-insert-timestamp-right): If the timestamp goes on the
-       following line, don't add timestamp properties to the spaces in
-       front of it.
-
-       * erc.el (erc-migrate-modules): New function that eases migration
-       of module names.
-       (erc-modules): Call erc-migrate-modules in the :get accessor.
-       (erc-modules, erc-update-modules): Update for new modules names.
-       (erc-cmd-SMV): Remove, since this does not give useful output due
-       to the version strings being removed from ERC modules.
-
-2006-02-05  Michael Olson  <address@hidden>
-
-       * erc-spelling.el (erc-spelling-init): If
-       `erc-spelling-dictionaries' is nil, do not set
-       ispell-local-dictionary.  Before, it was being set to nil, which
-       was causing a long delay while the ispell process restarted.
-       (erc-spelling-unhighlight-word): New function that removes
-       flyspell properties from a spell-checked word.
-       (erc-spelling-flyspell-verify): Don't spell-check nicks or words
-       that have '/' before them.
-
-2006-02-04  Michael Olson  <address@hidden>
-
-       * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
-
-       * erc-complete.el (erc-nick-completion-exclude-myself)
-       (erc-try-complete-nick): Use better function for getting list of
-       channel users.
-
-       * erc-goodies.el: Docfix.
-
-       * erc-stamp.el: Use new arch tagline, since the other one wasn't
-       being treated properly.
-
-       * erc.el (erc-version-string): Release ERC 5.1.1.
-
-2006-02-03  Zhang Wei  <address@hidden>
-
-       * erc.el (erc-version-string): Don't hard-code Emacs version.
-       (erc-version): Use emacs-version.
-
-2006-01-31  Michael Olson  <address@hidden>
-
-       * erc-stamp.el: Update copyright years.
-
-2006-01-30  Simon Josefsson  <address@hidden>
-
-       * erc.el (erc-open-ssl-stream): Use tls.el.
-
-2006-01-30  Michael Olson  <address@hidden>
-
-       * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
-       that determines whether to use pixel values to align right
-       timestamps.  The default is not to do so, since it only works with
-       Emacs22 on X, and even then some people have trouble.
-       (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
-
-2006-01-29  Michael Olson  <address@hidden>
-
-       * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
-       ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
-       earlier changes.  Use utf-8 encoding.  Fix some accent typos.
-
-       * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
-       variable.
-       (erc-speedbar-goto-buffer): Fix compiler warning.
-
-       * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
-       `ibuffer-define-limiter'.  Use `define-ibuffer-column' instead of
-       `ibuffer-define-column'.  Require 'ibuf-ext so that the macros
-       work without compiler warnings.
-
-       * erc.texi (Obtaining ERC, Installation): Note that these
-       sections may be skipped if using the version of ERC that comes
-       with Emacs.
-
-2006-01-29  Edward O'Connor  <address@hidden>
-
-       * erc-viper.el: Remove.  Now that ERC is included in Emacs, these
-       work-arounds live in Viper itself.
-
-2006-01-28  Michael Olson  <address@hidden>
-
-       * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
-       guidelines.
-
-       * erc-*.el: Space out copyright years like the rest of Emacs.  Use
-       the Emacs copyright statement.  Refer to ourselves as ERC rather
-       than "Emacs IRC Client", since there are now several IRC clients
-       for Emacs.
-
-       * erc-compat.el (erc-emacs-build-time): Define as a variable.
-
-       * erc-log.el (erc-log-setup-logging): Use write-file-functions.
-
-       * erc-ibuffer.el: Require 'erc.
-
-       * erc-stamp.el (erc-insert-aligned): Only use the special text
-       property when window-system is X.
-
-       * erc.texi: Adapt for inclusion in Emacs.
-
-2006-01-28  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-format-message): More `cl' breakage; don't use
-       `oddp'.
-
-2006-01-27  Michael Olson  <address@hidden>
-
-       * debian/changelog: Update for new release.
-
-       * debian/control (Description): Update.
-
-       * debian/rules: Concatenate ChangeLog for 2005.
-
-       * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
-       (debrelease, release): Copy images directory.
-
-       * NEWS: Spelling fixes.  Add items for recent changes.
-
-       * erc.el (erc): Move call to erc-update-modules before the call to
-       erc-mode.  This should fix a timestamp display issue.
-       (erc-version-string): Release ERC 5.1.
-
-2006-01-26  Michael Olson  <address@hidden>
-
-       * erc-stamp.el (erc-insert-aligned): New function that inserts
-       text in an perfectly-aligned way relative to the right margin.  It
-       only works well with Emacs22.  A sane fallback is provided for
-       other versions of Emacs.
-       (erc-insert-timestamp-right): Use the new function.
-
-2006-01-25  Edward O'Connor  <address@hidden>
-
-       * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
-       before `erc-match-mode'.
-
-       * erc-match.el (match): Append `erc-match-message' to
-       `erc-insert-modify-hook'.
-
-2006-01-25  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE: Mark last release requirement as done.
-
-       * Makefile (realclean, distclean): Remove docs.
-
-       * erc.texi: Take care of all pre-5.1 items.
-
-       * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
-       `process-send-string' in `condition-case' to avoid an error when
-       quitting ERC.
-
-       * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
-       variable-width characters in the timestamp and on the same line.
-       The latter is a kludge, but it seems to work with most of the
-       input I've thrown at it so far.  It's certainly better than going
-       past the end of line consistently when we have variable-width
-       characters on the same line.  When `erc-timestamp-intangible' is
-       non-nil, add intangible properties to the whitespace as well, so
-       that hitting <end> does what you'd expect.
-
-       * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
-       this to only use boolean values for `erc-flood-protect'.  Update
-       documentation.
-       (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
-       that any QUIT-related messages go there.
-       (erc): Try to be more clever about re-using channel buffers when
-       automatically re-connecting.  Thanks to e1f for noticing.
-
-2006-01-23  Michael Olson  <address@hidden>
-
-       * ChangeLog.2005: Remove erroneous line.
-
-       * FOR-RELEASE: Make that the Makefile tweaking is complete.
-       (NEWS): Mark as done.
-
-       * Makefile (MANUAL): New option indicating the name of the manual.
-       (PREFIX, ELISPDIR, INFODIR): New options that specify the
-       directories to install lisp code and info manuals to.  PREFIX is
-       used only by ELISPDIR and INFODIR.
-       (all): Call `lisp' and create the manual.
-       (lisp): Compile lisp code.
-       (%.info, %.html): New rules that make Info files and HTML files,
-       respectively, from a TexInfo source.
-       (doc): Create both the Info and HTML versions of the manual.  This
-       is for the user -- we never call it automatically.
-       (install-info): Install Info files.
-       (install-bin): Install compiled and source Lisp files.
-       (todo): Remove, since it seems pointless.
-
-       * NEWS: Update.
-
-       * README: Add Installation instructions.  Tweak layout.
-
-       * erc.texi: Work on some pre-5.1 items.
-
-       * erc-stamp.el, erc-track.el: Move some functions and options in
-       order to get rid of a few compiler warnings.
-
-       * erc.el (erc-modules): Enable readonly by default.  This will
-       prevent new users from accidentally removing old messages, which
-       could be disconcerting.  Also enable stamp by default, since
-       timestamps are a fairly standard feature among IRC clients.
-
-       * erc-button.el: Munge whitespace.
-
-       * erc-identd.el (erc-identd-start): Instead of throwing an error,
-       just try to use the obsolete function.
-
-2006-01-22  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-decode-string-from-target): Make sure that
-       we have a string as an argument.  If not, coerce it to the empty
-       string.  Hopefully, this will work painlessly around an edge case
-       related to quitting ERC around the same time a message comes in.
-
-2006-01-22  Johan Bockgård  <address@hidden>
-
-       * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
-       `case').  Doc fixes.
-       (erc-find-parsed-property): Simplify.
-       (erc-track-get-active-buffer): Fix logic.  Simplify.
-       (erc-track-switch-buffer): Remove unused variable `dir'.  Simplify.
-
-       * erc-speak.el: Doc fixes.
-       (erc-speak-region): `propertize' --> `erc-propertize'.
-
-       * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
-       `erc-propertize'.
-
-       * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
-       account when wrapping URLs.
-
-       * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
-
-       * erc-backend.el (define-erc-response-handler): Doc fix.
-
-2006-01-22  Michael Olson  <address@hidden>
-
-       * erc.el (erc-update-modules): Use `require' instead of `load',
-       but prevent it from causing errors, in order to preserve the
-       previous behavior.
-
-2006-01-21  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE (Source): Mark cl task as done.
-
-       * Makefile (erc-auto.el): Call erc-generate-autoloads rather than
-       generate-autoloads.
-       (erc-auto.el, %.elc): Don't show command, just its output.
-
-       * NEWS: Add items from 2005-01-01 to 2005-08-13.
-
-       * debian/copyright (Copyright): Update.
-
-       * erc-auto.in (erc-generate-autoloads): Rename from
-       generate-autoloads.
-
-       * erc.el, erc-autoaway.el, erc-backend.el: Use
-       erc-server-process-alive instead of erc-process-alive.
-
-       * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
-       erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
-       erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
-       Use (eval-when-compile (require 'cl)), so that compilation doesn't
-       fail.
-
-       * erc-fill.el, erc-truncate.el: Whitespace munging.
-
-       * erc.el: Update copyright notice.  Remove eval-after-load code.
-       (erc-with-buffer): Docfix.
-       (erc-once-with-server-event, erc-once-with-server-event-global)
-       (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
-       instead of gensym.
-       (erc-banlist-update): Use erc-delete-if instead of delete-if.
-       (erc): Call `erc-update-modules' here.
-
-       * erc-backend.el: Require 'erc-compat to minimize compiler
-       warnings.
-       (erc-decode-parsed-server-response): Docfix.
-       (erc-server-process-alive): Move here from erc.el and rename from
-       `erc-process-alive'.
-       (erc-server-send, erc-remove-channel-users): Make sure process is
-       alive before sending data to it.
-
-       * erc-bbdb.el: Update copyright years.
-       (erc-bbdb-whois): Remove overexuberant comment.
-
-       * erc-button.el: Require erc-fill, since we make liberal use of
-       `erc-fill-column'.
-
-       * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
-       functions, the latter of which provides an `assert' equivalent.
-       (erc-remove-if-not): New function that provides a simple
-       implementation of `remove-if-not'.
-       (erc-gensym): New function that provides a simple implementation
-       of `gensym'.
-       (erc-delete-if): New function that provides a simple
-       implementation of `delete-if'.
-       (erc-member-if): New function that provides a simple
-       implementation of `member-if'.
-       (field-end): Remove this, since it is unused, and later versions
-       of XEmacs have this function already.
-       (erc-function-arglist): Moved here from erc.el.
-       (erc-delete-dups): New compatibility function for dealing with
-       XEmacs.
-       (erc-subseq): New function copied from cl-extra.el.
-
-       * erc-dcc.el: Require pcomplete during compilation to avoid
-       compiler warnings.
-       (erc-unpack-int, erc-dcc-send-filter)
-       (erc-dcc-get-filter): Use erc-assert instead of assert.
-       (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
-       remove-if-not.
-
-       * erc-match.el (erc-log-matches): Fix compiler warning.
-
-       * erc-nicklist.el: Update copyright notice.
-       (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
-       (erc-nicklist-bitlbee-connected-p): Remove.
-       (erc-nicklist-insert-medium-name-or-icon): Accept channel
-       argument.  Use it to determine whether we are on bitlbee.  Now
-       that bitlbee names its channel "&bitlbee", this is trivial.
-       (erc-nicklist-insert-contents): Pass channel as specified above.
-       Don't try to determine whether we are on bitlbee here.
-       (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
-       of remove-if-not.
-       (erc-nicklist-search-for-nick): Use erc-member-if instead of
-       member-if.
-
-       * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
-       partially-evaluated lambda expression instead of `delete' and
-       `find'.
-
-       * erc-track.el: Use erc-assert.
-       (erc-track-modified-channels): Remove use of `return'.
-       (erc-track-modified-channels): Use `cadr' instead of `second',
-       since otherwise we would need yet another eval-when-compile line.
-
-2006-01-19  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-process-sentinel-1): Remove attempt to
-       detect SIGPIPE, since it doesn't work.
-
-2006-01-10  Diane Murray  <address@hidden>
-
-       * erc-spelling.el: Updated copyright years.
-       (define-erc-module): Enable/disable `flyspell-mode' for all open
-       ERC buffers as well.
-       (erc-spelling-dictionaries): Reworded customize description.
-
-       * erc.el (erc-command-symbol): New function.
-       (erc-extract-command-from-line): Use `erc-command-symbol'.  This
-       fixes a bug where "Symbol's function definition is void:
-       erc-cmd-LIST" would be shown after typing /list at the prompt (the
-       command was interned because erc-menu.el uses it and is enabled by
-       default whereas erc-list.el is not).
-
-       * NEWS: Started a list of renamed variables.
-
-       * erc.el: Reworded the message sent when defining variable
-       aliases.
-       (erc-command-indicator-face): Doc fix.
-       (erc-modules): Enable the match module by default which makes
-       current nickname highlighting on as the default.
-
-       * erc-button.el: Updated copyright years.
-       (erc-button): New face.
-       (erc-button-face): Use `erc-button'.
-       (erc-button-nickname-face): New customizable variable.
-       (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
-       new argument to `erc-button-add-button'.
-       (erc-button-add-button): Doc fix.  Added new argument to function
-       definition, NICK-P.  If it's a nickname, use
-       `erc-button-nickname-face', otherwise use `erc-button-face'.  This
-       makes channel tracking and buttons work better together when
-       `erc-button-buttonize-nicks' is enabled, since there is a nickname
-       on just about every line.
-
-       * erc-track.el (erc-track-use-faces): Doc fix.
-       (erc-track-faces-priority-list): Added `erc-button' to list.
-       (erc-track-priority-faces-only): Doc fix.
-
-2006-01-09  Diane Murray  <address@hidden>
-
-       * erc-button.el (erc-button-url-regexp): Use `concat' so the
-       regexp is not one long line.
-       (erc-button-alist): Fixed so that customizing works correctly.
-       Reorganized.  Removed lambda functions with more than two lines.
-       Doc fix.
-       (erc-button-describe-symbol, erc-button-beats-to-time): New
-       functions.  Moved from `erc-button-alist'.
-
-2006-01-07  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
-       process if a SIGPIPE occurs.  This happens when a new message
-       comes in at the same time a /quit is requested.
-       (erc-process-sentinel): Use string-match rather than string= to do
-       these comparisons.  Matching literal newlines makes me nervous.
-
-       * erc-track.el (erc-track-remove-from-mode-line): Handle case
-       where global-mode-string is not a list.  Emacs22 permits this.
-
-
-See ChangeLog.05 for earlier changes.
-
-       Copyright (C) 2006-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; add-log-time-zone-rule: t
-;; End:
-
diff --git a/lisp/erc/ChangeLog.07 b/lisp/erc/ChangeLog.07
deleted file mode 100644
index dbc664f..0000000
--- a/lisp/erc/ChangeLog.07
+++ /dev/null
@@ -1,836 +0,0 @@
-2007-12-16  Diane Murray  <address@hidden>
-
-       * erc-services.el (erc-nickserv-alist): Removed autodetect regexp,
-       added identified regexp for OFTC.
-       (erc-nickserv-identification-autodetect): Make sure success-regex
-       is non-nil.
-       (erc-nickserv-identify-autodetect): Make sure identify-regex is
-       non-nil.  Doc fix.
-
-2007-12-13  Diane Murray  <address@hidden>
-
-       * erc-backend.el (PRIVMSG, QUIT, TOPIC, WALLOPS, 376, 004, 221)
-       (312, 315, 319, 330, 331, 333, 367, 368, 391, 405, 406, 412)
-       (421, 432, 433, 437, 442, 461, 474, 477, 482, 431): Doc fix.
-
-2007-12-09  Michael Olson  <address@hidden>
-
-       * erc-services.el (erc-nickserv-alist): Fix regexps for GRnet.
-
-2007-12-09  Giorgos Keramidas  <address@hidden>  (tiny change)
-
-       * erc-backend.el, erc.el:
-       Parse 275 (secure connection) responses.
-
-       * erc-services.el: Add identification hooks for GRnet, the Greek
-       IRC network <http://www.irc.gr>.
-
-2007-12-08  David Kastrup  <address@hidden>
-
-       * erc-stamp.el (erc-echo-timestamp):
-       * erc-lang.el (language):
-       * erc-backend.el (erc-server-connect): Fix buggy call to `message'.
-
-2007-12-07  Edward O'Connor  <address@hidden>
-
-       * erc-services.el: Provide a hook that runs when nickserv confirms
-       that the user has successfully identified.
-       (services, erc-nickserv-identify-mode): Add and remove
-       erc-nickserv-identification-autodetect from
-       erc-server-NOTICE-functions.
-       (erc-nickserv-alist): Add SUCCESS-REGEXP to each entry.
-       (erc-nickserv-alist-identified-regexp)
-       (erc-nickserv-identification-autodetect): New functions.
-       (erc-nickserv-identified-hook): New hook.
-
-2007-12-06  Deepak Goel  <address@hidden>
-
-       * erc-match.el (erc-add-entry-to-list): Fix buggy call to `error'.
-
-2007-12-01  Glenn Morris  <address@hidden>
-
-       * erc-backend.el (erc-server-send-ping): Move after definition of
-       erc-server-send.
-
-2007-11-29  Giorgos Keramidas  <address@hidden>  (tiny change)
-
-       * erc-backend.el, erc.el:
-       Parse 307 (nick has identified) responses.
-
-2007-11-15  Juanma Barranquero  <address@hidden>
-
-       * erc.el (erc-open):
-       * erc-backend.el (define-erc-response-handler):
-       * erc-log.el (log):
-       * erc-match.el (erc-log-matches): Fix typos in docstrings.
-
-2007-11-11  Michael Olson  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-possibly-set-away):
-       * erc-netsplit.el (erc-netsplit-timer):
-       * erc-notify.el (erc-notify-timer):
-       * erc-track.el (erc-user-is-active): Only run if we have
-       successfully established a connection to the server and have
-       logged in.  I suspect that sending messages too soon may make some
-       IRC servers not respond well, particularly when the network
-       connection is iffy or subject to traffic-shaping.
-
-2007-11-01  Michael Olson  <address@hidden>
-
-       * erc-compat.el (erc-set-write-file-functions): New compatibility
-       function to set the write hooks appropriately.
-
-       * erc-log.el (erc-log-setup-logging): Use
-       erc-set-write-file-functions.  This fixes a byte-compiler warning.
-
-       * erc-stamp.el: Silence byte-compiler warning about
-       erc-fill-column.
-
-       * erc.el (erc-with-all-buffers-of-server): Bind the result of
-       mapcar to a variable in order to silence a byte-compiler warning.
-
-2007-10-29  Michael Olson  <address@hidden>
-
-       * erc-ibuffer.el (erc-modified-channels-alist): Use
-       eval-when-compile, and explain why we are doing this.
-
-2007-10-25  Dan Nicolaescu  <address@hidden>
-
-       * erc-ibuffer.el (erc-modified-channels-alist): Pacify
-       byte-compiler.
-
-2007-10-13  Glenn Morris  <address@hidden>
-
-       * erc-track.el (erc-modified-channels-update): Use mapc rather
-       than mapcar.
-
-2007-10-12  Diane Murray  <address@hidden>
-
-       * erc.el (erc-join-channel): Prompt for channel key if C-u or
-       another prefix-arg was typed.
-
-       * NEWS: Noted this change.
-
-2007-10-07  Michael Olson  <address@hidden>
-
-       * erc.el (erc-cmd-ME'S): New command that handles the case where
-       someone types "/me's".  It concatenates the text " 's" to the
-       beginning of the input and then sends the result like a normal
-       "/me" command.
-       (erc-command-regexp): Permit single-quote character.
-
-2007-09-30  Aidan Kehoe  <address@hidden>  (tiny change)
-
-       * erc-log.el (erc-save-buffer-in-logs): Prevent spurious warnings
-       when looking at a log file and concurrently saving to it.
-
-2007-09-18  Exal de Jesus Garcia Carrillo  <address@hidden>  (tiny change)
-
-       * erc.texi (Special-Features): Fix small typo.
-
-2007-09-16  Michael Olson  <address@hidden>
-
-       * erc-track.el (erc-track-switch-direction): Mention
-       erc-track-faces-priority-list.  Thanks to Leo for the suggestion.
-
-2007-09-11  Exal de Jesus Garcia Carrillo  <address@hidden>  (tiny change)
-
-       * erc-sound.el: Fix typo in setting up instructions.
-
-2007-09-10  Michael Olson  <address@hidden>
-
-       * Makefile (elpa): Copy dir template rather than echoing a few
-       lines.  The reason for this is that the ELPA package for ERC was
-       getting a corrupt dir entry.
-
-       * dir-template: Template for the ELPA dir file.
-
-2007-09-08  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-log-filter-function): New option that specifies
-       the function to call for filtering text before writing it to a log
-       file.  Thanks to David O'Toole for the suggestion.
-       (erc-save-buffer-in-logs): Use erc-log-filter-function.  Make sure
-       we carry along the value of coding-system-for-write, because this
-       could potentially be shadowed by the temporary buffer.
-
-       * erc.el (erc-version-string): Update to 5.3, development version.
-
-2007-09-07  Glenn Morris  <address@hidden>
-
-       * erc.el (erc-toggle-debug-irc-protocol): Fix call to
-       erc-view-mode-enter.
-
-2007-08-08  Glenn Morris  <address@hidden>
-
-       * erc-log.el, erc.el: Replace `iff' in doc-strings and comments.
-
-2007-09-03  Michael Olson  <address@hidden>
-
-       * erc.el (erc-default-port): Make this an integer value rather
-       than a string.  Thanks to Luca Capello for the report.
-
-2007-08-27  Michael Olson  <address@hidden>
-
-       * erc.el (erc-cmd-GQUIT): If erc-kill-queries-on-quit is non-nil,
-       kill all query buffers after 4 seconds.
-
-2007-08-16  Michael Olson  <address@hidden>
-
-       * NEWS: Add ERC 5.3 changes section, and mention jbms' erc-track
-       compatibility note.
-
-       * erc-track.el (erc-track-list-changed-hook): Turn this into a
-       customizable option.
-       (erc-track-switch-direction): Add 'importance option.
-       (erc-modified-channels-display): If erc-track-switch-direction is
-       'importance, call erc-track-sort-by-importance.
-       (erc-track-face-priority): New function that returns a number
-       indicating the position of a face in erc-track-faces-priority-list.
-       (erc-track-sort-by-importance): New function that sorts
-       erc-modified-channels-list according to erc-track-face-priority.
-       (erc-track-get-active-buffer): Make 'oldest a rough opposite of
-       'importance.
-
-2007-08-14  Jeremy Maitin-Shepard  <address@hidden>
-
-       * erc-track.el (erc-track-remove-disconnected-buffers): New
-       variable which controls whether buffers associated with a server
-       that is disconnected should be removed from
-       `erc-modified-channels-alist'.  Existing behavior is to
-       unconditionally remove such buffers, which is achieved by setting
-       `erc-track-removed-disconnected-buffers' to t.  When set to t,
-       which is the new default value, such buffers remain in the list,
-       which I think is often the desired behavior, since the user may
-       likely wish to find out about activity that occurred in a channel
-       prior to it being disconnected.
-       (erc-track-list-changed-hook): New hook that is run whenever the
-       contents of `erc-modified-channels-alist' changes; it is useful
-       for users such as myself that don't use the default mode-line
-       notification but instead use a separate mechanism (which is tied
-       to my window manager) to provide notification of channel activity.
-       (erc-track-get-buffer-window): New function that acts as a wrapper
-       around `get-buffer-window' that handles the `selected-visible'
-       option of `erc-track-visibility'; previously, the value of
-       `erc-track-visibility' was passed directly to `get-buffer-window',
-       which does not support `selected-visible'; consequently,
-       `selected-visible' was not properly supported.
-       (erc-track-modified-channels): Fix a bug in the logic for removing
-       buffers from the list in certain cases.
-       (erc-track-position-in-mode-line): Add a supported value that
-       specifies that the tracking information should not be added to the
-       mode line at all.  The value of nil is used to indicate that the
-       information should not be added at all to the mode line.
-       (erc-track-add-to-mode-line): Check for position eq to t, rather
-       than non-nil.
-       (erc-buffer-visible): Use erc-track-get-buffer-window.
-       (erc-modified-channels-update): Take
-       erc-track-remove-disconnected-buffers into account.
-       (erc-modified-channels-display): Run `erc-track-list-changed-hook'.
-
-       * erc.el (erc-reuse-frames): New option that determines whether
-       new frames are always created.  Defaults to t.  This only has an
-       effect when erc-join-buffer is set to 'frame.
-       (erc-setup-buffer): Use it.
-
-2007-08-14  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-reconnect): If the server buffer has
-       been killed, use the current buffer instead.  If the current
-       buffer is not an ERC buffer, give an error.  This fixes a bug when
-       /reconnect is run from a channel buffer whose server buffer has
-       been deleted.  Thanks to jbms for the report.
-       (erc-process-sentinel-1): Take server buffer as an argument, so
-       that we can make sure that it is current.
-       (erc-process-sentinel): Pass buffer to erc-process-sentinel-1.
-       (erc-process-sentinel-2): New function split from
-       erc-process-sentinel-1.  If server buffer is deleted during a
-       reconnect attempt, stop trying to reconnect.  Fix bug where
-       reconnect was not happening when erc-server-reconnect-attempts was
-       t.  Call erc-server-reconnect-p only once each time.  If we are
-       instructed to try connecting indefinitely, tell the user that they
-       can stop this by killing the server buffer.  Call the process
-       sentinel by means of run-at-time, so that there is time to kill
-       the buffer if need be; this also removes the need for a while
-       loop.  Refuse to reconnect again if erc-server-reconnect-timeout
-       is not an number.
-
-       * erc.el (erc-command-no-process-p): Fix bug: the return value of
-       erc-extract-command-from-line is a list rather than a single
-       symbol.  Thanks to jbms for the report.
-       (erc-cmd-RECONNECT): Use simpler logic, and use buffer-live-p
-       rather than bufferp.
-       (erc-send-current-line, erc-display-command, erc-display-msg):
-       Handle case where erc-server-process is nil, so that /reconnect
-       works.
-
-2007-08-12  Michael Olson  <address@hidden>
-
-       * erc-identd.el (erc-identd-filter): Instead of sending an EOF
-       character, which now confuses freenode, stop the server process,
-       so that no new connections are accepted, and kill the current
-       client process.
-
-2007-07-29  Michael Olson  <address@hidden>
-
-       * erc-list.el: Relicense to GPLv3.  Since the file was already
-       licensed under version 2 or later, it turns out that we do not
-       need the permission of all of the authors in order to proceed.
-
-2007-07-13  Michael Olson  <address@hidden>
-
-       * erc-goodies.el (erc-get-bg-color-face, erc-get-fg-color-face):
-       Use erc-error rather than message and beep.
-
-       * erc-sound.el: Indentation fix.
-
-       * erc.el (erc-command-no-process-p): New function that determines
-       if its argument is an ERC command that can be run when the server
-       process is not alive.
-       (erc-cmd-SET, erc-cmd-CLEAR, erc-cmd-COUNTRY, erc-cmd-HELP)
-       (erc-cmd-LASTLOG, erc-cmd-QUIT, erc-cmd-GQUIT)
-       (erc-cmd-RECONNECT, erc-cmd-SERVER): Denote that these commands
-       can be run even when the server process is not alive.
-       (erc-send-current-line): Call erc-command-no-process-p if the
-       server process is not alive, to determine if we have a command
-       that can be run anyway.  Thanks to Tom Tromey for the bug report.
-       (erc-error): New function that either displays a message or throws
-       an error, depending on whether debug-on-error is non-nil.
-       (erc-cmd-SERVER, erc-send-current-line): Use it.
-
-2007-07-10  Michael Olson  <address@hidden>
-
-       * Relicense all FSF-assigned code to GPLv3.
-
-2007-06-25  Michael Olson  <address@hidden>
-
-       * erc.texi (Options): Fix typo.
-       (Getting Help and Reporting Bugs): Update webpage URL.  Make Gmane
-       part more readable.
-
-2007-06-20  Michael Olson  <address@hidden>
-
-       * erc-stamp.el (erc-timestamp-format-left): New option that
-       specifies the left timestamp to use for
-       erc-insert-timestamp-left-and-right.
-       (erc-timestamp-format-right): New option that specifies the right
-       timestamp to use for erc-insert-timestamp-left-and-right.
-       (erc-insert-timestamp-function): Change default to
-       erc-insert-timestamp-left-and-right.
-       (erc-insert-away-timestamp-function): Ditto.
-       (erc-timestamp-last-inserted-left)
-       (erc-timestamp-last-inserted-right): New variables to keep track
-       of data for erc-insert-timestamp-left-and-right.
-       (erc-insert-timestamp-left-and-right): New function that places
-       timestamps on both the left and right sides of the screen, but
-       only if each timestamp has changed since it was last computed.
-       Thanks to offby1 for urging me to merge this.
-
-       * erc.el (erc-open-ssl-stream): Display informative error when
-       ssl.el not found.
-       (erc-tls): New function to connect using tls.el.
-       (erc-open-tls-stream): New function to initiate tls connection.
-       Display informative error when tls.el not found.
-
-2007-06-19  Michael Olson  <address@hidden>
-
-       * erc-log.el: Update header with accurate instructions.
-
-2007-06-17  Michael Olson  <address@hidden>
-
-       * erc-pkg.el: Update description to match what is currently in ELPA.
-
-2007-06-14  Juanma Barranquero  <address@hidden>
-
-       * erc-goodies.el (erc-scroll-to-bottom): Remove redundant check.
-
-2007-06-13  Michael Olson  <address@hidden>
-
-       * erc-compat.el (erc-with-selected-window): New compatibility
-       macro that implements `with-selected-window'.
-
-       * erc-goodies.el (erc-scroll-to-bottom): Use it.  This fixes a bug
-       with buffer ordering where ERC buffers would move to the top.
-       Thanks to Ivan Kanis for the patch.
-
-2007-06-10  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-logging-enabled): Fix a bug that occurred when
-       `erc-log-channels-directory' had the name of a function.
-
-2007-06-06  Juanma Barranquero  <address@hidden>
-
-       * erc.el (erc-show-channel-key-p, erc-startup-file-list):
-       Fix typo in docstring.
-
-2007-06-03  Michael Olson  <address@hidden>
-
-       * erc-compat.el (erc-view-mode-enter): Make this its own function,
-       in order to document what we do, and provide sane fallback
-       behavior.
-
-       * erc.el (erc-toggle-debug-irc-protocol): Don't pass any arguments
-       to erc-view-mode-enter, since we don't do anything special with
-       the exit function.  This fixes a bug with Emacs 21 and Emacs 22.
-       Thanks to Leo for noticing.
-
-2007-05-30  Michael Olson  <address@hidden>
-
-       * erc-compat.el (erc-user-emacs-directory): New variable that
-       determines where to find user-specific Emacs settings.  For Emacs,
-       this is usually ~/.emacs.d, and for XEmacs this is usually
-       ~/.xemacs.
-
-       * erc.el (erc-startup-file-list): Use erc-user-emacs-directory.
-
-2007-05-28  Michael Olson  <address@hidden>
-
-       * erc-button.el (erc-button-url-regexp): Recognize parentheses as
-       part of URLs.  Thanks to Lawrence Mitchell for the fix.
-
-2007-05-26  Michael Olson  <address@hidden>
-
-       * erc.texi (Modules): Fix references to completion modules.
-
-2007-05-21  Michael Olson  <address@hidden>
-
-       * Makefile (SOURCE): Remove erc-pkg.el.
-       (debclean): New rule to clean old Debian packages of ERC.
-       (debprepare): Don't modify the released tarball, but copy it as
-       the .orig.tar.gz file.
-       (debrelease, debrevision): Remove.
-       (debinstall): New target that copies the generated Debian file to
-       a distro-specific location.
-       (deb): New rule that chains together the stages in building a
-       Debian package.
-       (EXTRAS): Add erc-nicklist.el, since it is not release-quality.
-       (extras): Copy images directory.
-
-       * erc-nicklist.el (erc-nicklist-icons-directory): Use
-       locate-library to find the "images" directory.  This should be
-       more failsafe.  Thanks to Tom Tromey for the idea.
-
-2007-05-19  Michael Olson  <address@hidden>
-
-       * Makefile (ELPA): New variable that contains the location of my
-       local ELPA repository.
-       (elpa): New rule that makes an ELPA package for ERC.
-
-2007-04-19  Michael Olson  <address@hidden>
-
-       * erc.el (erc-parse-prefix): New function that retrieves the
-       PREFIX server parameter from the current server and returns an
-       alist of prefix type to prefix character.
-       (erc-channel-receive-names): Use `erc-parse-prefix' to determine
-       whether the first character of a nick is a prefix character or
-       not.  This should fix a bug reported by bromine about needing to
-       type "%" first to complete nicks of people who are "hops" on
-       Slashnet.  This should also support for very exotic IRC server
-       setups, if any exist.
-       (erc-update-current-channel-member): Indentation.
-
-2007-04-15  Michael Olson  <address@hidden>
-
-       * erc-log.el (erc-generate-log-file-name-function): Docfix.
-       Mention how to deal with the case for putting log files in
-       different directories.  Change a customization type from `symbol'
-       to `function'.
-       (erc-log-channels-directory): Allow this to contain a function
-       name, which is called with the same args as in
-       `erc-generate-log-file-name-function'.  Thanks to andrewy for the
-       report and use case.
-       (erc-current-logfile): Detect if `erc-log-channels-directory' is a
-       function and call it with arguments if so.
-
-2007-04-12  Michael Olson  <address@hidden>
-
-       * erc-backend.el (define-erc-response-handler): Mention that hook
-       processing stops when the function returns non-nil.  This should
-       help avoid a nasty "gotcha" when making custom functions.  Thanks
-       to John Sullivan for the report.
-
-2007-04-08  Diane Murray  <address@hidden>
-
-       * erc-nicklist.el (erc-nicklist-voiced-position): Fixed
-       customization mismatch.
-
-2007-04-01  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Release ERC 5.2.
-
-       * erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
-       * erc-viper.el: Update copyright notices.
-
-       * erc.texi: Make Emacs Lisp source code in this document
-       essentially public domain.  Update version to 5.2.
-       (Obtaining ERC): Mention extras tarball.
-       (Releases): Mention local GNU mirror.
-       (Sample Configuration): Remove notice.
-
-       * FOR-RELEASE (5.3): Add item for erc-nicklist.
-       Mark NEWS as done.  Mark extras tarball as done.
-
-       * Makefile (VERSION): Increment to 5.2.
-       (TESTING): Remove.
-       (EXTRAS): New variable containing the contents of our "Emacs 22
-       extras" tarball.
-       (SOURCE): Remove $(TESTING).
-       (MISC): Add COPYING and ChangeLog.06.  Fix ChangeLog.NNNN ->
-       ChangeLog.NN.
-       (release): Use $(SNAPDIR) instead of erc-$(VERSION).
-       (extras): New rule which implements the building of the extras
-       tarball.
-       (upload-extras): New rule to upload the extras tarball.  It's
-       yucky to replicate upload, but oh well.
-       (DISTRIBUTOR): New variable used to differentiate between building
-       packages for Ubuntu and Debian.
-       (debrelease, debrevision): Use it.
-       (debbuild): Run linda in addition to lintian.
-
-       * NEWS: Mention extras tarball.  Note which files have been
-       renamed.  Note that erc-list is enabled by default, except in
-       Emacs 22.
-
-       * README.extras: New file which serves as a README for the extras
-       tarball.
-
-2007-03-31  Michael Olson  <address@hidden>
-
-       * NEWS: Update for the 5.2 release.
-
-       * FOR-RELEASE: Finish up 5.2 manual item.  Add documentation item
-       for 5.3.
-
-       * erc.texi (Sample Session): Flesh out.  Mention #erc.
-       (Modules): Defer to 5.3 release.
-       (Advanced Usage): Move Sample Configuration chapter ahead of
-       unfinished chapters.
-       (Sample Configuration): Write.
-       (Options): Mention how to see available ERC options.  Defer to 5.3
-       release.
-       (Tips and Tricks): Remove, since it seems better to just include
-       tips and tricks in the sample configuration, commented out.
-
-       * erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
-       informative about how to skip merging.
-       (erc-bbdb-insinuate-and-show-entry-1): Move contents of
-       erc-bbdb-insinuate-and-show-entry here.
-       (erc-bbdb-insinuate-and-show-entry): Run
-       erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
-       function, so that we can avoid triggering a process-filter error
-       if the user hits C-g.
-
-2007-03-30  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
-
-       * erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
-       `cond' and `set' rather than `set-default'.
-
-       * erc-log.el: Avoid compiler warning by requiring erc-network
-       during compilation.
-       (erc-generate-log-file-name-function): Add tag to each option.
-       Add erc-generate-log-file-name-network.
-       (erc-generate-log-file-name-network): New function which generates
-       a log file name that uses network name rather than server name,
-       when possible.
-
-       * erc-track.el (track): Assimilate track-when-inactive module,
-       since there's no need to have two modules in one file -- an option
-       will do.  Remove track-modified-channels alias.  Call
-       erc-track-minor-mode-maybe, and tear down the minor mode when
-       disabling.
-       (erc-track-when-inactive): New option which determines whether to
-       track visible buffers when inactive.  The default is not to do so.
-       (erc-track-visibility): Mention erc-track-when-inactive.
-       (erc-buffer-visible): Use erc-track-when-inactive.
-       (erc-track-enable-keybindings): New option which determines
-       whether to enable the global-level tracking keybindings.  The
-       default is to do so, unless they would override another binding,
-       in which case we prompt the user about it.
-       (erc-track-minor-mode-map): Move global keybindings here.
-       (erc-track-minor-mode): New minor mode which only enables the
-       keybindings and does nothing else.
-       (erc-track-minor-mode-maybe): New function which starts
-       erc-track-minor-mode, but only if it hasn't already been started,
-       an ERC buffer exists, and the user OK's it, depending on the value
-       of `erc-track-enable-keybindings'.
-       (erc-track-switch-buffer): Display a message if someone calls this
-       without first enabling erc-track-mode.
-
-2007-03-17  Michael Olson  <address@hidden>
-
-       * erc.texi (Development): Mention ErcDevelopment page on
-       emacswiki.
-       (Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
-       interface.
-       (Sample Session): New section that has a very rough draft for a
-       sample ERC session.
-       (Special Features): New section that explains some of the special
-       features of ERC.  Taken from ErcFeatures on emacswiki, with
-       enhancements.
-
-2007-03-12  Diane Murray  <address@hidden>
-
-       * erc-autoaway.el (erc-autoaway-idle-method): When setting the new
-       value, disable and re-enable `erc-autoaway-mode' only if it was
-       already enabled.  This fixes a bug where autoaway was enabled just
-       by loading the file.
-
-2007-03-10  Diane Murray  <address@hidden>
-
-       * erc-capab.el: Added more information to the Usage section.
-       (erc-capab-identify-prefix): Doc fix.
-       (erc-capab-identify-unidentified): New face.
-       (290): Removed.  Definition moved to erc-backend.el.
-       (erc-capab-identify-send-messages): Renamed from
-       `erc-capab-send-identify-messages'.
-       (erc-capab-identify-setup): Use it.
-       (erc-capab-identify-get-unidentified-nickname): Renamed from
-       `erc-capab-get-unidentified-nickname'.
-       (erc-capab-identify-add-prefix): Use it.  Use
-       `erc-capab-identify-unidentified' as the face.
-
-       * erc-backend.el (290): Moved here from erc-capab.el.
-
-       * erc.el (erc-select): Added an autoload cookie.
-       (erc-message-type-member, erc-restore-text-properties): Use
-       `erc-get-parsed-vector'.
-       (erc-auto-query): Set the default to 'bury since many new users
-       expect private messages from others to be in dedicated query
-       buffers, not the server buffer.
-       (erc-common-server-suffixes): Use "freenode" for freenode.net, not
-       "OPN".  Added oftc.net.
-
-       * NEWS: Added note about erc-auto-query's new default setting.
-
-2007-03-03  Michael Olson  <address@hidden>
-
-       * erc.el (erc-open, erc): Docfixes.
-
-2007-03-02  Michael Olson  <address@hidden>
-
-       * FOR-RELEASE: Make section for 5.3 release and move erc-backend
-       cleanup there.  Awaiting discussion before doing other things.
-       Add tasks for merging filename changes from the 5.2 release
-       branch, and for making a tarball of modules not in Emacs 22.  Add
-       item to remind me to update NEWS.  Mark backtab entry as done.
-
-       * erc-button.el (button): Add call to `erc-button-add-keys'.
-       (erc-button-keys-added): New variable tracking whether we've added
-       the keys yet.
-       (erc-button-add-keys): New function that adds the <backtab> key to
-       erc-mode-map.
-
-       * erc.texi: Change version to 5.2 (pre-release).
-
-2007-02-15  Michael Olson  <address@hidden>
-
-       * CREDITS: Update.
-
-       * erc-backend.el (erc-server-send-ping-interval): Change to use a
-       default of 30 seconds.  Improve customize interface.
-       (erc-server-send-ping-timeout): New option that determines when to
-       consider a connection stalled and restart it.  The default is
-       after 120 seconds.
-       (erc-server-send-ping): Use erc-server-send-ping-timeout instead
-       of erc-server-send-ping-interval.  If
-       erc-server-send-ping-timeout is nil, do not ever kill and restart
-       a hung IRC process.
-
-       * erc.el (erc-modules): Include the name of the module in its
-       description.  This should make it easier for people to find and
-       enable a particular module.
-
-2007-02-15  Vivek Dasmohapatra  <address@hidden>
-
-       * erc.el (erc-cmd-RECONNECT): Kill old process if it is still
-       alive.
-       (erc-message-english-PART): Properly escape "%" characters in
-       reason.
-
-       * erc-backend.el (erc-server-reconnecting): New variable that is
-       set when the user requests a reconnect, but the old process is
-       still alive.  This forces the reconnect to work even though the
-       process is killed manually during reconnect.
-       (erc-server-connect): Initialize it.
-       (erc-server-reconnect-p): Use it.
-       (erc-process-sentinel-1): Set it to nil after the first reconnect
-       attempt.
-
-2007-02-07  Diane Murray  <address@hidden>
-
-       * erc-menu.el (erc-menu-definition): Fixed so that the separator
-       is between "Current channel" and "Pals, fools and other keywords",
-       not at the bottom of the "Current channel" submenu.
-
-2007-01-25  Diane Murray  <address@hidden>
-
-       * erc-networks.el (erc-server-alist): Removed SSL server for now
-       since `erc-server-select' doesn't know to use `erc-ssl'.
-
-       * erc-networks.el (erc-server-alist, erc-networks-alist): Added
-       definitions for oftc.net.
-
-       * erc-services.el (erc-nickserv-alist): Fixed OFTC message regexp.
-
-2007-01-22  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-error-occurred): New variable that
-       indicates when an error has been signaled by the server.  This
-       should fix an infinite reconnect bug when giving some servers a
-       bogus :full-name.  Thanks to Angelina Carlton for the report.
-       (erc-server-connect): Initialize erc-server-error-occurred.
-       (erc-server-reconnect-p): Use it.
-       (ERROR): Set it.
-
-       * erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
-       and QuakeNet.  Standardize look of entries.  Fix type mismatch
-       error in customize interface.
-       (erc-nickserv-passwords): Alphabetize and add missing entries from
-       erc-nickserv-alist.
-
-2007-01-21  Michael Olson  <address@hidden>
-
-       * erc.el (erc-header-line-format): Document how to disable the
-       header line, and add a customization type for it.  Also, make the
-       changes take effect immediately.
-
-2007-01-19  Michael Olson  <address@hidden>
-
-       * erc.texi (Modules): Document new menu module.  Thanks to Leo
-       for noticing.
-
-2007-01-16  Diane Murray  <address@hidden>
-
-       * erc-stamp.el (erc-insert-timestamp-left): Fixed so that the
-       whitespace string filler is hidden correctly when timestamps are
-       hidden.
-       (erc-toggle-timestamps): New function to use instead of
-       `erc-show-timestamps' and `erc-hide-timestamps'.
-
-       * erc.el (erc-restore-text-properties): Moved here from
-       erc-fill.el since it could be useful in general.
-
-       * erc-fill.el (erc-restore-text-properties): Removed.
-
-2007-01-13  Michael Olson  <address@hidden>
-
-       * erc.el (erc-command-regexp): New variable that is used to match
-       a command.
-       (erc-send-input): Use it.  This fixes a bug where paths --
-       "/usr/bin/foo", for example -- were being displayed as commands,
-       but still sent correctly.
-       (erc-extract-command-from-line): Use it.
-
-       * erc.texi (Modules): Document erc-capab-identify.
-
-2007-01-11  Diane Murray  <address@hidden>
-
-       * erc.el (erc-find-parsed-property): Moved here from erc-track.el
-       since it can be useful in general.
-
-       * erc-track.el (erc-find-parsed-property): Removed.
-
-       * erc-capab.el (erc-capab-find-parsed): Removed.
-       (erc-capab-identify-add-prefix): Use `erc-find-parsed-property'.
-
-       * erc.el (erc-open): Run `erc-before-connect' hook here.  This
-       makes sure the hook always gets called before a connection is
-       made, as some functions, like `erc-handle-irc-url', use `erc-open'
-       instead of `erc'.
-       (erc): Removed `erc-before-connect' hook.
-
-       * erc-menu.el (erc-menu-definition): Put items specific to
-       channels in a "Current channel" submenu.
-
-       * erc-backend.el (321, 323): Display channel list in server buffer
-       when not using the channel list module.
-
-       * erc.el: Updated copyright years.
-       (erc-version-string): Set to 5.2 (devel).
-       (erc-format-lag-time): Fixed to work when `erc-server-lag' is nil.
-       (erc-update-mode-line-buffer): Set the header face.
-
-2007-01-11  Michael Olson  <address@hidden>
-
-       * erc-bbdb.el (erc-bbdb-popup-type): Fix customization type and
-       documentation.
-
-       * erc-services.el (erc-nickserv-identify-mode): Improve
-       documentation for nick-change option and move higher to fix
-       compiler warning.  Avoid a recursive load error.
-       (erc-nickserv-alist): Add simple entry for BitlBee, to avoid
-       "NickServ is AWAY: User is offline" error.  Oddly enough, bitlbee
-       was smart enough to recognize that as an authentication request
-       and log in regardless, which is why I didn't notice this earlier.
-       (erc-nickserv-alist-sender, erc-nickserv-alist-regexp)
-       (erc-nickserv-alist-nickserv, erc-nickserv-alist-ident-keyword)
-       (erc-nickserv-alist-use-nick-p)
-       (erc-nickserv-alist-ident-command): New accessors for
-       erc-nickserv-alist.  Using nth is unwieldy.
-       (erc-nickserv-identify-autodetect)
-       (erc-nickserv-identify-on-connect)
-       (erc-nickserv-identify-on-nick-change, erc-nickserv-identify): Use
-       the new accessors.
-
-2007-01-11  Diane Murray  <address@hidden>
-
-       * NEWS: Added note for `erc-my-nick-face'.  Fixed capab-identify
-       wording.
-
-2007-01-10  Diane Murray  <address@hidden>
-
-       * erc.el (erc-mode-line-format): Added %l to documentation.
-       (erc-header-line-format): Removed "[IRC]".  Use the new %l
-       replacement character.  Doc fix.
-       (erc-format-channel-modes): Removed lag code.  Removed parentheses
-       from mode string.
-       (erc-format-lag-time): New function.
-       (erc-update-mode-line-buffer): Use it.
-
-2007-01-10  Michael Olson  <address@hidden>
-
-       * erc.el: Fix typo in url-irc-function instructions.
-
-2007-01-09  Michael Olson  <address@hidden>
-
-       * erc.el (erc-system-name): New option that determines the system
-       name to use when logging in.  The default is to figure this out by
-       calling `system-name'.
-       (erc-login): Use it.
-
-2007-01-07  Michael Olson  <address@hidden>
-
-       * erc.el (erc-modules): Add the menu module.  This should fix a
-       bug with incorrect ERC submenus being displayed.
-
-       * erc-menu.el: Turn this into a module.
-       (erc-menu-add, erc-menu-remove): New functions that add and remove
-       the ERC menu.
-
-
-See ChangeLog.06 for earlier changes.
-
-       Copyright (C) 2007-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; add-log-time-zone-rule: t
-;; End:
-
diff --git a/lisp/erc/ChangeLog.08 b/lisp/erc/ChangeLog.08
deleted file mode 100644
index b73f646..0000000
--- a/lisp/erc/ChangeLog.08
+++ /dev/null
@@ -1,429 +0,0 @@
-2008-11-19  Andy Stewart  <address@hidden>
-
-       * erc.el (erc-header-line-uses-tabbar-p): New option that makes
-       tabbar mode usable with ERC if set to non-nil.
-       (erc-update-mode-line-buffer): Use it.
-
-2008-11-19  Glenn Morris  <address@hidden>
-
-       * erc-compat.el (help-function-arglist): Autoload it.
-
-2008-10-03  Michael Olson  <address@hidden>
-
-       * erc-dcc.el (english): Increase size heading by two places.
-       (erc-dcc-byte-count): Move higher.
-       (erc-dcc-do-LIST-command): Use erc-dcc-byte-count to get accurate
-       count.  Coerce byte total to floating point before performing
-       computation, otherwise division will truncate to 0.
-       (erc-dcc-append-contents): Update erc-dcc-byte-count.
-       (erc-dcc-get-filter): Don't update erc-dcc-byte-count, because
-       that will give incorrect size totals.  Instead, figure out how
-       much we have by summing byte count and current buffer size.
-       (erc-dcc-get-sentinel): Don't update erc-dcc-byte-count.
-
-2008-10-01  Michael Olson  <address@hidden>
-
-       * erc-dcc.el (erc-pack-int): Make sure returned string is within 4
-       bytes.  Always return a 4-byte string, so that we conform to the
-       CTCP spec.
-       (erc-most-positive-int-bytes): New constant representing the
-       number of bytes that most-positive-fixnum can be stored in.
-       (erc-most-positive-int-msb): New constant representing the
-       contents of the most significant byte of most-positive-fixnum.
-       (erc-unpack-int): Make sure that the integer we get back can be
-       represented in Emacs.
-       (erc-dcc-do-CLOSE-command): Update docstring.  Don't use the line
-       variable.  Try to disambiguate between type and nick when only one
-       is provided.  Validate both type and nick arguments.  Allow
-       matching by just nick.
-       (erc-dcc-append-contents): Set inhibit-read-only to t.  Prevent
-       auto-compression from triggering when we write the contents to a
-       file.
-       (erc-dcc-get-file): Prevent auto-compression from triggering when
-       we truncate a file.
-
-2008-07-27  Dan Nicolaescu  <address@hidden>
-
-       * erc.el: Remove code for Carbon.
-
-2008-06-07  Glenn Morris  <address@hidden>
-
-       * erc-autoaway.el, erc-ibuffer.el, erc-menu.el:
-       * erc-stamp.el, erc.el: Remove unnecessary eval-when-compiles.
-
-2008-05-30  Diane Murray  <address@hidden>
-
-       * erc-backend.el (328): New response handler.
-
-       * erc.el (english): Add 328 to catalog.
-
-2008-05-29  Diane Murray  <address@hidden>
-
-       * erc-services.el (erc-nickserv-alist): Update REGEXP and
-       SUCCESS-REGEXP for freenode.
-
-2008-05-05  Juanma Barranquero  <address@hidden>
-
-       * erc-goodies.el (erc-noncommands-list, noncommands)
-       (erc-control-characters, erc-interpret-controls-p)
-       (erc-interpret-mirc-color): Fix typos in docstrings.
-       (erc-controls-highlight): Reflow docstring.
-
-2008-04-26  Johan Bockgård  <address@hidden>
-
-       * erc.el (erc-put-text-properties): Don't use mapcar*.
-       (erc-display-line-1): Fix argument order in call to
-       erc-put-text-properties.
-
-2008-04-14  Michael Olson  <address@hidden>
-
-       * erc.el (erc-remove-text-properties-region): Disable this command
-       by default.  Thanks to e1f for the suggestion.
-
-2008-02-20  Michael Olson  <address@hidden>
-
-       * erc.el (erc-notice-face): Fix this face for Emacs 21 users.
-
-2008-02-05  Juanma Barranquero  <address@hidden>
-
-       * erc.el (erc-valid-nick-regexp):
-       * erc-button.el (erc-button-syntax-table):
-       * erc-match.el (erc-match-syntax-table): Replace `legal' with `valid'.
-
-2008-02-04  Jeremy Maitin-Shepard  <address@hidden>
-
-       * erc.el (erc-cmd-QUERY): Bind the value of `erc-auto-query' to
-       `erc-query-display' rather than `erc-join-buffer'.  This fixes a
-       bug where the value of erc-auto-query was being ignored.
-
-2008-01-31  Michael Olson  <address@hidden>
-
-       * erc-dcc.el (erc-dcc-do-GET-command, erc-dcc-do-SEND-command):
-       Improve docstring.  If FILE argument is split into multiple
-       arguments, re-join them into a single string, separated by a
-       space.  This fixes an issue where the user wants to send or
-       receive a file with spaces in its name.  It is assumed that no one
-       will try sending or receiving a file with multiple consecutive
-       spaces in its name, otherwise this fix will fail.
-
-       * erc.el (erc-mode-map): Add binding for C-c C-x to
-       erc-quit-server, since rcirc.el binds its quit command in a
-       similar manner.  Thanks to Jari Aalto for the suggestion.
-
-2008-01-28  Diane Murray  <address@hidden>
-
-       * erc-list-old.el (list-old): Define module as list-old, not list.
-       This fixes a bug where an unknown module error would occur when
-       starting ERC and using the list-old module.
-
-       * erc-track.el (erc-track-find-face): If no choice was found
-       return nil to use the default mode-line faces.
-
-2008-01-26  Michael Olson  <address@hidden>
-
-       * erc.el (erc-version-string): Release ERC 5.3.
-
-       * Makefile (VERSION): Update.
-       (EXTRAS): Remove erc-list.el after all, because this is mainly for
-       users of the version that comes with Emacs, and they will have
-       erc-list.el by Emacs 23.
-       (MISC): Add ChangeLog.07.
-       (elpa): Fix build issue.  Add proper version to erc-pkg.el.
-
-       * README.extras: Mention Emacs 23.
-
-       * erc-pkg.el: Make the version string a template.
-
-       * erc.texi (Obtaining ERC): Update extras URLs for 5.3.
-       (Development): Write instructions for git, and remove those for Arch.
-       (History): Mention the switch to git.
-
-2008-01-25  Michael Olson  <address@hidden>
-
-       * NEWS: Update.
-
-       * erc-goodies.el (keep-place): New module which keeps your place
-       in unvisited ERC buffers when new messages arrive.  This is mostly
-       taken from Johan Bockgård's init file.
-       (erc-noncommands-list): Move to correct place.
-
-       * erc-networks.el: Add a module definition.
-
-       * erc-services.el (erc-nickserv-identify-mode): Force-enable the
-       networks module, because we need it to set erc-network for us.
-
-       * erc-track.el (erc-track-faces-normal-list): Indicate in the
-       docstring that this variable can be set to nil.
-
-       * erc.el: On second thought, don't load erc-networks.  Just enable
-       the networks module by default.
-       (erc-modules): Add option for keep-place and networks.  Enable
-       networks by default.
-       (erc-version-string): Make release candidate 1 available.
-
-2008-01-24  Michael Olson  <address@hidden>
-
-       * erc.el: Load erc-networks.el so that functions get access to the
-       `erc-network-name' function.
-
-       * erc-track.el (erc-track-faces-normal-list): Add
-       erc-dangerous-host-face.
-       (erc-track-exclude-types): Add 333 and 353 to the default list of
-       things to ignore, and explain what they are in the docstring.
-
-2008-01-23  Michael Olson  <address@hidden>
-
-       * erc-track.el (erc-track-faces-priority-list): Move
-       erc-nick-default-face higher, so that it can be used for the
-       activity indication effect.  Add erc-current-nick-face,
-       erc-pal-face, erc-dangerous-host-face, and erc-fool-face by
-       themselves.
-       (erc-track-faces-normal-list): New option that contains a list of
-       faces to consider "normal".
-       (erc-track-position-in-mode-line): Minor docfix.
-       (erc-track-find-face): Use erc-track-faces-normal-list to produce
-       a sort of blinking activity effect.
-
-2008-01-22  Michael Olson  <address@hidden>
-
-       * erc-button.el (erc-button-add-nickname-buttons): When in a
-       channel buffer, only look at nicks from the current channel.
-       Thanks to e1f for the report.
-
-2008-01-21  Michael Olson  <address@hidden>
-
-       * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): Remove,
-       since we can use the default `assert' function without it causing
-       us any problems, even in Emacs 21.  Thanks to bojohan for the
-       suggestion.
-
-       * erc-goodies.el (move-to-prompt): Use the "XEmacs" method
-       instead, because the [remap ...] method interferes with
-       delete-selection-mode.
-       (erc-move-to-prompt): Rename from erc-move-to-prompt-xemacs.
-       Deactivate mark and call push-mark before moving point.  Thanks to
-       bojohan for the suggestion.
-       (erc-move-to-prompt-setup): Rename from
-       erc-move-to-prompt-init-xemacs.
-
-       * erc-track.el (erc-track-faces-priority-list): Replace erc-button
-       with '(erc-button erc-default-face) so that we only care about
-       buttons that are part of normal text.  Adjust customization type
-       to handle this case.  Make erc-nick-default-face a list.  Handle
-       pals, fools, current nick, and dangerous hosts.
-       (erc-track-find-face): Simplify.  Adapt for list of faces case.
-       (erc-faces-in): Don't deflate lists of faces.  Add them as-is.
-       (erc-track-face-priority): Use equal instead of eq.
-
-2008-01-20  Michael Olson  <address@hidden>
-
-       * erc-goodies.el (erc-move-to-prompt, erc-move-to-prompt-xemacs):
-       Fix off-by-one error that caused the point to move when placed at
-       the beginning of some already-typed text.  Thanks to e1f for the
-       report.
-
-       * erc-dcc.el, erc-xdcc.el: Add simple module definitions.
-
-       * erc.el (erc-modules): Add dcc and xdcc.
-
-2008-01-19  Michael Olson  <address@hidden>
-
-       * erc-bbdb.el (erc-bbdb-insinuate-and-show-entry): Work around bug
-       in XEmacs 21.4 that throws an error when the first argument to
-       run-at-time is nil.
-
-       * erc-button.el (button): Undo XEmacs-specific change to all ERC
-       buffers when module is removed.
-       (erc-button-setup): Rename from erc-button-add-keys, and move
-       XEmacs-specific stuff here.
-
-       * erc-goodies.el (erc-unmorse): Improve regexp for detecting
-       morse.  Deal with the morse style that has "/ " at the end of
-       every letter.
-       (erc-imenu-setup): New function that sets up Imenu support.  Add
-       it instead of a lambda form to erc-mode-hook.
-       (scrolltobottom): Remove erc-scroll-to-bottom from all ERC buffers
-       when module is removed.  Activate the functionality in all ERC
-       buffers when the module is activated, rather than leaving it up to
-       the user.
-       (move-to-prompt): New module that moves to the ERC prompt if a
-       user tries to type elsewhere in the buffer, and then inserts their
-       keystrokes there.  This is mostly taken from Johan Bockgård's init
-       file.
-       (erc-move-to-prompt): New function that implements this.
-       (erc-move-to-prompt-xemacs): New function that implements this for
-       XEmacs.
-       (erc-move-to-prompt-init-xemacs): New function to perform the
-       extra initialization step needed for XEmacs.
-
-       * erc-page.el, erc-replace.el: Fix header and footer.
-
-       * erc-track.el (erc-track-minor-mode-maybe): Take an optional
-       buffer arg so that we can put this in erc-connect-pre-hook.  If
-       given this argument, include it in the check to determine whether
-       to activate erc-track-minor-mode.
-       (track): Add erc-track-minor-mode-maybe to erc-connect-pre-hook,
-       so that we can use it as soon as a connection is attempted.
-
-       * erc.el (erc-format-network, erc-format-target-and/or-network):
-       Use erc-network-name function instead, and check to see whether
-       that function is bound.  This fixes an error in process filter for
-       people who did not have erc-services or erc-networks loaded.
-       (erc-modules): Add move-to-prompt module and enable it by
-       default.  Thanks to e1f for the suggestion.
-
-2008-01-18  Michael Olson  <address@hidden>
-
-       * Makefile (EXTRAS): Include erc-list-old.el.
-
-       * erc-dcc.el (erc-dcc-verbose): Rename from erc-verbose-dcc.
-       (erc-pack-int): Rewrite to not depend on a count argument.
-       (erc-unpack-int): Rewrite to remove 4-character limitation.
-       (erc-dcc-server): Call set-process-coding-system and
-       set-process-filter-multibyte so that the contents get sent out
-       without modification.
-       (erc-dcc-send-filter): Don't take a substring -- just pass the
-       whole string to erc-unpack-int.
-       (erc-dcc-receive-cache): New option that indicates the number of
-       bytes to let the receive buffer grow before flushing it.
-       (erc-dcc-file-name): New buffer-local variable to keep track of
-       the filename of the currently-received file.
-       (erc-dcc-get-file): Disable undo for a speed increase.  Set
-       erc-dcc-file-name.  Truncate the file before writing to it.
-       (erc-dcc-append-contents): New function to append the contents of
-       a buffer to a file and then erase the contents of the buffer.
-       (erc-dcc-get-filter): Flush buffer contents after exceeding
-       erc-dcc-receive-cache.  This allows large files to be downloaded
-       without storing the whole thing in memory.
-       (erc-dcc-get-sentinel): Flush any remaining contents before
-       closing.  No need to save buffer.
-       (erc-dcc-listen-host): New option that determines which IP address
-       to listen on.
-       (erc-dcc-public-host): New option that determines which IP address
-       to advertise when sending a file.  This is useful for people who
-       are on a local subnet.  Together, these two options replace
-       erc-dcc-host.
-
-       * erc.el (erc-mode-line-format): Add %N and %S.  %N is the name of
-       the network, and %S is much like %s but with the network name
-       trumping the server name.  Default to "%S %a".  Thanks to e1f for
-       the suggestion.
-       (erc-format-network): New function that formats the network name.
-       (erc-format-target-and/or-network): New function that formats both
-       the network name and target, falling back on the server name if
-       the network name is not available.
-       (erc-update-mode-line-buffer): Add the new format spec items.
-
-2008-01-17  Michael Olson  <address@hidden>
-
-       * erc.el (erc-join-buffer): Improve documentation.
-       (erc-query-display): New option indicating how to display a query
-       buffer that is made by using the /QUERY command.  The default is
-       to display the query in a new window.
-       (erc-cmd-QUERY): Use it.  Improve docstring.
-       (erc-auto-query): Default this to 'window-noselect instead,
-       because I've already seen bug reports about new users thinking
-       that ERC didn't display their test messages.  Improve
-       customization type.
-       (erc-notice-face): Make this work with XEmacs.
-       (erc-join-buffer): Mention 'buffer in docstring.  Improve
-       customization type.
-
-       * erc-dcc.el (erc-dcc-send-sentinel): Better handle case where elt
-       is nil, in order to avoid an error.  Thanks to Brent Goodrick for
-       the initial patch.
-       (erc-dcc-display-send): New function split from erc-dcc-send-hook.
-       (erc-dcc-send-connect-hook): Use it -- we don't like lambda forms
-       in hooks.
-       (erc-dcc-send-filter): Display byte count if the client confirmed
-       too much, and kill the buffer.  Otherwise a DoS might be possible
-       by making Emacs run out of RAM.
-
-       * erc-backend.el (erc-server-connect): Detect early on whether the
-       connection attempt has failed in order to avoid confusing error
-       messages.
-
-       * erc-networks.el (erc-server-alist): Add Rizon network.
-
-       * erc-services.el (erc-nickserv-passwords): Add Rizon to options.
-       (erc-nickserv-alist): Add support for Rizon.
-
-       * erc-track.el (erc-track-find-face): Don't let buttons in notices
-       trump default text.  Use catch/throw.  Default to first element of
-       FACES is nothing is found.
-
-       * erc-xdcc.el: Add local variables for proper indentation setup.
-
-2008-01-15  Michael Olson  <address@hidden>
-
-       * erc-backend.el (erc-server-coding-system): Docfix.
-       (erc-coding-system-for-target): Pass the `target' argument along
-       as the first and only argument.  It's not good to just depend on a
-       dynamic binding.
-
-2008-01-10  Michael Olson  <address@hidden>
-
-       * erc-backend.el (321, 322): Split message-displaying parts into
-       new functions, which are added to each response's respective
-       hook.  This makes them easier to disable.
-
-       * erc-list.el: New file from Tom Tromey.  Use erc-propertize
-       instead of propertize.  Require 'erc.
-       (list): New module definition.  Remove message-displaying
-       functions for 321 and 322 response handlers when enabling the
-       module, and restore them when disabling.  As a sanity check,
-       remove the erc-list-handle-322 function when disabling the module.
-       (erc-list-handle-322): Handle the case where we run the LIST
-       command, but do not go through the normal steps.
-       (erc-cmd-LIST): Add docstring.  Strip initial space from line if
-       it is non-nil.  Use make-local-variable to silence compiler
-       warning.  Capture current buffer and pass it to
-       erc-list-install-322-handler.
-       (erc-list-install-322-handler): Take server-buffer argument, so
-       that we are certain of being in the right buffer.  Use 4th
-       argument to add-hook, so that erc-server-322-functions is only
-       modified in one buffer.
-
-       * erc-list-old.el: Renamed from old erc-list.el.
-
-       * erc.el (erc-modules): Add list-old.
-       (erc-set-topic): Handle case where there are no newlines in the
-       existing topic, which happens when /LIST is run.
-       (erc-notice-face): If we have less than 88 colors, make this
-       blue.  Otherwise the text will be pink in a tty, which looks
-       dreadful.  Thanks to e1f for the report.
-       (erc-remove-parsed-property): New option that determines whether
-       to remove the erc-parsed property after displaying a message.
-       This should have the effect of making ERC take up less memory.
-       (erc-display-line-1): Use it.
-
-2008-01-04  Stefan Monnier  <address@hidden>
-
-       * erc-ibuffer.el (erc-channel-modes):
-       Pass mode-name through format-mode-line
-
-
-See ChangeLog.07 for earlier changes.
-
-       Copyright (C) 2008-2015 Free Software Foundation, Inc.
-
-  This file is part of GNU Emacs.
-
-  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
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;; Local Variables:
-;; coding: utf-8
-;; add-log-time-zone-rule: t
-;; End:
-
diff --git a/lisp/erc/ChangeLog.1 b/lisp/erc/ChangeLog.1
new file mode 100644
index 0000000..790d049
--- /dev/null
+++ b/lisp/erc/ChangeLog.1
@@ -0,0 +1,11729 @@
+2008-11-19  Andy Stewart  <address@hidden>
+
+       * erc.el (erc-header-line-uses-tabbar-p): New option that makes
+       tabbar mode usable with ERC if set to non-nil.
+       (erc-update-mode-line-buffer): Use it.
+
+2008-11-19  Glenn Morris  <address@hidden>
+
+       * erc-compat.el (help-function-arglist): Autoload it.
+
+2008-10-03  Michael Olson  <address@hidden>
+
+       * erc-dcc.el (english): Increase size heading by two places.
+       (erc-dcc-byte-count): Move higher.
+       (erc-dcc-do-LIST-command): Use erc-dcc-byte-count to get accurate
+       count.  Coerce byte total to floating point before performing
+       computation, otherwise division will truncate to 0.
+       (erc-dcc-append-contents): Update erc-dcc-byte-count.
+       (erc-dcc-get-filter): Don't update erc-dcc-byte-count, because
+       that will give incorrect size totals.  Instead, figure out how
+       much we have by summing byte count and current buffer size.
+       (erc-dcc-get-sentinel): Don't update erc-dcc-byte-count.
+
+2008-10-01  Michael Olson  <address@hidden>
+
+       * erc-dcc.el (erc-pack-int): Make sure returned string is within 4
+       bytes.  Always return a 4-byte string, so that we conform to the
+       CTCP spec.
+       (erc-most-positive-int-bytes): New constant representing the
+       number of bytes that most-positive-fixnum can be stored in.
+       (erc-most-positive-int-msb): New constant representing the
+       contents of the most significant byte of most-positive-fixnum.
+       (erc-unpack-int): Make sure that the integer we get back can be
+       represented in Emacs.
+       (erc-dcc-do-CLOSE-command): Update docstring.  Don't use the line
+       variable.  Try to disambiguate between type and nick when only one
+       is provided.  Validate both type and nick arguments.  Allow
+       matching by just nick.
+       (erc-dcc-append-contents): Set inhibit-read-only to t.  Prevent
+       auto-compression from triggering when we write the contents to a
+       file.
+       (erc-dcc-get-file): Prevent auto-compression from triggering when
+       we truncate a file.
+
+2008-07-27  Dan Nicolaescu  <address@hidden>
+
+       * erc.el: Remove code for Carbon.
+
+2008-06-07  Glenn Morris  <address@hidden>
+
+       * erc-autoaway.el, erc-ibuffer.el, erc-menu.el:
+       * erc-stamp.el, erc.el: Remove unnecessary eval-when-compiles.
+
+2008-05-30  Diane Murray  <address@hidden>
+
+       * erc-backend.el (328): New response handler.
+
+       * erc.el (english): Add 328 to catalog.
+
+2008-05-29  Diane Murray  <address@hidden>
+
+       * erc-services.el (erc-nickserv-alist): Update REGEXP and
+       SUCCESS-REGEXP for freenode.
+
+2008-05-05  Juanma Barranquero  <address@hidden>
+
+       * erc-goodies.el (erc-noncommands-list, noncommands)
+       (erc-control-characters, erc-interpret-controls-p)
+       (erc-interpret-mirc-color): Fix typos in docstrings.
+       (erc-controls-highlight): Reflow docstring.
+
+2008-04-26  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-put-text-properties): Don't use mapcar*.
+       (erc-display-line-1): Fix argument order in call to
+       erc-put-text-properties.
+
+2008-04-14  Michael Olson  <address@hidden>
+
+       * erc.el (erc-remove-text-properties-region): Disable this command
+       by default.  Thanks to e1f for the suggestion.
+
+2008-02-20  Michael Olson  <address@hidden>
+
+       * erc.el (erc-notice-face): Fix this face for Emacs 21 users.
+
+2008-02-05  Juanma Barranquero  <address@hidden>
+
+       * erc.el (erc-valid-nick-regexp):
+       * erc-button.el (erc-button-syntax-table):
+       * erc-match.el (erc-match-syntax-table): Replace `legal' with `valid'.
+
+2008-02-04  Jeremy Maitin-Shepard  <address@hidden>
+
+       * erc.el (erc-cmd-QUERY): Bind the value of `erc-auto-query' to
+       `erc-query-display' rather than `erc-join-buffer'.  This fixes a
+       bug where the value of erc-auto-query was being ignored.
+
+2008-01-31  Michael Olson  <address@hidden>
+
+       * erc-dcc.el (erc-dcc-do-GET-command, erc-dcc-do-SEND-command):
+       Improve docstring.  If FILE argument is split into multiple
+       arguments, re-join them into a single string, separated by a
+       space.  This fixes an issue where the user wants to send or
+       receive a file with spaces in its name.  It is assumed that no one
+       will try sending or receiving a file with multiple consecutive
+       spaces in its name, otherwise this fix will fail.
+
+       * erc.el (erc-mode-map): Add binding for C-c C-x to
+       erc-quit-server, since rcirc.el binds its quit command in a
+       similar manner.  Thanks to Jari Aalto for the suggestion.
+
+2008-01-28  Diane Murray  <address@hidden>
+
+       * erc-list-old.el (list-old): Define module as list-old, not list.
+       This fixes a bug where an unknown module error would occur when
+       starting ERC and using the list-old module.
+
+       * erc-track.el (erc-track-find-face): If no choice was found
+       return nil to use the default mode-line faces.
+
+2008-01-26  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Release ERC 5.3.
+
+       * Makefile (VERSION): Update.
+       (EXTRAS): Remove erc-list.el after all, because this is mainly for
+       users of the version that comes with Emacs, and they will have
+       erc-list.el by Emacs 23.
+       (MISC): Add ChangeLog.07.
+       (elpa): Fix build issue.  Add proper version to erc-pkg.el.
+
+       * README.extras: Mention Emacs 23.
+
+       * erc-pkg.el: Make the version string a template.
+
+       * erc.texi (Obtaining ERC): Update extras URLs for 5.3.
+       (Development): Write instructions for git, and remove those for Arch.
+       (History): Mention the switch to git.
+
+2008-01-25  Michael Olson  <address@hidden>
+
+       * NEWS: Update.
+
+       * erc-goodies.el (keep-place): New module which keeps your place
+       in unvisited ERC buffers when new messages arrive.  This is mostly
+       taken from Johan Bockgård's init file.
+       (erc-noncommands-list): Move to correct place.
+
+       * erc-networks.el: Add a module definition.
+
+       * erc-services.el (erc-nickserv-identify-mode): Force-enable the
+       networks module, because we need it to set erc-network for us.
+
+       * erc-track.el (erc-track-faces-normal-list): Indicate in the
+       docstring that this variable can be set to nil.
+
+       * erc.el: On second thought, don't load erc-networks.  Just enable
+       the networks module by default.
+       (erc-modules): Add option for keep-place and networks.  Enable
+       networks by default.
+       (erc-version-string): Make release candidate 1 available.
+
+2008-01-24  Michael Olson  <address@hidden>
+
+       * erc.el: Load erc-networks.el so that functions get access to the
+       `erc-network-name' function.
+
+       * erc-track.el (erc-track-faces-normal-list): Add
+       erc-dangerous-host-face.
+       (erc-track-exclude-types): Add 333 and 353 to the default list of
+       things to ignore, and explain what they are in the docstring.
+
+2008-01-23  Michael Olson  <address@hidden>
+
+       * erc-track.el (erc-track-faces-priority-list): Move
+       erc-nick-default-face higher, so that it can be used for the
+       activity indication effect.  Add erc-current-nick-face,
+       erc-pal-face, erc-dangerous-host-face, and erc-fool-face by
+       themselves.
+       (erc-track-faces-normal-list): New option that contains a list of
+       faces to consider "normal".
+       (erc-track-position-in-mode-line): Minor docfix.
+       (erc-track-find-face): Use erc-track-faces-normal-list to produce
+       a sort of blinking activity effect.
+
+2008-01-22  Michael Olson  <address@hidden>
+
+       * erc-button.el (erc-button-add-nickname-buttons): When in a
+       channel buffer, only look at nicks from the current channel.
+       Thanks to e1f for the report.
+
+2008-01-21  Michael Olson  <address@hidden>
+
+       * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): Remove,
+       since we can use the default `assert' function without it causing
+       us any problems, even in Emacs 21.  Thanks to bojohan for the
+       suggestion.
+
+       * erc-goodies.el (move-to-prompt): Use the "XEmacs" method
+       instead, because the [remap ...] method interferes with
+       delete-selection-mode.
+       (erc-move-to-prompt): Rename from erc-move-to-prompt-xemacs.
+       Deactivate mark and call push-mark before moving point.  Thanks to
+       bojohan for the suggestion.
+       (erc-move-to-prompt-setup): Rename from
+       erc-move-to-prompt-init-xemacs.
+
+       * erc-track.el (erc-track-faces-priority-list): Replace erc-button
+       with '(erc-button erc-default-face) so that we only care about
+       buttons that are part of normal text.  Adjust customization type
+       to handle this case.  Make erc-nick-default-face a list.  Handle
+       pals, fools, current nick, and dangerous hosts.
+       (erc-track-find-face): Simplify.  Adapt for list of faces case.
+       (erc-faces-in): Don't deflate lists of faces.  Add them as-is.
+       (erc-track-face-priority): Use equal instead of eq.
+
+2008-01-20  Michael Olson  <address@hidden>
+
+       * erc-goodies.el (erc-move-to-prompt, erc-move-to-prompt-xemacs):
+       Fix off-by-one error that caused the point to move when placed at
+       the beginning of some already-typed text.  Thanks to e1f for the
+       report.
+
+       * erc-dcc.el, erc-xdcc.el: Add simple module definitions.
+
+       * erc.el (erc-modules): Add dcc and xdcc.
+
+2008-01-19  Michael Olson  <address@hidden>
+
+       * erc-bbdb.el (erc-bbdb-insinuate-and-show-entry): Work around bug
+       in XEmacs 21.4 that throws an error when the first argument to
+       run-at-time is nil.
+
+       * erc-button.el (button): Undo XEmacs-specific change to all ERC
+       buffers when module is removed.
+       (erc-button-setup): Rename from erc-button-add-keys, and move
+       XEmacs-specific stuff here.
+
+       * erc-goodies.el (erc-unmorse): Improve regexp for detecting
+       morse.  Deal with the morse style that has "/ " at the end of
+       every letter.
+       (erc-imenu-setup): New function that sets up Imenu support.  Add
+       it instead of a lambda form to erc-mode-hook.
+       (scrolltobottom): Remove erc-scroll-to-bottom from all ERC buffers
+       when module is removed.  Activate the functionality in all ERC
+       buffers when the module is activated, rather than leaving it up to
+       the user.
+       (move-to-prompt): New module that moves to the ERC prompt if a
+       user tries to type elsewhere in the buffer, and then inserts their
+       keystrokes there.  This is mostly taken from Johan Bockgård's init
+       file.
+       (erc-move-to-prompt): New function that implements this.
+       (erc-move-to-prompt-xemacs): New function that implements this for
+       XEmacs.
+       (erc-move-to-prompt-init-xemacs): New function to perform the
+       extra initialization step needed for XEmacs.
+
+       * erc-page.el, erc-replace.el: Fix header and footer.
+
+       * erc-track.el (erc-track-minor-mode-maybe): Take an optional
+       buffer arg so that we can put this in erc-connect-pre-hook.  If
+       given this argument, include it in the check to determine whether
+       to activate erc-track-minor-mode.
+       (track): Add erc-track-minor-mode-maybe to erc-connect-pre-hook,
+       so that we can use it as soon as a connection is attempted.
+
+       * erc.el (erc-format-network, erc-format-target-and/or-network):
+       Use erc-network-name function instead, and check to see whether
+       that function is bound.  This fixes an error in process filter for
+       people who did not have erc-services or erc-networks loaded.
+       (erc-modules): Add move-to-prompt module and enable it by
+       default.  Thanks to e1f for the suggestion.
+
+2008-01-18  Michael Olson  <address@hidden>
+
+       * Makefile (EXTRAS): Include erc-list-old.el.
+
+       * erc-dcc.el (erc-dcc-verbose): Rename from erc-verbose-dcc.
+       (erc-pack-int): Rewrite to not depend on a count argument.
+       (erc-unpack-int): Rewrite to remove 4-character limitation.
+       (erc-dcc-server): Call set-process-coding-system and
+       set-process-filter-multibyte so that the contents get sent out
+       without modification.
+       (erc-dcc-send-filter): Don't take a substring -- just pass the
+       whole string to erc-unpack-int.
+       (erc-dcc-receive-cache): New option that indicates the number of
+       bytes to let the receive buffer grow before flushing it.
+       (erc-dcc-file-name): New buffer-local variable to keep track of
+       the filename of the currently-received file.
+       (erc-dcc-get-file): Disable undo for a speed increase.  Set
+       erc-dcc-file-name.  Truncate the file before writing to it.
+       (erc-dcc-append-contents): New function to append the contents of
+       a buffer to a file and then erase the contents of the buffer.
+       (erc-dcc-get-filter): Flush buffer contents after exceeding
+       erc-dcc-receive-cache.  This allows large files to be downloaded
+       without storing the whole thing in memory.
+       (erc-dcc-get-sentinel): Flush any remaining contents before
+       closing.  No need to save buffer.
+       (erc-dcc-listen-host): New option that determines which IP address
+       to listen on.
+       (erc-dcc-public-host): New option that determines which IP address
+       to advertise when sending a file.  This is useful for people who
+       are on a local subnet.  Together, these two options replace
+       erc-dcc-host.
+
+       * erc.el (erc-mode-line-format): Add %N and %S.  %N is the name of
+       the network, and %S is much like %s but with the network name
+       trumping the server name.  Default to "%S %a".  Thanks to e1f for
+       the suggestion.
+       (erc-format-network): New function that formats the network name.
+       (erc-format-target-and/or-network): New function that formats both
+       the network name and target, falling back on the server name if
+       the network name is not available.
+       (erc-update-mode-line-buffer): Add the new format spec items.
+
+2008-01-17  Michael Olson  <address@hidden>
+
+       * erc.el (erc-join-buffer): Improve documentation.
+       (erc-query-display): New option indicating how to display a query
+       buffer that is made by using the /QUERY command.  The default is
+       to display the query in a new window.
+       (erc-cmd-QUERY): Use it.  Improve docstring.
+       (erc-auto-query): Default this to 'window-noselect instead,
+       because I've already seen bug reports about new users thinking
+       that ERC didn't display their test messages.  Improve
+       customization type.
+       (erc-notice-face): Make this work with XEmacs.
+       (erc-join-buffer): Mention 'buffer in docstring.  Improve
+       customization type.
+
+       * erc-dcc.el (erc-dcc-send-sentinel): Better handle case where elt
+       is nil, in order to avoid an error.  Thanks to Brent Goodrick for
+       the initial patch.
+       (erc-dcc-display-send): New function split from erc-dcc-send-hook.
+       (erc-dcc-send-connect-hook): Use it -- we don't like lambda forms
+       in hooks.
+       (erc-dcc-send-filter): Display byte count if the client confirmed
+       too much, and kill the buffer.  Otherwise a DoS might be possible
+       by making Emacs run out of RAM.
+
+       * erc-backend.el (erc-server-connect): Detect early on whether the
+       connection attempt has failed in order to avoid confusing error
+       messages.
+
+       * erc-networks.el (erc-server-alist): Add Rizon network.
+
+       * erc-services.el (erc-nickserv-passwords): Add Rizon to options.
+       (erc-nickserv-alist): Add support for Rizon.
+
+       * erc-track.el (erc-track-find-face): Don't let buttons in notices
+       trump default text.  Use catch/throw.  Default to first element of
+       FACES is nothing is found.
+
+       * erc-xdcc.el: Add local variables for proper indentation setup.
+
+2008-01-15  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-coding-system): Docfix.
+       (erc-coding-system-for-target): Pass the `target' argument along
+       as the first and only argument.  It's not good to just depend on a
+       dynamic binding.
+
+2008-01-10  Michael Olson  <address@hidden>
+
+       * erc-backend.el (321, 322): Split message-displaying parts into
+       new functions, which are added to each response's respective
+       hook.  This makes them easier to disable.
+
+       * erc-list.el: New file from Tom Tromey.  Use erc-propertize
+       instead of propertize.  Require 'erc.
+       (list): New module definition.  Remove message-displaying
+       functions for 321 and 322 response handlers when enabling the
+       module, and restore them when disabling.  As a sanity check,
+       remove the erc-list-handle-322 function when disabling the module.
+       (erc-list-handle-322): Handle the case where we run the LIST
+       command, but do not go through the normal steps.
+       (erc-cmd-LIST): Add docstring.  Strip initial space from line if
+       it is non-nil.  Use make-local-variable to silence compiler
+       warning.  Capture current buffer and pass it to
+       erc-list-install-322-handler.
+       (erc-list-install-322-handler): Take server-buffer argument, so
+       that we are certain of being in the right buffer.  Use 4th
+       argument to add-hook, so that erc-server-322-functions is only
+       modified in one buffer.
+
+       * erc-list-old.el: Renamed from old erc-list.el.
+
+       * erc.el (erc-modules): Add list-old.
+       (erc-set-topic): Handle case where there are no newlines in the
+       existing topic, which happens when /LIST is run.
+       (erc-notice-face): If we have less than 88 colors, make this
+       blue.  Otherwise the text will be pink in a tty, which looks
+       dreadful.  Thanks to e1f for the report.
+       (erc-remove-parsed-property): New option that determines whether
+       to remove the erc-parsed property after displaying a message.
+       This should have the effect of making ERC take up less memory.
+       (erc-display-line-1): Use it.
+
+2008-01-04  Stefan Monnier  <address@hidden>
+
+       * erc-ibuffer.el (erc-channel-modes):
+       Pass mode-name through format-mode-line
+
+2007-12-16  Diane Murray  <address@hidden>
+
+       * erc-services.el (erc-nickserv-alist): Removed autodetect regexp,
+       added identified regexp for OFTC.
+       (erc-nickserv-identification-autodetect): Make sure success-regex
+       is non-nil.
+       (erc-nickserv-identify-autodetect): Make sure identify-regex is
+       non-nil.  Doc fix.
+
+2007-12-13  Diane Murray  <address@hidden>
+
+       * erc-backend.el (PRIVMSG, QUIT, TOPIC, WALLOPS, 376, 004, 221)
+       (312, 315, 319, 330, 331, 333, 367, 368, 391, 405, 406, 412)
+       (421, 432, 433, 437, 442, 461, 474, 477, 482, 431): Doc fix.
+
+2007-12-09  Michael Olson  <address@hidden>
+
+       * erc-services.el (erc-nickserv-alist): Fix regexps for GRnet.
+
+2007-12-09  Giorgos Keramidas  <address@hidden>  (tiny change)
+
+       * erc-backend.el, erc.el:
+       Parse 275 (secure connection) responses.
+
+       * erc-services.el: Add identification hooks for GRnet, the Greek
+       IRC network <http://www.irc.gr>.
+
+2007-12-08  David Kastrup  <address@hidden>
+
+       * erc-stamp.el (erc-echo-timestamp):
+       * erc-lang.el (language):
+       * erc-backend.el (erc-server-connect): Fix buggy call to `message'.
+
+2007-12-07  Edward O'Connor  <address@hidden>
+
+       * erc-services.el: Provide a hook that runs when nickserv confirms
+       that the user has successfully identified.
+       (services, erc-nickserv-identify-mode): Add and remove
+       erc-nickserv-identification-autodetect from
+       erc-server-NOTICE-functions.
+       (erc-nickserv-alist): Add SUCCESS-REGEXP to each entry.
+       (erc-nickserv-alist-identified-regexp)
+       (erc-nickserv-identification-autodetect): New functions.
+       (erc-nickserv-identified-hook): New hook.
+
+2007-12-06  Deepak Goel  <address@hidden>
+
+       * erc-match.el (erc-add-entry-to-list): Fix buggy call to `error'.
+
+2007-12-01  Glenn Morris  <address@hidden>
+
+       * erc-backend.el (erc-server-send-ping): Move after definition of
+       erc-server-send.
+
+2007-11-29  Giorgos Keramidas  <address@hidden>  (tiny change)
+
+       * erc-backend.el, erc.el:
+       Parse 307 (nick has identified) responses.
+
+2007-11-15  Juanma Barranquero  <address@hidden>
+
+       * erc.el (erc-open):
+       * erc-backend.el (define-erc-response-handler):
+       * erc-log.el (log):
+       * erc-match.el (erc-log-matches): Fix typos in docstrings.
+
+2007-11-11  Michael Olson  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-possibly-set-away):
+       * erc-netsplit.el (erc-netsplit-timer):
+       * erc-notify.el (erc-notify-timer):
+       * erc-track.el (erc-user-is-active): Only run if we have
+       successfully established a connection to the server and have
+       logged in.  I suspect that sending messages too soon may make some
+       IRC servers not respond well, particularly when the network
+       connection is iffy or subject to traffic-shaping.
+
+2007-11-01  Michael Olson  <address@hidden>
+
+       * erc-compat.el (erc-set-write-file-functions): New compatibility
+       function to set the write hooks appropriately.
+
+       * erc-log.el (erc-log-setup-logging): Use
+       erc-set-write-file-functions.  This fixes a byte-compiler warning.
+
+       * erc-stamp.el: Silence byte-compiler warning about
+       erc-fill-column.
+
+       * erc.el (erc-with-all-buffers-of-server): Bind the result of
+       mapcar to a variable in order to silence a byte-compiler warning.
+
+2007-10-29  Michael Olson  <address@hidden>
+
+       * erc-ibuffer.el (erc-modified-channels-alist): Use
+       eval-when-compile, and explain why we are doing this.
+
+2007-10-25  Dan Nicolaescu  <address@hidden>
+
+       * erc-ibuffer.el (erc-modified-channels-alist): Pacify
+       byte-compiler.
+
+2007-10-13  Glenn Morris  <address@hidden>
+
+       * erc-track.el (erc-modified-channels-update): Use mapc rather
+       than mapcar.
+
+2007-10-12  Diane Murray  <address@hidden>
+
+       * erc.el (erc-join-channel): Prompt for channel key if C-u or
+       another prefix-arg was typed.
+
+       * NEWS: Noted this change.
+
+2007-10-07  Michael Olson  <address@hidden>
+
+       * erc.el (erc-cmd-ME'S): New command that handles the case where
+       someone types "/me's".  It concatenates the text " 's" to the
+       beginning of the input and then sends the result like a normal
+       "/me" command.
+       (erc-command-regexp): Permit single-quote character.
+
+2007-09-30  Aidan Kehoe  <address@hidden>  (tiny change)
+
+       * erc-log.el (erc-save-buffer-in-logs): Prevent spurious warnings
+       when looking at a log file and concurrently saving to it.
+
+2007-09-18  Exal de Jesus Garcia Carrillo  <address@hidden>  (tiny change)
+
+       * erc.texi (Special-Features): Fix small typo.
+
+2007-09-16  Michael Olson  <address@hidden>
+
+       * erc-track.el (erc-track-switch-direction): Mention
+       erc-track-faces-priority-list.  Thanks to Leo for the suggestion.
+
+2007-09-11  Exal de Jesus Garcia Carrillo  <address@hidden>  (tiny change)
+
+       * erc-sound.el: Fix typo in setting up instructions.
+
+2007-09-10  Michael Olson  <address@hidden>
+
+       * Makefile (elpa): Copy dir template rather than echoing a few
+       lines.  The reason for this is that the ELPA package for ERC was
+       getting a corrupt dir entry.
+
+       * dir-template: Template for the ELPA dir file.
+
+2007-09-08  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-log-filter-function): New option that specifies
+       the function to call for filtering text before writing it to a log
+       file.  Thanks to David O'Toole for the suggestion.
+       (erc-save-buffer-in-logs): Use erc-log-filter-function.  Make sure
+       we carry along the value of coding-system-for-write, because this
+       could potentially be shadowed by the temporary buffer.
+
+       * erc.el (erc-version-string): Update to 5.3, development version.
+
+2007-09-07  Glenn Morris  <address@hidden>
+
+       * erc.el (erc-toggle-debug-irc-protocol): Fix call to
+       erc-view-mode-enter.
+
+2007-08-08  Glenn Morris  <address@hidden>
+
+       * erc-log.el, erc.el: Replace `iff' in doc-strings and comments.
+
+2007-09-03  Michael Olson  <address@hidden>
+
+       * erc.el (erc-default-port): Make this an integer value rather
+       than a string.  Thanks to Luca Capello for the report.
+
+2007-08-27  Michael Olson  <address@hidden>
+
+       * erc.el (erc-cmd-GQUIT): If erc-kill-queries-on-quit is non-nil,
+       kill all query buffers after 4 seconds.
+
+2007-08-16  Michael Olson  <address@hidden>
+
+       * NEWS: Add ERC 5.3 changes section, and mention jbms' erc-track
+       compatibility note.
+
+       * erc-track.el (erc-track-list-changed-hook): Turn this into a
+       customizable option.
+       (erc-track-switch-direction): Add 'importance option.
+       (erc-modified-channels-display): If erc-track-switch-direction is
+       'importance, call erc-track-sort-by-importance.
+       (erc-track-face-priority): New function that returns a number
+       indicating the position of a face in erc-track-faces-priority-list.
+       (erc-track-sort-by-importance): New function that sorts
+       erc-modified-channels-list according to erc-track-face-priority.
+       (erc-track-get-active-buffer): Make 'oldest a rough opposite of
+       'importance.
+
+2007-08-14  Jeremy Maitin-Shepard  <address@hidden>
+
+       * erc-track.el (erc-track-remove-disconnected-buffers): New
+       variable which controls whether buffers associated with a server
+       that is disconnected should be removed from
+       `erc-modified-channels-alist'.  Existing behavior is to
+       unconditionally remove such buffers, which is achieved by setting
+       `erc-track-removed-disconnected-buffers' to t.  When set to t,
+       which is the new default value, such buffers remain in the list,
+       which I think is often the desired behavior, since the user may
+       likely wish to find out about activity that occurred in a channel
+       prior to it being disconnected.
+       (erc-track-list-changed-hook): New hook that is run whenever the
+       contents of `erc-modified-channels-alist' changes; it is useful
+       for users such as myself that don't use the default mode-line
+       notification but instead use a separate mechanism (which is tied
+       to my window manager) to provide notification of channel activity.
+       (erc-track-get-buffer-window): New function that acts as a wrapper
+       around `get-buffer-window' that handles the `selected-visible'
+       option of `erc-track-visibility'; previously, the value of
+       `erc-track-visibility' was passed directly to `get-buffer-window',
+       which does not support `selected-visible'; consequently,
+       `selected-visible' was not properly supported.
+       (erc-track-modified-channels): Fix a bug in the logic for removing
+       buffers from the list in certain cases.
+       (erc-track-position-in-mode-line): Add a supported value that
+       specifies that the tracking information should not be added to the
+       mode line at all.  The value of nil is used to indicate that the
+       information should not be added at all to the mode line.
+       (erc-track-add-to-mode-line): Check for position eq to t, rather
+       than non-nil.
+       (erc-buffer-visible): Use erc-track-get-buffer-window.
+       (erc-modified-channels-update): Take
+       erc-track-remove-disconnected-buffers into account.
+       (erc-modified-channels-display): Run `erc-track-list-changed-hook'.
+
+       * erc.el (erc-reuse-frames): New option that determines whether
+       new frames are always created.  Defaults to t.  This only has an
+       effect when erc-join-buffer is set to 'frame.
+       (erc-setup-buffer): Use it.
+
+2007-08-14  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-reconnect): If the server buffer has
+       been killed, use the current buffer instead.  If the current
+       buffer is not an ERC buffer, give an error.  This fixes a bug when
+       /reconnect is run from a channel buffer whose server buffer has
+       been deleted.  Thanks to jbms for the report.
+       (erc-process-sentinel-1): Take server buffer as an argument, so
+       that we can make sure that it is current.
+       (erc-process-sentinel): Pass buffer to erc-process-sentinel-1.
+       (erc-process-sentinel-2): New function split from
+       erc-process-sentinel-1.  If server buffer is deleted during a
+       reconnect attempt, stop trying to reconnect.  Fix bug where
+       reconnect was not happening when erc-server-reconnect-attempts was
+       t.  Call erc-server-reconnect-p only once each time.  If we are
+       instructed to try connecting indefinitely, tell the user that they
+       can stop this by killing the server buffer.  Call the process
+       sentinel by means of run-at-time, so that there is time to kill
+       the buffer if need be; this also removes the need for a while
+       loop.  Refuse to reconnect again if erc-server-reconnect-timeout
+       is not an number.
+
+       * erc.el (erc-command-no-process-p): Fix bug: the return value of
+       erc-extract-command-from-line is a list rather than a single
+       symbol.  Thanks to jbms for the report.
+       (erc-cmd-RECONNECT): Use simpler logic, and use buffer-live-p
+       rather than bufferp.
+       (erc-send-current-line, erc-display-command, erc-display-msg):
+       Handle case where erc-server-process is nil, so that /reconnect
+       works.
+
+2007-08-12  Michael Olson  <address@hidden>
+
+       * erc-identd.el (erc-identd-filter): Instead of sending an EOF
+       character, which now confuses freenode, stop the server process,
+       so that no new connections are accepted, and kill the current
+       client process.
+
+2007-07-29  Michael Olson  <address@hidden>
+
+       * erc-list.el: Relicense to GPLv3.  Since the file was already
+       licensed under version 2 or later, it turns out that we do not
+       need the permission of all of the authors in order to proceed.
+
+2007-07-13  Michael Olson  <address@hidden>
+
+       * erc-goodies.el (erc-get-bg-color-face, erc-get-fg-color-face):
+       Use erc-error rather than message and beep.
+
+       * erc-sound.el: Indentation fix.
+
+       * erc.el (erc-command-no-process-p): New function that determines
+       if its argument is an ERC command that can be run when the server
+       process is not alive.
+       (erc-cmd-SET, erc-cmd-CLEAR, erc-cmd-COUNTRY, erc-cmd-HELP)
+       (erc-cmd-LASTLOG, erc-cmd-QUIT, erc-cmd-GQUIT)
+       (erc-cmd-RECONNECT, erc-cmd-SERVER): Denote that these commands
+       can be run even when the server process is not alive.
+       (erc-send-current-line): Call erc-command-no-process-p if the
+       server process is not alive, to determine if we have a command
+       that can be run anyway.  Thanks to Tom Tromey for the bug report.
+       (erc-error): New function that either displays a message or throws
+       an error, depending on whether debug-on-error is non-nil.
+       (erc-cmd-SERVER, erc-send-current-line): Use it.
+
+2007-07-10  Michael Olson  <address@hidden>
+
+       * Relicense all FSF-assigned code to GPLv3.
+
+2007-06-25  Michael Olson  <address@hidden>
+
+       * erc.texi (Options): Fix typo.
+       (Getting Help and Reporting Bugs): Update webpage URL.  Make Gmane
+       part more readable.
+
+2007-06-20  Michael Olson  <address@hidden>
+
+       * erc-stamp.el (erc-timestamp-format-left): New option that
+       specifies the left timestamp to use for
+       erc-insert-timestamp-left-and-right.
+       (erc-timestamp-format-right): New option that specifies the right
+       timestamp to use for erc-insert-timestamp-left-and-right.
+       (erc-insert-timestamp-function): Change default to
+       erc-insert-timestamp-left-and-right.
+       (erc-insert-away-timestamp-function): Ditto.
+       (erc-timestamp-last-inserted-left)
+       (erc-timestamp-last-inserted-right): New variables to keep track
+       of data for erc-insert-timestamp-left-and-right.
+       (erc-insert-timestamp-left-and-right): New function that places
+       timestamps on both the left and right sides of the screen, but
+       only if each timestamp has changed since it was last computed.
+       Thanks to offby1 for urging me to merge this.
+
+       * erc.el (erc-open-ssl-stream): Display informative error when
+       ssl.el not found.
+       (erc-tls): New function to connect using tls.el.
+       (erc-open-tls-stream): New function to initiate tls connection.
+       Display informative error when tls.el not found.
+
+2007-06-19  Michael Olson  <address@hidden>
+
+       * erc-log.el: Update header with accurate instructions.
+
+2007-06-17  Michael Olson  <address@hidden>
+
+       * erc-pkg.el: Update description to match what is currently in ELPA.
+
+2007-06-14  Juanma Barranquero  <address@hidden>
+
+       * erc-goodies.el (erc-scroll-to-bottom): Remove redundant check.
+
+2007-06-13  Michael Olson  <address@hidden>
+
+       * erc-compat.el (erc-with-selected-window): New compatibility
+       macro that implements `with-selected-window'.
+
+       * erc-goodies.el (erc-scroll-to-bottom): Use it.  This fixes a bug
+       with buffer ordering where ERC buffers would move to the top.
+       Thanks to Ivan Kanis for the patch.
+
+2007-06-10  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-logging-enabled): Fix a bug that occurred when
+       `erc-log-channels-directory' had the name of a function.
+
+2007-06-06  Juanma Barranquero  <address@hidden>
+
+       * erc.el (erc-show-channel-key-p, erc-startup-file-list):
+       Fix typo in docstring.
+
+2007-06-03  Michael Olson  <address@hidden>
+
+       * erc-compat.el (erc-view-mode-enter): Make this its own function,
+       in order to document what we do, and provide sane fallback
+       behavior.
+
+       * erc.el (erc-toggle-debug-irc-protocol): Don't pass any arguments
+       to erc-view-mode-enter, since we don't do anything special with
+       the exit function.  This fixes a bug with Emacs 21 and Emacs 22.
+       Thanks to Leo for noticing.
+
+2007-05-30  Michael Olson  <address@hidden>
+
+       * erc-compat.el (erc-user-emacs-directory): New variable that
+       determines where to find user-specific Emacs settings.  For Emacs,
+       this is usually ~/.emacs.d, and for XEmacs this is usually
+       ~/.xemacs.
+
+       * erc.el (erc-startup-file-list): Use erc-user-emacs-directory.
+
+2007-05-28  Michael Olson  <address@hidden>
+
+       * erc-button.el (erc-button-url-regexp): Recognize parentheses as
+       part of URLs.  Thanks to Lawrence Mitchell for the fix.
+
+2007-05-26  Michael Olson  <address@hidden>
+
+       * erc.texi (Modules): Fix references to completion modules.
+
+2007-05-21  Michael Olson  <address@hidden>
+
+       * Makefile (SOURCE): Remove erc-pkg.el.
+       (debclean): New rule to clean old Debian packages of ERC.
+       (debprepare): Don't modify the released tarball, but copy it as
+       the .orig.tar.gz file.
+       (debrelease, debrevision): Remove.
+       (debinstall): New target that copies the generated Debian file to
+       a distro-specific location.
+       (deb): New rule that chains together the stages in building a
+       Debian package.
+       (EXTRAS): Add erc-nicklist.el, since it is not release-quality.
+       (extras): Copy images directory.
+
+       * erc-nicklist.el (erc-nicklist-icons-directory): Use
+       locate-library to find the "images" directory.  This should be
+       more failsafe.  Thanks to Tom Tromey for the idea.
+
+2007-05-19  Michael Olson  <address@hidden>
+
+       * Makefile (ELPA): New variable that contains the location of my
+       local ELPA repository.
+       (elpa): New rule that makes an ELPA package for ERC.
+
+2007-04-19  Michael Olson  <address@hidden>
+
+       * erc.el (erc-parse-prefix): New function that retrieves the
+       PREFIX server parameter from the current server and returns an
+       alist of prefix type to prefix character.
+       (erc-channel-receive-names): Use `erc-parse-prefix' to determine
+       whether the first character of a nick is a prefix character or
+       not.  This should fix a bug reported by bromine about needing to
+       type "%" first to complete nicks of people who are "hops" on
+       Slashnet.  This should also support for very exotic IRC server
+       setups, if any exist.
+       (erc-update-current-channel-member): Indentation.
+
+2007-04-15  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-generate-log-file-name-function): Docfix.
+       Mention how to deal with the case for putting log files in
+       different directories.  Change a customization type from `symbol'
+       to `function'.
+       (erc-log-channels-directory): Allow this to contain a function
+       name, which is called with the same args as in
+       `erc-generate-log-file-name-function'.  Thanks to andrewy for the
+       report and use case.
+       (erc-current-logfile): Detect if `erc-log-channels-directory' is a
+       function and call it with arguments if so.
+
+2007-04-12  Michael Olson  <address@hidden>
+
+       * erc-backend.el (define-erc-response-handler): Mention that hook
+       processing stops when the function returns non-nil.  This should
+       help avoid a nasty "gotcha" when making custom functions.  Thanks
+       to John Sullivan for the report.
+
+2007-04-08  Diane Murray  <address@hidden>
+
+       * erc-nicklist.el (erc-nicklist-voiced-position): Fixed
+       customization mismatch.
+
+2007-04-01  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Release ERC 5.2.
+
+       * erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
+       * erc-viper.el: Update copyright notices.
+
+       * erc.texi: Make Emacs Lisp source code in this document
+       essentially public domain.  Update version to 5.2.
+       (Obtaining ERC): Mention extras tarball.
+       (Releases): Mention local GNU mirror.
+       (Sample Configuration): Remove notice.
+
+       * FOR-RELEASE (5.3): Add item for erc-nicklist.
+       Mark NEWS as done.  Mark extras tarball as done.
+
+       * Makefile (VERSION): Increment to 5.2.
+       (TESTING): Remove.
+       (EXTRAS): New variable containing the contents of our "Emacs 22
+       extras" tarball.
+       (SOURCE): Remove $(TESTING).
+       (MISC): Add COPYING and ChangeLog.06.  Fix ChangeLog.NNNN ->
+       ChangeLog.NN.
+       (release): Use $(SNAPDIR) instead of erc-$(VERSION).
+       (extras): New rule which implements the building of the extras
+       tarball.
+       (upload-extras): New rule to upload the extras tarball.  It's
+       yucky to replicate upload, but oh well.
+       (DISTRIBUTOR): New variable used to differentiate between building
+       packages for Ubuntu and Debian.
+       (debrelease, debrevision): Use it.
+       (debbuild): Run linda in addition to lintian.
+
+       * NEWS: Mention extras tarball.  Note which files have been
+       renamed.  Note that erc-list is enabled by default, except in
+       Emacs 22.
+
+       * README.extras: New file which serves as a README for the extras
+       tarball.
+
+2007-03-31  Michael Olson  <address@hidden>
+
+       * NEWS: Update for the 5.2 release.
+
+       * FOR-RELEASE: Finish up 5.2 manual item.  Add documentation item
+       for 5.3.
+
+       * erc.texi (Sample Session): Flesh out.  Mention #erc.
+       (Modules): Defer to 5.3 release.
+       (Advanced Usage): Move Sample Configuration chapter ahead of
+       unfinished chapters.
+       (Sample Configuration): Write.
+       (Options): Mention how to see available ERC options.  Defer to 5.3
+       release.
+       (Tips and Tricks): Remove, since it seems better to just include
+       tips and tricks in the sample configuration, commented out.
+
+       * erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
+       informative about how to skip merging.
+       (erc-bbdb-insinuate-and-show-entry-1): Move contents of
+       erc-bbdb-insinuate-and-show-entry here.
+       (erc-bbdb-insinuate-and-show-entry): Run
+       erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
+       function, so that we can avoid triggering a process-filter error
+       if the user hits C-g.
+
+2007-03-30  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
+
+       * erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
+       `cond' and `set' rather than `set-default'.
+
+       * erc-log.el: Avoid compiler warning by requiring erc-network
+       during compilation.
+       (erc-generate-log-file-name-function): Add tag to each option.
+       Add erc-generate-log-file-name-network.
+       (erc-generate-log-file-name-network): New function which generates
+       a log file name that uses network name rather than server name,
+       when possible.
+
+       * erc-track.el (track): Assimilate track-when-inactive module,
+       since there's no need to have two modules in one file -- an option
+       will do.  Remove track-modified-channels alias.  Call
+       erc-track-minor-mode-maybe, and tear down the minor mode when
+       disabling.
+       (erc-track-when-inactive): New option which determines whether to
+       track visible buffers when inactive.  The default is not to do so.
+       (erc-track-visibility): Mention erc-track-when-inactive.
+       (erc-buffer-visible): Use erc-track-when-inactive.
+       (erc-track-enable-keybindings): New option which determines
+       whether to enable the global-level tracking keybindings.  The
+       default is to do so, unless they would override another binding,
+       in which case we prompt the user about it.
+       (erc-track-minor-mode-map): Move global keybindings here.
+       (erc-track-minor-mode): New minor mode which only enables the
+       keybindings and does nothing else.
+       (erc-track-minor-mode-maybe): New function which starts
+       erc-track-minor-mode, but only if it hasn't already been started,
+       an ERC buffer exists, and the user OK's it, depending on the value
+       of `erc-track-enable-keybindings'.
+       (erc-track-switch-buffer): Display a message if someone calls this
+       without first enabling erc-track-mode.
+
+2007-03-17  Michael Olson  <address@hidden>
+
+       * erc.texi (Development): Mention ErcDevelopment page on
+       emacswiki.
+       (Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
+       interface.
+       (Sample Session): New section that has a very rough draft for a
+       sample ERC session.
+       (Special Features): New section that explains some of the special
+       features of ERC.  Taken from ErcFeatures on emacswiki, with
+       enhancements.
+
+2007-03-12  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-idle-method): When setting the new
+       value, disable and re-enable `erc-autoaway-mode' only if it was
+       already enabled.  This fixes a bug where autoaway was enabled just
+       by loading the file.
+
+2007-03-10  Diane Murray  <address@hidden>
+
+       * erc-capab.el: Added more information to the Usage section.
+       (erc-capab-identify-prefix): Doc fix.
+       (erc-capab-identify-unidentified): New face.
+       (290): Removed.  Definition moved to erc-backend.el.
+       (erc-capab-identify-send-messages): Renamed from
+       `erc-capab-send-identify-messages'.
+       (erc-capab-identify-setup): Use it.
+       (erc-capab-identify-get-unidentified-nickname): Renamed from
+       `erc-capab-get-unidentified-nickname'.
+       (erc-capab-identify-add-prefix): Use it.  Use
+       `erc-capab-identify-unidentified' as the face.
+
+       * erc-backend.el (290): Moved here from erc-capab.el.
+
+       * erc.el (erc-select): Added an autoload cookie.
+       (erc-message-type-member, erc-restore-text-properties): Use
+       `erc-get-parsed-vector'.
+       (erc-auto-query): Set the default to 'bury since many new users
+       expect private messages from others to be in dedicated query
+       buffers, not the server buffer.
+       (erc-common-server-suffixes): Use "freenode" for freenode.net, not
+       "OPN".  Added oftc.net.
+
+       * NEWS: Added note about erc-auto-query's new default setting.
+
+2007-03-03  Michael Olson  <address@hidden>
+
+       * erc.el (erc-open, erc): Docfixes.
+
+2007-03-02  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: Make section for 5.3 release and move erc-backend
+       cleanup there.  Awaiting discussion before doing other things.
+       Add tasks for merging filename changes from the 5.2 release
+       branch, and for making a tarball of modules not in Emacs 22.  Add
+       item to remind me to update NEWS.  Mark backtab entry as done.
+
+       * erc-button.el (button): Add call to `erc-button-add-keys'.
+       (erc-button-keys-added): New variable tracking whether we've added
+       the keys yet.
+       (erc-button-add-keys): New function that adds the <backtab> key to
+       erc-mode-map.
+
+       * erc.texi: Change version to 5.2 (pre-release).
+
+2007-02-15  Michael Olson  <address@hidden>
+
+       * CREDITS: Update.
+
+       * erc-backend.el (erc-server-send-ping-interval): Change to use a
+       default of 30 seconds.  Improve customize interface.
+       (erc-server-send-ping-timeout): New option that determines when to
+       consider a connection stalled and restart it.  The default is
+       after 120 seconds.
+       (erc-server-send-ping): Use erc-server-send-ping-timeout instead
+       of erc-server-send-ping-interval.  If
+       erc-server-send-ping-timeout is nil, do not ever kill and restart
+       a hung IRC process.
+
+       * erc.el (erc-modules): Include the name of the module in its
+       description.  This should make it easier for people to find and
+       enable a particular module.
+
+2007-02-15  Vivek Dasmohapatra  <address@hidden>
+
+       * erc.el (erc-cmd-RECONNECT): Kill old process if it is still
+       alive.
+       (erc-message-english-PART): Properly escape "%" characters in
+       reason.
+
+       * erc-backend.el (erc-server-reconnecting): New variable that is
+       set when the user requests a reconnect, but the old process is
+       still alive.  This forces the reconnect to work even though the
+       process is killed manually during reconnect.
+       (erc-server-connect): Initialize it.
+       (erc-server-reconnect-p): Use it.
+       (erc-process-sentinel-1): Set it to nil after the first reconnect
+       attempt.
+
+2007-02-07  Diane Murray  <address@hidden>
+
+       * erc-menu.el (erc-menu-definition): Fixed so that the separator
+       is between "Current channel" and "Pals, fools and other keywords",
+       not at the bottom of the "Current channel" submenu.
+
+2007-01-25  Diane Murray  <address@hidden>
+
+       * erc-networks.el (erc-server-alist): Removed SSL server for now
+       since `erc-server-select' doesn't know to use `erc-ssl'.
+
+       * erc-networks.el (erc-server-alist, erc-networks-alist): Added
+       definitions for oftc.net.
+
+       * erc-services.el (erc-nickserv-alist): Fixed OFTC message regexp.
+
+2007-01-22  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-error-occurred): New variable that
+       indicates when an error has been signaled by the server.  This
+       should fix an infinite reconnect bug when giving some servers a
+       bogus :full-name.  Thanks to Angelina Carlton for the report.
+       (erc-server-connect): Initialize erc-server-error-occurred.
+       (erc-server-reconnect-p): Use it.
+       (ERROR): Set it.
+
+       * erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
+       and QuakeNet.  Standardize look of entries.  Fix type mismatch
+       error in customize interface.
+       (erc-nickserv-passwords): Alphabetize and add missing entries from
+       erc-nickserv-alist.
+
+2007-01-21  Michael Olson  <address@hidden>
+
+       * erc.el (erc-header-line-format): Document how to disable the
+       header line, and add a customization type for it.  Also, make the
+       changes take effect immediately.
+
+2007-01-19  Michael Olson  <address@hidden>
+
+       * erc.texi (Modules): Document new menu module.  Thanks to Leo
+       for noticing.
+
+2007-01-16  Diane Murray  <address@hidden>
+
+       * erc-stamp.el (erc-insert-timestamp-left): Fixed so that the
+       whitespace string filler is hidden correctly when timestamps are
+       hidden.
+       (erc-toggle-timestamps): New function to use instead of
+       `erc-show-timestamps' and `erc-hide-timestamps'.
+
+       * erc.el (erc-restore-text-properties): Moved here from
+       erc-fill.el since it could be useful in general.
+
+       * erc-fill.el (erc-restore-text-properties): Removed.
+
+2007-01-13  Michael Olson  <address@hidden>
+
+       * erc.el (erc-command-regexp): New variable that is used to match
+       a command.
+       (erc-send-input): Use it.  This fixes a bug where paths --
+       "/usr/bin/foo", for example -- were being displayed as commands,
+       but still sent correctly.
+       (erc-extract-command-from-line): Use it.
+
+       * erc.texi (Modules): Document erc-capab-identify.
+
+2007-01-11  Diane Murray  <address@hidden>
+
+       * erc.el (erc-find-parsed-property): Moved here from erc-track.el
+       since it can be useful in general.
+
+       * erc-track.el (erc-find-parsed-property): Removed.
+
+       * erc-capab.el (erc-capab-find-parsed): Removed.
+       (erc-capab-identify-add-prefix): Use `erc-find-parsed-property'.
+
+       * erc.el (erc-open): Run `erc-before-connect' hook here.  This
+       makes sure the hook always gets called before a connection is
+       made, as some functions, like `erc-handle-irc-url', use `erc-open'
+       instead of `erc'.
+       (erc): Removed `erc-before-connect' hook.
+
+       * erc-menu.el (erc-menu-definition): Put items specific to
+       channels in a "Current channel" submenu.
+
+       * erc-backend.el (321, 323): Display channel list in server buffer
+       when not using the channel list module.
+
+       * erc.el: Updated copyright years.
+       (erc-version-string): Set to 5.2 (devel).
+       (erc-format-lag-time): Fixed to work when `erc-server-lag' is nil.
+       (erc-update-mode-line-buffer): Set the header face.
+
+2007-01-11  Michael Olson  <address@hidden>
+
+       * erc-bbdb.el (erc-bbdb-popup-type): Fix customization type and
+       documentation.
+
+       * erc-services.el (erc-nickserv-identify-mode): Improve
+       documentation for nick-change option and move higher to fix
+       compiler warning.  Avoid a recursive load error.
+       (erc-nickserv-alist): Add simple entry for BitlBee, to avoid
+       "NickServ is AWAY: User is offline" error.  Oddly enough, bitlbee
+       was smart enough to recognize that as an authentication request
+       and log in regardless, which is why I didn't notice this earlier.
+       (erc-nickserv-alist-sender, erc-nickserv-alist-regexp)
+       (erc-nickserv-alist-nickserv, erc-nickserv-alist-ident-keyword)
+       (erc-nickserv-alist-use-nick-p)
+       (erc-nickserv-alist-ident-command): New accessors for
+       erc-nickserv-alist.  Using nth is unwieldy.
+       (erc-nickserv-identify-autodetect)
+       (erc-nickserv-identify-on-connect)
+       (erc-nickserv-identify-on-nick-change, erc-nickserv-identify): Use
+       the new accessors.
+
+2007-01-11  Diane Murray  <address@hidden>
+
+       * NEWS: Added note for `erc-my-nick-face'.  Fixed capab-identify
+       wording.
+
+2007-01-10  Diane Murray  <address@hidden>
+
+       * erc.el (erc-mode-line-format): Added %l to documentation.
+       (erc-header-line-format): Removed "[IRC]".  Use the new %l
+       replacement character.  Doc fix.
+       (erc-format-channel-modes): Removed lag code.  Removed parentheses
+       from mode string.
+       (erc-format-lag-time): New function.
+       (erc-update-mode-line-buffer): Use it.
+
+2007-01-10  Michael Olson  <address@hidden>
+
+       * erc.el: Fix typo in url-irc-function instructions.
+
+2007-01-09  Michael Olson  <address@hidden>
+
+       * erc.el (erc-system-name): New option that determines the system
+       name to use when logging in.  The default is to figure this out by
+       calling `system-name'.
+       (erc-login): Use it.
+
+2007-01-07  Michael Olson  <address@hidden>
+
+       * erc.el (erc-modules): Add the menu module.  This should fix a
+       bug with incorrect ERC submenus being displayed.
+
+       * erc-menu.el: Turn this into a module.
+       (erc-menu-add, erc-menu-remove): New functions that add and remove
+       the ERC menu.
+
+2006-12-28  Michael Olson  <address@hidden>
+
+       * erc-list.el: Change header to mention that this is part of ERC,
+       rather than GNU Emacs.
+
+       * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
+       LinuxChix networks.  Thanks to Angelina Carlton for mentioning
+       them.  Properly escape periods in Konfido.Net and Kewl.Org.
+       (erc-networks-alist): Add entries for Ars and LinuxChix, though
+       the latter does not actually provide an announced network name.
+
+       * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
+       which waits for a NickServ message if the network supports it,
+       otherwise sends the password after connecting.
+       (erc-nickserv-identify-mode): Default to 'both.
+       (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
+       (erc-nickserv-alist): Indentation fix.
+       (erc-nickserv-identify-on-connect)
+       (erc-nickserv-identify-on-nick-change): Handle 'both method.
+
+2006-12-28  Leo Liu  <address@hidden>  (tiny change)
+
+       * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
+       hitting C-g does not leave iswitchb-mode on.
+
+2006-12-27  Michael Olson  <address@hidden>
+
+       * erc.el (erc-cmd-RECONNECT): New command that calls
+       erc-server-reconnect.
+
+       * erc-backend.el (erc-server-reconnect-count): New server variable
+       that keeps track of reconnection attempts.
+       (erc-server-reconnect-attempts): New option that determines the
+       number of reconnection attempts that ERC will make per server.
+       (erc-server-reconnect-timeout): New option that determines the
+       amount of time, in seconds, that ERC will wait between successive
+       reconnect attempts.
+       (erc-server-reconnect): New function that reestablishes the
+       current IRC connection.  Move some commands from
+       erc-process-sentinel-1 here.
+       (erc-process-sentinel-1): If we have been disconnected, loop until
+       we either reconnect or run out of attempts.
+       (erc-server-reconnect-p): Move higher and make this a defsubst,
+       since I'm worried about the current buffer changing from
+       underneath us.  Implement limit of number of reconnect attempts..
+
+       * erc.texi (Getting Started): Update for /RECONNECT command.
+
+2006-12-26  Michael Olson  <address@hidden>
+
+       * erc.el (erc-open): Restore old point correctly, or at least get
+       closer to doing so than before.
+
+2006-12-13  Leo Liu  <address@hidden>  (tiny change)
+
+       * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
+       isn't active already, instead of leaving it on.
+
+2006-12-10  Juanma Barranquero  <address@hidden>
+
+       * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
+
+2006-12-08  Michael Olson  <address@hidden>
+
+       * erc.el: Re-evaluate contributions from a contributor, and found
+       them under 15 lines of non-obvious code, so it is safe to remove
+       the copyright notice.
+       (erc-modules): Remove list module.
+
+       * erc-list.el: Remove, since a contributor who has not completed
+       their assignment has contributed significantly more than 15 lines
+       of code to this file.
+
+2006-11-28  Juanma Barranquero  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
+       (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
+       (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
+       (erc-modules, erc-display-message-highlight, erc-process-input-line)
+       (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
+       (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
+       (erc-echo-notice-in-first-user-buffer, erc-connection-established)
+       (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
+       (erc-command-symbol, erc-add-query, erc-process-script-line)
+       (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
+       (erc-script-echo): Fix typos in docstrings.
+       (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
+       (define-erc-module, erc-once-with-server-event)
+       (erc-once-with-server-event-global, erc-debug-irc-protocol)
+       (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
+       (erc-update-current-channel-member, erc-load-script):
+       (erc-mode-line-away-status-format): Doc fixes.
+
+2006-11-20  Andrea Russo  <address@hidden>  (tiny change)
+
+       * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
+       before calling `erc-display-prompt'.
+
+2006-11-24  Juanma Barranquero  <address@hidden>
+
+       * erc.el (erc-after-connect, erc-open-ssl-stream)
+       (erc-display-line-1, erc-display-line):
+       * erc-backend.el (005): Fix space/tab mixup in docstrings.
+
+2006-11-20  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Call this Version 5.2 stable
+       pre-release, since it diverges slightly from our 5.2 branch, in
+       that unstable features are not included.
+       (erc-update-modules): Display better error message when module not
+       found.
+
+2006-11-12  Michael Olson  <address@hidden>
+
+       * erc-log.el: Save all log buffers when Emacs exits, in case
+       someone ignores the warning about open processes.  Remove the
+       advice code in the commentary.
+       (erc-save-query-buffers): Docfix.
+       (erc-log-save-all-buffers): New function that saves all ERC
+       buffers to logs.
+       (erc-current-logfile): Fix bug in filename selection, where the
+       current buffer was erroneously being preferred over the given
+       buffer.
+
+2006-11-08  Michael Olson  <address@hidden>
+
+       * erc.el (erc-string-to-port): Avoid error when a numerical port
+       is passed.  Thanks to Zekeriya KOÇ for the report.
+
+2006-11-08  Łukasz Demianiuk  <address@hidden>  (tiny change)
+
+       * erc.el (erc-header-line): Fix typo.
+
+2006-11-06  Juanma Barranquero  <address@hidden>
+
+       * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
+
+       * erc.el (read-passwd):
+       * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
+       * erc-truncate.el (truncate): Fix typo in docstring.
+
+2006-10-21  Michael Olson  <address@hidden>
+
+       * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
+       first loading iswitchb.  Thanks to Leo for the report.
+
+2006-10-10  Michael Olson  <address@hidden>
+
+       * erc.el (erc-default-port): Make the default be 6667 instead of
+       ircd. since Mac OS X apparently has problems with looking up that
+       port name.
+
+       * erc-backend.el (353): Receive names after displaying the initial
+       message, instead of before.
+
+2006-10-05  Diane Murray  <address@hidden>
+
+       * erc.el (erc-my-nick-face): New face.
+       (erc): Use FULL-NAME argument, not `erc-user-full-name'.  This
+       fixes a bug where the :full-name argument passed to the function
+       was not respected.
+       (erc-format-my-nick): Use `erc-my-nick-face'.  This should help
+       make it easier to find messages you sent in conversations when
+       `erc-show-my-nick' is non-nil.
+       (erc-compute-server): Doc fix.
+
+2006-10-01  John J Foerch  <address@hidden>  (tiny change)
+
+       * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
+       from the erc-timestamp field.
+
+2006-09-11  Michael Olson  <address@hidden>
+
+       * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
+       parenthesis.  Thanks to Stephan Stahl for the report.
+
+2006-09-10  Eric Hanchrow  <address@hidden>
+
+       * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
+       instead of a single user.
+
+2006-09-10  Michael Olson  <address@hidden>
+
+       * erc.el (erc-generate-new-buffer-name): If this is a server
+       buffer and a process exists already, create a new buffer.
+       (erc-open): If the IRC session was continued, restore the old
+       point.  Thanks to Stephan Stahl for the report.
+       (erc-member-ignore-case): Coding style tweak.
+       (erc-cmd-UNIGNORE): Quote the user before comparison.  If we don't
+       find the user listed verbatim, try to match them against the list
+       using string-match.  In this case, prompt as to whether the regexp
+       should be removed.
+       (erc-ignored-user-p): Remove CL-ism.
+
+       * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
+       whether we are already away.
+
+       * erc-menu.el: Fix potential compiler warning.
+
+2006-09-07  Diane Murray  <address@hidden>
+
+       * erc.el: Updated Commentary and URL.
+       (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
+       (erc-arrange-session-in-multiple-windows): No need to check if
+       `erc-server-process' is bound.
+       (erc-server-buffer-live-p): Doc fix.
+       (erc-part-from-channel): Don't use any initial contents at prompt.
+       (erc-format-nick, address@hidden): Doc fix.  Use `when'.
+       (s367): Fixed to support only banmask and channel which is the
+       standard.  Also, there's no reason to add a message to each banned
+       user entry trying to persuade the user to use /banlist instead of
+       /mode #channel +b.  That part of the message was a little
+       confusing, anyways.
+       (s367-set-by): New catalog entry.  The user who set the ban and
+       the time of ban seem to be specific to only certain servers such
+       as freenode.
+
+       * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
+
+       * erc-backend.el (erc-server-process-alive): No need to check if
+       `erc-server-process' is bound.
+       (367): Use s367 or s367-set-by where appropriate.
+
+       * erc-compat.el: Fixed URL.
+
+       * erc-dcc.el: Updated copyright years.  Added Usage section.
+       Changed supported Emacs version number from 21.3.50 to 22 in
+       Commentary.
+
+       * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
+       to check if `erc-server-process' is bound.
+
+       * erc-nicklist.el: Added to the Commentary section an explanation
+       that `erc-nicklist-quit' should be called from within the nicklist
+       buffer.  Set file coding to utf-8 so a contributor's name is
+       displayed correctly.
+       (erc-nicklist-icons-directory): Use customize type directory
+       instead of string.
+       (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
+       if it wasn't found.  This fixes a bug where an error would occur
+       when using `string=' on bbdb-nick if it was nil.
+
+       * erc-replace.el: Removed URL from file information since it
+       doesn't exist.
+
+       * erc-sound.el: Updated copyright years.  Fixed Commentary and
+       added Usage section.
+       (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
+       `erc-ctcp-query-SOUND-hook' here.  Removed the keybinding
+       definitions.
+       (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
+       (erc-ctcp-query-SOUND): Doc fix.
+       (erc-play-command): Removed, not necessary anymore.
+       (erc-ctcp-query-SOUND-hook): Set to nil as default.  Moved up
+       higher in code, added docstring.
+       (erc-play-sound): Use `play-sound-file'.  It exists in GNU Emacs
+       as well since version 21 or earlier.  Removed commented-out older
+       version of function.
+
+       * NEWS: Fixed formatting, added channel tracking change.
+
+2006-09-03  Diane Murray  <address@hidden>
+
+       * erc.el: M-x erc RET can now be used to start ERC.
+       (erc-open): Renamed from `erc'.
+       (erc-before-connect): Change erc-select to erc.
+       (erc): Renamed from `erc-select'.  Use `erc-open'.
+       (erc-select): Defined as alias of `erc'.
+       (erc-ssl): Renamed from `erc-select-ssl'.  Use `erc'.
+       (erc-select-ssl): Defined as alias of `erc-ssl'.
+       (erc-cmd-SERVER): Use `erc'.
+       (erc-query, erc-handle-irc-url): Use `erc-open'.
+
+       * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
+
+       * erc-menu.el (erc-menu-definition): Use `erc'.
+
+       * erc-networks.el: Updated copyright years.
+       (erc-server-select): Use keyword arguments when calling `erc'.
+
+       * erc.texi (Getting Started, Connecting): Changed erc-select to
+       erc.
+
+       * README: Changed erc-select to erc.
+
+       * NEWS: Added note about these changes.
+
+       * FOR-RELEASE: Marked this item as done.
+
+2006-08-21  Diane Murray  <address@hidden>
+
+       * erc-track.el (erc-track-mode-line-mouse-face): New variable.
+       (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
+       properties to channel name.
+
+2006-08-20  Michael Olson  <address@hidden>
+
+       * erc-identd.el (erc-identd): New customization group.
+       (erc-identd-port): New option that specifies the port to use if
+       none is given as an argument to erc-identd-start.
+       (identd): Place erc-identd-quickstart in erc-connect-pre-hook
+       instead of erc-identd-start so that we deal with the different
+       meaning of the first argument.
+       (erc-identd-start): Use erc-identd-port.
+       (erc-identd-quickstart): New function that ignores any arguments
+       and calls erc-identd-start.
+
+       * erc.el (erc-with-server-buffer): New macro that switches to the
+       current ERC server buffer and runs some code.  If no server buffer
+       is available, return nil.  This is a useful way to access
+       variables in the server buffer.
+       (erc-get-server-user, erc-add-server-user)
+       (erc-remove-server-user, erc-change-user-nickname)
+       (erc-get-server-nickname-list, erc-get-server-nickname-alist)
+       (erc-ison-p, erc-active-buffer, erc-cmd-IGNORE)
+       (erc-cmd-UNIGNORE, erc-cmd-IDLE, erc-cmd-NICK, erc-cmd-BANLIST)
+       (erc-cmd-MASSUNBAN, erc-nickname-in-use, erc-ignored-user-p)
+       (erc-format-channel-modes): Use it.
+       (erc-once-with-server-event, erc-once-with-server-event-global)
+       (erc-with-buffer, erc-with-all-buffers-of-server): Use make-symbol
+       instead of gensym.
+       (erc-open-server-buffer-p): New function that returns non-nil if
+       the given buffer is an ERC server buffer that has an open IRC
+       process.
+       (erc-with-buffer): Use buffer-live-p here to set a good example,
+       though it isn't really needed here.
+       (erc-away): Mention erc-away-time.
+       (erc): Don't propagate the erc-away setting, since it makes more
+       sense to access it from the server buffer.  Set up the prompt
+       before connecting rather than after.  Run erc-connect-pre-hook
+       with the buffer as an argument, instead of no arguments.
+       (erc-cmd-GAWAY): Use erc-open-server-buffer-p instead of
+       erc-server-buffer-p so that only open connections are set away.
+       (erc-cmd-GQUIT): Use erc-open-server-buffer-p.
+       (erc-process-away): Docfix.  Don't set erc-away in channel
+       buffers.
+       (erc-set-current-nick): Make this uniform with the style used in
+       erc-current-nick.
+       (erc-away-time): Rename from erc-away-p, since this is no longer a
+       boolean-style predicate.
+       (erc-format-away-status): Use it.
+       (erc-initialize-log-marker): Accept a `buffer' argument.
+       (erc-connect-pre-hook): Docfix.
+       (erc-connection-established): Make sure this runs in the correct
+       buffer.
+       (erc-set-initial-user-mode): Accept a `buffer' argument.
+
+       * erc-stamp.el (erc-add-timestamp): Use erc-away-time.
+
+       * erc-spelling.el (erc-spelling-init): Use
+       erc-with-server-buffer.  Accept `buffer' argument.
+       (spelling): Call erc-spelling-init with the `buffer' argument.
+
+       * erc-speedbar.el (erc-speedbar-buttons): Use erc-server-buffer-p.
+
+       * erc-pcomplete.el (pcomplete/erc-mode/UNIGNORE)
+       (pcomplete-erc-all-nicks): Use erc-with-server-buffer.
+
+       * erc-notify.el (erc-notify-timer, erc-cmd-NOTIFY): Use
+       erc-with-server-buffer.
+
+       * erc-networks.el (erc-network, erc-current-network)
+       (erc-network-name): Use erc-with-server-buffer.
+
+       * erc-netsplit.el (erc-cmd-WHOLEFT): Use erc-with-server-buffer.
+
+       * erc-match.el (erc-log-matches, erc-log-matches-come-back): Use
+       erc-away-time.
+
+       * erc-log.el (log): Use erc-away-time.  Remove unnecessary check.
+       Pass `buffer' argument to erc-log-setup-logging instead of setting
+       the current buffer.  Ditto for erc-log-disable-logging.
+       (erc-log-setup-logging, erc-log-disable-logging): Accept a `buffer'
+       argument.
+
+       * erc-list.el (erc-chanlist): Use erc-with-server-buffer.
+
+       * erc-ibuffer.el (erc-away): Use erc-away-time.
+
+       * erc-dcc.el (erc-dcc-get-filter): Temporarily make the buffer
+       read only instead of permanently doing so.
+
+       * erc-compat.el (erc-gensym, *erc-sym-counter*): Remove, since
+       Emacs Lisp has make-symbol, which is better.
+
+       * erc-chess.el (erc-chess-handler, erc-cmd-CHESS): Use
+       erc-with-server-buffer.
+
+       * erc-capab.el (capab-identify): Only deal with server buffers
+       that have an open IRC process.
+       (erc-capab-identify-add-prefix): Use erc-with-server-buffer.
+
+       * erc-backend.el (erc-server-connected): Docfix.  Recommend the
+       `erc-server-process-alive' function.
+       (erc-coding-system-for-target): Supply a default target if one is
+       not given.
+       (erc-server-send): Simplify slightly.
+       (erc-call-hooks): Use erc-with-server-buffer.
+       (erc-server-connect, erc-server-setup-periodical-ping): Accept
+       `buffer' argument.
+
+       * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move
+       higher to avoid an automatic load snafu.
+       (erc-autoaway-some-server-buffer): New function that returns an
+       ERC server buffer with a live connection, or nil otherwise.
+       (erc-autoaway-insinuate-maybe): New function that adds the
+       autoaway reset function to post-command-hook if at least one ERC
+       process is alive.
+       (erc-autoaway-remove-maybe): New function that removes the
+       autoaway reset function from post-command-hook if no ERC process
+       is alive.
+       (autoaway): Don't touch post-command-hook unless an IRC process is
+       already open.  Remove our addition to post-command-hook as soon as
+       there are no more IRC processes open.  Reset the indicators before
+       connecting to an IRC server, which fixes a bug when re-connecting.
+       (erc-autoaway-reset-idle-user): Call erc-autoaway-remove-maybe if
+       there are no more IRC processes open.
+       (erc-autoaway-set-back): Pick an open IRC process.  Accept an
+       argument which is a function call if we can't find one.
+       (erc-autoaway-some-open-server-buffer): New function which returns
+       an ERC server buffer with an open connection and a user that is
+       not away.
+       (erc-autoaway-possibly-set-away, erc-autoaway-set-away): Use it.
+       (erc-autoaway-set-away): Accept a `notest' argument which is used
+       to avoid testing the same thing twice.
+       (erc-autoaway-last-sent-time, erc-autoaway-caused-away): Move
+       higher in file to fix byte-compile warning.
+
+2006-08-20  Diane Murray  <address@hidden>
+
+       * erc-backend.el (erc-process-sentinel-1): Doc fix.  Let
+       `erc-server-reconnect-p' check all condition cases.
+       (erc-server-reconnect-p): Moved rest of checks from
+       `erc-process-sentinel-1' to here.  Now takes an argument, EVENT.
+
+2006-08-14  Diane Murray  <address@hidden>
+
+       * erc-menu.el: Updated copyright years.  Removed EmacsWiki URL.
+       (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
+       avoid confusion with rcirc and other clients.
+
+       * erc-backend.el (erc-server-banned): New variable.
+       (erc-server-connect): Set `erc-server-banned' to nil.
+       (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
+       (erc-server-reconnect-p): New function.  Return non-nil if the
+       user wants automatic reconnects and if the user has not been
+       banned from the server.  This should fix a bug where ERC gets into
+       a loop trying to reconnect with no way to stop it when the user is
+       denied access to the server due to a server ban.  It might also
+       help when Tor users are blocked from freenode if freenode servers
+       send the 465 message before disconnecting.
+       (465): Handle "banned from server" error notices.
+
+2006-08-13  Romain Francoise  <address@hidden>
+
+       * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
+       prompt with a space.
+
+2006-08-13  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-timed-out): New variable that
+       indicates whether the current connection has timed out due to
+       failure to respond to a ping.
+       (erc-server-send-ping): Set erc-server-timed-out to t.
+       (erc-server-connect): Initialize erc-server-timed-out to nil.
+       (erc-process-sentinel-1): Consult erc-server-timed-out.
+
+2006-08-11  Michael Olson  <address@hidden>
+
+       * erc-fill.el (erc-fill): Skip any initial empty lines so that we
+       avoid errors when inserting disconnect messages and other messages
+       that begin with newlines.
+
+2006-08-07  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
+       in several places instead of inserting text.
+       (erc-process-sentinel): Move to the input-marker before removing
+       the prompt.
+
+       * erc.el (erc-port): Fix customization options.
+       (erc-display-message): Handle null type explicitly.  Previously,
+       this was relying on a chance side-effect.  Cosmetic indentation
+       tweak.
+       (english): Add 'finished and 'terminated entries to the catalog.
+       Add initial and terminal newlines to 'disconnected and
+       'disconnected-noreconnect entries.  Avoid long lines.
+       (erc-cmd-QUIT): Bind the current erc-server-process to
+       server-proc.  If the IRC server responds quickly, it is possible
+       for the connection to close, and hence server buffer to be killed,
+       if erc-kill-server-buffer-on-quit is non-nil.  This avoids that
+       problem.
+
+2006-08-06  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-send-queue): Update from Circe
+       version of this function.
+       (erc-server-ping-timer-alist): New variable that keeps track of
+       ping timers according to their associated server.
+       (erc-server-last-received-time): New variable that specifies the
+       time of the last message we received from the server.  This is
+       used to detect hung processes.
+       (erc-server-send-ping): New function that sends a ping to the IRC
+       process corresponding with the given buffer.  Split from
+       erc-server-setup-periodical-ping.  If the server buffer no longer
+       exists, cancel the timer.  If the server process has not given us
+       a message, including PING responses, since the last PING, kill it.
+       This is necessary to deal with some aberrant freenode behavior.
+       Idea taken from rcirc.
+       (erc-server-setup-periodical-ping): Rename from
+       erc-server-setup-periodical-server-ping.
+       (erc-server-filter-function): Use erc-current-time instead of
+       current-time.
+
+       * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
+       multi-tty Emacs.
+       (erc-select-startup-file): Fix bug introduced by recent change.
+       (erc-cmd-QUIT): If the IRC process has not terminated itself
+       within 4 seconds of completing our quit-hook, kill it manually.
+       Freenode in particular needs this.
+       (erc-connection-established): Use erc-server-setup-periodical-ping
+       instead of erc-server-setup-periodical-server-ping.
+
+2006-08-05  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-log-standardize-name): New function that returns
+       a filename that is safe for use for a log file.
+       (erc-current-logfile): Use it.
+
+       * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
+       since that is a fairly standard directory.
+       (erc-select-startup-file): Re-write to use
+       convert-standard-filename, which will ensure that MS-DOS systems
+       look for the _ercrc.el file.
+
+2006-08-02  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Release ERC 5.1.4.
+
+       * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
+
+       * erc.el (erc-active-buffer): Fix bug that caused messages to go
+       to the wrong buffer.  Thanks to offby1 for the report.
+
+       * erc-backend.el (erc-coding-system-for-target): Handle case where
+       target is nil.  Thanks to Kai Fan for the patch.
+
+2006-07-29  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-log-setup-logging): Don't offer to save the
+       buffer.  It will be saved automatically killed.  Thanks to Johan
+       Bockgård and Tassilo Horn for pointing this out.
+
+2006-07-27  Johan Bockgård  <address@hidden>
+
+       * erc.el (define-erc-module): Make find-function and find-variable
+       find the names constructed by `define-erc-module' in Emacs 22.
+
+2006-07-14  Michael Olson  <address@hidden>
+
+       * erc-log.el (log): Make sure that we enable logging on
+       already-opened buffers as well, in case the user toggles this
+       module after loading ERC.  Also be sure to remove logging ability
+       from all ERC buffers when the module is disabled.
+       (erc-log-setup-logging): Set buffer-file-name to nil rather than
+       the empty string.  This should fix some errors that occur when
+       quitting Emacs without first killing all ERC buffers.
+       (erc-log-disable-logging): New function that removes the logging
+       ability from the current buffer.
+
+       * erc-spelling.el (spelling): Use dolist and buffer-live-p.
+
+2006-07-12  Michael Olson  <address@hidden>
+
+       * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
+       than call toggle-read-only.
+
+       * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
+       add autoload cookie.
+
+2006-07-09  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Release ERC 5.1.3.
+
+       * erc.texi: Update for the 5.1.3 release.
+
+       * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
+       from being set automatically away and current buffer is not an ERC
+       buffer.
+
+       * erc-identd.el: Fix compiler error.
+
+       * erc.texi (Development): Use @subheading instead of @subsection.
+       (Advanced Usage): Add menu.
+       (Connecting): Fully document how to connect to an IRC server.
+       (Options, Tips and Tricks, Sample Configuration): New unwritten
+       sections.
+
+       * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
+       (erc-user-full-name, erc-password): Docfixes and customization
+       interface tweaks.
+       (erc-try-new-nick-p): Rename from
+       `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
+       (erc-nickname-in-use): Use `erc-try-new-nick-p'.  Check the length
+       of `erc-nick-uniquifier', in case someone wants multiple
+       characters.
+       (erc-compute-server, erc-compute-nick, erc-compute-full-name)
+       (erc-compute-port): Docfixes.
+
+       * erc-log.el (log): Move all add-hook calls here, rather than
+       executing them immediately, and also cause them to be un-hooked
+       when the module is removed.
+       (erc-save-buffer-on-part): Move next to
+       `erc-save-queries-on-quit'.
+       (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
+       (erc-log-write-after-send, erc-log-write-after-insert): Default to
+       nil.  This makes things fast, but reasonably failsafe, by default.
+
+2006-07-08  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-log-insert-log-on-open): Make this nil by
+       default, since most IRC clients don't do this.
+       (erc-log-write-after-send): New option that determines whether the
+       log file will be written to after every sent message.
+       (erc-log-write-after-insert): New option that determines whether
+       the log file will be written to when new text is added to a logged
+       ERC buffer.
+       (log): Use the aforementioned options.
+
+       * erc.texi (Modules): Document the "completion" module.
+
+       * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
+       have a nil element in the list when ignore-self is non-nil.
+
+2006-07-05  Michael Olson  <address@hidden>
+
+       * erc.el (erc-modules): Use `set' instead of `set-default', since
+       this setting should never be buffer-local.  Add the `page' module
+       to the list.
+
+       * erc.texi (Modules): Add entries for `list' and `page' modules.
+       Change "spell" to "spelling".
+       (History): Use past tense throughout.
+
+2006-07-02  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
+       can happen when doing /PART.
+
+       * erc.el (erc-quit-reason-various-alist)
+       (erc-part-reason-various-alist): In the example, use "^$" as an
+       example, since "" matches anything.
+       (erc-quit-reason-various, erc-part-reason-various): If no argument
+       is given, and no matches are found, use our default reason instead
+       of "nil".
+
+2006-06-30  Michael Olson  <address@hidden>
+
+       * erc.texi (Modules): Mention identd.
+       (Releases): Update mailing list address and download location.
+       (Development): Refactor.  Provide updated directions for Arch.
+       Make URLs clickable.
+       (Keystroke Summary): Typo fix.  Use more Texinfo syntax.
+       (Getting Started): Give simpler example.  We do not need to
+       explicitly load every module.
+       (History): Update.
+
+       * erc-autoaway.el, erc-join.el, erc-backend.el, erc-bbdb.el:
+       erc-button.el, erc-chess.el, erc-compat.el, erc-hecomplete.el:
+       erc-dcc.el, erc-ezbounce.el, erc-fill.el, erc-ibuffer.el:
+       erc-imenu.el, erc-list.el, erc-log.el, erc-match.el, erc-menu.el:
+       erc-networks.el, erc-netsplit.el, erc-nicklist.el:
+       erc-services.el, erc-pcomplete.el, erc-replace.el, erc-ring.el:
+       erc-speedbar.el, erc-spelling.el, erc-stamp.el, erc-track.el:
+       erc.el: Remove version strings.
+
+       * erc.el (erc-cmd-SMV): Remove, since we do not have meaningful
+       module versions anymore.
+       (erc-version-modules): Remove, since we do not use this function
+       anymore.
+       (erc-latest-version, erc-ediff-latest-version): Remove, since this
+       was only useful back when ERC consisted of one file.
+       (erc-modules): Add line for identd.
+       (erc-get-channel-mode-from-keypress): Typo fix.
+
+       * erc-imenu.el: Remove unnecessary lines in header.
+
+       * erc-goodies.el (erc-handle-irc-url): Docfix.
+
+       * erc-identd.el: Define an ERC module for this.
+       (erc-identd-start): Don't create a process buffer if possible.
+       Otherwise, use conventional hidden names for process buffers.
+
+2006-06-29  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-coding-system-for-target): Match
+       case-insensitively.  Use a pattern match instead of `assoc', as
+       per the documentation for `erc-encoding-coding-alist'.
+
+       * erc-track.el (erc-track-shorten-aggressively): Fix typo.
+
+2006-06-27  Michael Olson  <address@hidden>
+
+       * erc.el: Update maintainer information and URLs.
+
+2006-06-14  Michael Olson  <address@hidden>
+
+       * erc.el (erc-active-buffer): If the active buffer has been
+       deleted, default to the server buffer.
+       (erc-toggle-flood-control): When the user hits C-c C-f, make flood
+       control really toggle, not unconditionally turn off.
+
+2006-06-12  Michael Olson  <address@hidden>
+
+       * NEWS: Add items since the 5.1.2 release.
+
+       * erc-autoaway.el (erc-autoaway-caused-away): New variable that
+       indicates whether the current away status was caused by this
+       module.
+       (erc-autoaway-set-back): Only set back if this module set the user
+       away.
+       (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
+       (erc-autoaway-reset-indicators): New function that resets some
+       indicators when the user is no longer away.
+       (autoaway): Add the above function to the 305 hook.
+
+2006-06-05  Romain Francoise  <address@hidden>
+
+       * erc.texi (History): Fix various typos.
+
+2006-06-04  Michael Olson  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-idle-method): Move after the
+       definition of the autoaway module.
+       (autoaway): Don't do anything if erc-autoaway-idle-method is
+       unbound.  This prevents an error on startup.
+
+2006-06-03  Michael Olson  <address@hidden>
+
+       * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
+       (erc-autoaway-idle-method): Renamed from
+       `erc-autoaway-use-emacs-idle'.  We have more than two choices for
+       how to do this, so it's best to make this take symbol values.
+       Improve documentation.  Remove warning against Emacs idle-time;
+       the point is moot now that we get user idle time via a different
+       method.  Make sure we disable and re-enable the module when
+       changing this value.
+       (autoaway): Conditionalize on the above option.  If using the idle
+       timer or user idle methods, don't add anything to the
+       send-completed or server-001 hooks, since it is unnecessary.
+       (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
+       Docfix.
+       (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
+       (erc-autoaway-reset-idle-irc): Renamed from
+       `erc-autoaway-reset-idle'.  Don't pass line to
+       `erc-autoaway-set-away', since it is not used.
+       (erc-autoaway-reset-idle-user): New function that resets the idle
+       state for user idle time.
+       (erc-autoaway-set-back): Remove line argument, since it is not
+       used.
+
+2006-06-01  Michael Olson  <address@hidden>
+
+       * erc.el (erc-buffer-filter): Make sure all buffers returned from
+       this are live.
+
+2006-05-01  Edward O'Connor  <address@hidden>
+
+       * erc-goodies.el (erc-handle-irc-url): New function, suitable as
+       a value for `url-irc-function'.
+
+2006-04-18  Diane Murray  <address@hidden>
+
+       * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
+       argument IGNORE-SELF.  If this is non-nil, don't return the user's
+       current nickname.  Doc fix.
+       (pcomplete/erc-mode/complete-command): Don't complete the current
+       nickname.
+
+2006-04-05  Diane Murray  <address@hidden>
+
+       * erc.el (erc-cmd-SV): Removed the exclamation point.  Show the
+       build date as it's shown in `emacs-version'.
+
+       * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
+       with the same face property as the previous character.
+
+2006-04-02  Michael Olson  <address@hidden>
+
+       * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
+       erc.el: Make sure to include a newline inside of negated classes,
+       so that a newline is not matched.
+
+2006-04-01  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-server-connect-function): Don't try to
+       detect the existence of the `open-network-stream-nowait' function,
+       since I can't find it in Emacs21, XEmacs21, or Emacs22.
+
+2006-03-27  Michael Olson  <address@hidden>
+
+       * erc.texi: Update direntry.  Remove unneeded local variables.
+
+2006-03-26  Michael Olson  <address@hidden>
+
+       * erc.el (erc-header-line): New face that will be used to colorize
+       the text of the header-line, provided that
+       `erc-header-line-face-method' is non-nil.
+       (erc-prompt-face): Fix formatting.
+       (erc-header-line-face-method): New option that determines the
+       method used for colorizing header-line text.  This may be a
+       function, nil, or non-nil.
+       (erc-update-mode-line-buffer): Use the aforementioned option and
+       face to colorize the header-line text, if that is what the user
+       wants.
+       (erc-send-input): If flood control is not activated, don't split
+       the input line.
+
+2006-03-25  Michael Olson  <address@hidden>
+
+       * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
+       that fixes the case where there is no leading whitespace.  Only
+       remove the first space character, though.
+
+       * erc-identd.el (erc-identd-start): Fix a bug by making sure that
+       erc-identd-process is set properly.
+       (erc-identd-start, erc-identd-stop): Add autoload cookies.
+       (erc-identd-start): Pass :host parameter so this works with Emacs
+       22.
+
+2006-03-09  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-keymap): Use <backtab> rather than
+       <C-tab> for `erc-button-previous' as it is a more standard key
+       binding for this type of function.
+
+2006-02-28  Diane Murray  <address@hidden>
+
+       * erc-capab.el: Removed things that were accidentally committed on
+       2006-02-20.  Removed Todo section.
+       (erc-capab-unidentified): Removed.
+
+2006-02-26  Michael Olson  <address@hidden>
+
+       * erc-capab.el: Use (eval-when-compile (require 'cl)).
+       (erc-capab-unidentified): Fix compiler warning by specifying
+       group.
+
+2006-02-20  Diane Murray  <address@hidden>
+
+       * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
+       to explain thoughts better.  `erc-server-parameters' is an
+       associated list when it's set, not a string.
+
+2006-02-19  Michael Olson  <address@hidden>
+
+       * erc-capab.el (erc-capab-send-identify-messages): Make sure some
+       parameters are strings before using them.  Thanks to Alejandro
+       Benitez for the report.
+
+       * erc.el (erc-version-string): Release ERC 5.1.2.
+
+2006-02-19  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
+       <C-tab>.
+       (erc-button-previous): New function.
+
+2006-02-15  Michael Olson  <address@hidden>
+
+       * NEWS: Add category for ERC 5.2.
+
+       * erc.el (erc): Move to the end of the buffer when a continued
+       session is detected.  Thanks to e1f and indio for the report and
+       testing a potential fix.
+
+2006-02-14  Michael Olson  <address@hidden>
+
+       * debian/changelog: Prepare a new Debian package.
+
+       * Makefile (debprepare): New rule that creates an ERC snapshot
+       directory for use in both new Debian releases and revisions for
+       Debian packages.
+       (debrelease, debrevision-mwolson): Use debprepare.
+
+       * NEWS: Bring up-to-date.
+
+       * erc-stamp.el (erc-insert-timestamp-right): For now, put
+       timestamps before rather than after erc-fill-column when
+       erc-timestamp-right-column is nil.  This way we won't surprise
+       anyone unpleasantly, or so it is hoped.
+
+2006-02-13  Michael Olson  <address@hidden>
+
+       * erc-dcc.el: Use (eval-when-compile (require 'cl)).
+
+2006-02-12  Michael Olson  <address@hidden>
+
+       * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
+       * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
+       * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
+       * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
+       * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
+       * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
+       * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
+       Add 2006 to copyright years, to comply with the changed guidelines.
+
+2006-02-11  Michael Olson  <address@hidden>
+
+       * erc.el (erc-update-modules): Handle erc-capab-identify
+       correctly.  Make some requirements shorter, so that it's easier to
+       see why they are needed.
+
+       * erc-capab.el: Add autoload cookie for capab-identify.
+       (erc-capab-send-identify-messages, erc-capab-identify-activate):
+       Minor whitespace fix in code.
+
+       * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
+       `erc-timestamp-right-align-by-pixel'.  Set the default based on
+       whether we are in Emacs 22, and using X.  Improve documentation.
+       (erc-insert-aligned): Remove calculation of offset, since
+       :align-to pos works after all.  Unlike the previous solution, this
+       one works when erc-stamp.el is compiled.
+       (erc-insert-timestamp-right): Don't add length of string, and then
+       later remove its displayed width.  This puts timestamps after
+       erc-fill-column when erc-timestamp-right-column is nil, rather
+       than before it.  It also fixes a subtle bug.  Remove use of
+       `current-window', since there is no variable by that name in
+       Emacs21, Emacs22, or XEmacs21 beta.  Check to see whether
+       `erc-fill-column' is non-nil before using it.
+
+2006-02-11  Diane Murray  <address@hidden>
+
+       * erc-list.el: Define `list' module which sets the alias
+       `erc-cmd-LIST' to `erc-list-channels' when enabled and
+       `erc-list-channels-simple' when disabled.
+       (erc-list-channels): Was `erc-cmd-LIST', renamed.
+       (erc-list-channels-simple): New function.
+
+       * erc.el (erc-modules): Added `list' to enabled modules.  Changed
+       `capab-identify' description.  Moved customization options left in
+       source code.
+
+       * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
+
+       * erc-capab.el: Put a little more detail into Usage section.
+       (define-erc-module): Run `erc-capab-identify-setup' in all open
+       server buffers when enabling.
+       (erc-capab-identify-setup): Make PROC and PARSED optional
+       arguments.
+       (erc-capab-identify-add-prefix): Simplified nickname regexp.  This
+       should now also match nicknames that are formatted differently
+       than the default.
+
+       * erc-spelling.el (define-erc-module): Make sure there's a buffer
+       before calling `with-current-buffer'.
+
+2006-02-10  Michael Olson  <address@hidden>
+
+       * Makefile (debbuild): Split from debrelease.
+       (debrevision-mwolson): New rule that causes a Debian revision to
+       be built.
+
+       * erc.el (erc-migrate-modules): Use a better algorithm.  Thanks to
+       Johan Bockgård.
+       (erc-modules): Change use of 'pcomplete to 'completion.
+
+2006-02-09  Diane Murray  <address@hidden>
+
+       * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+       * erc-capab.el: Require erc.
+       (erc-capab-send-identify-messages): Use `erc-server-send'.
+       (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
+       the flags so we can also check whether the `erc-identified' text
+       property is there at all.
+       (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
+       This fixes a bug where the prefix wasn't inserted when timestamps
+       are inserted on the right.  Tweaked nickname regexp.
+       (erc-capab-find-parsed): New function.
+       (erc-capab-get-unidentified-nickname): Updated to check for 0
+       flag.  Only get nickname if there's a nickuserhost associated with
+       this message.
+
+       * erc-capab.el: New file.  Adds the new module
+       `erc-capab-identify', which allows flagging of unidentified users
+       on servers running an ircd based on dancer - irc.freenode.net, for
+       example.
+
+       * erc.el (erc-modules): Added `capab-identify' to options.
+       (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+       (erc-get-parsed-vector-type): Moved here from erc-match.el.
+
+       * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+       (erc-get-parsed-vector-type): Moved these functions to erc.el
+       since they can be useful outside of the text matching module.
+
+       * NEWS: Added erc-capab.el.
+
+       * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
+       to "ERC".
+
+2006-02-07  Michael Olson  <address@hidden>
+
+       * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
+       ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
+       the filenames in DOS.
+
+       * erc-goodies.el: Comment fix.
+
+       * erc-hecomplete.el: Rename from erc-complete.el.  Update
+       commentary.  Use define-erc-module so that it's possible to
+       actually use this.
+       (erc-hecomplete): Rename function from `erc-complete'.
+       (erc-hecomplete): Rename group from `erc-old-complete'.  Docfix.
+
+       * erc-join.el: Rename from erc-autojoin.el.
+
+       * erc-networks.el: Rename from erc-nets.el.
+
+       * erc-services.el: Rename from erc-nickserv.el.
+
+       * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument.  Use
+       the simpler `indent-to' function when
+       `erc-timestamp-right-align-by-pixel' is nil.
+       (erc-insert-timestamp-right): If the timestamp goes on the
+       following line, don't add timestamp properties to the spaces in
+       front of it.
+
+       * erc.el (erc-migrate-modules): New function that eases migration
+       of module names.
+       (erc-modules): Call erc-migrate-modules in the :get accessor.
+       (erc-modules, erc-update-modules): Update for new modules names.
+       (erc-cmd-SMV): Remove, since this does not give useful output due
+       to the version strings being removed from ERC modules.
+
+2006-02-05  Michael Olson  <address@hidden>
+
+       * erc-spelling.el (erc-spelling-init): If
+       `erc-spelling-dictionaries' is nil, do not set
+       ispell-local-dictionary.  Before, it was being set to nil, which
+       was causing a long delay while the ispell process restarted.
+       (erc-spelling-unhighlight-word): New function that removes
+       flyspell properties from a spell-checked word.
+       (erc-spelling-flyspell-verify): Don't spell-check nicks or words
+       that have '/' before them.
+
+2006-02-04  Michael Olson  <address@hidden>
+
+       * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
+
+       * erc-complete.el (erc-nick-completion-exclude-myself)
+       (erc-try-complete-nick): Use better function for getting list of
+       channel users.
+
+       * erc-goodies.el: Docfix.
+
+       * erc-stamp.el: Use new arch tagline, since the other one wasn't
+       being treated properly.
+
+       * erc.el (erc-version-string): Release ERC 5.1.1.
+
+2006-02-03  Zhang Wei  <address@hidden>
+
+       * erc.el (erc-version-string): Don't hard-code Emacs version.
+       (erc-version): Use emacs-version.
+
+2006-01-31  Michael Olson  <address@hidden>
+
+       * erc-stamp.el: Update copyright years.
+
+2006-01-30  Simon Josefsson  <address@hidden>
+
+       * erc.el (erc-open-ssl-stream): Use tls.el.
+
+2006-01-30  Michael Olson  <address@hidden>
+
+       * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
+       that determines whether to use pixel values to align right
+       timestamps.  The default is not to do so, since it only works with
+       Emacs22 on X, and even then some people have trouble.
+       (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
+
+2006-01-29  Michael Olson  <address@hidden>
+
+       * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
+       ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
+       earlier changes.  Use utf-8 encoding.  Fix some accent typos.
+
+       * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
+       variable.
+       (erc-speedbar-goto-buffer): Fix compiler warning.
+
+       * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
+       `ibuffer-define-limiter'.  Use `define-ibuffer-column' instead of
+       `ibuffer-define-column'.  Require 'ibuf-ext so that the macros
+       work without compiler warnings.
+
+       * erc.texi (Obtaining ERC, Installation): Note that these
+       sections may be skipped if using the version of ERC that comes
+       with Emacs.
+
+2006-01-29  Edward O'Connor  <address@hidden>
+
+       * erc-viper.el: Remove.  Now that ERC is included in Emacs, these
+       work-arounds live in Viper itself.
+
+2006-01-28  Michael Olson  <address@hidden>
+
+       * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
+       guidelines.
+
+       * erc-*.el: Space out copyright years like the rest of Emacs.  Use
+       the Emacs copyright statement.  Refer to ourselves as ERC rather
+       than "Emacs IRC Client", since there are now several IRC clients
+       for Emacs.
+
+       * erc-compat.el (erc-emacs-build-time): Define as a variable.
+
+       * erc-log.el (erc-log-setup-logging): Use write-file-functions.
+
+       * erc-ibuffer.el: Require 'erc.
+
+       * erc-stamp.el (erc-insert-aligned): Only use the special text
+       property when window-system is X.
+
+       * erc.texi: Adapt for inclusion in Emacs.
+
+2006-01-28  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-format-message): More `cl' breakage; don't use
+       `oddp'.
+
+2006-01-27  Michael Olson  <address@hidden>
+
+       * debian/changelog: Update for new release.
+
+       * debian/control (Description): Update.
+
+       * debian/rules: Concatenate ChangeLog for 2005.
+
+       * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
+       (debrelease, release): Copy images directory.
+
+       * NEWS: Spelling fixes.  Add items for recent changes.
+
+       * erc.el (erc): Move call to erc-update-modules before the call to
+       erc-mode.  This should fix a timestamp display issue.
+       (erc-version-string): Release ERC 5.1.
+
+2006-01-26  Michael Olson  <address@hidden>
+
+       * erc-stamp.el (erc-insert-aligned): New function that inserts
+       text in an perfectly-aligned way relative to the right margin.  It
+       only works well with Emacs22.  A sane fallback is provided for
+       other versions of Emacs.
+       (erc-insert-timestamp-right): Use the new function.
+
+2006-01-25  Edward O'Connor  <address@hidden>
+
+       * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
+       before `erc-match-mode'.
+
+       * erc-match.el (match): Append `erc-match-message' to
+       `erc-insert-modify-hook'.
+
+2006-01-25  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: Mark last release requirement as done.
+
+       * Makefile (realclean, distclean): Remove docs.
+
+       * erc.texi: Take care of all pre-5.1 items.
+
+       * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
+       `process-send-string' in `condition-case' to avoid an error when
+       quitting ERC.
+
+       * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
+       variable-width characters in the timestamp and on the same line.
+       The latter is a kludge, but it seems to work with most of the
+       input I've thrown at it so far.  It's certainly better than going
+       past the end of line consistently when we have variable-width
+       characters on the same line.  When `erc-timestamp-intangible' is
+       non-nil, add intangible properties to the whitespace as well, so
+       that hitting <end> does what you'd expect.
+
+       * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
+       this to only use boolean values for `erc-flood-protect'.  Update
+       documentation.
+       (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
+       that any QUIT-related messages go there.
+       (erc): Try to be more clever about re-using channel buffers when
+       automatically re-connecting.  Thanks to e1f for noticing.
+
+2006-01-23  Michael Olson  <address@hidden>
+
+       * ChangeLog.2005: Remove erroneous line.
+
+       * FOR-RELEASE: Make that the Makefile tweaking is complete.
+       (NEWS): Mark as done.
+
+       * Makefile (MANUAL): New option indicating the name of the manual.
+       (PREFIX, ELISPDIR, INFODIR): New options that specify the
+       directories to install lisp code and info manuals to.  PREFIX is
+       used only by ELISPDIR and INFODIR.
+       (all): Call `lisp' and create the manual.
+       (lisp): Compile lisp code.
+       (%.info, %.html): New rules that make Info files and HTML files,
+       respectively, from a TexInfo source.
+       (doc): Create both the Info and HTML versions of the manual.  This
+       is for the user -- we never call it automatically.
+       (install-info): Install Info files.
+       (install-bin): Install compiled and source Lisp files.
+       (todo): Remove, since it seems pointless.
+
+       * NEWS: Update.
+
+       * README: Add Installation instructions.  Tweak layout.
+
+       * erc.texi: Work on some pre-5.1 items.
+
+       * erc-stamp.el, erc-track.el: Move some functions and options in
+       order to get rid of a few compiler warnings.
+
+       * erc.el (erc-modules): Enable readonly by default.  This will
+       prevent new users from accidentally removing old messages, which
+       could be disconcerting.  Also enable stamp by default, since
+       timestamps are a fairly standard feature among IRC clients.
+
+       * erc-button.el: Munge whitespace.
+
+       * erc-identd.el (erc-identd-start): Instead of throwing an error,
+       just try to use the obsolete function.
+
+2006-01-22  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-decode-string-from-target): Make sure that
+       we have a string as an argument.  If not, coerce it to the empty
+       string.  Hopefully, this will work painlessly around an edge case
+       related to quitting ERC around the same time a message comes in.
+
+2006-01-22  Johan Bockgård  <address@hidden>
+
+       * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
+       `case').  Doc fixes.
+       (erc-find-parsed-property): Simplify.
+       (erc-track-get-active-buffer): Fix logic.  Simplify.
+       (erc-track-switch-buffer): Remove unused variable `dir'.  Simplify.
+
+       * erc-speak.el: Doc fixes.
+       (erc-speak-region): `propertize' --> `erc-propertize'.
+
+       * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
+       `erc-propertize'.
+
+       * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
+       account when wrapping URLs.
+
+       * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
+
+       * erc-backend.el (define-erc-response-handler): Doc fix.
+
+2006-01-22  Michael Olson  <address@hidden>
+
+       * erc.el (erc-update-modules): Use `require' instead of `load',
+       but prevent it from causing errors, in order to preserve the
+       previous behavior.
+
+2006-01-21  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE (Source): Mark cl task as done.
+
+       * Makefile (erc-auto.el): Call erc-generate-autoloads rather than
+       generate-autoloads.
+       (erc-auto.el, %.elc): Don't show command, just its output.
+
+       * NEWS: Add items from 2005-01-01 to 2005-08-13.
+
+       * debian/copyright (Copyright): Update.
+
+       * erc-auto.in (erc-generate-autoloads): Rename from
+       generate-autoloads.
+
+       * erc.el, erc-autoaway.el, erc-backend.el: Use
+       erc-server-process-alive instead of erc-process-alive.
+
+       * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
+       erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
+       erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
+       Use (eval-when-compile (require 'cl)), so that compilation doesn't
+       fail.
+
+       * erc-fill.el, erc-truncate.el: Whitespace munging.
+
+       * erc.el: Update copyright notice.  Remove eval-after-load code.
+       (erc-with-buffer): Docfix.
+       (erc-once-with-server-event, erc-once-with-server-event-global)
+       (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
+       instead of gensym.
+       (erc-banlist-update): Use erc-delete-if instead of delete-if.
+       (erc): Call `erc-update-modules' here.
+
+       * erc-backend.el: Require 'erc-compat to minimize compiler
+       warnings.
+       (erc-decode-parsed-server-response): Docfix.
+       (erc-server-process-alive): Move here from erc.el and rename from
+       `erc-process-alive'.
+       (erc-server-send, erc-remove-channel-users): Make sure process is
+       alive before sending data to it.
+
+       * erc-bbdb.el: Update copyright years.
+       (erc-bbdb-whois): Remove overexuberant comment.
+
+       * erc-button.el: Require erc-fill, since we make liberal use of
+       `erc-fill-column'.
+
+       * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
+       functions, the latter of which provides an `assert' equivalent.
+       (erc-remove-if-not): New function that provides a simple
+       implementation of `remove-if-not'.
+       (erc-gensym): New function that provides a simple implementation
+       of `gensym'.
+       (erc-delete-if): New function that provides a simple
+       implementation of `delete-if'.
+       (erc-member-if): New function that provides a simple
+       implementation of `member-if'.
+       (field-end): Remove this, since it is unused, and later versions
+       of XEmacs have this function already.
+       (erc-function-arglist): Moved here from erc.el.
+       (erc-delete-dups): New compatibility function for dealing with
+       XEmacs.
+       (erc-subseq): New function copied from cl-extra.el.
+
+       * erc-dcc.el: Require pcomplete during compilation to avoid
+       compiler warnings.
+       (erc-unpack-int, erc-dcc-send-filter)
+       (erc-dcc-get-filter): Use erc-assert instead of assert.
+       (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
+       remove-if-not.
+
+       * erc-match.el (erc-log-matches): Fix compiler warning.
+
+       * erc-nicklist.el: Update copyright notice.
+       (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
+       (erc-nicklist-bitlbee-connected-p): Remove.
+       (erc-nicklist-insert-medium-name-or-icon): Accept channel
+       argument.  Use it to determine whether we are on bitlbee.  Now
+       that bitlbee names its channel "&bitlbee", this is trivial.
+       (erc-nicklist-insert-contents): Pass channel as specified above.
+       Don't try to determine whether we are on bitlbee here.
+       (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
+       of remove-if-not.
+       (erc-nicklist-search-for-nick): Use erc-member-if instead of
+       member-if.
+
+       * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
+       partially-evaluated lambda expression instead of `delete' and
+       `find'.
+
+       * erc-track.el: Use erc-assert.
+       (erc-track-modified-channels): Remove use of `return'.
+       (erc-track-modified-channels): Use `cadr' instead of `second',
+       since otherwise we would need yet another eval-when-compile line.
+
+2006-01-19  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-process-sentinel-1): Remove attempt to
+       detect SIGPIPE, since it doesn't work.
+
+2006-01-10  Diane Murray  <address@hidden>
+
+       * erc-spelling.el: Updated copyright years.
+       (define-erc-module): Enable/disable `flyspell-mode' for all open
+       ERC buffers as well.
+       (erc-spelling-dictionaries): Reworded customize description.
+
+       * erc.el (erc-command-symbol): New function.
+       (erc-extract-command-from-line): Use `erc-command-symbol'.  This
+       fixes a bug where "Symbol's function definition is void:
+       erc-cmd-LIST" would be shown after typing /list at the prompt (the
+       command was interned because erc-menu.el uses it and is enabled by
+       default whereas erc-list.el is not).
+
+       * NEWS: Started a list of renamed variables.
+
+       * erc.el: Reworded the message sent when defining variable
+       aliases.
+       (erc-command-indicator-face): Doc fix.
+       (erc-modules): Enable the match module by default which makes
+       current nickname highlighting on as the default.
+
+       * erc-button.el: Updated copyright years.
+       (erc-button): New face.
+       (erc-button-face): Use `erc-button'.
+       (erc-button-nickname-face): New customizable variable.
+       (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
+       new argument to `erc-button-add-button'.
+       (erc-button-add-button): Doc fix.  Added new argument to function
+       definition, NICK-P.  If it's a nickname, use
+       `erc-button-nickname-face', otherwise use `erc-button-face'.  This
+       makes channel tracking and buttons work better together when
+       `erc-button-buttonize-nicks' is enabled, since there is a nickname
+       on just about every line.
+
+       * erc-track.el (erc-track-use-faces): Doc fix.
+       (erc-track-faces-priority-list): Added `erc-button' to list.
+       (erc-track-priority-faces-only): Doc fix.
+
+2006-01-09  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-url-regexp): Use `concat' so the
+       regexp is not one long line.
+       (erc-button-alist): Fixed so that customizing works correctly.
+       Reorganized.  Removed lambda functions with more than two lines.
+       Doc fix.
+       (erc-button-describe-symbol, erc-button-beats-to-time): New
+       functions.  Moved from `erc-button-alist'.
+
+2006-01-07  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
+       process if a SIGPIPE occurs.  This happens when a new message
+       comes in at the same time a /quit is requested.
+       (erc-process-sentinel): Use string-match rather than string= to do
+       these comparisons.  Matching literal newlines makes me nervous.
+
+       * erc-track.el (erc-track-remove-from-mode-line): Handle case
+       where global-mode-string is not a list.  Emacs22 permits this.
+
+2005-11-23  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-cmd-SAY): Strip leading space in input line.
+
+2005-10-29  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: Add stuff that needs to be done before the 5.1
+       release.  Longer-term items can be added to the 5.2 section.
+
+       * Makefile (SITEFLAG): New variable that indicates what variant of
+       "--site-flag" to use.  XEmacs needs "-site-flag".
+       (INSTALLINFO): New variable indicating how we should call
+       install-info when installing documentation.
+       (erc-auto.el, .elc.el): Use $(SITEFLAG).
+
+       * NEWS: Note that last release was 5.0.4.
+
+       * erc.texi: Initial and incomplete draft of ERC documentation.
+       Commence collaborate-documentation-hack-mode :^) .
+
+2005-10-29  Diane Murray  <address@hidden>
+
+       * erc-ring.el (erc-replace-current-command): Revert last change
+       since it made the prompt disappear when using `erc-next-command'
+       and `erc-previous-command'.
+
+2005-10-28  Michael Olson  <address@hidden>
+
+       * erc.el (erc-input-marker): New variable that indicates the
+       position where text from the user begins, after the prompt.
+       (erc-mode-map): Bind <HOME> to erc-bol, just like C-a.
+       (erc): Initialize erc-input-marker.
+       (erc-display-prompt): Even in case where no prompt is desired by
+       the user, clear the undo buffer and set the input marker.
+       (erc-bol, erc-user-input): Simplify by using erc-input-marker.
+
+       * erc-pcomplete.el (pcomplete-parse-erc-arguments): Use
+       erc-insert-marker.
+
+       * erc-ring.el (erc-previous-command)
+       (erc-replace-current-command): Use erc-insert-marker.
+
+       * erc-spelling.el (erc-spelling-init): Make sure that even Emacs21
+       obeys erc-spelling-flyspell-verify.
+       (erc-spelling-flyspell-verify): Use erc-input-marker.  This should
+       make it considerably faster when switching to a buffer that has
+       seen a lot of activity since last viewed.
+
+2005-10-25  Diane Murray  <address@hidden>
+
+       * erc-backend.el (erc-server-version, 004): Re-added setting of
+       `erc-server-version'.  It doesn't hurt to set, and it could be
+       used in modules or users' settings.
+
+       * NEWS: Added descriptions of some new features.
+
+2005-10-20  Diane Murray  <address@hidden>
+
+       * erc-match.el (erc-current-nick-highlight-type): Set to `keyword'
+       as default.
+       (erc-beep-match-types): New variable.
+       (erc-text-matched-hook): Doc fix.  Added `erc-beep-on-match' to
+       customization options.
+       (erc-beep-on-match): New function.  If the MATCH-TYPE is found in
+       `erc-beep-match-types', beep.
+
+       * erc-compat.el (erc-make-obsolete, erc-make-obsolete-variable):
+       New functions to deal with the difference in the number of
+       arguments accepted by `make-obsolete' and `make-obsolete-variable'
+       in Emacs and XEmacs.
+
+       * erc.el, erc-nets.el: Use `erc-make-obsolete' and
+       `erc-make-obsolete-variable'.
+
+       * erc-compat.el (erc-make-obsolete, erc-make-obsolete-variable):
+       Handle `wrong-number-of-arguments' error instead of checking for
+       xemacs feature as future versions of XEmacs might accept three
+       arguments.
+
+2005-10-18  Edward O'Connor  <address@hidden>
+
+       * erc.el: Tell emacs-lisp-mode how to font-lock define-erc-module
+       docstrings.
+
+2005-10-08  Diane Murray  <address@hidden>
+
+       * AUTHORS, CREDITS, ChangeLog, ChangeLog.2002, ChangeLog.2004:
+       Updated my email address.
+
+2005-10-06  Michael Olson  <address@hidden>
+
+       * erc.el (erc-send-input-line, erc-cmd-KICK, erc-cmd-PART)
+       (erc-cmd-QUIT, erc-cmd-TOPIC, erc-kill-server, erc-kill-channel):
+       Adapt to new TARGET parameter of erc-server-send.
+
+       * erc-backend.el (erc-server-connect): Don't specify encoding for
+       erc-server-process, since we set this each time we send a line to
+       the server.
+       (erc-encode-string-for-target): Remove.
+       (erc-server-send): Allow TARGET to be specified.  This was how it
+       used to be before my more-backend work.  Set encoding of server
+       process just before sending text to it.  Associate encoding with
+       text if we are using the queue.
+       (erc-server-send-queue): Pull encoding from queue.
+       (erc-message, erc-send-ctcp-message, erc-send-ctcp-notice): Adapt
+       to new TARGET parameter of erc-server-send.
+
+2005-10-05  Michael Olson  <address@hidden>
+
+       * erc.el (erc-toggle-debug-irc-protocol): Use erc-view-mode-enter
+       rather than view-mode.
+
+       * erc-backend.el (erc-encode-string-for-target): If given a nil or
+       empty string, return "".
+       (erc-server-send-queue): XEmacs fix: Use erc-cancel-timer rather
+       than cancel-timer.
+
+       * erc-compat.el (erc-view-mode-enter): New function that is
+       aliased to the correct way of entering view-mode.
+
+       * erc-match.el (erc-log-matches-make-buffer): Use
+       erc-view-mode-enter rather than view-mode-enter.
+
+2005-10-05  Edward O'Connor  <address@hidden>
+
+       * erc-backend.el (erc-encode-string-for-target): If str is nil,
+       pass the empty string to erc-encode-coding-string instead, which
+       allows one to /part and /quit without providing a reason again.
+
+2005-10-03  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-message, erc-send-ctcp-message)
+       (erc-send-ctcp-notice): Encode string for target before sending.
+
+       * erc.el (erc-cmd-KICK, erc-cmd-PART, erc-cmd-QUIT, erc-cmd-TOPIC)
+       (erc-kill-server, erc-kill-channel): Ditto.
+
+2005-09-05  Johan Bockgård  <address@hidden>
+
+       * erc-page.el (erc-ctcp-query-PAGE): (message text) -> (message
+       "%s" text).
+       (erc-cmd-PAGE): Simplify regexp. Put `do-not-parse-args' t.
+
+2005-09-05  Michael Olson  <address@hidden>
+
+       * erc.el (erc-flood-limit, erc-flood-limit2): Remove since they
+       are no longer needed.
+       (erc-send-input): Detect whether we want flood control to be
+       active.  The previous behavior was to always force the message.
+       (erc-toggle-flood-control): Adapt to new flood control method.  No
+       more 'strict.
+       (erc-cmd-SV): Use concat rather than
+       format-time-string.
+       (erc-format-target, erc-format-target-and/or-server): Shorten
+       logic statements.
+
+       * erc-compat.el (erc-emacs-build-time): Use a string
+       representation rather than trying to coerce a time out of a string
+       on XEmacs.
+
+       * erc-identd.el (erc-identd-start): Use make-network-process
+       instead of open-network-stream.  Error out if this is not defined.
+
+       * erc-backend.el (erc-send-line): New command that sends a line
+       using flood control, using a callback for display.  It isn't used
+       yet.
+
+2005-09-04  Michael Olson  <address@hidden>
+
+       * erc.el: Add defvaralias and make-obsolete-variable for
+       erc-default-coding-system.
+       (channel-topic, channel-modes, channel-user-limit, channel-key,
+       invitation, away, channel-list, bad-nick): Rename globally to
+       erc-{name-of-variable}.
+
+2005-09-03  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-message): Simplify regexp.
+       (erc-cmd-DEOP, erc-cmd-OP): Simplify.
+
+2005-08-29  Michael Olson  <address@hidden>
+
+       * erc.el: Alias erc-send-command to erc-server-send.  ErBot needs
+       this to work without modification.  Add defvaralias for
+       erc-process.  Make this and the other backwards-compatibility
+       functions and variables be marked obsolete as of ERC 5.1.
+
+       * erc-backend.el: Add autoload for erc-log macro.
+       (erc-server-connect): Set some variables before defining process
+       handlers.  It probably doesn't make any difference.
+
+2005-08-26  Michael Olson  <address@hidden>
+
+       * erc.el: Add defvaralias for erc-announced-server-name, since
+       this seems to be widely used.
+
+2005-08-17  Michael Olson  <address@hidden>
+
+       * erc.el (erc): Remove unnecessary boundp check.
+
+       * erc-autoaway.el: Fix compiler warning.
+
+       * erc-backend.el (erc-server-version): Since this isn't used by
+       any code, and isn't generally useful, remove it.
+       (erc-server-send-queue): Use erc-current-time rather than
+       float-time.
+       (004): Don't set erc-server-version.
+
+       * erc-dcc.el (erc-dcc-chat-request, erc-dcc-get-parent): Move to
+       fix a compiler warning.
+
+       * erc-ibuffer.el (erc-server): Remove unnecessary boundp check.
+
+       * erc-identd.el (erc-identd-start): Use read-string instead of
+       read-input.
+
+       * erc-imenu.el (erc-unfill-notice): Use a while loop instead of
+       replace-regexp.
+
+       * erc-nicklist.el: Add conditional dependency on erc-bbdb.
+       (erc-nicklist-insert-contents): Tighten some regexps.
+
+       * erc-notify.el (erc-notify-list): Docfix.
+
+       * erc-spelling.el (erc-spelling-dictionaries): Add :type and
+       :group to silence a compiler warning.
+
+2005-08-14  Michael Olson  <address@hidden>
+
+       * erc-backend.el (erc-session-server, erc-session-port)
+       (erc-announced-server-name, erc-server-version)
+       (erc-server-parameters): Moved here from erc.el.
+       (erc-server-last-peers): Moved, renamed from last-peers.
+       (erc-server-lag): Moved, renamed from erc-lag.
+       (erc-server-duplicates): Moved, renamed from erc-duplicates.
+       (erc-server-duplicate-timeout): Moved, renamed from
+       erc-duplicate-timeout.
+       (erc-server): New customization group hosting all options from
+       this file.
+       (erc-server-prevent-duplicates): Moved, renamed from
+       erc-prevent-duplicates.
+       (erc-server-duplicate-timeout): Moved, renamed from
+       erc-duplicate-timeout.
+       (erc-server-auto-reconnect, erc-split-line-length)
+       (erc-server-coding-system, erc-encoding-coding-alist)
+       (erc-server-connect-function, erc-server-flood-margin)
+       (erc-server-flood-penalty): Change group to 'erc-server.
+       (erc-server-send-ping-interval): Moved, renamed from
+       erc-ping-interval.
+       (erc-server-ping-handler): Moved, renamed from erc-ping-handler.
+       (erc-server-setup-periodical-server-ping): Moved, renamed from
+       erc-setup-periodical-server-ping.
+       (erc-server-connect): Add to docstring.  Move more initialization
+       here.
+       (erc-server-processing-p): Docfix.
+       (erc-server-connect): Use 'raw-text like in the original version.
+       (erc-server-filter-function): Don't reset process coding system.
+
+       * erc-stamp.el (erc-add-timestamp): If the text at point is
+       invisible, don't insert a timestamp.  Thanks to Pascal
+       J. Bourguignon for the suggestion.
+
+       * erc-match.el (erc-text-matched-hook): Don't hide fools by
+       default, but include it in the available options.
+
+2005-08-13  Michael Olson  <address@hidden>
+
+       * erc-*.el: s/erc-send-command/erc-server-send/g.
+       s/erc-process/erc-server-process/g (sort of).  Occasional
+       whitespace and indentation fixes.
+
+       * erc-backend.el: Specify a few local variables for indentation.
+       Take one item off of the TODO list.
+       (erc-server-filter-data): Renamed from erc-previous-read.  From
+       circe.
+       (erc-server-processing-p): New variable that indicates when we're
+       currently processing a message.  From circe.
+       (erc-split-line-length): New option that gives the maximum line
+       length of a single message.  From circe.
+       (erc-default-coding-system): Moved here from erc.el.
+       (erc-split-line): Renamed from erc-split-command and taken from
+       circe.
+       (erc-connect-function, erc-connect, erc-process-sentinel-1)
+       (erc-process-sentinel, erc-flood-exceeded-p, erc-send-command)
+       (erc-message, erc-upcase-first-word, erc-send-ctcp-message)
+       (erc-send-ctcp-notice): Moved here from erc.el.
+       (erc-server-filter-function): Renamed from erc-process-filter.
+       From circe.
+       (erc-server-process): Renamed from `erc-process' and moved here
+       from erc.el.
+       (erc-server-coding-system): Renamed from
+       `erc-default-coding-system'.
+       (erc-encoding-coding-alist): Moved here from erc.el.
+       (erc-server-flood-margin, erc-server-flood-penalty):
+       (erc-server-flood-last-message, erc-server-flood-queue):
+       (erc-server-flood-timer): New options from circe that allow
+       tweaking of flood control.
+       (erc-server-connect-function): Renamed from erc-connect-function.
+       (erc-flood-exceeded-p): Removed.
+       (erc-coding-system-for-target)
+       (erc-encode-string-for-target, erc-decode-string-from-target):
+       Moved here from erc.el
+       (erc-server-send): Renamed from erc-send-command.  Adapted from
+       the circe function by the same name.
+       (erc-server-send-queue): New function from circe that implements
+       handling of a flood queue.
+       (erc-server-current-nick): Renamed from current-nick.
+       (erc-server-quitting): Renamed from `quitting'.
+       (erc-server-last-sent-time): Renamed from `last-sent-time'.
+       (erc-server-last-ping-time): Renamed from `last-ping-time'.
+       (erc-server-lines-sent): Renamed from `lines-sent'.
+       (erc-server-auto-reconnect): Renamed from `erc-auto-reconnect'.
+       (erc-server-coding-system): Docfix.
+       (erc-server-connect): Renamed from `erc-connect'.  Require SERVER
+       and PORT parameters.  Initialize several variables here.  Don't
+       set `erc-insert-marker'.  Use a per-server coding system via
+       erc-server-default-encoding.
+
+       * erc.el (erc-version-string): Changed to indicate we are running
+       the `more-backend' branch.
+       (erc-send-single-line): Implement flood control using
+       erc-split-line.
+       (erc-send-input): Move functionality of erc-send-single-line in
+       here.
+       (erc-send-single-line): Assimilated!
+       (erc-display-command, erc-display-msg): Handle display hooks.
+       (erc-auto-reconnect, current-nick, last-sent-time)
+       (last-ping-time, last-ctcp-time, erc-lines-sent, erc-bytes-sent)
+       (quitting): Moved to erc-backend.el.
+       (erc): Docfix.  Don't initialize quite so many things here.
+
+2005-08-10  Michael Olson  <address@hidden>
+
+       * debian/copyright (Copyright): Remove notices for 4 people, since
+       they didn't contribute legally-significant changes, or have had
+       these changes overwritten.
+
+       * erc-log.el: Remove copyright notice.
+
+       * erc.el: Remove 3 copyright notices.
+
+2005-08-09  Michael Olson  <address@hidden>
+
+       * debian/changelog: Create 5.0.4-3 package.  This doesn't serve
+       any purpose other than to thank Romain Francoise for some advice.
+
+       * Makefile (debrelease): Allow last upload and extra build options
+       to be specified.
+
+2005-08-08  Michael Olson  <address@hidden>
+
+       * debian/changelog: Create 5.0.4-2 package.
+
+       * debian/control (Uploaders): Add Romain Francoise.
+       (Standards-Version): Update to 3.6.2.
+       (Depends): Add `emacsen'.
+
+       * debian/scripts/startup.erc (load-path): Minor whitespace fixup.
+
+       * Makefile (clean): Split target from realclean and make it remove
+       files that aren't packaged in releases.
+       (clean, release): Minor cleanups.
+       (debrelease): Use debuild rather than dpkg-buildpackage since the
+       former calls lintian.  Minor cleanups.
+       (debrelease-mwolson): New target that removes old Debian packages,
+       calls debrelease, and copies the resulting package to my dist dir.
+       (upload): New target that automates the process of uploading an
+       ERC release to sourceforge.
+
+       * erc.el (erc-mode): Use `make-local-variable' instead of
+       `make-variable-buffer-local'.
+
+2005-07-12  Michael Olson  <address@hidden>
+
+       * debian/changelog: Build 5.0.4-1.
+
+       * Makefile (release): Prepare zip file in addition to tarball.
+
+       * NEWS: Add item for the undo fix.
+
+2005-07-09  Michael Olson  <address@hidden>
+
+       * erc-nicklist.el (erc-nicklist-insert-contents): Check
+       erc-announced-name before erc-session-server.  Make sure that we
+       can never get a stringp (nil) error.
+       (erc-nicklist-call-erc-command): If given no command, do nothing.
+       This fixes an error that used to occur when a stray mouse click
+       was made outside of the popup window, but on the erc-nicklist
+       menu.
+
+       * erc-bbdb.el (erc-bbdb-search-name-and-create): Get rid of the
+       infinite input loop when you want to create a new record.  Replace
+       most of that with a completing read of existing nicks.  If no nick
+       is chosen, create a new John Doe record.  The net effect of this
+       is that the old behavior is re-instated, with the addition of one
+       completing read that happens when you do a /whois.
+
+2005-07-09  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-process-input-line): Docfix.
+       (erc-update-mode-line-buffer): Use `erc-propertize' instead of
+       `propertize'.
+       (erc-propertize): Move to erc-compat.el.
+
+       * erc-compat.el (erc-propertize): Move here from erc.el. Always
+       return a copy of the string (like `propertize' in GNU Emacs).
+
+       * erc-nicklist.el (erc-nicklist-icons-directory)
+       (erc-nicklist-voiced-position)
+       (erc-nicklist-insert-medium-name-or-icon): Docfix.
+       (erc-nicklist-insert-contents): Simplify.
+       (erc-nicklist-mode-map): Bind RET instead of `return'. Bind
+       `down-mouse-3' instead of `mouse-3'.
+       (erc-nicklist-kbd-cmd-QUERY): Cleanup regexp.
+       (erc-nicklist-channel-users-info): Docfix. Simplify.
+
+2005-07-02  Michael Olson  <address@hidden>
+
+       * images: New directory containing the images that are used by
+       erc-nicklist.el.  These are from Gaim, and are thought to be
+       available under the terms of the GPL.
+
+       * erc-bbdb.el: Add local variables section to preserve tabs, since
+       that is the style used throughout this file.  Apply patch from
+       Edgar Gonçalves as follows.
+       (erc-bbdb-bitlbee-name-field): New variable that indicates the
+       field name to use for annotating the "displayed name" of a bitlbee
+       contact.
+       (erc-bbdb-irc-highlight-field): Docfix.
+       (erc-bbdb-search-name-and-create): Prompt the user for the name of
+       a contact if none was found.  Merge the new entries into the
+       specified contact.  If new arg SILENT is non-nil, do not prompt
+       the user for a name or offer to merge the new entry.
+       (erc-bbdb-insinuate-and-show-entry): New arg SILENT is accepted,
+       which is passed on to erc-bbdb-search-name-and-create.
+       (erc-bbdb-whois): Tell erc-bbdb-search-name-and-create to prompt
+       for name if necessary.
+       (erc-bbdb-JOIN, erb-bbdb-NICK): Forbid
+       erc-bbdb-search-name-and-create from prompting for a name.
+
+       * erc-nicklist.el: Add local variables section to preserve tabs,
+       since that is the style used throughout this file.  Apply patch
+       from Edgar Gonçalves as follows.
+       (erc-nicklist-use-icons): New option; if non-nil, display an icon
+       instead of the name of the chat medium.
+       (erc-nicklist-icons-directory): New option indicating the path to
+       the PNG files that are used for chat icons.
+       (erc-nicklist-use-icons): New option indicating whether to put
+       voiced nicks on top, bottom, or not to differentiate them.  The
+       default is to put them on the bottom.
+       (erc-nicklist-bitlbee-connected-p): New variable that indicates
+       whether or not we are currently using bitlbee.  An attempt will be
+       made to auto-detect the proper value.  This is bound in the
+       `erc-nicklist-insert-contents' function.
+       (erc-nicklist-nicklist-images-alist): New variable that maps a
+       host type to its icon.  This is set by `erc-nicklist'.
+       (erc-nicklist-insert-medium-name-or-icon): New function that
+       inserts an icon or string that identifies the current host type.
+       (erc-nicklist-search-for-nick): New function that attempts to find
+       a BBDB record that corresponds with this contact given its
+       finger-host.  If found, return its bitlbee-nick field.
+       (erc-nicklist-insert-contents): New function that inserts the
+       contents of the nick list, including text properties and images.
+       (erc-nicklist): Populate `erc-nicklist-images-alist'.  Move
+       nicklist content generation code to
+       `erc-nicklist-insert-contents'.
+       (erc-nicklist-mode-map): Map C-j to erc-nicklist-kbd-menu and RET
+       to erc-nicklist-kbd-cmd-QUERY.
+       (erc-nicklist-call-erc-command): Make use of
+       `switch-to-buffer-other-window'.
+       (erc-nicklist-cmd-QUERY): New function that opens a query buffer
+       for the given contact.
+       (erc-nicklist-kbd-cmd-QUERY): Ditto; contains most of the code.
+       (erc-nicklist-kbd-menu): New function that shows the nicklist
+       action menu.
+       (erc-nicklist-channel-users-info): Renamed from
+       `erc-nicklist-channel-nicks'.  Implement sorting voiced users.
+
+2005-06-29  Johan Bockgård  <address@hidden>
+
+       * erc-nickserv.el (erc-nickserv-alist): Fix regexp for Azzurra.
+
+2005-06-26  Michael Olson  <address@hidden>
+
+       * erc-autojoin.el (erc-autojoin-add, erc-autojoin-remove): Use
+       `erc-session-server' if `erc-announced-server-name' is nil.  This
+       happens when servers don't send a 004 message.
+
+       * erc.el (erc-quit-server): Ditto.
+
+       * erc-ibuffer.el (erc-server, erc-server-name): Ditto.
+
+       * erc-notify.el (erc-notify-JOIN, erc-notify-NICK)
+       (erc-notify-QUIT): Ditto.
+
+2005-06-24  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-default-coding-system)
+       (erc-handle-user-status-change): Docstring fix.
+       (with-erc-channel-buffer): Removed.
+       (erc-ignored-reply-p): Replace `with-erc-channel-buffer' with
+       `erc-with-buffer'.
+       (erc-display-line-1): Fix broken undo.
+
+2005-06-23  Michael Olson  <address@hidden>
+
+       * CREDITS: Add entries for Luigi Panzeri and Andreas Schwab.
+
+       * erc-nickserv.el (erc-nickserv-alist): Add entries for Azzurra
+       and OFTC.  Thanks to Luigi Panzeri and Andreas Schwab for
+       providing these.
+
+2005-06-16  Michael Olson  <address@hidden>
+
+       * CREDITS: Add John Paul Wallington.
+
+       * erc.el: Thanks to John Paul Wallington for the following.
+       (erc-nickname-in-use): Use `string-to-number' instead of
+       `string-to-int'.
+
+       * erc-dcc.el (erc-dcc-handle-ctcp-send)
+       (erc-dcc-handle-ctcp-chat, erc-dcc-get-file)
+       (erc-dcc-chat-accept): Ditto.
+
+       * erc-identd.el (erc-identd-start): Ditto.
+
+2005-06-16  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-mode-map): Suppress `font-lock-fontify-block' key
+       binding since it destroys face properties.
+
+2005-06-08  Michael Olson  <address@hidden>
+
+       * erc.el (erc-cmd-UNIGNORE): Use `erc-member-ignore-case' instead
+       of `member-ignore-case'.  Thanks to bpalmer for the heads up.
+
+2005-06-06  Michael Olson  <address@hidden>
+
+       * erc.el (erc-modules): Fix a mistake I made when editing this a
+       few days ago.  Modes should now be disabled properly.
+       (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Remove unnecessary call to
+       `format'.  Thanks to Andreas Schwab for reporting this.
+
+       * debian/changelog: Close "README file missing" bug.
+
+       * debian/rules (binary-erc): Install README file.
+
+2005-06-03  Michael Olson  <address@hidden>
+
+       * erc.el (erc-with-buffer): Set `lisp-indent-function' so Emacs
+       Lisp mode knows how to indent erc-with-buffer blocks.
+       (with-erc-channel-buffer): Ditto.
+       (erc-with-all-buffers-of-server): Ditto.
+       (erc-modules): Use pcomplete by default, not completion, since
+       erc-complete.el is deprecated.  Use `fboundp' instead of
+       `symbol-value' to check for existence of a function before calling
+       it.  This was causing an error when untoggling the `completion'
+       option and trying to save via the customize interface.
+
+       * erc-track.el (erc-modified-channels-update): If a buffer is not
+       currently connected, remove it from the modified channels list.
+       This should fix the problem where residue was left on the mode
+       line after quitting ERC.
+
+       * erc-list.el (erc-prettify-channel-list): Docfix; thanks to John
+       Paul Wallington for reporting this.
+
+2005-05-31  Michael Olson  <address@hidden>
+
+       * debian/changelog: First draft of entries for the 5.0.3 release.
+
+       * debian/README.Debian: Note that ERC will now install correctly
+       on versions of Emacs or XEmacs that do not have the `format-spec'
+       library.  Correct some grammar and prune the content a bit.
+
+       * debian/scripts/install (emacs20): Remove line since we no longer
+       need to deal with format-spec.el.
+
+       * NEWS: Add entries for the upcoming 5.0.3 release.
+
+       * erc.el: Don't require format-spec since this is provided in
+       erc-compat.el now.
+       (erc-process-sentinel, erc-setup-periodical-server-ping): Use
+       `erc-cancel-timer' instead of `cancel-timer'.
+       (erc-version-string): Update to 5.0.3.
+
+       * erc-autoaway.el (autoaway, erc-autoaway-reestablish-idletimer):
+       Use `erc-cancel-timer' instead of `cancel-timer'.
+
+       * erc-compat.el (format-spec, format-spec-make): If we cannot load
+       the `format-spec' library, provide versions of these functions.
+       This should keep problems from surfacing with Emacs21 Debian
+       builds.
+       (erc-cancel-timer): New function created to take the place of
+       `cancel-timer' since XEmacs calls it something else.
+
+       * erc-track.el (erc-modified-channels-update): Accept any number
+       of arguments, which are ignored.  This allows it to be run from
+       `erc-disconnected-hook' without extra bother.
+       (track): Add `erc-modified-channels-update' to
+       `erc-disconnected-hook' so that the indicators are removed
+       correctly in some edge cases.
+       (erc-modified-channels-display): Make sure that we never pass nil
+       to the function in `erc-track-shorten-function'.  This happens
+       when we have deleted buffers in `erc-modified-channels-alist'.
+       Also, make sure that the buffer has a non-nil short-name before
+       adding it to the string list.  This should fix some XEmacs
+       warnings when running /quit with unchecked buffers, as well as get
+       rid of a stray buffer problem (or so it is hoped).
+
+2005-05-31  Johan Bockgård  <address@hidden>
+
+       * erc-replace.el, erc-speak.el: Clean up comment formatting.
+
+       * erc-ring.el (ring, erc-input-ring-index, erc-clear-input-ring):
+       Clean up docstring formatting.
+
+2005-05-30  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Delete superfluous
+       arg to `format'.
+       (erc-load-irc-script): Use `insert-file-contents' instead of
+       `insert-file'. Simplify.
+
+2005-05-29  Michael Olson  <address@hidden>
+
+       * erc.el (erc-version-string): Move this up so that it is
+       evaluated before the `require' statements.  Not a major change.
+
+2005-04-27  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-complete-word): Simplify.
+
+2005-04-27  Michael Olson  <address@hidden>
+
+       * Makefile (debrelease): Use a slightly different approach when
+       removing CVS and Arch cruft.
+
+       * debian/changelog: Update for 5.0.2-1 package.
+
+2005-04-25  Michael Olson  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move code
+       block higher in file to fix a load failure when using Emacs21.
+       Thanks to Daniel Brockman for the report and fix.
+
+2005-04-24  Adrian Aichner  <address@hidden>
+
+       * erc-backend.el (JOIN): save-excursion so that
+       `erc-current-logfile' inserts into the correct channel buffers
+       when using erc-log-insert-log-on-open in combination with autojoin
+       to multiple channels.
+
+2005-04-17  Adrian Aichner  <address@hidden>
+
+       * erc-log.el: Remove stray whitespace.
+       * erc.el: Ditto.
+
+2005-04-09  Aidan Kehoe  <address@hidden>
+
+       * erc.el: autoload erc-select-read-args, which, because it parses
+       erc-select's args, can be called before erc.el is loaded.
+
+2005-04-07  Edward O'Connor  <address@hidden>
+
+       * erc-viper.el: Remove final newlines from previously-existing ERC
+       buffers. (Minor bug fix.)
+
+2005-04-06  Michael Olson  <address@hidden>
+
+       * Makefile (debrelease): Ignore errors from deleting Arch and CVS
+       metadata.
+
+2005-04-05  Michael Olson  <address@hidden>
+
+       * ChangeLog, CREDITS, AUTHORS: Correct name and email address of
+       Marcelo Toledo.
+
+2005-04-04  Michael Olson  <address@hidden>
+
+       * erc.el (erc-modules): Add entry for spelling module.
+
+       * erc-spelling.el: Add autoload line.
+
+       * erc-backend.el: Apply latest non-ascii patch from Kai Fan.
+       (erc-decode-parsed-server-response): Search
+       erc-response.command-args for channel name.  Decode the
+       erc-response struct using this channel name as key according to
+       the `erc-encoding-coding-alist'.
+
+       * erc-track.el: Apply patch from Henrik Enberg.
+       (erc-modified-channels-object): Use optimal amount of whitespace
+       around modified channels indicator.
+
+2005-04-02  Johan Bockgård  <address@hidden>
+
+       * erc.el (define-erc-module, erc-with-buffer)
+       (erc-with-all-buffers-of-server, with-erc-channel-buffer): Add
+       edebug-form-spec.
+
+       * erc-compat.el (erc-define-minor-mode): Ditto.
+
+2005-03-29  Jorgen Schaefer  <address@hidden>
+
+       * erc-spelling.el: New file.
+
+2005-03-24  Johan Bockgård  <address@hidden>
+
+       * erc-backend.el (define-erc-response-handler): Add
+       `definition-name' property to constructed symbols so that
+       find-function and find-variable will find them.
+
+2005-03-21  Michael Olson  <address@hidden>
+
+       * erc-dcc.el, erc-goodies.el, erc-list.el, erc-notify.el,
+       erc-ring.el, erc.el: Copyright assignment occurred.
+
+       * debian/scripts/install: Make a shell wrapper around the original
+       Makefile and inline the Makefile.  The problem is that Debian
+       passes all the Emacs variants at once, rotating them at every
+       invocation of the install script, which happens once per variant.
+       This caused each installation to happen N-1 times more often than
+       it should have.  As a result, we need to only deal with the first
+       argument.
+       (ELFILES): Only add format-spec.el if we are compiling for
+       emacs21.  Don't filter out erc-compat.el.
+       (SITEFLAG): New variable that indicates that the "nosite" option
+       should look like.
+       (.DEFAULT): Use $(FLAVOUR) instead of $@ for clarity.
+
+       * debian/rules: Install NEWS file and compress it.
+
+       * debian/maint/postinst: Be more cautious about configuration
+       step.
+
+       * debian/copyright (Copyright): Another assignment came in.
+
+       * debian/control (Standards-Version): Update to a newer version as
+       recommended by lintian.
+
+       * debian/changelog: Changes made for the Debian package.
+
+       * debian/README.Debian: Keep only the General Notes section.
+
+       * NEWS: Move old history items here from debian/README.Debian.
+
+       * Makefile (SNAPSHOTDATE): Deprecate this option since we hope to
+       release more often.
+
+2005-03-20  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-define-catalog, `ctcp-request-to'): Fix typo (%: ->
+       %t:).
+
+2005-03-01  Michael Olson  <address@hidden>
+
+       * erc-log.el (erc-save-buffer-in-logs): Replace tabs with spaces
+       in code indentation.
+
+2005-02-28  Michael Olson  <address@hidden>
+
+       * erc.el (erc-display-message): Apply corrected patch from Henrik
+       Enberg.
+
+2005-02-27  Michael Olson  <address@hidden>
+
+       * erc.el (erc-display-message): Apply patch from Henrik Enberg.
+       Check here to see if a message should be hidden, rather than
+       relying on code in each individual command.
+       (erc-version-string): Add "(CVS)" to the version string for
+       clarity.
+
+       * erc-backend.el (JOIN, KICK, MODE, NICK, PART, QUIT, TOPIC):
+       Don't check `erc-hide-list' here.
+
+       * erc-list.el, erc-match.el, erc.el, debian/copyright: Update
+       copyright information as a few more people have assignments
+       registered.
+
+2005-02-06  Michael Olson  <address@hidden>
+
+       * erc-backend.el: Apply patch from Kai Fan for non-ASCII character
+       support.
+       (erc-parse-server-response): Add call to
+       `erc-decode-parsed-server-response'.
+       (erc-decode-parsed-server-response): New function that decodes a
+       pre-parsed server response before it can be handled.
+       (PRIVMSG): Comment out call to `erc-decode-string-from-target'.
+       (TOPIC): Ditto.
+
+2005-02-01  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-process-sentinel-1): Don't reconnect on connection
+       refused. This error is reported differently when using
+       open-network-stream-nowait.
+
+2005-01-26  Diane Murray  <address@hidden>
+
+       * erc.el (erc-cmd-APPENDTOPIC, erc-set-topic): The control
+       character in `channel-topic' was changed to \C-o - replaced \C-c
+       with \C-o so that these functions work as expected again.
+       (erc-get-channel-mode-from-keypress): Doc fix.
+
+2005-01-25  Diane Murray  <address@hidden>
+
+       * erc.el, erc-button.el, erc-compat.el, erc-goodies.el,
+       erc-match.el, erc-nets.el, ChangeLog, NEWS: Merged bug fixes made
+       on release_5_0_branch since 5.0.1 release.
+
+2005-01-24  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-input-action): Quote `erc-action-history-list' so
+       that input history actually works.
+       (erc-process-ctcp-query): Fix and simplify logic.
+       (erc-get-channel-mode-from-keypress): Use `C-' string syntax.
+       (erc-load-irc-script-lines): Use `erc-command-indicator' instead
+       of `erc-prompt'.
+
+2005-01-23  Edward O'Connor  <address@hidden>
+
+       * erc-viper.el: Ensure that `viper-comint-mode-hook' runs in
+       buffers whose `erc-mode-hook' has already run when this file is
+       loaded.
+       Explicitly `require' erc.el.
+
+2005-01-22  Edward O'Connor  <address@hidden>
+
+       * erc.el (erc-mode): Remove frobbing of `require-final-newline'.
+
+       * erc-log.el (erc-save-buffer-in-logs): Remove frobbing of
+       `require-final-newline'.
+
+       * erc-viper.el: New file. This is where all ERC/Viper
+       compatibility code should live. When and if ERC is bundled with
+       Emacs, some of the hacks in this file should be merged into Viper
+       itself.
+
+2005-01-21  Edward O'Connor  <address@hidden>
+
+       * erc.el (erc-mode): Set `require-final-newline' to nil in ERC
+       buffers. This prevents a Viper misfeature whereby extraneous
+       newlines are inserted into the ERC buffer when switching between
+       viper states.
+
+       * erc-log.el (erc-save-buffer-in-logs): Bind `require-final-newline'
+       to t when calling `write-region' to ensure that further log
+       entries start on fresh lines.
+
+2005-01-21  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-add-face): Reverted my change to the
+       order faces since it had the unwanted effect of putting the button
+       face after all others.
+       (erc-button-face-has-priority): Removed this variable as it is not
+       necessary anymore - it was used to compensate for the above
+       mentioned change.
+
+       * NEWS: Added the latest fixes.
+
+2005-01-20  Diane Murray  <address@hidden>
+
+       * erc-button.el, erc-match.el:
+       (erc-button-syntax-table, erc-match-syntax-table): Added \ as a
+       legal character for nicknames.
+
+       * erc-nets.el (erc-server-select): Fixed so that only networks
+       with servers found in `erc-server-alist' are available as choices.
+
+       * erc.el, erc-compat.el, erc-goodies.el:
+       (erc-replace-match-subexpression-in-string): New function.  Needed
+       because `replace-match' in XEmacs doesn't replace regular
+       expression subexpressions in strings, only in buffers.
+       (erc-seconds-to-string, erc-controls-interpret): Use the new
+       function.
+
+       * erc-button.el (erc-button-add-button): Use the `:button-face'
+       key combined with an `erc-mode' local `widget-button-face' set to
+       nil to get the widget overlay face suppressed in XEmacs.
+
+2005-01-19  Francis Litterio  <address@hidden>
+
+       * erc-button.el (erc-button-add-face): The face added by this
+       function is more important than the existing text's face, so we
+       now prepend erc-button-face to the list of existing faces when
+       adding a button.  To instead append erc-button-face to existing
+       faces, set variable `erc-button-face-has-priority' to nil.
+       (erc-button-face-has-priority): New variable to control how
+       erc-button-add-face adds erc-button-face to existing faces.
+       (erc-button-press-button): Silenced a byte-compiler warning about
+       too few arguments in a call to `error'.
+
+2005-01-19  Diane Murray  <address@hidden>
+
+       * NEWS: Added list of 5.0.1 fixes.
+
+2005-01-19  Michael Olson  <address@hidden>
+
+       * AUTHORS: Move to format that cscvs can understand.  As an added
+       perk, entries line up nicer.
+
+       * erc.el, erc-fill.el, erc-pcomplete.el, debian/copyright: Merge a
+       few more copyright lines thanks to Alex Schroeder's BBDB file.
+
+       * Makefile: Change version to correspond with our new scheme.
+
+2005-01-18  Diane Murray  <address@hidden>
+
+       * erc-list.el (erc-chanlist-channel-line-regexp): Now matches
+       private channels, the channels `#' and `&', and channels with
+       names including non-ascii characters.
+       (erc-chanlist-join-channel): Don't attempt to join private
+       channels since the channel name is unknown.
+
+       * erc-goodies.el (erc-make-read-only): Add `rear-nonsticky'
+       property to avoid `Text is read-only' errors during connection.
+       `front-nonsticky' does not exist, changed to `front-sticky'.
+       (erc-controls-interpret, erc-controls-strip): Just work on the
+       string, don't open a temporary buffer.
+       (erc-controls-propertize): Now accepts optional argument STR.
+
+2005-01-17  Michael Olson  <address@hidden>
+
+       * Makefile: Version is 5.01, but only in the Makefile.  It has not
+       been released yet.
+
+       * erc-auto.in, erc-autojoin.el, erc-bbdb.el, erc-button.el,
+       erc-chess.el, erc-complete.el, erc-dcc.el, erc-fill.el,
+       erc-goodies.el, erc-ibuffer.el, erc-identd.el, erc-imenu.el,
+       erc-list.el, erc-match.el, erc-menu.el, erc-nets.el,
+       erc-netsplit.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el,
+       erc-ring.el, erc-speak.el, erc-speedbar.el, erc-stamp.el,
+       erc-track.el, erc-xdcc.el, erc.el, debian/copyright: Update
+       copyright notices.  If anyone has signed papers for Emacs in
+       general, merge them with the FSF's entry.
+
+2005-01-16  Diane Murray  <address@hidden>
+
+       * erc.el (erc): `erc-set-active-buffer' was being called before
+       `erc-process' was set, so that channels weren't being marked
+       active correctly upon join; fixed.
+
+2005-01-15  Johan Bockgård  <address@hidden>
+
+       * erc-backend.el (def-edebug-spec): This macro caused problems (in
+       XEmacs). Use its expansion directly.
+
+2005-01-15  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-add-button): Reverted previous change
+       since `:suppress-face' doesn't seem to be checked for a certain
+       face.
+       (erc-button-add-face): FACE is now appended to the `old' face.
+       This should fix the problem of faces being "covered" by
+       `erc-button-face'.
+
+2005-01-14  Diane Murray  <address@hidden>
+
+       * erc.el, erc-backend.el (erc-cmd-OPS, erc-cmd-COUNTRY,
+       erc-cmd-NICK, erc-process-ctcp-query, ERROR, PONG, 311, 312, 313,
+       314, 317, 319, 320, 321, 322, 330, 352): Use catalog entries
+       instead of hard-coded text messages.
+       (english): Added new catalog entries `country', `country-unknown',
+       `ctcp-empty', `ctcp-request-to', `ctcp-too-many', `nick-too-long',
+       `ops', `ops-none', `ERROR', `PONG', `s311', `s312', `s313',
+       `s314', `s317', `s317-on-since', `s319', `s320', `s321', `s322',
+       `s330', and `s352'.
+       (erc-send-current-line): Use `erc-set-active-buffer' (change was
+       lost in previous bug fix).
+
+2005-01-14  Francis Litterio  <address@hidden>
+
+       * erc-button.el (erc-button-add-button): Fixed a bug where the
+       overlay created by widget-convert-button has a `face' property
+       that hides the `face' property set on the underlying button text.
+
+       * erc-goodies.el: Docstring fix.
+
+       * erc-button.el: Improved docstring for variable erc-button-face.
+
+2005-01-13  Diane Murray  <address@hidden>
+
+       * erc-menu.el (erc-menu-definition): "Topic set by channel
+       operator": Small word change.  "Identify to NickServ...": Check
+       that we're connected to the server.  Added "Save buffer in log"
+       and "Truncate buffer".
+
+2005-01-13  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-display-line-1): Widen before we try to insert
+       anything, this makes sure input isn't broken when the buffer is
+       narrowed by the user.
+       (erc-beg-of-input-line): Simplify, just return the position of
+       `erc-insert-marker' or error if does not exist.
+       (erc-send-current-line): Widen before trying to send anything.
+
+2005-01-13  Diane Murray  <address@hidden>
+
+       * erc.el, erc-backend.el, erc-list.el:
+       (erc-update-mode-line-buffer): Strip controls characters from
+       `channel-topic' since we add our own control character to it.
+       (TOPIC, 332): Use \C-o instead of \C-c to force an end of IRC
+       control characters as it also ends bold, underline, and inverse -
+       \C-c only ends colors.
+       (erc-chanlist-322): Strip control characters from channel and
+       topic.  No need to interpret controls when we're applying overlays
+       to the lines.
+
+       * erc.el, erc-backend.el, erc-button.el, erc-netsplit.el,
+       erc-nicklist.el: Fixed so that each server has an active buffer.
+       (erc-active-buffer): Now a buffer-local variable.
+       (erc-active-buffer, erc-set-active-buffer): New functions.
+       (erc-display-line, erc-echo-notice-in-active-non-server-buffer,
+       erc-process-away, MODE): Call `erc-active-buffer' to get the
+       active buffer for the current server.
+       (erc, erc-process-sentinel-1, erc-grab-region, erc-input-action,
+       erc-send-current-line, erc-invite-only-mode,
+       erc-toggle-channel-mode, erc-channel-names, MODE, erc-nick-popup,
+       erc-nicklist-call-erc-command): Use `erc-set-active-buffer' to set
+       the active buffer for the current server.
+       (erc-cmd-WHOLEFT): Use 'active as BUFFER in `erc-display-message'.
+
+       * erc-track.el (erc-track-modified-channels): Server buffers are
+       now treated the same as channels and queries.  This means that
+       `erc-track-priority-faces-only', `erc-track-exclude', and
+       `erc-track-exclude-types' now work with server buffers.
+
+2005-01-12  Diane Murray  <address@hidden>
+
+       * erc-backend.el (475): Prompt for the channel's key if
+       `erc-prompt-for-channel-key' is non-nil.  Send a new JOIN message
+       with the key if a key is provided.
+
+       * erc.el (erc-command-indicator): Fixed customization choices so
+       that there's no `mismatch' message when nil is the value.
+
+2005-01-11  Michael Olson  <address@hidden>
+
+       * erc-bbdb.el (bbdb): Lowercase the name of the module.  This
+       fixes a bug which caused an error to occur when trying to enable
+       the module using the customization interface.
+
+2005-01-08  Edward O'Connor  <address@hidden>
+
+       * erc-track.el: Support using faces to indicate channel activity
+       in the modeline under XEmacs.
+       (erc-modified-channels-object): New function.
+       (erc-modified-channels-display): Use it.
+       `erc-modified-channels-string' renamed to
+       `erc-modified-channels-object' (because it's no longer a string on
+       XEmacs). The new function `erc-modified-channels-object' is used
+       to generate updated values for the same-named variable.
+
+2005-01-08  Diane Murray  <address@hidden>
+
+       * ChangeLog.2002: Changed instances of my sourceforge username and
+       email address to real name and email.
+
+       * erc.el (erc-modules): Changed customization tag descriptions, so
+       that they all start with a verb; added new modules to choices.
+
+2005-01-08  Mario Lang  <address@hidden>
+
+       * debian/rules: Introduce new variable DOCDIR to simplify stuff a
+       bit.
+
+2005-01-08  Michael Olson  <address@hidden>
+
+       * AUTHORS, ChangeLog.2004: Change bpalmer's email address as
+       requested.
+
+       * CREDITS: Add everyone who is mentioned in the ChangeLogs.
+
+       * debian/copyright (Copyright): Add last few people.  This can now
+       be considered a complete list, as far as CVS entries are
+       concerned.  If people have assigned copyright to the FSF, merge
+       them with the entry for the FSF.
+
+       * debian/README.Debian: Add entry for XEmacs-related change in
+       `erc-track.el'.
+
+       * erc.el (erc-cmd-MODE): New command that changes or displays the
+       mode for a channel or user.  The functionality was present before
+       this change, but there was no documentation for it.
+
+       * erc-auto.in, erc-*.el: Fully investigate copyright headers and
+       change them appropriately.  If a file has been pulled off of
+       erc.el at one time, keep track of copyright from the time of
+       separation, but not before.  If a file has been derived from a
+       work outside of erc, keep copyright statements in place.
+
+       * Makefile (VERSION): Change to 5.0! :^) Congrats on all the great
+       work.  I'll wait until hober commits his XEmacs compatibility
+       patch to erc-track.el, and then release.
+       (distclean): Alias for `realclean' target.
+
+2005-01-07  Michael Olson  <address@hidden>
+
+       * AUTHORS: Add Marcelo Toledo, who has CVS access to this project.
+
+       * ChangeLog.2004: Add my name to my one contribution to erc last
+       year.
+
+       * CREDITS: Add people that were discovered while scouring
+       ChangeLogs.
+
+       * debian/copyright: Add everyone from `AUTHORS' to Upstream
+       Authors.  Anyone who has contributed 15 or more lines of
+       code (according to ChangeLogs) is listed in Copyright section.
+       Accurate years are included.
+
+       * debian/README.Debian: Paste content of NEWS and reformat
+       slightly.
+
+       * debian/rules: Concatenate the ChangeLogs during the Debian
+       install process and then gzip them.
+
+       * Makefile (MISC): Add ChangeLog.yyyy files to list.
+       (ChangeLog): Remove rule since we do not dynamically generate the
+       ChangeLog anymore.
+
+       * MkChangeLog: Removed since we do not use it to generate the
+       ChangeLog anymore.  cvs2cl does a much better job anyway.
+
+       * NEWS: Use 3rd level heading instead of bullets for lists that
+       contain descriptions.
+
+2005-01-07  Diane Murray  <address@hidden>
+
+       * erc-list.el: Require 'sort.
+       (erc-chanlist): Disable undo in the channel list buffer.
+
+       * erc.el, erc-menu.el: The `IRC' menu is now automatically added
+       to the menu-bar.  Add the call to `easy-menu-add' to
+       `erc-mode-hook' when running in XEmacs (without this the menu
+       doesn't appear).
+
+       * NEWS: Added the information from
+       http://emacswiki.org/cgi-bin/wiki/ErcCvsFeatures and the newer
+       changes which weren't yet documented on that page.
+
+2005-01-06  Hoan Ton-That  <address@hidden>
+
+       * erc-log.el (erc-current-logfile): Only downcase the logfile
+       name, not the whole filename.  Also expand relative to
+       `erc-log-channels-directory'.
+       (erc-generate-log-file-name-with-date)
+       (erc-generate-log-file-name-short)
+       (erc-generate-log-file-name-long): Don't expand filename, done in
+       `erc-current-logfile'.
+
+2005-01-06  Lawrence Mitchell  <address@hidden>
+
+       * NEWS: New file, details user visible changes from version to
+       version.
+
+       * HACKING (NEWS entries): Mention NEWS file, and what its purpose
+       is.
+
+2005-01-05  Michael Olson  <address@hidden>
+
+       * FOR-RELEASE: New file containing the list of release-critical
+       tasks.  Feel free to add to it.
+
+       * debian/rules (binary-erc): Add ChangeLog files.
+
+2005-01-04  Michael Olson  <address@hidden>
+
+       * ChangeLog.2001, ChangeLog.2002, ChangeLog.2003, ChangeLog.2004:
+       ChangeLog entries from previous years.
+
+       * ChangeLog: New file containing ChangeLog entries for the current
+       year.  Please update this file manually whenever a change is
+       committed.  This is a new policy.
+
+       * AUTHORS: Add myself to list.  Some entries were space-delimited
+       instead of TAB-delimited, and since the latter seemed to be the
+       default, make the other entries conform.
+
+       * HACKING (ChangeLog Entries): Update section to reflect new
+       policy toward ChangeLog entries, which is that they should be
+       manually updated whenever a change is committed.
+
+2005-01-04  Diane Murray  <address@hidden>
+
+       * erc.el (erc-connection-established, erc-login): Update the
+       mode-line.
+       (erc-update-mode-line-buffer): If `erc-current-nick' returns nil,
+       use an empty string for ?n character in format spec.  Set
+       `mode-line-process' to ":connecting" while the connection is being
+       established.
+
+2005-01-04  Lawrence Mitchell  <address@hidden>
+
+       * AUTHORS: Update list of authors.
+
+2005-01-02  Diane Murray  <address@hidden>
+
+       * erc-goodies.el (erc-control-characters): New customization
+       group.
+       (erc-interpret-controls-p): Small fix, addition to
+       documentation. Updated customization to allow 'remove as a value.
+       Use 'erc-control-characters as `:group'.
+       (erc-interpret-mirc-color): Use 'erc-control-characters as
+       `:group'.
+       (erc-beep-p): Updated documentation.  Use 'erc-control-characters
+       as `:group'.
+       (define-erc-module irccontrols): Add `erc-controls-highlight' to
+       `erc-insert-modify-hook' and `erc-send-modify-hook' since it
+       changes the text's appearance.
+       (erc-controls-remove-regexp, erc-controls-interpret-regexp): New
+       variables.
+       (erc-controls-highlight): Fixed so that highlighting works even if
+       there is no following control character.  Fixed mirc color
+       highlighting; now respecting `erc-interpret-mirc-color'.  Fixed a
+       bug where emacs would get stuck in a loop when \C-g was in a
+       message and `erc-beep-p' was set to nil (default setting).
+
+2004-12-29  Francis Litterio  <address@hidden>
+
+       * erc-goodies.el (erc-interpret-controls-p): Changed docstring to
+       reflect the new meaning if this is set to 'remove.
+       (erc-controls-interpret): Rephrased docstring to be more accurate.
+       (erc-controls-strip): New function that behaves like the
+       recently-removed erc-strip-controls -- it removes all IRC color
+       and highlighting control characters.
+       (erc-controls-highlight): Changed to support the new 'remove value
+       that variable erc-interpret-controls-p might have.
+
+2004-12-28  Francis Litterio  <address@hidden>
+
+       * erc-ibuffer.el, erc-list.el, erc-page.el, erc-speedbar.el:
+       Changed all calls to erc-interpret-controls (which no longer
+       exists) to call erc-controls-interpret (the new name of the same
+       function).
+
+2004-12-28  Francis Litterio  <address@hidden>
+
+       * erc-goodies.el (erc-controls-interpret): Added this function to
+       replace the recently-removed erc-interpret-controls.  Also added
+       a (require 'erc) to solve a byte-compile problem.
+
+2004-12-28  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-controls-interpret): Added this function to replace
+       the recently-removed erc-interpret-controls.
+
+2004-12-27  Jorgen Schaefer  <address@hidden>
+
+       * erc-truncate.el (erc-truncate-buffer-to-size): Check for
+       logging even better (via lawrence).
+
+2004-12-26  Jorgen Schaefer  <address@hidden>
+
+       * erc-truncate.el (erc-truncate-buffer-to-size): Much saner
+       logging detection (via lawrence).
+
+2004-12-25  Jorgen Schaefer  <address@hidden>
+
+       * erc-goodies.el (erc-controls-highlight): Treat single C-c
+       correctly.
+
+2004-12-24  Jorgen Schaefer  <address@hidden>
+
+       * erc-goodies.el, erc.el: Deleted IRC control character processing
+       and implemented a sane version in erc-goodies.el as a module.
+
+       * erc.el (erc-merge-controls, erc-interpret-controls,
+       erc-decode-controls, erc-strip-controls, erc-make-property-list,
+       erc-prepend-properties): Removed.
+
+       (erc-interpret-controls-p, erc-interpret-mirc-color, erc-bold-face
+       erc-inverse-face, erc-underline-face, fg:erc-color-face0,
+       fg:erc-color-face1, fg:erc-color-face2, fg:erc-color-face3,
+       fg:erc-color-face4, fg:erc-color-face5, fg:erc-color-face6,
+       fg:erc-color-face7, fg:erc-color-face8, fg:erc-color-face9,
+       fg:erc-color-face10, fg:erc-color-face11, fg:erc-color-face2,
+       fg:erc-color-face13, fg:erc-color-face14, fg:erc-color-face15,
+       bg:erc-color-face1, bg:erc-color-face2, bg:erc-color-face3,
+       bg:erc-color-face4, bg:erc-color-face5, bg:erc-color-face6,
+       bg:erc-color-face7, bg:erc-color-face8, bg:erc-color-face9,
+       bg:erc-color-face10, bg:erc-color-face11, bg:erc-color-face2,
+       bg:erc-color-face13, bg:erc-color-face14, bg:erc-color-face15,
+       erc-get-bg-color-face, erc-get-fg-color-face,
+       erc-toggle-interpret-controls): Moved.
+
+       * erc-goodies.el (erc-beep-p, irccontrols, erc-controls-highlight,
+       erc-controls-propertize): New.
+
+2004-12-24  Jorgen Schaefer  <address@hidden>
+
+       * erc-goodies.el, erc.el: The Small Extraction of Stuff[tm] commit.
+       Moved some functions from erc.el to erc-goodies.el, and
+       transformed them to erc modules in the process.
+       - imenu autoload stuff moved.  I don't know why it is here at all.
+       - Moved: scroll-to-bottom, make-read-only, distinguish-noncommands,
+       smiley, unmorse, erc-occur (the last isn't a module, but still
+       moved)
+       (erc-input-line-position, erc-add-scroll-to-bottom,
+       erc-scroll-to-bottom, erc-make-read-only, erc-noncommands-list,
+       erc-send-distinguish-noncommands, erc-smiley, erc-unmorse,
+       erc-occur): Moved from erc.el to erc-goodies.el.
+       (smiley): Module moved from erc.el to erc-goodies.el.
+       (scrolltobottom, readonly, noncommands, unmorse): New modules.
+
+2004-12-20  Diane Murray  <address@hidden>
+
+       * erc.el (erc-format-away-status): Use `a', not `away' - that's
+       why it's there.
+       (erc-update-mode-line-buffer): The values of `mode-line-process'
+       and `mode-line-buffer-identification' are normally lists.
+       Conform.
+
+2004-12-18  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-process-ctcp-query, erc-process-ctcp-reply): Display
+       message in the active window, not the server window.
+
+2004-12-16  Edward O'Connor  <address@hidden>
+
+       * erc-track.el (erc-track-position-in-mode-line): Check for
+       'erc-track-mode variable with boundp.  From Adrian Aichner
+       <address@hidden>.
+
+2004-12-16  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-upcase-first-word): New function.  The old way used
+       in erc-send-ctcp-message would eat consecutive whitespace etc.
+       (erc-send-ctcp-message, erc-send-ctcp-notice): Use it.
+
+2004-12-15  Edward O'Connor  <address@hidden>
+
+       * erc.el (erc-send-ctcp-message): Fix braino with my previous
+       patch.  It always helps to C-x C-s before `cvs commit'.
+
+2004-12-15  Edward O'Connor  <address@hidden>
+
+       * erc.el (erc-send-ctcp-message): Only upcase the ctcp command,
+       and not the entire message.  Brian Palmer's change of 2004-12-12 had 
broken /me.
+       Shouting is bad! :)
+
+2004-12-14  Diane Murray  <address@hidden>
+
+       * erc-nets.el (erc-networks-alist): Change undernet to Undernet as
+       is used in `erc-server-alist', so that completion works when using
+       `erc-server-select'.  This should fix Debian bug #282003 (erc:
+       cannot connect to Undernet).
+
+2004-12-14  Diane Murray  <address@hidden>
+
+       * erc-backend.el (def-edebug-spec): Only run this if 'edebug is
+       available.
+
+2004-12-14  Diane Murray  <address@hidden>
+
+       * erc.el: The last change to `erc-mode-line-format' introduced a
+       bug in XEmacs - it can't handle the #(" "...) strings at all.  The
+       following changes fix the bug and simplify the mode-line handling
+       considerably.  (erc-mode-line-format): Now defined as a string
+       which will be formatted using `format-spec' and take the place of
+       `mode-line-buffer-identification' in the mode line.
+       (erc-header-line-format): Now defined as a string to be formatted
+       using `format-spec'.
+       (erc-prepare-mode-line-format): Removed.
+       (erc-format-target, erc-format-target-and/or-server,
+       erc-format-away-status, erc-format-channel-modes): New functions.
+       Basically the old `erc-prepare-mode-line-format' split apart.
+       (erc-update-mode-line-buffer): Set
+       `mode-line-buffer-identification' to the formatted
+       `erc-mode-line-format', set `mode-line-process' to ": CLOSED" if
+       the connection has been terminated, and set `header-line-format'
+       (if it is bound) to the formatted `erc-header-line-format', then
+       do a `force-mode-line-update'.
+
+2004-12-12  Diane Murray  <address@hidden>
+
+       * erc.el (erc-modules): Disable modules removed with `customize'.
+       (erc-update-modules): Try to give a more descriptive error
+       message.
+
+2004-12-12  Diane Murray  <address@hidden>
+
+       * erc-complete.el, erc.el, erc-list.el, erc-nets.el,
+       * erc-nicklist.el, erc-pcomplete.el, erc-replace.el, erc-speak.el,
+       * erc-truncate.el (erc-buffers, erc-coding-systems, erc-display,
+       erc-mode-line-and-header, erc-ignore, erc-query,
+       erc-quit-and-part, erc-paranoia, erc-scripts, erc-old-complete,
+       erc-list, erc-networks, erc-nicklist, erc-pcomplete, erc-replace,
+       erc-truncate): New customization groups.
+       (erc-join-buffer, erc-frame-alist, erc-frame-dedicated-flag,
+       erc-reuse-buffers): Use 'erc-buffers as `:group'.
+       (erc-default-coding-system, erc-encoding-coding-alist):
+       Use 'erc-coding-systems as `:group'.
+       (erc-hide-prompt, erc-show-my-nick, erc-prompt,
+       erc-input-line-position, erc-command-indicator, erc-notice-prefix,
+       erc-notice-highlight-type, erc-interpret-controls-p,
+       erc-interpret-mirc-color, erc-minibuffer-notice,
+       erc-format-nick-function): Use 'erc-display as `:group'.
+       (erc-mode-line-format, erc-header-line-format,
+       erc-header-line-uses-help-echo-p, erc-common-server-suffixes,
+       erc-mode-line-away-status-format): Use 'erc-mode-line-and-header
+       as `:group'.
+       (erc-hide-list, erc-ignore-list, erc-ignore-reply-list,
+       erc-minibuffer-ignored): Use 'erc-ignore as `:group'.
+       (erc-auto-query, erc-query-on-unjoined-chan-privmsg,
+       erc-format-query-as-channel-p): Use 'erc-query as `:group'.
+       (erc-kill-buffer-on-part, erc-kill-queries-on-quit,
+       erc-kill-server-buffer-on-quit, erc-quit-reason-various-alist,
+       erc-part-reason-various-alist, erc-quit-reason, erc-part-reason):
+       Use 'erc-quit-and-part as `:group'.
+       (erc-verbose-server-ping, erc-paranoid, erc-disable-ctcp-replies,
+       erc-anonymous-login, erc-show-channel-key-p): Use 'erc-paranoia as
+       `:group'.
+       (erc-startup-file-list, erc-script-path, erc-script-echo): Use
+       'erc-scripts as `:group'.
+       (erc-nick-completion, erc-nick-completion-ignore-case,
+       erc-nick-completion-postfix): Use 'erc-old-complete as `:group'.
+       (erc-chanlist-progress-message, erc-no-list-networks,
+       erc-chanlist-frame-parameters, erc-chanlist-hide-modeline,
+       erc-chanlist-mode-hook): Use 'erc-list as `:group'.
+       (erc-server-alist, erc-networks-alist): Use 'erc-networks as
+       `:group'.
+       (erc-settings): Use `defvar' instead of `defcustom' since this is
+       only a draft which doesn't work.
+       (erc-nicklist-window-size): Use 'erc-nicklist as `:group'.
+       (erc-pcomplete-nick-postfix,
+       erc-pcomplete-order-nickname-completions): Use 'erc-pcomplete as
+       `:group'.
+       (erc-replace-alist): Use 'erc-replace as `:group'.
+       (erc-speak-filter-timestamp): Use 'erc-speak as `:group'.
+       (erc-max-buffer-size): Use 'erc-truncate as `:group'.
+
+2004-12-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-scroll-to-bottom): Go to the end of the buffer
+       before recentering.  This allows editing multiple lines more
+       conveniently in CVS Emacs.  This also undos a change by antifuchs
+       who said this goto-char would mess up redisplay.  Extensive testing
+       couldn't reproduce that problem.
+
+2004-12-12  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-send-ctcp-message): upcase the ctcp message (so that
+       version becomes VERSION, for example).
+       (erc-iswitchb): Make the argument optional in non-interactive
+       invocation, so erc-iswitchb can be substituted directly for
+       iswitchb in code.
+
+2004-12-11  Diane Murray  <address@hidden>
+
+       * erc-track.el (erc-track-position-in-mode-line): Allow for the
+       fact that `erc-track-mode' isn't bound when file is loaded.
+
+2004-12-11  Diane Murray  <address@hidden>
+
+       * erc-track.el (erc-track-position-in-mode-line): New customizable
+       variable.  (erc-track-remove-from-mode-line): New function.
+       Remove `erc-modified-channels-string' from the mode-line.
+       (erc-track-add-to-mode-line): New function.  Add
+       `erc-modified-channels-string' to the mode-line using the value of
+       `erc-track-position-in-mode-line' to determine whether to add it
+       to the beginning or the end of `mode-line-modes' (only available
+       with GNU Emacs versions above 21.3) or to the end of
+       `global-mode-string'.
+       (erc-track-mode, erc-track-when-inactive-mode): Use the new
+       functions.
+
+2004-12-11  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST): Use (buffer-name) and not
+       (erc-default-target) for the buffer name - buffer names are case
+       sensitive.
+
+2004-12-11  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-message-type): Added the message "MODE" to the known
+       erc-message-type widget, so that (for example) people can tell
+       erc-track-exclude-types to ignore mode changes.  The others tag
+       also needed to be made an inline list, so that it's merged with
+       the given constants, instead of being inserted as a list.
+
+2004-12-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el, erc.el: Update to get ERC look nicely in CVS Emacs.
+
+       * erc.el (erc-mode-line-format): When on CVS emacs, use the new
+       format.
+
+       * erc-track.el (track module): When on CVS emacs, modify
+       mode-line-modes instead of global-mode-string.  The latter is way
+       to far too the right.
+
+2004-11-18  Mario Lang  <address@hidden>
+
+       * Makefile, debian/changelog: debian release 20041118-1
+
+2004-11-03  Diane Murray  <address@hidden>
+
+       * erc-button.el (erc-button-buttonize-nicks): Set default value to
+       `t'.  Updated documentation and customization `:type' to reflect
+       usage.
+
+2004-10-29  Johan Bockgård  <address@hidden>
+
+       * AUTHORS: Added self.
+
+2004-10-17  Diane Murray  <address@hidden>
+
+       * erc-list.el: Added local variables for this file.
+       (erc-list-version): New.
+       (erc-cmd-LIST): Take &rest rather than &optional arguments, as was
+       done in revision 1.21.  Allow for input when called interactively.
+       (erc-prettify-channel-list, erc-chanlist-toggle-sort-state): Use
+       `unless' instead of when not.
+
+2004-10-17  Diane Murray  <address@hidden>
+
+       * erc-backend.el (erc-handle-unknown-server-response): Fixed so
+       that the contents are only shown once.
+       (MOTD): Display lines in the server buffer if it's the first MOTD
+       sent upon connection.  This is to avoid the problem of having the
+       MOTD of one server showing up in another server's buffer if it took
+       a while to get connected.
+       (004): Fixed to show the user modes and channel modes correctly.
+       (303): Now displays the nicknames returned by ISON instead of the
+       user's nickname.
+       (367, 368): Moved up into 300's section of the code.  Added
+       documentation.  Use `multiple-value-bind' to set variables in 367.
+       (391): Fixed so that the server name is shown correctly.
+
+2004-10-17  Diane Murray  <address@hidden>
+
+       * erc.el (erc-process-sentinel): Use CPROC instead of
+       `erc-process' in debug message.  Should fix a bug where an error
+       saying "Buffer *scratch* has no process" would occur when
+       disconnected.
+       (erc-cmd-SV): Check for X toolkit after checking for more specific
+       features.  (erc--kill-server): Set `quitting' to non-nil so that
+       we don't automatically reconnect.
+
+2004-10-05  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-ignored-user-p): Don't require regexes to match the
+       beginning.
+
+2004-09-11  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: group erc: Moved to 'applications (patch by bojohan)
+
+2004-09-08  Jorgen Schaefer  <address@hidden>
+
+       * erc-button.el (erc-button-remove-old-buttons): Remove 'keymap
+       not 'local-map.
+
+2004-09-03  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el: JOIN response handler: Typo fix of the last
+       commit.
+
+2004-09-03  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el: JOIN response handler: Run `erc-join-hook'
+       without arguments as specified in the docstring.
+
+2004-08-27  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-send-current-line): Removed unused variable SENTP.
+
+2004-08-19  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: ERC-SEND-COMPLETED-HOOK used to be run when the prompt
+       was already displayed.  We restore this behavior (thanks to bojohan
+       and TerryP for noticing).  We also fix the docstring of
+       ERC-SEND-COMPLETED-HOOK, since the hook is (and used to be) called
+       even if nothing was sent to the server.
+       (erc-send-completed-hook): Fixed docstring.
+       (erc-send-current-line): Add incantation for
+       erc-send-completed-hook.
+       (erc-send-input): Remove incantation for erc-send-completed-hook.
+
+2004-08-18  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el: response-handler 368: Use s368, not s367.
+
+2004-08-17  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-scroll-to-bottom): Don't scroll when we're not
+       connected anymore.
+
+2004-08-17  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el, erc.el: Handle /mode #emacs b output without
+       errors and such.  First, handle unknown format specs gracefully
+       (that is, give a useful error).  Then, provide handlers for the
+       banlist replies.
+
+       * erc-backend.el: New handler for 367 and 368.  Removed from default
+       handler.
+
+       * erc.el: Provide english catalog for s367 and s368.
+       (erc-format-message): Give an error message when we don't find an
+       entry.
+
+2004-08-17  Jorgen Schaefer  <address@hidden>
+
+       * erc-fill.el: erc-fill-variable could be confused about really
+       long nicks.  We put an upper limit on the length of the fill prefix.
+       (erc-fill-variable): Adjust fill-prefix.
+       erc-fill-variable-maximum-indentation: New variable.
+
+2004-08-17  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-send-input): Fixed a bug where this function
+       referenced variable "input" instead of variable "str".
+
+2004-08-16  Francis Litterio  <address@hidden>
+
+       * erc-list.el (erc-chanlist-highlight-line): Fixed a bug where
+       this function failed to set the correct face for highlighting the
+       current line.
+
+2004-08-14  Jorgen Schaefer  <address@hidden>
+
+       * erc-fill.el (erc-fill-variable): Don't fuck up when the
+       looking-at didn't work.
+
+2004-08-14  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-send-single-line): Call the hooks to change the
+       appearance for something only if we actually inserted something,
+       doh.
+       (erc-display-command): Display the prompt outside of the area that
+       set the text properties on.
+
+2004-08-14  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: Refactored erc-send-current-line.  This should fix some
+       dormant bugs, and make the whole thing actually readable.  Yay.
+       Some changes in behavior were made.  Whitespace at the end of lines
+       sent is not removed anymore, but that shouldn't bother anyone.
+       Additionally, errors in commands or hooks shouldn't prevent the
+       prompt from showing up again now.
+       (erc-parse-current-line): Removed.
+       (erc-send-current-line): Refactored.
+       (erc-send-input): New function.
+       (erc-send-single-line): New function.
+       (erc-display-command): New function.
+       (erc-display-msg): New function.
+       (erc-user-input): New function.
+
+2004-08-13  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-cmd-SERVER): Use newer keyword call interface to
+       erc-select, and handle the error if it can't resolve the host.
+
+2004-08-11  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el, erc.el: erc-backend.el (404 response handler):
+       New function.  We now support "cannot send to channel".
+
+       * erc.el (erc-define-catalog call): Added s404.
+       (erc-ctcp-ECHO-reply, erc-ctcp-CLIENTINFO-reply,
+       erc-ctcp-FINGER-reply, erc-ctcp-PING-reply, erc-ctcp-TIME-reply,
+       erc-ctcp-VERSION-reply): Display reply in the active window, not
+       the server window.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-with-all-buffers-of-server): Actually make it left
+       to right, doh.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-with-all-buffers-of-server): Evaluate left-to-right
+       so we don't surprise a user.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-process-input-line): Parentophobia! Another
+       paren-fix.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el: PRIVMSG NOTICE response handler: Killed one paren
+       too much.  Poor paren.  Got resurrected.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el: Make server buffers showing up in the mode line
+       optional.  Thanks to Daniel Knapp on the EmacsWiki for this patch.
+
+       erc-track-exclude-server-buffer: New variable.
+       (erc-track-modified-channels): Return a server buffer only if
+       erc-track-exclude-server-buffer is nil.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-cmd-DESCRIBE): Don't parse arguments.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-truncate.el (erc-truncate-buffer-to-size): Use
+       erc-insert-marker, not (point-max), to decide the length of the
+       buffer.  A long input line shouldn't make the buffer smaller.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-macs.el, erc-members.el: The change to hashes for channel
+       members has been made some time ago.  Clean up the various tries to
+       do this in the past.
+
+       * erc-macs.el, erc-members.el: Removed.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-backend.el, erc-ibuffer.el, erc-members.el, erc.el: Nothing
+       big changed here.  Really.  Uhm, maybe the info-buffers are gone or
+       so.  Can't really remember.  Don't worry, nothing important is
+       missing.
+
+       erc-speedbar.el looks nice btw, did you know?
+
+       Adjusted various places in erc.el, erc-backend.el, erc-ibuffer.el
+       and erc-members.el - too numerous to list here, sorry.
+
+       * erc.el: erc-use-info-buffers: Removed.  erc-info-mode-map:
+       Removed.
+       (erc-info-mode): Removed.
+       (erc-find-channel-info-buffer): Removed.
+       (erc-update-channel-info-buffer): Removed.
+       (erc-update-channel-info-buffers): Removed.
+
+       * erc-members.el: erc-update-member renamed to
+       erc-update-channel-member for better clarity.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: This change improves the help output on a bogus command
+       invocation.  We display the command as it would be typed by the
+       user, not as it is seen by Emacs.
+
+       (erc-get-arglist): Is now called erc-function-arglist, and returns
+       now an arglist without the enclosing parens.
+       (erc-command-name): New function.
+       (erc-process-input-line): Pass the command name, not the function
+       name.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-process-input-line): Fix bug when the command
+       doesn't have an arglist or no documentation.  Thanks bojohan again
+       :)
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el (erc-add-entry-to-list),
+       (erc-remove-entry-from-list): Update docstring, a TEST argument is
+       not given.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-with-buffer): Really fix this docstring.
+
+2004-08-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-with-buffer): Fix double evaluation in macro, and
+       fix docstring.
+
+2004-08-10  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-cmd-JOIN): Use erc-member-ignore-case instead of
+       member-ignore-case.
+
+2004-08-09  Johan Bockgård  <address@hidden>
+
+       * erc-backend.el: Define an "Edebug specification" for the
+       `define-erc-response-handler' macro.  This means that one can step
+       through response handlers defined by this macro with edebug.  Maybe
+       more macros would benefit from this?
+
+2004-08-09  Johan Bockgård  <address@hidden>
+
+       * erc-pcomplete.el (pcomplete/erc-mode/CTCP): New function.
+       Completion for the /CTCP command.  (erc-pcomplete-ctcp-commands):
+       New variable.  List of ctcp commands.
+
+2004-08-09  Johan Bockgård  <address@hidden>
+
+       * erc-list.el: Clean up docstrings.
+       (erc-prettify-channel-list): Extend properties to cover the entire
+       line, including the newline, to make it look
+       better.
+       (erc-chanlist-highlight-line): Ditto.
+       (erc-chanlist-mode-hook): Make it a defcustom.
+
+2004-08-09  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-compute-full-name): Typo fix, should be full-name,
+       not name.
+
+2004-08-09  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc): Setup the buffer to be shown in a window at the
+       end of this function.  This enables 'window-noselect to work
+       properly.
+       (erc, erc-send-current-line): Fix some
+       goto-char/open-line/goto-char to goto-char/insert.
+
+2004-08-08  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-parse-user): Live with bogus info from bouncers.
+
+2004-07-31  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-select): Change the docstring to reflect the new
+       arguments; include the arguments in the docstring for non-cvs
+       emacs.  Change the parameters to call erc-compute-* instead of
+       using the erc-* variables directly.
+       (erc-compute-server): Made argument optional.
+       (erc-compute-nick): ditto.
+       (erc-compute-full-name): ditto.  (erc-compute-port): ditto.
+
+2004-07-30  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST): Fixed a bug where channel-banlist was
+       not reset to nil before fetching an updated banlist from the
+       server.
+
+2004-07-30  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST): Fixed a bug where the
+       'received-from-server property on variable channel-banlist was not
+       being reset to nil.  This fixes the symptom where one types
+       /BANLIST and sees "No bans for channel: #whatever" when you know
+       there are bans.
+
+2004-07-23  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-select-read-args): Use erc-compute-nick to
+       calculate the default nickname
+
+2004-07-20  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-process-sentinel-1): New function.  This is an
+       auxiliary function refactored out of erc-process-sentinel to
+       decide a server buffer's fate (whether it should be killed, and
+       whether erc should attempt to auto-reconnect).  Michael Olson
+       <address@hidden> helped with this.
+       (erc-kill-server-buffer-on-quit): New variable.  Used in
+       erc-process-sentinel-1 to decide whether to kill a server buffer
+       when the user quit normally.
+       (erc-process-sentinel): Auxiliary function erc-process-sentinel-1
+       split out.  The function body has `with-current-buffer' wrapped
+       around it, to ensure separation of messages if multiple
+       connections were being made.  Use `if' instead of `cond' in places
+       where the decision is binary.  The last (useless, since the server
+       connection is closed) prompt in the server buffer is removed.
+       Color "erc terminated" and "erc finished" messages with
+       erc-error-face.  Mark the buffer unmodified so that, if not killed
+       automatically, the user is not prompted to save it.
+
+2004-07-16  Brian Palmer  <address@hidden>
+
+       * erc.el (erc-select-read-args): New function.  Prompts the user
+       for arguments to pass to erc-select and erc-select-ssl.
+       (erc-select): Use (erc-select-read-args) when called interactively
+       to get its arguments.  When non-interactively, use keyword
+       arguments.
+       (erc-select-ssl): Ditto.
+       (erc-compute-port): New function.  Parallel to erc-compute-server,
+       but comes up with a default value for an IRC server's port.
+
+2004-07-16  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el (erc-match-message): Quote the current nickname.
+
+2004-07-12  Brian Palmer  <address@hidden>
+
+       * erc-list.el (erc-chanlist-mode): Remove explicit invocation of
+       erc-chanlist-mode-hook, since it's automatically invoked by
+       define-derived-mode
+
+2004-07-03  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el (erc-match-current-nick-p): Quote current nick for
+       regexp parsing.
+
+2004-06-27  Johan Bockgård  <address@hidden>
+
+       * erc-nickserv.el (erc-nickserv-identify-mode): Fix erroneous
+       parentheses in call to `completing-read'.
+
+2004-06-23  Alex Schroeder  <address@hidden>
+
+       * Makefile (release): Depend on autoloads, and copy erc-auto.el
+       into the tarball.
+
+2004-06-14  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-log-irc-protocol): Fixed minor bug where each line
+       received from a server was logged as two lines (one with text and
+       one blank).
+
+2004-06-08  Brian Palmer  <address@hidden>
+
+       * erc-list.el (erc-chanlist-frame-parameters): Made customizable.
+       (erc-chanlist-header-face): Changed to use defface with some
+       reasonable defaults instead of make-face, and removed the
+       associated -face variable.
+       (erc-chanlist-odd-line-face): Ditto.
+       (erc-chanlist-even-line-face): Ditto.
+       (erc-chanlist-highlight-face): New variable.  Holds a face used for
+       highlighting the current line.
+       (erc-cmd-LIST): Use erc-member-ignore-case instead of
+       member-ignore-case.
+       (erc-chanlist-post-command-hook): Change to move the highlight
+       overlay instead of refontifying the entire buffer.
+       (erc-chanlist-dehighlight-line): Added to detach the highlight
+       overlay from the buffer.
+
+2004-05-31  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: erc-mode-line-format: Add column numbers.
+
+2004-05-31  Adrian Aichner  <address@hidden>
+
+       * erc-autojoin.el: Typo fix.
+
+       * erc-dcc.el (erc-dcc-do-GET-command): Use expand-file-name.
+       (erc-dcc-get-file): XEmacs set-buffer-multibyte compatibility.
+
+       * erc-log.el: Append `erc-log-setup-logging' to
+       `erc-connect-pre-hook' so that `erc-initialize-log-marker' is run
+       first (markers are needed by `erc-log-setup-logging').
+       (erc-enable-logging): Docstring fix.
+       (erc-log-setup-logging): Move `erc-log-insert-log-on-open' to (1-
+       (point-max)) when doing `erc-log-insert-log-on-open'.  Modified
+       version of a patch by Lawrence Mitchell.
+       (erc-log-all-but-server-buffers): Do `save-excursion' as well.
+       (erc-current-logfile): Pass buffer name as target
+       argument to `erc-generate-log-file-name-function' if
+       `erc-default-target' is nil.
+       (erc-generate-log-file-name-with-date): Use expand-file-name.
+       (erc-generate-log-file-name-short): Ditto.
+       (erc-save-buffer-in-logs): Do `save-excursion' and test whether
+       erc-last-saved-position is a marker.
+
+       * erc-members.el: Avoid miscompiling macro `erc-log' and
+       `with-erc-channel-buffer' by requiring 'erc at compile time.
+
+       * erc-sound.el: Use expand-file-name.
+
+       * erc.el (erc-debug-log-file): Ditto.
+       (erc-find-file): Ditto.
+
+2004-05-26  Francis Litterio  <address@hidden>
+
+       * erc.el, erc-backend.el (erc-cmd-BANLIST): Added a missing "'"
+       that was preventing /BANLIST from working.  In erc-backend.el,
+       added server response handler for 367 and 368 responses to get
+       /BANLIST working.
+
+2004-05-26  Francis Litterio  <address@hidden>
+
+       * erc.el: Removed an eval-when-compile that was preventing the
+       byte-compiled version of this file from loading.
+
+2004-05-26  Francis Litterio  <address@hidden>
+
+       * erc.el: Undid part of my last change.  I suspect it was wrong.
+
+2004-05-26  Francis Litterio  <address@hidden>
+
+       * erc.el: Silenced several byte-compiler warnings.
+
+2004-05-26  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-log-irc-protocol): Fixed problem where this function
+       misformatted IRC protocol text if multiple lines were received from
+       the server at one time.
+
+2004-05-25  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-toggle-debug-irc-protocol): Cosmetic changes to the
+       informational text in the *erc-protocol* buffer.
+
+2004-05-24  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-log-irc-protocol, erc-process-filter): Now the lines
+       inserted in the *erc-protocol* buffer are prefixed with the name
+       of the network to/from which the data is going/coming.  This makes
+       reading the *erc-protocol* buffer much easier when connected to
+       multiple networks.
+
+2004-05-23  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * erc-backend.el: Fixes server message parsing so that command
+       arguments specified after the colon are not treated specially.  All
+       arguments are added to the `command-args' field, and the
+       `contents' points to the last element in the `command-args' list.
+       This allows ERC to connect to networks such as Undernet.  Although
+       keeping `contents' allows many of the response handlers to
+       continue to work as-is, many other are probably broken by this
+       patch.
+
+2004-05-20  Lawrence Mitchell  <address@hidden>
+
+       * HACKING: Add comment that C-c C-a can be useful if you write
+       ChangeLog entries using Emacs' standard functions.
+
+2004-05-17  Diane Murray  <address@hidden>
+
+       * erc-speedbar.el: Ignore errors when attempting to require dframe
+       (there are a couple implementations of speedbar, one of which uses
+       of dframe).
+       (erc-speedbar-version): New.
+       (erc-speedbar-goto-buffer): Use dframe functions if dframe is
+       available.
+
+2004-05-17  Diane Murray  <address@hidden>
+
+       * erc-autojoin.el: Added local variables for this file.
+       (erc-autojoin-add): The channel name is in `erc-response.contents'.
+
+2004-05-17  Mario Lang  <address@hidden>
+
+       * erc-log.el: Don't autoload a define-key statement, erc-mode-map
+       might not be known yet
+
+2004-05-16  Lawrence Mitchell  <address@hidden>
+
+       * erc-backend.el (erc-parse-server-response): Revert to original
+       `erc-parse-line-from-server' version, since new version breaks for
+       a number of edge cases.
+
+2004-05-14  Diane Murray  <address@hidden>
+
+       * erc-backend.el (erc-handle-unknown-server-response): New
+       function.  Added to `erc-default-server-functions'.  Display
+       unknown responses to the user.
+       (221): Don't show nickname in modes list.
+       (254): Fixed to use 's254.
+       (303): Added docstring.
+       (315, 318, 323, 369): Ignored responses grouped together.
+       (391): New.
+       (406, 432): Use ?n, not ?c in `erc-display-message'.
+       (431, 445, 446, 451, 462, 463, 464, 465, 481, 483, 485, 491, 501,
+       502): All error responses with no arguments grouped together.
+
+2004-05-14  Diane Murray  <address@hidden>
+
+       * erc.el (erc-message-type-member): Use `erc-response.command'.
+       `erc-track-exclude-types' should be respected again.
+       (erc-cmd-TIME): Fixed to work with and without server given as
+       argument.
+       (erc-define-catalog): Added, s391, s431, s445, s446, s451, s462,
+       s463, s464, s465, s483, s484, s485, s491, s501, s502.
+
+2004-05-14  Lawrence Mitchell  <address@hidden>
+
+       * HACKING: Typo fix.
+
+2004-05-14  Lawrence Mitchell  <address@hidden>
+
+       * Makefile (erc-auto.el): Pass -f flag to rm so that we don't fail
+       if erc-auto.elc doesn't exist.
+
+2004-05-14  Lawrence Mitchell  <address@hidden>
+
+       * erc-backend.el (erc-with-buffer): Autoload.
+       (erc-parse-server-response): XEmacs' `replace-match' only replaces
+       subexpressions when operating on buffers, not strings, work around
+       it.
+       (461): Command with invalid arguments is `second', not `third'.
+
+2004-05-14  Diane Murray  <address@hidden>
+
+       * erc-notify.el (erc-notify-NICK): Use `erc-response.contents' to
+       get nickname.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-track.el: Indentation fixes.
+       (track-when-inactive): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-notify.el (notify): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+       (erc-notify-timer, erc-notify-JOIN, erc-notify-NICK)
+       (erc-notify-QUIT): Use new accessors for PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-nickserv.el (services, erc-nickserv-identify-mode): Use
+       `erc-server-FOO-functions', not `erc-server-FOO-hook.
+       (erc-nickserv-identify-autodetect): Use new accessors for PARSED
+       argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-netsplit.el (netsplit): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+       (erc-netsplit-JOIN, erc-netsplit-MODE, erc-netsplit-QUIT): Use new
+       accessors for PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-nets.el: Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-menu.el (erc-menu-definition): Only allow listing of
+       channels if `erc-cmd-LIST' is fboundp.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-match.el: Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+       (erc-get-parsed-vector-nick, erc-get-parsed-vector-type): Use new
+       accessors for PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-list.el (erc-chanlist, erc-chanlist-322): Use new accessors
+       for PARSED argument.  Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-ezbounce.el (erc-ezb-notice-autodetect): Use new accessors
+       for PARSED argument.
+       (erc-ezb-initialize): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-dcc.el: Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+       (erc-dcc-no-such-nick): Use new accessors for PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-bbdb.el (erc-bbdb-whois, erc-bbdb-JOIN, erc-bbdb-NICK): Use
+       new accessors for PARSED argument.
+       (BBDB): Use `erc-server-FOO-functions', not `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-autojoin.el (autojoin): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+       (erc-autojoin-add, erc-autojoin-remove): Use new accessors for
+       PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-autoaway.el (autoaway): Use `erc-server-FOO-functions', not
+       `erc-server-FOO-hook.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-backend): Require.
+       (erc-disconnected-hook, erc-join-hook, erc-quit-hook)
+       (erc-part-hook, erc-kick-hook): Docstring fix, we now use
+       `erc-server-FOO-functions', rather than `erc-server-FOO-hook'.
+       (erc-event-to-hook-name, erc-event-to-hook): Remove.
+       (erc-once-with-server-event)
+       (erc-once-with-server-event-global): Use `erc-get-hook'
+       (erc-process-filter): Use `erc-parse-server-response'.
+       (erc-cmd-IDLE, erc-cmd-BANLIST, erc-cmd-MASSUNBAN): New accessors
+       for PARSED argument.  Rename all `erc-server-FOO-hook' to
+       `erc-server-FOO-functions'.
+       (erc-server-364-hook, erc-server-365-hook, erc-server-367-hook)
+       (erc-server-368-hook, erc-server-KILL-hook)
+       (erc-server-PONG-hook, erc-server-200-hook, erc-server-201-hook)
+       (erc-server-202-hook, erc-server-203-hook, erc-server-204-hook)
+       (erc-server-205-hook, erc-server-206-hook, erc-server-208-hook)
+       (erc-server-209-hook, erc-server-211-hook, erc-server-212-hook)
+       (erc-server-213-hook, erc-server-214-hook, erc-server-215-hook)
+       (erc-server-216-hook, erc-server-217-hook, erc-server-218-hook)
+       (erc-server-219-hook, erc-server-241-hook, erc-server-242-hook)
+       (erc-server-243-hook, erc-server-244-hook, erc-server-249-hook)
+       (erc-server-261-hook, erc-server-262-hook, erc-server-302-hook)
+       (erc-server-323-hook, erc-server-342-hook, erc-server-351-hook)
+       (erc-server-381-hook, erc-server-382-hook, erc-server-391-hook)
+       (erc-server-392-hook, erc-server-393-hook, erc-server-394-hook)
+       (erc-server-395-hook, erc-server-402-hook, erc-server-404-hook)
+       (erc-server-407-hook, erc-server-409-hook, erc-server-411-hook)
+       (erc-server-413-hook, erc-server-414-hook, erc-server-415-hook)
+       (erc-server-422-hook, erc-server-423-hook, erc-server-424-hook)
+       (erc-server-431-hook, erc-server-436-hook, erc-server-437-hook)
+       (erc-server-441-hook, erc-server-443-hook, erc-server-444-hook)
+       (erc-server-445-hook, erc-server-446-hook, erc-server-451-hook)
+       (erc-server-462-hook, erc-server-463-hook, erc-server-464-hook)
+       (erc-server-465-hook, erc-server-467-hook, erc-server-471-hook)
+       (erc-server-472-hook, erc-server-473-hook, erc-server-483-hook)
+       (erc-server-491-hook, erc-server-502-hook): Remove.
+       (erc-call-hooks, erc-parse-line-from-server): Remove
+       (erc-server-hook-list): Remove.  Remove top-level call too.
+       (erc-server-ERROR, erc-server-INVITE, erc-server-JOIN)
+       (erc-server-KICK, erc-server-MODE, erc-server-NICK)
+       (erc-server-PART, erc-server-PING, erc-server-PONG)
+       (erc-server-PRIVMSG-or-NOTICE, erc-server-QUIT)
+       (erc-server-TOPIC, erc-server-WALLOPS, erc-server-001)
+       (erc-server-004, erc-server-005, erc-server-221, erc-server-252)
+       (erc-server-253, erc-server-254, erc-server-301, erc-server-303)
+       (erc-server-305, erc-server-306, erc-server-311-or-314)
+       (erc-server-312, erc-server-313, erc-server-317, erc-server-319)
+       (erc-server-320, erc-server-321, erc-server-322, erc-server-324)
+       (erc-server-329, erc-server-330, erc-server-331, erc-server-332)
+       (erc-server-333, erc-server-341, erc-server-352, erc-server-353)
+       (erc-server-366, erc-server-MOTD, erc-server-379)
+       (erc-server-401, erc-server-403, erc-server-405, erc-server-406)
+       (erc-server-412, erc-server-421, erc-server-432, erc-server-433)
+       (erc-server-437, erc-server-442, erc-server-461, erc-server-474)
+       (erc-server-475, erc-server-477, erc-server-481, erc-server-482)
+       (erc-server-501): Move to erc-backend.el
+       (erc-auto-query, erc-banlist-store, erc-banlist-finished)
+       (erc-banlist-update, erc-connection-established)
+       (erc-process-ctcp-query, erc-display-server-message): Use new
+       accessors for PARSED argument.
+
+2004-05-13  Lawrence Mitchell  <address@hidden>
+
+       * erc-backend.el (erc-parse-server-response)
+       (erc-handle-parsed-server-response, erc-get-hook)
+       (define-erc-response-handler): New functions.
+       (erc-response): New struct for server responses.
+       (erc-server-responses): New variable.
+       (erc-call-hooks): Move from erc.el and rework.
+       (ERROR, INVITE, JOIN, KICK, MODE, NICK, PART, PING, PONG)
+       (PRIVMSG, NOTICE, QUIT, TOPIC, WALLOPS, 001, MOTD, 376, 004)
+       (252, 253, 254, 250, 301, 303, 305, 306, 311, 312, 313, 315)
+       (317, 318, 319, 320, 321, 322, 324, 329, 330, 331, 332, 333)
+       (341, 352, 353, 366, 369, 379, 401, 403, 405, 406, 412, 421)
+       (432, 433, 437, 442, 461, 474, 477, 481, 482, 501, 323, 221)
+       (002, 003, 371, 372, 374, 375, 422, 251, 255, 256, 257, 258)
+       (259, 265, 266, 377, 378, 314, 475, 364, 365, 367, 368, 381)
+       (382, 391, 392, 393, 394, 395, 200, 201, 202, 203, 204, 205)
+       (206, 208, 209, 211, 212, 213, 214, 215, 216, 217, 218, 219)
+       (241, 242, 243, 244, 249, 261, 262, 302, 342, 351, 402, 404)
+       (407, 409, 411, 413, 414, 415, 423, 424, 431, 436, 441, 443)
+       (444, 445, 446, 451, 462, 463, 464, 465, 467, 471, 472, 473)
+       (483, 491, 502, 005, KILL): Move from erc.el and rework using
+       `define-erc-response-handler' and erc-response struct.
+
+2004-05-12  Diane Murray  <address@hidden>
+
+       * erc.el: A few bug fixes to avoid errors after disconnect,
+       including the "Selecting deleted buffer" bug.
+       (erc-channel-user-op-p, erc-channel-user-voice-p): Make sure NICK
+       is non-nil (`erc-current-nick' can return nil).
+       (erc-server-buffer): Make sure the buffer isn't a #<killed
+       buffer>.
+       (erc-server-buffer-live-p): New function.
+       (erc-display-line, erc-join-channel, erc-prepare-mode-line-format,
+       erc-away-p): Use `erc-server-buffer-live-p' to make sure process
+       buffer exists.
+       (erc-send-current-line): If there is no server buffer, let the
+       user know.
+
+2004-05-12  Diane Murray  <address@hidden>
+
+       * erc.el, erc-log.el: C-c C-l keybinding now defined in
+       erc-log.el.
+       (erc-log-version): New.
+       (erc-cmd-JOIN): Fix applied for bug where /join -invite causes
+       errors when there's no `invitation'.
+
+2004-05-11  Diane Murray  <address@hidden>
+
+       * erc.el (erc-cmd-JOIN): Make sure `chnl' is non-nil before trying
+       to join anything (chnl is not set if /join -invite is used but
+       there's no `invitation').
+
+2004-05-10  Diane Murray  <address@hidden>
+
+       * erc-log.el: Define C-c C-l keybinding outside of `erc-log-mode',
+       making it available all the time; autoload definition.
+       (erc-log-version): New.
+
+2004-05-09  Diane Murray  <address@hidden>
+
+       * AUTHORS, CREDITS, Makefile, erc-autoaway.el, erc-autojoin.el,
+       erc-button.el, erc-chess.el, erc-dcc.el, erc-ezbounce.el,
+       erc-fill.el, erc-ibuffer.el, erc-imenu.el, erc-lang.el,
+       erc-list.el, erc-log.el, erc-macs.el, erc-match.el, erc-members.el,
+       erc-menu.el, erc-nets.el, erc-netsplit.el, erc-nickserv.el,
+       erc-notify.el, erc-page.el, erc-ring.el, erc-speak.el,
+       erc-speedbar.el, erc-stamp.el, erc-track.el, erc-truncate.el,
+       erc-xdcc.el, erc.el: Applied all relevant bug fixes and code
+       cleanup made between the time of the ERC_4_0_RELEASE tag until now.
+
+2004-05-09  Diane Murray  <address@hidden>
+
+       * erc-menu.el: Updated copyright years.
+
+2004-05-09  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-channel-info-buffer): Correct bug in sorting
+       of channel users.  Tiny change from Andreas Schwab
+       <address@hidden>.
+
+2004-05-09  Lawrence Mitchell  <address@hidden>
+
+       * erc-fill.el (erc-fill-variable): Fix docstring.
+
+2004-05-09  Lawrence Mitchell  <address@hidden>
+
+       * erc-button.el (erc-button-add-button): Use 'keymap
+       text-property, rather than 'local-map, since it's cross-emacs
+       compatible.  Pass :mouse-down-action into `widget-convert-button'
+       as 'erc-button-click-button, to make XEmacs happy.  Replace bogus
+       reference to erc-widget-press-button with erc-button-press-button.
+       (erc-button-click-button): New (ignored) first argument, to make
+       XEmacs behave when pressing buttons.
+       (erc-button-press-button): New (ignored) &rest argument.
+
+2004-05-09  Adrian Aichner  <address@hidden>
+
+       * erc-log.el (erc-conditional-save-buffer): Fix docstring
+       reference to erc-save-queries-on-quit.
+       (erc-conditional-save-queries): Ditto.
+
+2004-05-06  Diane Murray  <address@hidden>
+
+       * erc-speedbar.el: Updated copyright years.  Added local variables
+       for this file; fixed indenting.
+       (erc-speedbar): New group.
+       (erc-speedbar-sort-users-type): New variable.
+       (erc-speedbar-buttons): Handle query buffers (fixes a bug where an
+       error would be thrown if the current buffer was a query).  Ignore
+       unknown buffers.
+       (erc-speedbar-expand-channel): Show limit and key with channel
+       modes.  Sort users according to `erc-speedbar-sort-users-type'.
+       (erc-speedbar-insert-user): Fixed bug where only nicks with more
+       info were being listed, and those were shown twice.
+       (erc-speedbar-goto-buffer): Don't use dframe functions, as dframe
+       isn't available with the default speedbar.
+
+2004-05-06  Diane Murray  <address@hidden>
+
+       * erc.el (erc-sort-channel-users-alphabetically): New function.
+       (erc-server-412, erc-server-432, erc-server-475): New functions.
+       (erc-server-412-hook, erc-server-432-hook, erc-server-475-hook):
+       Use them.
+       (erc-server-401, erc-server-403, erc-server-405)
+       (erc-server-421, erc-server-474, erc-server-481): Use catalog
+       messages.
+       (erc-define-catalog): Added s401, s403, s405, s412, s421, s432,
+       s474, s475, and s481.
+
+2004-05-06  Diane Murray  <address@hidden>
+
+       * erc-nickserv.el: Added documentation to Commentary, Usage.
+       Removed `outline-mode' from file local variables.
+       (erc-services-mode): Use `erc-nickserv-identify-mode' to add
+       hooks.
+       (erc-nickserv-identify-mode): New function.
+       (erc-nickserv-identify-mode): New variable.
+       (erc-prompt-for-nickserv-password, erc-nickserv-passwords):
+       Changed docstring.
+       (erc-nickserv-identify-autodetect): Use
+       `erc-nickserv-call-identify-function'.  Docstring change.
+       (erc-nickserv-identify-on-connect,
+       erc-nickserv-identify-on-nick-change,
+       erc-nickserv-call-identify-function): New functions.
+       (erc-nickserv-identify): PASSWORD is not optional.  Autoload
+       function.
+
+2004-05-05  Diane Murray  <address@hidden>
+
+       * erc.el (erc-join-hook, erc-quit-hook, erc-part-hook,
+       erc-kick-hook, erc-connect-pre-hook): Now customizable.
+       (erc-nick-changed-functions): New hook.
+       (erc-server-NICK): Run `erc-nick-changed-functions' with the
+       arguments NEW-NICK and OLD-NICK.
+       (erc-channel-user-voice-p, erc-channel-user-voice-p): Shortened
+       docstring.
+
+2004-05-05  Lawrence Mitchell  <address@hidden>
+
+       * HACKING: New section on function/variable naming and coding
+       conventions.
+
+2004-05-05  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-wash-quit-reason): Quote regexp special characters
+       in NICK, LOGIN and HOST.
+
+2004-05-04  Diane Murray  <address@hidden>
+
+       * erc.el (erc-server-parameters): Typo fix in docstring.
+       (erc-input-line-position): `:type' is now a choice between integer
+       and nil.  (erc-mode-map): Bind `erc-get-channel-mode-from-keypress'
+       to C-c C-o instead of C-c RET (C-c C-m).  (erc-cmd-GQUIT): Use
+       REASON as argument when calling `erc-cmd-QUIT'.
+
+2004-05-03  Lawrence Mitchell  <address@hidden>
+
+       * erc-nicklist.el: Initial version.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc-menu.el: Added local variables for file, fixed indenting.
+       (erc-menu-version): New variable.
+       (erc-menu-definition): "List channels": New.  "Join channel": Use
+       `erc-connected' as test.  "Start a query": New.  "List channel
+       operators": New.  "Input action": Moved up.  "Set topic": Fixed
+       test so it's only active in channels.  "Leave this channel": Moved
+       down.  "Track hidden channel buffers": Removed.  "Enable/Disable
+       ERC Modules": New.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc.el (erc-mode-map): Removed binding for
+       `erc-save-buffer-in-logs' (moved to erc-log.el).
+       (erc-cmd-QUERY, erc-cmd-OPS): Now interactive.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc-log.el: Added local variables for this file.
+       (erc-log-channels-directory): Added directory as a choice in
+       `:type'.
+       (define-erc-module): Define and undefine key binding (C-c
+       C-l) for `erc-save-buffer-in-logs' here.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc-nets.el: Added local variables for this file.
+       (erc-networks-alist): Fixed `:type' to work better in
+       customization.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc-match.el: Added local variables for file.  (erc-keywords):
+       Use `list' instead of `cons' in `:type'.  Fixes bug where mismatch
+       was shown in customization.  (erc-current-nick-highlight-type):
+       Escape parentheses in docstring.  Added keyword, nick-or-keyword as
+       options in `:type'.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc-stamp.el: Added local variables for file.
+       (erc-away-timestamp-format): Allow nil as a choice in `:type'.
+       (erc-timestamp-intangible): Changed `:type' to boolean.
+       (erc-timestamp-right-column): Added `:group' and `:type'.
+
+2004-04-28  Diane Murray  <address@hidden>
+
+       * erc.el (erc-modules): Added bbdb, log, match, sound, and stamp
+       as `:type' options; changed documentation for autojoin, fill,
+       pcomplete, track.  (erc-prompt-for-channel-key): New variable.
+       (erc-join-channel): Only prompt for key if
+       `erc-prompt-for-channel-key' is non-nil.  (erc-format-my-nick): New
+       function.  (erc-send-message, erc-send-current-line): Use it.
+
+2004-04-24  Johan Bockgård  <address@hidden>
+
+       * erc-track.el (erc-track-modified-channels): Fix indentation.
+
+2004-04-24  Johan Bockgård  <address@hidden>
+
+       * erc-match.el (erc-hide-fools): Docstring fix.
+       (erc-log-matches-types-alist): Added `current-nick' to valid
+       choices.
+
+2004-04-20  Diane Murray  <address@hidden>
+
+       * erc-page.el, erc-ezbounce.el, erc-speak.el, erc-match.el,
+       erc-track.el (erc-ezbounce, erc-page, erc-speak): Groups defined.
+       (erc-match, erc-track): `erc' is parent group.
+       (erc-ezb-regexp, erc-ezb-login-alist): Added `:group'.
+
+2004-04-20  Jorgen Schaefer  <address@hidden>
+
+       * erc-fill.el: Fixed erc-fill-static so it breaks the lines at the
+       right column and respects timestamps.  Patch by Simon Siegler
+       <address@hidden>
+       (erc-fill-static): Major rewrite and split up into some functions.
+       (erc-count-lines): Removed.
+       (erc-fill-regarding-timestamp): New function.
+       (erc-timestamp-offset): New function.
+       (erc-restore-text-properties): New function.
+       (erc-fill-variable): Respect leftbound timestamp.  This is still
+       broken if someone has both erc-timestamp-only-if-changed-flag set
+       and erc-insert-timestamp-function set to
+       'erc-insert-timestamp-left, but otherwise it works now.
+
+2004-04-20  Diane Murray  <address@hidden>
+
+       * erc.el (erc-cmd-SV): Show features gtk, mac-carbon, multi-tty.
+       Fixed so that arguments fit the format (build date was not being
+       shown).
+
+2004-04-19  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-channel-topic): Error if `channel-topic' is
+       unbound.  Remove %-sign substitution.
+       (erc-update-mode-line-buffer): Escape %-signs in `channel-topic'
+       here.
+
+2004-04-19  Diane Murray  <address@hidden>
+
+       * erc.el (erc-send-action, erc-ctcp-query-ACTION,
+       erc-ctcp-reply-ECHO-hook): Let `erc-display-message-highlight'
+       propertize the message.
+       (erc-display-message-highlight): Allow for any erc-TYPE-face.
+       (erc-cmd-JOIN): Display error message instead of throwing an error
+       if there's no `invitation'.
+       (erc-cmd-PART): Allow for no reason if channel is provided.  Fixes
+       bug where user would part the current channel with the other
+       channel's name as reason when no reason was given.
+       (erc-server-vectors, erc-debug-missing-hooks): Added docstring.
+       (erc-server-JOIN): Moved `erc-join-hook' to JOIN-you section.
+       `erc-join-hook' called by `run-hook-with-args', sending the ARGS
+       `chnl' and the channel's buffer.  Changed an instance of if
+       without else to when.
+       (erc-server-477): New function.
+       (erc-server-477-hook): Use `erc-server-477'.
+       (erc-define-catalog): Added `no-invitation'.
+
+2004-04-14  Diane Murray  <address@hidden>
+
+       * erc-nickserv.el: Local variables for file added.
+       (erc-nickserv-passwords): Customization: Network symbols updated
+       to reflect `erc-nickserv-alist'.  Allow user to type in network
+       symbol.
+       (erc-nickserv-alist): Now customizable variable.
+
+2004-04-09  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-reset-idletime): Make sure `line'
+       is a string to avoid errors upon startup.
+
+2004-04-06  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-version): New variable.
+       (erc-auto-discard-away): Updated docstring.
+       (erc-autoaway-no-auto-back-regexp): New variable.
+       (erc-autoaway-reset-idletime): Use it.  Hopefully a better solution
+       which allows for aliases to "/away" and any other text that the
+       user wants to ignore when `erc-auto-discard-away' is non-nil.
+
+2004-04-06  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-reset-idletime): Forgot /gaway in
+       regexp.
+
+2004-04-06  Diane Murray  <address@hidden>
+
+       * erc-autoaway.el (erc-autoaway-reset-idletime): If the user sends
+       an "/away" command, don't call `erc-autoaway-set-back', fixes bug
+       where ERC would send "/away" when user was already away and sent an
+       "/away reason".  Changed `l' to `line' for better understanding.
+       (erc-autoaway-set-back): Changed `l' to `line' for better
+       understanding.
+
+2004-04-05  Diane Murray  <address@hidden>
+
+       * erc.el (erc-set-channel-key): Now able to remove key.
+       (erc-set-channel-limit): Now able to remove limit.
+       (erc-get-channel-mode-from-keypress): Fixed docstring.
+
+2004-04-04  Diane Murray  <address@hidden>
+
+       * erc.el (erc-join-channel): Allow for optional channel key.
+       (erc-set-modes): Need to set `channel-key' to nil in case of mode
+       changes during split.
+       (erc-show-channel-key-p): New variable.
+       (erc-prepare-mode-line-format): Only show key if
+       `erc-show-channel-key-p' is non-nil.
+
+2004-04-04  Diane Murray  <address@hidden>
+
+       * erc.el (channel-key): New variable.
+       (erc-update-channel-key): New function.
+       (erc-set-modes, erc-parse-modes, erc-update-modes, erc,
+       erc-update-channel-info-buffer): Deal with channel keys.
+       (erc-prepare-mode-line-format): Show channel key in header-line.
+       (erc-server-NICK): Show nick change in server buffer as well.
+       (erc, erc-send-command, erc-banlist-store, erc-banlist-update,
+       erc-load-irc-script-lines,
+       erc-arrange-session-in-multiple-windows, erc-handle-login,
+       erc-find-channel-info-buffer): Changed when not to unless.
+       (erc-server-MODE): Changed if without else to when.
+
+2004-03-27  Adrian Aichner  <address@hidden>
+
+       * erc.el (erc-cmd-BANLIST): Use `truncate-string-to-width'
+       instead of `truncate-string' alias.
+       (erc-nickname-in-use): Ditto.
+
+2004-03-27  Francis Litterio  <address@hidden>
+
+       * erc-list.el (erc-cmd-list): Fixed error caused by erc-cmd-LIST
+       passing a non-sequence to erc-chanlist.
+
+2004-03-22  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * erc.el: Add new hook `erc-join-hook', which is run when we join a
+       channel.
+
+2004-03-22  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * erc.el: Replaced existing notice user notification system and
+       the configuration options, which consisted of
+       `erc-echo-notices-in-minibuffer-flag' and
+       `erc-echo-notices-in-current-buffer' with two new hooks,
+       `erc-echo-notice-hook' and `erc-echo-notice-always-hook'.
+
+       When user notification is needed, `erc-echo-notice-always-hook' is
+       first run using `run-hook-with-args', then `erc-echo-notice-hook'
+       is run using `run-hook-with-args-until-success'.
+
+       In addition to these hooks, a large number of functions, which are
+       described in the documentation strings of those hooks, were added
+       which can be used to achieve a large variety of different
+       behaviors.
+
+       The current default behavior, which is identical to the existing
+       default behavior, is for `erc-echo-notice-always-hook' to be set to
+       `(erc-echo-notice-in-default-buffer).
+
+2004-03-21  Diane Murray  <address@hidden>
+
+       * erc-track.el (erc-modified-channels-display): Added a space
+       before opening bracket.
+
+2004-03-21  Diane Murray  <address@hidden>
+
+       * erc.el (erc-format-query-as-channel-p): New variable.
+       (erc-server-PRIVMSG-or-NOTICE): If `erc-format-query-as-channel-p'
+       is nil, messages in the query buffer are formatted like private
+       messages.
+
+       (erc-server-252-hook, erc-server-253-hook, erc-server-254-hook,
+       erc-server-256-hook, erc-server-257-hook, erc-server-258-hook,
+       erc-server-259-hook, erc-server-371-hook, erc-server-372-hook,
+       erc-server-374-hook, erc-server-374-hook, erc-server-442-hook,
+       erc-server-477-hook): Removed, now defined in
+       `erc-server-hook-list'.
+       (erc-display-server-message): New function.
+       (erc-server-252, erc-server-253, erc-server-254, erc-server-442):
+       New functions.
+       (erc-server-hook-list): Added 250, 256, 257, 258, 259, 265, 266,
+       377, 378, 477 - using `erc-display-server-message'.  251, 255 now
+       use `erc-display-server-message'.  Added 252, 253, 254, 442 -
+       using respective erc-server-* functions.  371, 372, 374, 375 now
+       defined here.
+       (erc-define-catalog): Added s252, s253, s254, s442.
+       (erc-server-001, erc-server-004, erc-server-005): Fixed
+       documentation.
+
+2004-03-20  Diane Murray  <address@hidden>
+
+       * erc-stamp.el: Commentary: Changed `erc-stamp-mode' to
+       `erc-timestamp-mode'.
+       (erc-insert-timestamp-left): Use `erc-timestamp-face' on filler
+       spaces as well.
+
+2004-03-19  Diane Murray  <address@hidden>
+
+       * erc.el (erc-send-action): Use `erc-input-face'.
+       (erc-display-message-highlight): If the requested highlighting
+       type doesn't match, just display the string with no highlighting
+       and warn about it with `erc-log'.
+       (erc-cmd-JOIN): If user is already on the requested channel,
+       switch to that channel's buffer.
+       (erc-ctcp-query-ACTION): Use `erc-action-face' for nick as well.
+       (erc-header-line-use-help-echo-p): New variable.
+       (erc-update-mode-line-buffer): Use `help-echo' for header-line if
+       `erc-header-line-use-help-echo-p' is non-nil.
+
+2004-03-18  Adrian Aichner  <address@hidden>
+
+       * erc-nets.el: Use two arguments version of `make-obsolete', if
+       third argument is not supported (for XEmacs).
+
+2004-03-18  Andreas Fuchs  <address@hidden>
+
+       * CREDITS: added CREDITS entry for Adrian Aichner
+
+2004-03-18  Andreas Fuchs  <address@hidden>
+
+       * erc-xdcc.el, erc.el, erc-autoaway.el, erc-autojoin.el,
+       erc-button.el, erc-dcc.el, erc-ezbounce.el, erc-imenu.el,
+       erc-list.el, erc-log.el, erc-match.el, erc-members.el,
+       erc-menu.el, erc-netsplit.el, erc-notify.el, erc-speedbar.el,
+       erc-stamp.el, erc-track.el, erc-truncate.el:
+       (erc-coding-sytem-for-target): Removed.
+       (erc-coding-system-for-target): New.
+       (erc-autoaway-use-emacs-idle): Typo fix.
+       (erc-auto-set-away): Ditto.
+       (erc-auto-discard-away): Ditto.
+       (autojoin): Ditto.
+       (erc-button-alist): Ditto.
+       (erc-dcc-auto-masks): Ditto.
+       (erc-dcc-chat-send-input-line): Ditto.
+       (erc-ezb-get-login): Ditto.
+       (erc-unfill-notice): Ditto.
+       (erc-save-buffer-in-logs): Ditto.
+       (match): Ditto.
+       (erc-log-matches-types-alist): Ditto.
+       (erc-match-directed-at-fool-p): Ditto.
+       (erc-match-message): Ditto.
+       (erc-update-member): Ditto.
+       (erc-ignored-reply-p): Ditto.
+       (erc-menu-definition): Ditto.
+       (erc-netsplit-QUIT): Ditto.
+       (erc-notify-list): Ditto.
+       (erc-speedbar-update-channel): Ditto.
+       (erc-speedbar-item-info): Ditto.
+       (erc-stamp): Ditto.
+       (erc-timestamp-intangible): Ditto.
+       (erc-add-timestamp): Ditto.
+       (erc-timestamp-only-if-changed-flag): Ditto.
+       (erc-show-timestamps): Ditto.
+       (erc-track-priority-faces-only): Ditto.
+       (erc-modified-channels-alist): Ditto.
+       (erc-unique-substrings): Ditto.
+       (erc-find-parsed-property): Ditto.
+       (erc-track-switch-direction): Ditto.
+       (erc-truncate-buffer-to-size): Ditto.
+       (erc-xdcc): Ditto.
+       (erc-auto-reconnect): Ditto.
+       (erc-startup-file-list): Ditto.
+       (erc-once-with-server-event): Ditto.
+       (erc-once-with-server-event-global): Ditto.
+       (erc-mode): Ditto.
+       (erc-generate-new-buffer-name): Ditto.
+       (erc): Ditto.
+       (erc-open-ssl-stream): Ditto.
+       (erc-default-coding-system): Ditto.
+       (erc-encode-string-for-target): Ditto.
+       (erc-decode-string-from-target): Ditto.
+       (erc-scroll-to-bottom): Ditto.
+       (erc-decode-controls): Ditto.
+       (erc-channel-members-changed-hook): Ditto.
+       (erc-put-text-property): Ditto.
+       (erc-add-default-channel): Ditto.
+
+2004-03-17  Diane Murray  <address@hidden>
+
+       * erc.el (erc-process-sentinel): Cancel ping timer upon
+       disconnect.
+       (erc-cmd-PART): Use same regexp as `erc-cmd-QUIT' when no #channel
+       is provided.
+       (erc-nick-uniquifier, erc-manual-set-nick-on-bad-nick-p): `:group'
+       was missing, added.
+       (erc-part-reason-zippy, erc-part-reason-zippy): Removed FIXME
+       comments.  I see no problem allowing typed in reasons.
+
+2004-03-16  Diane Murray  <address@hidden>
+
+       * erc-stamp.el (erc-insert-timestamp-left): Added support for
+       `erc-timestamp-only-if-changed-flag' and added docstring.
+       (erc-timestamp-only-if-changed-flag): Updated documentation.
+
+2004-03-13  Francis Litterio  <address@hidden>
+
+       * erc-nets.el (erc-network-name): No longer marked as obsolete.
+       Why was this function made obsolete?  There is no other function
+       that performs this task.  Some of us use these functions in our
+       personal ERC configs.
+
+2004-03-12  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-buffer-filter): Use `with-current-buffer'.
+       (erc-process-input-line): Append newline to documentation.  Fixes a
+       bug whereby the prompt would be put on the same line as the output.
+       (erc-cmd-GQUIT): Only try and send QUIT if the process is alive.
+
+2004-03-12  Lawrence Mitchell  <address@hidden>
+
+       * erc-log.el: Only add top-level hooks if `erc-enable-logging' is
+       non-nil.
+
+2004-03-10  Damien Elmes  <address@hidden>
+
+       * erc-nets.el: From Adrian Aichner (adrian /at/ xemacs /dot/ org)
+       * erc-nets.el: XEmacs make-obsolete only takes two arguments.
+
+2004-03-10  Diane Murray  <address@hidden>
+
+       * erc-nets.el (erc-determine-network): Use `erc-session-server' if
+       `erc-announced-server' is nil to avoid error if server does not
+       send 004 (RPL_MYINFO) message.
+
+2004-03-10  Lawrence Mitchell  <address@hidden>
+
+       * erc-nets.el (erc-server-alistm erc-settings): Use lowercase
+       "freenode", as in `erc-networks-alist'.
+
+2004-03-10  Lawrence Mitchell  <address@hidden>
+
+       * erc-nickserv.el (erc-nickserv-alist): Use lowercase "freenode",
+       as in `erc-networks-alist'.
+
+2004-03-10  Lawrence Mitchell  <address@hidden>
+
+       * erc-dcc.el (pcomplete/erc-mode/DCC): Append "send" as a list.
+
+2004-03-10  Francis Litterio  <address@hidden>
+
+       * erc-nets.el (erc-networks-alist): Changed "Freenode" to
+       "freenode".
+
+2004-03-10  Francis Litterio  <address@hidden>
+
+       * erc-list.el (erc-cmd-LIST): Improved the docstring.  Made
+       message to user more accurate depending on whether a single
+       channel is being listed or not.
+
+2004-03-10  Lawrence Mitchell  <address@hidden>
+
+       * erc-nets.el (erc-determine-network): Make matching logic simpler
+       (suggested by Damian Elmes).
+       (erc-current-network, erc-network-name): Add `make-obsolete' form.
+       (erc-set-network-name): Indentation fix.
+       (erc-ports-list): Add docstring.  Rework function body to use
+       `nconc'.
+
+2004-03-09  Diane Murray  <address@hidden>
+
+       * erc-list.el, erc-notify.el (require 'erc-nets): Added.
+
+2004-03-08  Diane Murray  <address@hidden>
+
+       * erc.el (erc-network-name): Function definition moved to
+       erc-nets.el.  The functions `erc-determine-network' and
+       `erc-network' in erc-nets.el do what this did before.  Deprecated.
+       Use (erc-network) instead.
+
+2004-03-08  Diane Murray  <address@hidden>
+
+       * erc-nickserv.el: Changed copyright notice.  Now require
+       erc-nets.  erc-nets.el now takes care of network-related functions
+       and variables.
+       (erc-nickserv-alist): Changed network symbols to match those in
+       `erc-networks-alist' in erc-nets.el.
+       (erc-nickserv-identify-autodetect): Use `erc-network'.
+       (erc-nickserv-identify): Use `erc-network'.  Changed wording for
+       interactive use, now shows current nick.
+       (erc-networks): Removed.  Use `erc-networks-alist' as defined in
+       erc-nets.el.
+       (erc-current-network): Function definition moved to erc-nets.el.
+       The functions `erc-determine-network' and `erc-network' in
+       erc-nets.el do what this did before.  Deprecated.  Use
+       (erc-network) instead.
+
+2004-03-08  Diane Murray  <address@hidden>
+
+       * erc-nets.el: Added commentary, `erc-nets-version'.
+       (erc-server-alist): Changed Brasnet to BRASnet.
+       (erc-networks-alist): All networks (except EFnet and IRCnet) now
+       have a MATCHER.  (erc-network): New variable.
+       (erc-determine-network): New function.  Determine the network the
+       user is on.  Use the server parameter NETWORK, if provided, else
+       parse the server name and search for a match (regexp and loop by
+       wencem) in `erc-networks-alist'.  Return the name of the network
+       or "Unknown" as a symbol.
+       (erc-network): New function.  Returns value of `erc-network'.  Use
+       this when the current buffer is not the server process buffer.
+       (erc-current-network): Returns the value of `erc-network' as
+       expected by users who used the function as it was defined in
+       erc-nickserv.el.  Deprecated.
+       (erc-network-name): Returns the value of `erc-network' as expected
+       by users who used the function as it was defined in erc.el.
+       Deprecated.
+       (erc-set-network-name): New function.  Added to
+       `erc-server-375-hook' and `erc-server-422-hook'.
+       (erc-unset-network-name): New function.  Added to
+       `erc-disconnected-hook'.
+       (erc-server-select): Small documentation word change.
+
+2004-03-07  Diane Murray  <address@hidden>
+
+       * AUTHORS, CREDITS: disumu info updated
+
+2004-03-06  Lawrence Mitchell  <address@hidden>
+
+       * erc-list.el (erc-cmd-LIST): Take &rest rather than &optional
+       arguments.
+       (erc-chanlist): Construct correct LIST command from list of
+       channels.
+
+2004-03-06  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-mode-line-buffer): Add 'help-echo property to
+       header-line text.  This allows header lines longer than the width
+       of the current window to be seen.
+
+2004-03-06  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el (erc-match-directed-at-fool-p): Also check for
+       "FOOL, "
+
+2004-03-06  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el (erc-match-message): Only use nick-or-keyword if
+       we're matching our nick.
+
+2004-03-06  Jorgen Schaefer  <address@hidden>
+
+       * erc-match.el: The highlight type for the current nickname can
+       now also be 'nick-or-keyword, to highlight the nick of the sender
+       if that is available, but fall back to highlighting your nickname
+       in the whole message otherwise.
+       (erc-current-nick-highlight-type): Adapted docstring accordingly.
+       (erc-match-message): Added new condition.  Also added some comments
+       to this monster of a function.
+
+2004-03-06  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-is-valid-nick-p): Don't check for length less or
+       equal to 9.
+
+2004-03-06  Damien Elmes  <address@hidden>
+
+       * erc-nickserv.el (erc-current-network): the last change resulted
+       in this function failing when a network identifies itself as
+       anything other than var.netname.com, so for instance
+       'vic.au.austnet.org' fails.  This version is only a marginal
+       improvement over the original, but if we want to be more flexible
+       we'll probably have to do the iteration ourselves instead of using
+       assoc.
+
+2004-03-05  Diane Murray  <address@hidden>
+
+       * erc.el: Added erc-server-001 which runs when the server sends
+       its welcome message.  It sets the current-nick to reflect the
+       server's settings.  This fixes a bug where nicks that were too long
+       and got truncated by the server were still set to the old value.
+       (nickname-in-use): If user wants to try again manually, let user
+       know that the nick is taken.  If not, go through erc-default-nicks
+       until none are left, and then try one last time with
+       erc-nick-uniquifier.  If it's still a bad-nick, make the user
+       change nick manually.  When applying uniquifier, use NICKLEN if
+       it's in the server parameters, otherwise use what RFC 2812 says is
+       the max nick length (9 chars).  Added custom variable
+       erc-manual-set-nick-on-bad-nick-p, which is set to nil and
+       erc-nick-change-attempt-count.  Reset erc-default-nicks and
+       erc-nick-change-attempt-count when the nick has been changed
+       successfully.  This fixes the bug where ERC would get caught in a
+       neverending loop of trying to set the same nick if the nick was
+       too long and the uniquified nick was not available.
+
+       * added erc-cmd-WHOAMI
+
+       * added custom variable erc-mode-line-away-status-format, use this
+       instead of the previous hard-coded setting
+
+       * erc-server-315|318|369-hook defvar lines removed - they're
+       already defined in erc-server-hook-list
+
+2004-03-04  Lawrence Mitchell  <address@hidden>
+
+       * HACKING: Initial commit.  Some thoughts on coding standards.
+
+2004-03-03  Diane Murray  <address@hidden>
+
+       * erc-track.el: added the variable erc-track-priority-faces-only
+       which adds the option to ignore changes in a channel unless there
+       are faces from the erc-track-faces-priority-list in the message
+       options are nil, 'all, or a list of channel name strings
+
+2004-03-01  Diane Murray  <address@hidden>
+
+       * erc.el, erc-ibuffer.el, erc-menu.el: Changed erc-is-channel-op
+       and erc-is-channel-voice to erc-channel-user-op-p and
+       erc-channel-user-voice-p to better match erc-channel-user
+       structure (and emacs lisp usage)
+
+2004-03-01  Diane Murray  <address@hidden>
+
+       * erc.el, erc-ibuffer.el, erc-menu.el:
+       erc-track-modified-channels-mode is now erc-track-mode
+
+2004-02-29  Diane Murray  <address@hidden>
+
+       * erc-match.el: Added 'keyword option to
+       erc-current-nick-highlight-type highlights all instances of
+       current-nick in the message ('nickname option in cvs revisions 1.9
+       - 1.11 had same effect)
+
+2004-02-28  Jorgen Schaefer  <address@hidden>
+
+       * erc-button.el: Add Lisp: prefix for the EmacsWiki Elisp area.
+       (erc-button-alist): Added Lisp: prefix.
+       (erc-emacswiki-lisp-url): New variable.
+       (erc-browse-emacswiki-lisp): New function.
+
+2004-02-27  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-get-arglist): Use `substitute-command-keys', rather
+       than hard-coding C-h f for `describe-function'.
+
+2004-02-26  Johan Bockgård  <address@hidden>
+
+       * erc-log.el (erc-save-buffer-in-logs): bind `inhibit-read-only'
+       to t around call to `erase-buffer'.
+
+2004-02-23  Edward O'Connor  <address@hidden>
+
+       * erc-chess.el, erc-dcc.el, erc-ezbounce.el, erc-list.el,
+       erc-macs.el, erc-ring.el, erc-stamp.el, erc.el: Normalized buffer
+       local variable creation.
+
+2004-02-17  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-scroll-to-bottom, erc-add-scroll-to-bottom): Mention
+       `erc-input-line-position' in docstring.
+
+2004-02-13  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-kick-hook): Typo fix.
+
+2004-02-13  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * erc.el: Added `erc-kick-hook', which is called when the local
+       user is kicked from a channel.  Fixed a bug in `erc-cmd-OPS', such
+       that the command now works.  Added `erc-remove-channel-users', in
+       order to fix a number of significant bugs relating to channel
+       parting.
+
+2004-02-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-display-prompt): Remove last change.  This caused a
+       lot of trouble :(
+
+2004-02-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-display-prompt): Also set 'field property, so C-j
+       works on an empty prompt.
+
+2004-02-12  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-channel-topic): Ensure that `channel-topic'
+       does not contain any bare format controls.
+
+2004-02-10  Jorgen Schaefer  <address@hidden>
+
+       * erc-stamp.el (erc-timestamp-intangible): New variable (user
+       feature request)
+       (erc-format-timestamp): Use erc-timestamp-intangible.
+
+2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * erc-button.el: Fixed bug related to nickname buttonizing and text
+       fields due to erc-stamp.
+
+2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * CREDITS: Added mention of my change of ERC to use hash tables.
+
+2004-02-07  Jeremy Bertram Maitin-Shepard  <address@hidden>
+
+       * AUTHORS: Added myself to the list.
+
+2004-02-05  Lawrence Mitchell  <address@hidden>
+
+       * erc.el: From Jeremy Maitin-Shepard <address@hidden>:
+       (erc-remove-channel-user): Use `delq' not `delete'.
+       (erc-get-buffer): Pass PROC through to `erc-buffer-filter'.
+       (erc-process-sentinel): Use `erc' rather than `erc-reconnect' for
+       auto-reconnection.
+
+2004-02-02  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-buffer-list-with-nick): Apply `erc-downcase' NICK.
+
+2004-01-30  Alex Schroeder  <address@hidden>
+
+       * erc.el (erc-get-buffer): Use erc-buffer-filter.
+
+2004-01-30  Johan Bockgård  <address@hidden>
+
+       * erc.el: From jbms:
+       (erc-get-channel-nickname-list): New function.
+       (erc-get-server-nickname-list): New function.
+       (erc-get-server-nickname-alist): New function.
+       (erc-get-channel-nickname-alist): New function.
+
+2004-01-30  Johan Bockgård  <address@hidden>
+
+       * erc-match.el (erc-add-entry-to-list,
+       erc-remove-entry-from-list): Use `erc-member-ignore-case' to
+       compare entries.
+       (erc-add-pal, erc-add-fool): Fix type bug.  Use
+       `erc-get-server-nickname-alist'.
+
+2004-01-29  Johan Bockgård  <address@hidden>
+
+       * erc.el: From jbms: Adds xemacs compatibility to hash table
+       channel-members patch.
+
+2004-01-29  Johan Bockgård  <address@hidden>
+
+       * erc.el (erc-update-undo-list): Rewritten.  Update
+       buffer-undo-list in place.  Deal with XEmacsesque
+       entries (extents) in the list.
+       (erc-channel-users): Fix unescaped open-paren in left column in
+       docstring.
+
+2004-01-29  Johan Bockgård  <address@hidden>
+
+       * erc-ring.el (erc-replace-current-command): Exclude the prompt
+       from the deleted region and don't redisplay the prompt (because
+       `erc-display-prompt' flushes `buffer-undo-list').
+
+2004-01-29  Johan Bockgård  <address@hidden>
+
+       * erc-match.el (erc-add-entry-to-list): Use `symbol-value' instead
+       of `eval'.
+
+2004-01-28  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-kill-buffer-function): maphash was missing an
+       argument.
+
+2004-01-28  Jorgen Schaefer  <address@hidden>
+
+       * Makefile, erc-autoaway.el, erc-button.el, erc-ibuffer.el,
+       erc-lang.el, erc-list.el, erc-match.el, erc-menu.el, erc-page.el,
+       erc-pcomplete.el, erc-speedbar.el, erc.el: HUGE change by jbms.
+       This makes channel-members a hash, erc-channel-users.
+
+       Modified files: Makefile erc-autoaway.el erc-button.el
+       erc-ibuffer.el erc-lang.el erc-list.el erc-match.el erc-menu.el
+       erc-page.el erc-pcomplete.el erc-speedbar.el erc.el
+
+       The changes are too numerous to document properly.  Have fun with
+       the breakage.
+
+2004-01-27  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-send-input-line): Add a space to empty lines so the
+       server likes them.
+
+2004-01-25  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: erc-send-whitespace-lines: New variable.
+       (erc-send-current-line): Use erc-send-whitespace-lines.  Also,
+       removed superfluous test for empty line in the mapc, since the
+       blank line test should find all.  I do like to be able to send an
+       empty line when i want to!
+       (erc-send-current-line): Check for point being in input line
+       before checking for blank lines.
+
+2004-01-21  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-display-line-1): Move `erc-update-undo-list' outside
+       `save-restriction'.  Removing need for temporary variable.
+       (erc-send-current-line): Fix bug introduced by last change, remove
+       complement in blank line regexp.
+
+2004-01-20  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-undo-list): Add logic to catch the case when
+       `buffer-undo-list' is t, indentation cleanup.
+       (erc-send-current-line): Reverse logic for matching blank lines.
+
+2004-01-20  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-input-line-position): New variable.  If non-nil,
+       specifies the argument to `recenter' in `erc-scroll-to-bottom'.
+       (erc-scroll-to-bottom): Use it.
+
+2004-01-20  Lawrence Mitchell  <address@hidden>
+
+       * erc.el: From Johan Bockgård <address@hidden>:
+       (erc-update-undo-list): New function.  Update `buffer-undo-list'
+       so that calling `undo' in an ERC buffer doesn't mess up the
+       existing text.
+       (erc-display-line-1): Use it.
+
+2004-01-19  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-beg-of-input-line): Use `forward-line' rather than
+       `beginning-of-line'.  Docstring fix.
+       (erc-end-of-input-line): Docstring fix.
+
+2004-01-13  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-display-prompt): Remove the undo list after
+       displaying the prompt, so the user can't undo ERC changes, which
+       breaks some stuff anyways.  This way the user can still undo his
+       editing, but not ours.
+
+2004-01-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el (erc-scroll-to-bottom): Should recenter on the bottom
+       line, not the second-to-last one.
+
+2004-01-12  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-bol): Fix bug introduced in my changes from 2004-01-11.
+
+2004-01-12  Lawrence Mitchell  <address@hidden>
+
+       * erc.el: From Brian Palmer <address@hidden>
+       (erc-cmd-JOIN): Use `erc-member-ignore-case', rather than
+       `member-ignore-case'.
+
+2004-01-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: There was an inconsistency where the values of op and
+       voice in channel-names could be 'on or 'off after an update, t and
+       nil before.  The intended version was to have t or nil, so i fixed
+       it to do so.
+       (channel-names): Updated docstring.
+       (erc-update-current-channel-member): Clarified docstring, fixed so
+       it sets t or nil on an update as well, not only on an add.
+       (erc-cmd-OPS): Updated not to check for 'on (the only function that
+       did this!)
+
+2004-01-12  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-part-reason-various-alist,
+       erc-update-mode-line-buffer): Fix docstring
+
+2004-01-11  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-update-mode-line): Fix typo.
+
+2004-01-11  Lawrence Mitchell  <address@hidden>
+
+       * erc.el (erc-prompt-interactive-input): Removed.
+       (erc-display-prompt): Removed `erc-prompt-interactive-input'
+       option.  (erc-interactive-input-map): Removed.
+
+       Major docstring fixes.
+
+2004-01-07  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-cmd-OPS): Added this function.
+       (erc-cmd-IDLE): Switched from using erc-display-message-highlight
+       to erc-make-notice.
+
+2004-01-07  Francis Litterio  <address@hidden>
+
+       * erc-list.el (erc-cmd-LIST): Switched from using
+       erc-display-message-highlight to erc-make-notice.
+
+2004-01-07  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-once-with-server-event): Added a sentence to the
+       docstring.  Now returns the uninterned symbol that is added to the
+       server hook.
+       (erc-cmd-IDLE): Changed to use erc-once-with-server-event instead
+       of erc-once-with-server-event-global.
+
+2004-01-06  Francis Litterio  <address@hidden>
+
+       * erc-list.el (erc-chanlist-hide-modeline): New variable.
+       (erc-chanlist): Now displays message as a notice.  Also hides the
+       modeline if erc-chanlist-hide-modeline is non-nil.
+
+2004-01-05  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-server-PRIVMSG-or-NOTICE): Now nicks appear as
+       <nick> in query buffers, instead of as *nick*.
+
+2004-01-03  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-once-with-server-event-global): Changed to return
+       the uninterned symbol that it creates.
+       (erc-cmd-LIST): Changed to clean up hooks that don't run.
+
+2004-01-03  Francis Litterio  <address@hidden>
+
+       * erc-pcomplete.el (pcomplete/erc-mode/IDLE): Added to support new
+       /IDLE command.
+
+2004-01-03  Francis Litterio  <address@hidden>
+
+       * erc.el (erc-once-with-server-event-global): New function.  Like
+       erc-once-with-server-event, except it modifies the global value of
+       the event hook.
+       (erc-cmd-IDLE): New function.  Implements the new /IDLE command.
+       Usage: /IDLE NICK (erc-seconds-to-string): New function.  Converts
+       a number of seconds to an English phrase.
+
+2004-01-02  Francis Litterio  <address@hidden>
+
+       * erc-list.el: Added variable erc-chanlist-mode-hook.
+
+2003-12-30  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-cmd-HELP):
+       Changed to prefer giving help for erc-cmd-* functions over
+          similarly-named Elisp functions (e.g., erc-cmd-LIST vs. list).
+
+2003-12-28  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-query-buffer-p): Added this function.
+
+2003-12-28  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-cmd-SV): Use erc-emacs-build-time.
+
+       * erc-compat.el: erc-emacs-build-time: New variable.
+
+       * erc.el(erc-cmd-SAY):
+       Reintroduced the feature where the spaces between
+       "/SAY" and the rest of the line were being sent with the message.
+
+2003-12-28  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-server-buffer-p):
+       Fixed a bug where this function sometimes would return
+           nil when it should return t.
+
+2003-12-27  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-generate-new-buffer-name):
+       Really fixed a bug where ERC would reuse
+           a connected server buffer when erc-reuse-buffers is non-nil.
+       (erc-cmd-JOIN): Now we tell the user when he attempts to join the same
+           channel twice on the same server.
+
+       * erc.el(erc-generate-new-buffer-name):
+       Fixed a bug where ERC would reuse a connected server buffer when 
erc-reuse-buffers is non-nil.
+
+       * erc.el(erc-cmd-SAY):
+       Fixed a bug where the spaces between "/SAY" and the rest of the
+           line were being sent with the message.
+
+       * erc-list.el: Fixed another typo.
+
+       * erc-list.el: Fixed a typo.
+
+       * erc-list.el:
+       Added text to the top of the channel list buffer describing the 
keybinding for
+       function erc-chanlist-join-channel.
+
+       * erc-list.el: Minor appearance changes.  No functional change.
+
+       * erc-list.el:
+       Implemented function erc-chanlist-join-channel.  Added variable
+       erc-chanlist-channel-line-regexp.  Got rid of function
+       erc-chanlist-pre-command-hook.  Changed the logic for how channel lines 
are
+       highlighted.
+
+2003-12-26  Francis Litterio  <address@hidden>
+
+       * erc-list.el:
+       Removed a bunch of unused code.  No semantic change.
+
+       * erc-list.el: Added lots of functionality.
+
+2003-12-15  Mario Lang  <address@hidden>
+
+       * erc-track.el, erc.el:
+       New custom type erc-message-type, use it in erc-hide-list and 
erc-track-exclude-types
+
+2003-12-14  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(track-when-inactive): New module.
+       (erc-track-visibility): New option.
+       (erc-buffer-activity): New variable.
+       (erc-buffer-activity-timeout): New variable.
+       (erc-user-is-active): New function.
+       (erc-buffer-visible): New function.
+       (erc-modified-channels-update): Replace get-buffer-window call
+       with call to erc-buffer-visible.
+       (erc-track-modified-channels): Ditto.
+
+2003-12-14  Lawrence Mitchell  <address@hidden>
+
+       * erc-track.el(erc-modified-channels-update):
+       Force update of modeline.  Makes sure
+       that the tracked channels disappear in other buffers too.
+
+2003-12-06  Lawrence Mitchell  <address@hidden>
+
+       * erc.el(define-erc-module):
+       New optional argument LOCAL-P.  If non-nil, then
+       mode will be created as buffer-local rather than a global mode.
+       (erc-cmd-CTCP): Fix indentation from last commit.
+
+       * erc-compat.el(erc-define-minor-mode):
+       Deal with :global and :group keywords.
+
+       * erc-nickserv.el(erc-current-network):
+       Make server regex more permissive.
+
+       * erc.el(erc-cmd-CTCP):
+       Don't add a space to end of command when ARGS are
+       empty.  This fixes a bug whereby requests of the form "VERSION " were
+       being sent, and ignored.
+
+2003-11-27  Lawrence Mitchell  <address@hidden>
+
+       * erc-log.el: From Adrian Aichner <address@hidden>
+       * erc-log.el (erc-log-file-coding-system): Use 'binary
+       coding-system under XEmacs (instead of 'emacs-mule).
+       * erc-log.el (erc-w32-invalid-file-characters): Removed as no
+       longer needed.
+       * erc-log.el (erc-generate-log-file-name-long): Use
+       `convert-standard-filename', which exists in XEmacs too.
+
+2003-11-16  Mario Lang  <address@hidden>
+
+       * erc-identd.el: Code provided by johnw, thanks!
+
+2003-11-09  Lawrence Mitchell  <address@hidden>
+
+       * erc.el(erc-latest-version): Clean up docstring.
+       Remove requirement for w3, wrap REQUIRE statement in IGNORE-ERRORS.
+       Update viewcvs url to correct location.
+       (erc-ediff-latest-version): Make sure that we find the uncompiled
+       erc.el, error if not.
+
+2003-11-07  Mario Lang  <address@hidden>
+
+       * erc.el: Add more info to /sv
+
+2003-11-06  Francis Litterio  <address@hidden>
+
+       * erc.el: Added optional argument BUFFER to erc-server-buffer-p.
+
+2003-11-04  Mario Lang  <address@hidden>
+
+       * AUTHORS: Add sachac
+
+2003-11-02  Lawrence Mitchell  <address@hidden>
+
+       * erc.el(erc-server-366):
+       chnl is 4th element of parsed, not fifth.
+       (erc-channel-end-receiving-names): Pass correct number of arguments
+       to delete-if-not.
+
+       * erc.el(erc-update-current-channel-member):
+       Use erc-downcase when comparing
+       nick entries.  Cleanup indentation.
+
+2003-11-01  Lawrence Mitchell  <address@hidden>
+
+       * erc-sound.el: Added a (provide 'erc-sound) line.
+
+       * erc.el(erc-cmd-NAMES): send to TGT, not CHANNEL.
+
+2003-10-29  Sandra Jean Chua  <address@hidden>
+
+       * erc-pcomplete.el, erc.el, CREDITS:
+       Merged Jeremy Maitin-Shepard's patch for time-sensitive nick completion.
+
+2003-10-27  Mario Lang  <address@hidden>
+
+       * Makefile, debian/changelog:
+       New Debian package 4.0.cvs.20031027
+
+2003-10-25  Mario Lang  <address@hidden>
+
+       * erc.el: Fix typo tuncate->truncate
+
+2003-10-24  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: From Stephan Stahl <address@hidden>:
+       (erc-dcc-send-block): Kill buffer if transfer completed correctly.
+
+2003-10-22  Mario Lang  <address@hidden>
+
+       * erc-track.el(erc-track-disable):
+       Do not deactivate all advices for `switch-to-buffer',
+       just disable the erc specific one. (Bug#217022).
+
+2003-10-18  Lawrence Mitchell  <address@hidden>
+
+       * erc-log.el(erc-log-file-coding-system): New variable.
+       (erc-save-buffer-in-logs): Use it.
+
+2003-10-17  Mario Lang  <address@hidden>
+
+       * erc.el(erc-interpret-mirc-color): New boolean defcustom
+
+       * erc.el: Do not use -nowait on darwin (thanks johnw)
+
+2003-10-15  Lawrence Mitchell  <address@hidden>
+
+       * erc.el(define-erc-module):
+       Set erc-FOO-mode appropriately in erc-FOO-enable
+       and erc-FOO-disable.
+
+2003-10-12  Jorgen Schaefer  <address@hidden>
+
+       * erc-autoaway.el(erc-mode):
+       Reset idletime on connect. Fixes an annoying bug which
+       flooded the server with always on reconnect.
+       (erc-autoway-reset-idletime): Accept optional args so we can hook it
+       onto erc-server-001-hook.
+
+2003-10-10  Mario Lang  <address@hidden>
+
+       * erc.el(erc-hide-list): Add a nice defcustom type
+
+2003-10-08  Mario Lang  <address@hidden>
+
+       * Makefile, debian/changelog, debian/control:
+       Debian snapshot 20031008
+
+       * erc-speedbar.el:
+       Patch from Eric M. Ludlam <address@hidden>:
+        - (erc-install-speedbar-variables): Add functions list (needs new 
speedbar?)
+        - (erc-speedbar-buttons): Add doc.  Clear the buffer
+        - (erc-speedbar-sort-channel-members): New function.
+        - (erc-speedbar-expand-channel): Call new sort function.  Change some 
visuals.
+        - (erc-speedbar-insert-user): Change some visuals based on channel 
data.
+        - (erc-speedbar-line-text, erc-speedbar-item-info): New functions
+       Add proper elisp file header.
+
+2003-10-02  Lawrence Mitchell  <address@hidden>
+
+       * erc-match.el(erc-match-syntax-table): New variable.
+       (erc-match-current-nick-p): Use it.
+
+       * erc.el(erc-quit-reason-zippy, erc-part-reason-zippy): Use
+       `erc-replace-regexp-in-string' rather than
+       `replace-regexp-in-string'.
+       (erc-command-indicator-face): New face, used to show commands if
+       `erc-hide-prompt' is nil and `erc-command-indicator' is non-nil.
+       (erc-command-indicator): Clean up doc-string.
+       (erc-display-prompt): New optional argument FACE, use this rather
+       than `erc-prompt-face' to fontify the prompt if non-nil.
+       (erc-send-current-line): Pass in `erc-command-indicator-face' to
+       `erc-display-prompt'.
+
+       * erc-compat.el(erc-replace-regexp-in-string): New function.
+       Alias for `replace-regexp-in-string' on Emacs 21.
+       Argument massaging for `replace-in-string' for XEmacs.
+
+2003-09-28  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-keywords): Removed. Wasn't used by anything.
+
+2003-09-25  Lawrence Mitchell  <address@hidden>
+
+       * erc.el: ERC-HIDE-PROMPT: add custom group
+       ERC-COMMAND-INDICATOR: new variable.
+       ERC-COMMAND-INDICATOR: new function.
+       ERC-DISPLAY-PROMPT: new argument, PROMPT, used to override default
+       prompt.
+       ERC-SEND-CURRENT-LINE: pass ERC-COMMAND-INDICATOR to ERC-DISPLAY-PROMPT.
+
+2003-09-24  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-parse-line-from-server):
+       Ignore empty lines as required by RFC.
+
+2003-09-17  Mario Lang  <address@hidden>
+
+       * erc.el: Add lag time calculation
+
+2003-09-13  Mario Lang  <address@hidden>
+
+       * Makefile, debian/README.Debian, debian/changelog:
+       New debian release
+
+       * erc-notify.el:
+       Call erc-notify-install-message-catalogs on load, not on module init
+
+       * erc.el(erc-update-modules):
+       Use `load' instead of `require'.  XEmacs appears
+       to have the NOERROR arg only sometimes... Strange
+
+       * erc.el: No fboundp if we have a defvar
+
+       * erc.el: Properly defvar erc-ping-handler
+
+2003-09-11  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-setup-periodical-server-ping):
+       check if erc-ping-handler is
+           bound before referencing it
+
+2003-09-10  Mario Lang  <address@hidden>
+
+       * erc.el(erc-cmd-NICK):
+       Warn about exceeded NICKLEN if we know it.
+
+       * erc.el: Make erc-server-PONG obey erc-verbose-server-ping.
+       Cancel old `erc-ping-handler' timer when restablishing connection in 
the same
+       buffer.
+
+       * debian/changelog, Makefile: New debian snapshot
+
+       * erc-dcc.el, erc-xdcc.el:
+       Use new function erc-dcc-file-to-name to convert spaces to underscores
+
+       * erc-xdcc.el: Add autoload for erc-xdcc-add-file
+
+2003-09-08  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: indent fixes and copyright update
+
+       * erc.el:
+       erc-send-ping-interval: New defcustom which defaults to 60.
+       Every 60 seconds, we send PING now.
+       This should fix the "connection silently lost" bug.
+       Please test this change extensively, and report problems.
+
+2003-09-07  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-default-coding-system):
+       Test for undecided and utf-8
+       before setting.
+
+2003-09-01  Mario Lang  <address@hidden>
+
+       * erc.el(erc-modules): Add some more symbols to the set
+
+       * erc.el(erc-modules): Add :greedy t to the set in
+
+       * erc-dcc.el:
+       More autoloads which make dcc autoload upon ctcp dcc query received.
+
+       * erc-dcc.el(erc-cmd-DCC): Add Autoload.
+       (pcomplete/erc-mode/DCC): Ditto, makes DCC autoloadable just by using
+       completion.
+       Also only offer "send" if fboundp make-network-process.
+
+       * erc-autojoin.el: Update copyright
+
+       * erc-autojoin.el(erc-autojoin-add):
+       Only add the channel if it is not already there.
+
+       * erc-notify.el:
+       Use `define-erc-module' instead of old `erc-notify-initialize'.
+       Now defines the global minor mode erc-notify-mode, and should also
+       be controllable via `erc-modules' with symbol `notify'.
+
+       * erc.el(erc-modules):
+       Fix paren-in-column-zero bug in docstring.
+       Add a sort of bogus, but still better :type.
+       Add autojoin and netsplit by default.
+       (erc-update-modules): Don't barf with an error if `require' fails.
+       We can still error out if the mode is not defined.
+
+2003-08-31  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * make 353 (NAMES reply) output go into the appropriate channel buffer
+         (if it exists) or into the active erc buffer (if not).
+
+2003-08-29  mtoledo  <address@hidden>
+
+       * erc.el:
+       Added the variable erc-echo-notices-in-current-buffer to make possible 
display notices in the current buffer (queries to nickserv/chanserv/memoserv). 
Defaults to nil so nothing changes from what we have today.
+
+2003-08-29  Mario Lang  <address@hidden>
+
+       * erc.el: Fix typo in varname which led to a compiler warning
+
+       * AUTHORS: Added lawrence
+
+2003-08-27  Mario Lang  <address@hidden>
+
+       * erc-dcc.el:
+       Set process and file-coding system to 'binary (for Windows)
+
+       * erc-stamp.el: Rename custom group erc-timestamp to erc-stamp.
+
+2003-08-07  Lawrence Mitchell  <address@hidden>
+
+       * erc-fill.el(erc-fill-disable):
+       Remove erc-fill, not erc-fill-static from
+       erc-insert-modify-hook.
+
+2003-08-05  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-send-current-line):
+       Now we display the prompt for previously entered commands
+           based on the value of customization variable erc-hide-prompt.  This 
change is
+           closely related to the immediate previous version by wencem.
+
+2003-08-04  Lawrence Mitchell  <address@hidden>
+
+       * erc.el(erc-send-current-line):
+       If we're sending a command, don't display
+       the prompt.
+
+2003-08-04  Damien Elmes  <address@hidden>
+
+       * erc-track.el: patch from David Edmondson (dme AT dme DOT org)
+
+       This patch makes button 3 on the erc-track buffer names in the
+       modeline show the selected buffer in another window. It's analogous to
+       button 2 which shows the buffer in the current window.
+
+2003-07-31  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-display-line-1):
+       Fixed bad indentation on one line.  No semantic change.
+
+2003-07-29  Lawrence Mitchell  <address@hidden>
+
+       * erc-match.el:
+       Quote open paren in docstring of erc-text-matched-hook
+
+       * erc.el: Anchor match only at beginning in erc-ignored-user-p.
+
+       * erc-button.el: New variable erc-button-wrap-long-urls.
+       Modified erc-button-add-buttons:
+         New optional argument REGEXP.
+         If we're buttonizing a URL and erc-button-wrap-long-urls is
+         non-nil, try and wrap them
+
+       Modified erc-button-add-buttons-1:
+         Pass regexp to erc-button-add-buttons.
+
+2003-07-28  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-network-name):
+       Improved docstring.  Removed an unnecessary call to erc-server-buffer.
+
+2003-07-28  Mario Lang  <address@hidden>
+
+       * erc.el: By lawrence:
+       (erc-ignored-user-p): Use anchored regexp.
+       (smiley): Fix missing quote in `remove-hook' call.
+
+2003-07-26  Francis Litterio  <address@hidden>
+
+       * erc-nets.el, erc-nickserv.el, erc.el:
+       Changed all references to Openprojects into references to Freenode.
+
+2003-07-25  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       Now variable erc-debug-irc-protocol is defvar'ed instead of 
defcustom'ed.
+       Made the docstring clearer too.
+
+       * erc.el: Fixed a wrong-type-argument error from window-live-p.
+
+2003-07-15  Damien Elmes  <address@hidden>
+
+       * erc-log.el(erc-log-setup-logging):
+       set buffer-file-name to "", as (basic-save-buffer)
+           will prompt for a buffer name before invoking hooks. the 
buffer-file-name
+           will be overridden by (erc-save-buffer-in-logs) anyway - the main 
danger
+           of doing this is write-file-contents hooks. Let's see if anyone 
complains.
+       (erc-save-buffer-in-logs): return t, so that further write hooks are 
not run
+
+2003-07-09  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-open-network-stream):
+       -nowait still crashes emacs cvs - disable for now
+
+2003-07-02  Francis Litterio  <address@hidden>
+
+       * erc.el(erc): Minor docstring modification.
+
+2003-07-01  Damien Elmes  <address@hidden>
+
+       * erc-match.el(erc-match-current-nick-p):
+       match only on word boundaries
+
+       * erc-log.el(erc-log-setup-logging):
+       not sure how this crept in again - make sure we set
+           buffer-file-name to nil, since otherwise it is not possible to open
+           previous correspondence in another buffer while a conversation is 
open
+
+2003-06-28  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-network-name):
+       Now makes some intelligent guesses if the server didn't tell
+           us the network name.
+
+2003-06-28  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-default-coding-system): Use utf-8 as the default
+       encoding for outgoing stuff and undecided as the default for
+       incoming stuff.
+       (erc-coding-sytem-for-target): New.
+       (erc-encode-string-for-target): Use it.
+       (erc-decode-string-from-target): Use it.  Removed the flet
+       erc-default-target hack and documented the dynamically bound
+       variable `target' instead.
+
+2003-06-25  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-log-irc-protocol):
+       Now we keep point on the bottom line of the window
+           displaying the *erc-protocol* buffer if it is at the end of the
+           *erc-protocol* buffer.
+
+       * erc.el:
+       Added some text to the docstring for variable erc-debug-irc-protocol.
+
+2003-06-23  Francis Litterio  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-auto-mask-p):
+       Fixed a docstring typo that caused a load-time error.
+
+       * erc-dcc.el(erc-dcc-auto-mask-p):
+       Changed reference to undefined variable erc-dcc-auto-mask-list
+           to erc-dcc-auto-masks.
+       Changed default value of variable erc-dcc-auto-masks to nil and added 
text to its
+           docstring.
+
+       * erc-notify.el(erc-notify-timer and erc-notify-QUIT):
+       Added network name to notify_off message.
+
+       * erc.el(erc-network-name):
+       Now returns the name of the IRC server if the network name
+           cannot be determined.
+
+       * erc-notify.el(erc-notify-JOIN and erc-notify-NICK):
+       Added argument ?m to call to erc-display-message.
+
+       * erc-dcc.el(erc-dcc-do-LIST-command):
+       Fixed a bug where I assumed (plist-get elt :type)
+           returns a string -- it really returns a symbol.
+
+       * erc-notify.el(erc-notify-timer):
+       Now we include the network name in the notify_on message.
+
+       * erc.el:
+       New function: erc-network-name.  Returns the name of the network that 
the
+           current buffer is associate with.  Not every server sends the 005 
messages
+           that enable the network name to be known.  If the network name is
+           not known, the string "UNKNOWN" is returned.
+
+       * erc-dcc.el(erc-dcc-chat-setup):
+       Added a comment.  Fixed a bug where a DCC CHAT buffer has no
+           prompt when it first appears.
+
+       * erc-dcc.el(erc-dcc-chat-parse-output):
+       Now a DCC chat buffer displays the nick using
+           erc-nick-default-face just like in a channel buffer.
+
+2003-06-22  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-display-prompt):
+       Fixed incorrect indentation.  No semantic change.
+
+       * erc.el(erc-strip-controls):
+       Minor change to regexp that matches IRC color control
+           codes.  I was seeing usage as follows: ^C07colored text^C^C04other 
color.
+           Now we strip a ^C followed by zero, one, or two digits.  Before 
this change,
+           we stripped a ^C followed by one or two digits.
+
+       * erc-dcc.el(erc-dcc-do-LIST-command):
+       Improved format of output of /DCC LIST.  Now the
+           "Size" column for a DCC GET includes the percentage of the file 
that has
+           been retrieved.
+       (erc-dcc-do-GET-command): Now it works if erc-dcc-default-directory is 
set.
+
+2003-06-19  Damien Elmes  <address@hidden>
+
+       * erc-log.el:
+       * added quickstart information to the comments up the top
+
+2003-06-16  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Default to open-network-stream on MS Windows. (thanks lawrence)
+
+2003-06-11  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-process-input-line):
+       refactor so that wrong-number-of-arguments is
+           caught when using do-not-parse-args - this lets do-not-parse-args
+           commands display help messages on incorrect syntax in a uniform 
manner.
+           This no longer raises a bad-syntax error - was this a catch-all to 
stop a
+           backtrace? Does it belong?
+       (erc-cmd-APPENDTOPIC): the correct way to display help when you want to
+           accept an arbitrary string is to (signal 'wrong-number-of-arguments 
nil).
+           This fixes a bug where people could not /at topics with a space in 
them.
+
+2003-06-09  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       Re-add the last few changes which weren't merged for some reason.
+
+       * erc.el(erc-cmd-APPENDTOPIC): show help when given no arguments
+
+       Patch from MrBump. Fixes problem with erc-set-topic inserting ^C 
characters
+       into the topic. Also removes dependency on CL.
+
+2003-06-08  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       Added comment to explain (eval-after-load "erc" '(erc-update-modules)).
+
+2003-06-01  Mario Lang  <address@hidden>
+
+       * erc-pcomplete.el: Add completion for /unignore
+
+2003-05-31  Alex Schroeder  <address@hidden>
+
+       * erc-compat.el(erc-encode-coding-string): The default binding,
+       if encode-coding-string was not available, must be a defun that
+       takes multiple arguments.  Did that.
+
+2003-05-30  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Add handlers for 313 and 330 (by address@hidden, thanks)
+
+2003-05-30  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       patch from MrBump to make /mode #foo +b work again (erc-cmd-BANLIST only
+       temporarily changes them now)
+
+2003-05-29  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-select):
+       server is now defaulted with erc-compute-server.
+       A few cosmetic fixes.
+       (erc-default-coding-system): Renamed from erc-encoding-default.
+       (erc-encoding-default): Renamed to erc-default-coding-system.
+       (erc-encoding-coding-alist): Documentation updated to cover regexps.
+       (erc-encode-string-for-target): Now considers keys of
+       erc-encoding-coding-alist to be regexps.  Rely on erc-compat
+       wrt. MULE support.
+       (erc-decode-string-from-target): New function.
+       (erc-send-current-line): eq -> char-equal fix.
+       (erc-server-TOPIC): topic is now decoded with
+       erc-decode-string-from-target.
+       (erc-parse-line-from-server): Line from server is no longer decoded
+       here.
+       (erc-server-PRIVMSG-or-NOTICE): Message from a user is decoded here,
+       sspec -> sender-spec for clarity.  Cosmetic if -> when fix.
+       (erc-server-TOPIC): sspec -> sender-spec
+       (erc-server-WALLOPS): Ditto.
+
+       * erc-compat.el(erc-decode-coding-string):
+       Now requires coding-system as an argument.
+
+2003-05-15  Mario Lang  <address@hidden>
+
+       * erc.el:
+       erc-part|quit-hook is only run on a part|quit directed to our nick, 
reflect that in the docstring to avoid confusion
+
+2003-05-01  Andreas Fuchs  <address@hidden>
+
+       * erc-truncate.el:
+       * erc-truncate-buffer-to-size: use fboundp. Scheme takes its toll...
+
+2003-05-01  Jorgen Schaefer  <address@hidden>
+
+       * erc-truncate.el: remove require of erc-log
+       (erc-truncate-buffer-to-size): use erc-save-buffer-in-logs when it's
+       there, else, don't.
+
+2003-04-29  Andreas Fuchs  <address@hidden>
+
+       * erc-log.el, erc-truncate.el, erc.el: erc.el:
+               * erc-cmd-QUIT: Remove references to code in erc-log.el, to
+                 not force autoloading of erc-log.el
+               * erc-server-PART: ditto.
+               * erc-quit-hook: new hook, run when /quit command is
+                 processed.
+               * erc-cmd-QUIT: use it.
+               * erc-part-hook: new hook, run then PART message is
+                 processed.
+               * erc-cmd-PART: use it.
+               * erc-connect-pre-hook: new hook, run before connection to IRC
+                 server is started.
+               * erc: use it.
+               * erc-max-buffer-size: Move truncation variables and functions
+                 to erc-truncate.el
+               * erc-truncate-buffer-on-save: moved to erc-log.el
+               * erc-initialize-log-marker: new function.
+       * erc-log.el:
+               * erc-truncate-buffer-on-save: New defcust here; from erc.el
+               * erc-truncate-buffer-on-save: Put it in group `erc-log'
+               * erc-log-channels-directory: Remove trailing slash from
+                 default value.
+               * Add functions to erc-connect-pre-hook, erc-part-hook and
+                 erc-quit-hook to avoid getting autoloaded.
+
+       * erc-truncate.el:
+               * Contains the truncation functions and defcusts from erc.el.
+               * define-erc-module clause added; new erc-truncate-mode.
+
+2003-04-29  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc):
+       Check whether erc-save-buffer-in-logs is bound, too
+
+       * erc.el(erc):
+       Check whether erc-logging-enabled is bound before using it - not
+       everyone is using erc-log.el!
+
+2003-04-28  Andreas Fuchs  <address@hidden>
+
+       * erc-log.el:
+       * while we're at it, remove the (declare (ignore ignore)) statements.
+
+       * erc-log.el:
+       * add autoload statement for erc-log-mode/etc. Sorry for the delay.
+
+       * erc-log.el, erc.el: * erc.el:
+               - move variables and functions to erc-log.el:
+                        defgroup `erc-log'
+                        defcustom `erc-log-channels-directory'
+                        defcustom `erc-log-insert-log-on-open'
+                        defcustom `erc-generate-log-file-name-function'
+                        defun `erc-save-buffer-in-logs' (autoloads from 
erc-log.el)
+                        defuns `erc-generate-log-file-name-*'
+                        defun `erc-current-logfile'
+                        defun `erc-logging-enabled' (autoloads from erc-log.el)
+               - erc-truncate-buffer-to-size: fix for double-saving bug when
+                 writing out truncated buffer contents. Thanks, lawrence 
mitchell <address@hidden>!
+               - erc-remove-text-properties-region: Fix case for read-only 
text.
+               - erc-send-current-line: update insert-marker before calling 
the hooks.
+                                        also, wrap (erc-display-prompt) so 
that it doesn't toggle
+                                        buffer-modified-p.
+               - erc-interpret-controls: remove /very/ old commented-out 
function
+               - erc-last-saved-position: make it a marker
+               - erc: use it.
+
+       * erc-log.el: (thanks, lawrence mitchell <address@hidden>!)
+               - Move logging code from erc.el here
+               - define-erc-module log: add; minor mode erc-log-mode is the
+                 same as adding the `erc-save-buffer-in-logs' to
+                 erc-send-post-hook and `erc-insert-post-hook'.
+               - erc-w32-invalid-file-characters: add.
+               - erc-enable-logging: add.
+               - erc-logging-enabled: use it.
+               - erc-logging-enabled: autoload.
+               - erc-save-buffer-in-logs: fix for truncating saved buffer with 
read-only text.
+               - erc-save-buffer-in-logs: use erc-last-saved-position.
+               - erc-save-buffer-in-logs: fix saving half-written messages on
+                 the prompt when saving the log file. (simply uses
+                 erc-insert-marker as an upper bound for saving).
+
+2003-04-27  Damien Elmes  <address@hidden>
+
+       * erc.el: erc-modules: added
+
+2003-04-27  Alex Schroeder  <address@hidden>
+
+       * Makefile(UNCOMPILED): Added erc-compat.el.
+       (clean): Remove .elc files, too.
+       Patch by Hynek Schlawack <address@hidden>
+
+2003-04-22  Damien Elmes  <address@hidden>
+
+       * erc-button.el:
+       erc-button-keymap: set the parent keymap to erc-mode-map
+
+2003-04-20  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       erc-official-location: shouldn't the official location be the base URL 
of erc?
+
+       * erc.el:
+       erc-modules: updated the docstring to make the semantics clearer
+
+2003-04-19  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fix problem where % in NOTICE produced errors (from mmc)
+
+2003-04-18  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-toggle-debug-irc-protocol):
+       moved a reference to 'buf' inside the let
+           statement which defines it. it's difficult to tell what the original
+           intentions were here - at the moment the debug window is displayed 
when
+           toggling either way.
+
+       * README, erc.el:
+       (erc-update-modules: added a condition in for erc-nickserv -> 
erc-services
+
+       * erc-pcomplete.el:
+       - that change to erc-update-modules making it require the modules first 
means
+         we don't need any special case handling here, so i reverted the 
previous
+         change
+
+       * erc.el:
+       - don't require 'erc-auto, since windows users don't have access to 
make.
+         instead, we handle it in (erc-update-modules)
+
+2003-04-17  Damien Elmes  <address@hidden>
+
+       * README, Makefile:
+       Updated Makefile and documentation to reflect the new release
+
+       * erc.el:
+       - note the previous change also updated the release number to erc 4.0!
+       (erc-connect): fix a bug introduced by the previous release
+
+       * erc.el:
+       fixed about 20 instances of (message (format ...)) which will break if 
the
+       format returns a string with %s in it
+
+       * erc.el: erc-error-face: make it red, not pink
+
+       * erc-pcomplete.el:
+       since pcomplete is autoloaded via erc-completion-mode, and completion 
is in
+       erc-modules by default, we remove completion when pcomplete is added
+
+       * erc.el(define-erc-module): no need for delete, use delq
+
+       * erc-members.el(erc-nick-channels):
+       (erc-person-channels) takes one arg
+       (erc-format-user): again, they all take an arg
+
+       * erc.el:
+       - require erc-auto when loading, so the default `erc-modules' can be 
loaded.
+         this makes erc-auto no longer a convenience but a necessity - all the 
name
+         of user friendliness.
+       (define-erc-module): the enable and disable routines now update 
erc-modules
+           accordingly
+       erc-modules: new variable controlling the modules which erc has 
loaded/will
+           load. when customizing, it will automatically enable modules. it 
won't
+           automatically disable modules which are removed, yet.
+       (erc-update-modules): enable all modules in `erc-modules'
+
+       * erc-dcc.el(erc-dcc-open-network-stream):
+       use the -nowait equiv if available
+       erc-dcc-server-port: removed
+       erc-dcc-port-range: allows a range of values, so you can have more than 
one
+           dcc
+       (erc-dcc-server): support erc-dcc-port-range
+       (erc-dcc-chat): use OCHAT for outgoing chat for now. we need to fix the
+           issues with allowing more than one chat with the same person
+
+       * erc.el:
+       erc-log-channels: removed; set the directory to start logging
+       (erc-directory-writeable-p): create directory if it doesn't exist, 
check if
+           it's writable
+       (erc-logging-enabled): don't reference erc-log-channels
+
+2003-04-07  Damien Elmes  <address@hidden>
+
+       * erc.el(erc):
+       but when inserting the contents of a previous logfile, use the logfile
+           name, not ""!
+
+       * erc.el(erc):
+       set buffer-file-name to "", since we have a custom saving function and
+           it's not needed. this enables one to open a log file with previous
+           correspondence, while talking to the person at the same time
+
+2003-03-29  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-prepare-mode-line-format):
+       Now strips all text properties from the target before
+           putting it in the mode line.  Keeps the mode line looking 
consistent.
+       (erc-channel-p): Improved docstring.
+
+2003-03-28  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-generate-log-file-name-with-date): New function.
+       (erc-generate-log-file-name-function): Make it available.
+
+2003-03-24  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fix erc-prompt and erc-user-mode custom :type (Closes: #185794)
+
+2003-03-20  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       erc-server-hook-list: correct documentation of ordering of (proc parsed)
+
+2003-03-16  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-modified-channels-string):
+       Make it a risky-local-variable.
+
+2003-03-16  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el(erc-track-modified-channels):
+       Use (point-min) if we don't find a
+       parsed-property, so it won't error out with nil...
+
+2003-03-16  Damien Elmes  <address@hidden>
+
+       * erc-track.el(erc-track-switch-buffer):
+       removed call to erc-modified-channels-update, as
+           this is done correctly on buffer switching in both emacs and xemacs 
now
+
+2003-03-15  Damien Elmes  <address@hidden>
+
+       * erc-track.el(erc-find-parsed-property):
+       simplified a little, so it shouldn't return nil anymore
+
+       * erc.el: erc-send-post-hook: document narrowing which occurs
+
+2003-03-14  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-find-parsed-property): New function.
+       (erc-track-modified-channels): Use it instead of relying on
+       point-min.
+
+2003-03-12  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fix erc-set-topic to accept a channel name as first word
+
+2003-03-11  Jorgen Schaefer  <address@hidden>
+
+       * erc-dcc.el:
+       Small patch (<10 lines, also slightly modified by Jorgen Schäfer) from
+       David Spreen <address@hidden> to add hostmask-authentication to
+       DCC auto-accept.
+
+       erc-dcc-auto-mask-list: New variable
+       (erc-dcc-handle-ctcp-send): Check erc-dcc-auto-mask-list
+       (erc-dcc-auto-mask-p): New function
+       erc-dcc-send-request: Docstring now mentions erc-dcc-auto-mask-list
+
+2003-03-10  Francis Litterio  <address@hidden>
+
+       * erc-ring.el(erc-clear-input-ring):
+       New function.  Erases the contents of the input ring for
+          the current ERC buffer.
+
+2003-03-08  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       (erc-display-line-1) and (erc-send-current-line): Now these functions 
reset erc-insert-this
+           to t as soon as possible after consuming the value of that 
variable.  See the comments in
+           the code for the strange symptom this fixes.
+       (erc-bol): Changed to call point-at-eol instead of line-end-position.  
This increases XEmacs
+           portability, since XEmacs doesn't have line-end-position.  Patch 
suggested by Scott Evans
+           on the ERC mailing list.
+
+2003-03-04  Damien Elmes  <address@hidden>
+
+       * erc.el: banlist*: patch from mrbump to avoid using cl packages
+
+2003-03-04  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       Changed erc-noncommands-list from a constant to variable, so that users 
can
+           add their own erc-cmd-* functions to the list.  Improved the 
docstring too.
+
+2003-03-02  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-server-353):
+       Now the output of "/NAMES #channel" appears in the currently
+           active ERC buffer, even if the user is not a member of #channel.
+
+       * erc.el(erc-cmd-DEOP):
+       Fixed a syntax error: invalid read syntax ")" caused by my last change.
+
+2003-03-01  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-cmd-DEOP):
+       Fixed a wrong-type-argument error caused by calling split-string
+           on a list instead of on a string.  Removed the call to split-string 
entirely,
+           because it wasn't needed.
+
+       * erc.el(erc-cmd-HELP):
+       Changed to use intern-soft instead of intern.  Now "/HELP floob"
+           doesn't create a void function symbol erc-cmd-FLOOB.
+
+2003-02-25  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-SERVER):
+       remove erroneous references to line, use server instead
+
+2003-02-23  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-toggle-debug-irc-protocol):
+       Fixed a bug where the global value of
+           kill-buffer-hook was being modified instead of the buffer-local 
value.
+
+2003-02-22  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-cmd-KICK):
+       Now supports any number of words in the REASON string.  Examples
+           of the /KICK command are:
+             /KICK franl You don't belong here
+             /KICK franl Bye
+             /KICK franl
+             /KICK #channel franl Go away now
+             /KICK #channel franl Bye
+             /KICK #channel franl
+
+2003-02-16  Jorgen Schaefer  <address@hidden>
+
+       * erc-stamp.el(erc-insert-timestamp-right):
+       Make the timestamp rear-nonsticky, so
+       C-e works at the beginning of the next line.
+
+2003-02-16  Andreas Fuchs  <address@hidden>
+
+       * erc-stamp.el:
+       * s/choose/choice/ in customize options, as kensanata requested.
+
+2003-02-15  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-toggle-debug-irc-protocol):
+       Now if the *erc-protocol* buffer is killed,
+           logging is turned off.  Prior to this change, the buffer would come 
back
+           into existence (generally unbeknownst to the user) after being 
killed.
+
+2003-02-11  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-send-current-line):
+       we can't inhibit everything here when not connected,
+           as the user will expect commands like /server still to work. the
+           erc-cmd-handler should recover from errors instead
+
+2003-02-10  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       * we now run erc-after-connect on 422 (no motd) messages as well as the 
motd
+         messages
+       (erc-login): revert the previous change
+
+       * erc.el(erc-login): register that we're connected
+
+2003-02-10  Mario Lang  <address@hidden>
+
+       * erc-members.el: * Provide erc-members
+       * Fix excessive )
+       * Comment out broken self-tests
+
+2003-02-07  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-connect):
+       notify the user we're trying to connect when using asych
+           connections
+
+       * erc.el(erc-connect): support an asynchronous connection
+       (erc-process-sentinel): ditto
+
+       * erc-track.el:
+       * advise switch-to-buffer in the case of xemacs, since it doesn't have
+         window-configuration-change-hook
+
+       * erc.el(erc-send-current-line):
+       if not connected, refuse to send either a message or
+           a command
+
+       * erc.el: (erc-save-buffer-in-logs):
+           - check for a sensible region before saving the buffer. if the
+             connection process is killed early on, there is not a sensible 
region
+             to save
+           - don't set buffer-file-name on save. we don't need it, and it 
means we
+             can now find-file a log while an existing query is open with that
+             user
+
+       * erc.el(erc-process-input-line):
+       when displaying the help for a function, if no
+           documentation exists, don't fall over
+       (erc-cmd-SAY): new function for quoting lines beginning with /
+       (erc-server-NICK):
+           - fix a bug where the "is now known as" message doesn't appear on 
newly
+             created /query buffers
+           - when a user changes their nick, update the query to point to the 
new
+             nick
+
+       * erc.el(erc-send-current-command):
+       don't reject multi-line commands. since
+           multiline-p is used as the no-command arg to 
erc-process-current-line,
+           multi-line text is never interpreted as a command. i believe this 
is the
+           correct behavior - it allows people to post the output of things 
like df
+           (sans header). if you want to change this, please provide a 
rationale
+           in the changelog
+
+       * erc.el(erc-send-current-line):
+       only match the first line when determining if a
+           multi-line command is allowed
+
+2003-02-07  Jorgen Schaefer  <address@hidden>
+
+       * erc-bbdb.el(erc-bbdb-highlight-record):
+       Use alternate strings, not character
+       classes to split the nick-field.
+
+2003-02-06  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-process-sentinel):
+       Now we set erc-connected to nil every time we disconnect
+           from a server, not just when an unexpected disconnect happens.
+
+       * erc.el(erc-connected):
+       Removed redundant defvar of this variable.  Improved the
+           docstring.
+       (erc-login): Changed to send a correct RFC2812 USER message (see section
+           3.1.3 of RFC2812 for the documentation of the semantics of each 
argument
+           of the USER message.
+
+2003-02-02  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-NOTICE): fix from mrbump
+
+2003-01-31  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-cmd-JOIN):
+       Now we only send one JOIN command to the server when a channel
+           key is provided.
+
+2003-01-30  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-remove-channel-member):
+       Fixed so that it runs erc-channel-members-changed-hook
+           with the channel buffer current, as is documented in the docstring 
for variable
+           erc-channel-members-changed-hook: "The buffer where the change 
happened is
+           current while this hook is called."
+
+2003-01-28  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       (erc-ignored-user-p),(erc-cmd-IGNORE),(erc-cmd-UNIGNORE): Now nicks are 
ignored
+           on a per-server basis.  Now, erc-ignore-list is only valid in server
+           buffers!  Do not reference it in channel buffers.
+
+       * erc.el(erc-cmd-IGNORE):
+       Now says "Ignore list is empty" if it erc-ignore-list is empty
+           instead of showing an empty list.
+
+2003-01-25  Alex Schroeder  <address@hidden>
+
+       * erc-nickserv.el(services): Defined a module
+
+2003-01-25  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-process-ctcp-query):
+       Display recipient of CTCP query if it's not
+       our current nick.
+
+       * erc.el(erc-cmd-WHOIS):
+       Accept an optional second argument SERVER.
+
+2003-01-25  Alex Schroeder  <address@hidden>
+
+       * erc-stamp.el(stamp): erc-add-timestamp must always be added
+       with the APPEND parameter -- not only when adding it on the right.
+
+2003-01-24  Alex Schroeder  <address@hidden>
+
+       * erc-members.el(erc-channel-members-changed-hook): Obsolete, use
+       erc-members-changed-hook instead.  When it is set, add its content
+       to erc-members-changed-hook.
+       (erc-update-channel-member): Obsolete, use erc-update-member
+       instead.  Defalias to that effect.
+       (erc-remove-channel-member): New and already obsolete.  Use
+       erc-remove-nick-from-channel instead.
+       (erc-update-channel-info-buffer): Obsolete, use ignore instead.
+       Yes, these have to go.
+       (erc-channel-member-to-user-spec): Obsolete, use erc-format-user
+       instead.
+       (erc-format-user): New.
+       (erc-ignored-reply-p): New, use it.
+
+       * erc-members.el:
+       Further along the way.  Any function from erc.el that uses
+       channel-members should end up in this file, rewritten to use
+       erc-members.
+
+       (erc-person): Call erc-downcase before getting
+       something from the hash.
+       (erc-nick-in-channel): Checking whether erc-process must be used is
+       unnecessary -- this will be done in erc-person.
+       (erc-nick-channels): New.
+       (erc-add-nick-to-channel, erc-update-member): Call erc-downcase
+       before putting something into the hash.
+       (erc-buffer-list-with-nick): New.
+       (erc-format-nick, address@hidden): New, backwards incompatible.
+       Must check for other places that call these!
+       (erc-server-PRIVMSG-or-NOTICE): Use the new version.
+
+       * erc-compat.el(view-mode-enter): defalias to view-mode, if
+       view-mode-enter is not fboundp and view-mode is -- as is the case
+       in XEmacs.  We need view-mode-enter in erc-match.el.
+
+2003-01-23  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-default-server-handler):
+       Minor performance improvement: allow the lambda
+           expression to be byte-compiled.
+
+2003-01-23  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-BANLIST):
+       in the absence of a fill-column, use the screen width
+
+2003-01-22  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       patch from MrBump to delay fetching the banlist until /bl is run, so we 
don't
+       fetch it when joining a channel anymore
+
+       * erc-ring.el:
+       * instead of adjusting hooks when loaded, provide (erc-ring-mode). 
you'll
+         need to run (erc-ring-mode 1) now to get the ring
+       * (erc-previous-command), (erc-next-command):
+           - check if the ring exists and create it if necessary
+           - don't do anything if the ring is empty
+
+       * erc-pcomplete.el:
+       Put "how to use" documentation in the comments up the top
+
+2003-01-21  Alex Schroeder  <address@hidden>
+
+       * erc-autojoin.el(erc-autojoin-version): New.
+
+       * erc-autojoin.el(erc-autojoin-add): Added body.
+       (erc-autojoin-remove): Added body.
+       (erc-autojoin): Provide it.
+
+2003-01-21  Damien Elmes  <address@hidden>
+
+       * erc.el: erc-cmd-*: removed a bunch of references to force
+
+2003-01-21  Alex Schroeder  <address@hidden>
+
+       * erc-autojoin.el(erc-autojoin-channels-alist): More doc.
+
+2003-01-20  Alex Schroeder  <address@hidden>
+
+       * erc-autojoin.el:
+       new, based on resolve's mail, and the stuff on the wiki
+
+       * erc-members.el: new
+
+2003-01-19  Mario Lang  <address@hidden>
+
+       * debian/README.Debian, debian/changelog, debian/scripts/install,
+         debian/scripts/startup.erc, Makefile:
+       Prepare for 20030119 debian package
+
+       * erc-dcc.el: <rant>
+       * (erc-decimal-to-ip): Since XEmacs decides that return a completely
+       and utterly wrong number from string-to-number if it is larger than
+       the integer boundary, instead of sanely converting the thing to
+       a float, we now (concat dec ".0").
+       </rant>
+
+       * erc.el:
+       * (erc-log-irc-protocol): Use erc-propertize, not propertize
+
+2003-01-19  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-button-add-buttons): Added regexp-quote for
+       the list case, too.
+
+2003-01-19  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-member): fix for case where a prop is nil
+
+       * erc-dcc.el(erc-dcc-member):
+       fix for xemacs's version of plist-member
+
+2003-01-19  Mario Lang  <address@hidden>
+
+       * erc-notify.el: Delete empty strings from the ison-list
+
+       * erc-track.el:
+       * (erc-track-switch-buffer): Call erc-modified-channels-update here.
+
+       * erc-track.el: * toplevel: require 'erc-match
+
+       * erc-track.el: * (erc-track-mode): Make autoload interactive
+
+       * erc-button.el: * (button): Make the autoload interactive
+
+       * erc.el:
+       * (erc-mode): Comment out the case-table stuff, breaks xemacs
+       * (erc-downcase): Revert.
+
+       * erc-dcc.el:
+       * (erc-dcc-handle-ctcp-send): Use erc-decimal-to-ip on the ip we get...
+
+       * erc-speak.el:
+       Eliminate reference to erc-nick-regexp, which no longer exists
+
+2003-01-19  Alex Schroeder  <address@hidden>
+
+       * erc-stamp.el(erc-timestamp-right-column): New, default nil.
+       (erc-insert-timestamp-right): Use it, if non-nil.  Verbose
+       doc string.
+
+2003-01-18  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-downcase): Use the old behavior in non-CVS Emacs.
+
+       * erc.el(erc-cmd-QUIT): Remove &rest. The correct fix follows.
+       (erc-cmd-GQUIT): Pass "" to erc-cmd-QUIT.
+       (erc-mode): Use the case-table only in CVS Emacs. See comment.
+
+       * erc.el(erc-cmd-QUIT): make reason optional.
+
+       * erc.el(erc-cmd-GQUIT): Fixed typo.
+
+2003-01-17  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-current-logfile): call expand-file-name, so that downcase 
doesn't mess up ~
+
+       * erc.el: * (erc-mode): Define a proper case-table.
+       * (erc-downcase): just call downcase for now, let's see if the 
case-table is portable, if yes, we'll remove all erc-downcase references 
anyway...
+
+       * erc-button.el: * (erc-button-add-buttons): regex-quote the nick
+
+2003-01-17  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(button): erc-channel-members-changed-hook no
+       longer has erc-recompute-nick-regexp.
+       (erc-button-alist): Use channel-members instead of
+       erc-nick-regexp.
+       (erc-button-add-buttons): Split some code into
+       erc-button-add-buttons-1, and now handle strings, lists, and
+       alists.  Regular expressions in lists and alists are enclosed in
+       < and >.
+       (erc-button-add-buttons-1): New.
+       (erc-nick-regexp): Deleted.
+       (erc-recompute-nick-regexp): Deleted.
+
+       * erc-button.el: Remove require cl again.
+       (erc-mode-map): No longer bind widget-backward and widget-forward.
+       (erc-button-alist): Explain why byte-compiling makes no sense, and
+       remove all calls to byte-compile.
+       (erc-button-keymap): Define it the standard way, without exposing
+       the list nature of the keymap.
+       (erc-button-marker-list): Deleted.
+       (erc-button-add-buttons): Simplify.  In particular, create the
+       button using the real callback, instead of using the intermediate
+       erc-button-push, and only store the data as described for
+       erc-button-alist.
+       (erc-button-remove-old-buttons): Simplify.  No more list munging.
+       Instead, just remove all the properties that we add in
+       erc-button-add-button.
+       (erc-widget-press-button): Deleted.
+       (erc-button-click-button): New, for mouse clicks.  Moves point to
+       where the mouse is, and calls erc-button-push.
+       (erc-button-push): Instead of matching again, just use the
+       erc-callback and erc-data properties at point to do the right
+       thing.
+       (erc-button-entry): Deleted.
+       (erc-button-next): Use error instead of the beep plus message
+       combo.
+
+2003-01-17  Jorgen Schaefer  <address@hidden>
+
+       * erc-autoaway.el(erc-autoaway-set-back):
+       Don't pass a force argument to erc-cmd-GAWAY.
+
+       * erc.el(erc-cmd-AWAY): Removed usage of the force variable.
+
+2003-01-17  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(button):
+       erc-recompute-nick-regexp is no longer added to
+       erc-channel-members-changed-hook unconditionally, but only if
+       erc-button-mode is enabled, and if it is disabled, it is removed
+       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,
+       so another solution needs to be found.
+
+2003-01-17  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-banlist-store):
+       Don't assume there's always a setter in the banlist reply.
+
+2003-01-17  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-button-url-regexp): Changed regexp according
+       to a suggestion by Max Froumentin <address@hidden>.
+
+2003-01-17  Mario Lang  <address@hidden>
+
+       * erc.el:
+       fix erc-remove-channel-member again to not error out on nil as first 
arg...
+
+       * erc.el: * (erc-occur): New function
+
+2003-01-17  Damien Elmes  <address@hidden>
+
+       * erc.el: erc-banlist-*: return nil so further hooks are called
+
+       * erc.el(erc-server-368):
+       suppress "end of ban list" messages - use /listbans now
+
+       * erc.el(erc-send-current-line):
+       removed the check for leading whitespace again - the
+           only time we want to prohibit multi-line commands is if / is the 
first
+           thing on the line
+       (erc-get-arglist): new defun for reading a function's arglist which 
should
+           work with older copies of emacs. we use help-function-arglist if 
it's
+           available, though, since that has support for reading subrs, etc
+
+       * erc.el(erc-cmd-JOIN): fixed (again)
+
+       * erc.el: * fixed call to erc-cmd-NICK when connecting
+       * support for listing bans and mass unbanning, again thanks to MrBump
+
+       * erc.el(erc-set-topic):
+       patch from MrBump (Mark Triggs, address@hidden) to strip
+           control chars and topic attribution in C-c C-t
+
+2003-01-16  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-remove-channel-member): Do not use delq, modify the list using 
setcdr like delq does.
+       In theory, this should be way faster since the list doesn't get 
traverse two times.
+       Measurement didn't show any real difference though :(, this system is 
flawed for channels with >300 users it seems...
+       Also moved some defcustoms up.
+
+2003-01-16  Brian P Templeton  <address@hidden>
+
+       * erc.el: moved misplaced paren
+
+2003-01-16  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-UNIGNORE):
+       reference argument directly - no string matching
+
+       * erc.el(erc-extract-command-from-line):
+       hmm, thinko in the canonicalization. should
+           be fixed
+
+2003-01-16  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-send-current-line):
+       Changed the regexp used to match /COMMANDs so that leading
+           whitespace is taken into account.
+
+2003-01-16  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: * (erc-dcc-do-SEND-command): Fix it
+
+       * erc-ezbounce.el, erc-lang.el: Arglist changes...
+
+       * erc.el: Various docstring fixes and additions.
+
+       * erc-notify.el:
+       * (erc-cmd-NOTIFY): Change the function arglist to (&rest args)
+
+       * erc-netsplit.el: * (erc-cmd-WHOLEFT): Has no args...
+
+2003-01-16  Damien Elmes  <address@hidden>
+
+       * erc-fill.el:
+       erc-fill-column: default to 78, so things like docstrings don't get 
wrapped
+           in an ugly manner
+
+2003-01-16  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-cmd-default): Take a substring, now /mode works again.
+       * (erc-cmd-AWAY): Put do-not-parse-args t
+       * (erc-cmd-GAWAY): Ditto, and fix it.
+       * (erc-cmd-CTCP): Switch to argument system.
+       * (erc-cmd-KICK): Do the same.
+
+2003-01-15  Mario Lang  <address@hidden>
+
+       * erc-dcc.el:
+       * (erc-cmd-DCC): Fixed for the new scheme, simplified.
+       * (erc-dcc-do-CHAT-command): Ditto.
+       * (erc-dcc-do-CLOSE-command): Ditto.
+       * (erc-dcc-do-LIST-command): Ditto.
+
+2003-01-15  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       erc-error-face: setting a background doesn't work so well with 
multi-line
+           messages, so we don't. fg color is negotiable ;-)
+       (erc-cmd-QUERY): fixed, new doco, suppress (erc-delete-query) until we 
fix it
+       (erc-send-current-line): allow multi-line messages provided they don't 
start
+           with a slash - there's no need to prohibit them if the slash isn't 
the
+           first character
+
+       * erc.el: * bad-syntax now reports like incorrect-args
+       * bunch of extra cmds fixed, nick, sv etc.
+
+       * erc.el(erc-cmd-HELP): fixed
+       (erc-extract-command-from-line): when determining canon-defun, make 
sure we
+           have a valid symbol
+       (erc-cmd-KICK): fixed
+
+       * erc.el:
+       * removed duplicate do-no-parse-args properties for the defaliased 
defuns
+       (erc-process-input-line): show function signature when incorrect args
+       (erc-extract-command-from-line): canonicalize defaliases before 
extracting
+           plist
+       (erc-cmd-CLEAR): fixed
+       (erc-cmd-UNIGNORE): fixed again
+
+       * erc.el(erc-cmd-SET): fixed
+       (erc-cmd-UNIGNORE): fixed
+       (erc-process-input-line): report when incorrect arguments are provided 
to a
+           command, and show the command's docstring
+
+       * erc.el(erc-cmd-APPENDTOPIC): fixed
+       (erc-process-input-line): more informative error message than 'bad 
syntax'
+
+2003-01-15  Mario Lang  <address@hidden>
+
+       * erc.el: * (erc-cmd-IGNORE): fixed
+
+       * erc.el: * (erc-cmd-NAMES): fixed
+
+       * erc.el:
+       * (erc-cmd-CLEARTOPIC): Simplify, fix doc, make interactive
+
+2003-01-15  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-JOIN):
+       correct invite behavior, and document it.
+
+2003-01-15  Mario Lang  <address@hidden>
+
+       * erc.el: * (erc-cmd-PART): Put 'do-not-parse-args t
+
+2003-01-15  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-cmd-JOIN): new cmd argument syntax
+       (erc-process-input-line): check if (erc-extract-command-from-line) 
returned a
+           list, and apply if that's the case
+
+       * erc.el:
+       erc-cmd-*: remove optional force and references to `force' in the code
+       (erc-cmd-AMSG): call erc-trim-string, not trim-string
+
+2003-01-15  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-cmd-CLEARTOPIC): LINE is now ARGS and already parsed.
+       Set erc-cmd-TOPIC to 'do-not-parse-args for now.
+       (comment: I think we should have 'first, so that only first word is 
parsed...
+        Or we could autodetect erc-channel-p in the parser before that 
somehow...)
+
+       * erc.el: * (erc-cmd-OP): LINE is PEOPLE now, and already parsed.
+
+       * erc-notify.el:
+       * (erc-cmd-NOTIFY): Arg LINE is now ARGS, and already parsed.
+
+2003-01-15  Jorgen Schaefer  <address@hidden>
+
+       * erc-stamp.el(erc-insert-timestamp-right):
+       Prefer erc-fill-column to window-width,
+       because on wide screens the timestamp could wander off too far to the
+       right.
+
+2003-01-15  Mario Lang  <address@hidden>
+
+       * erc.el: This is the "everything is suddenly broken!" release
+       You know, this is CVS, you can still go back, and wait until the 
transition
+       is finished, but here is patch one, which basically breaks every command
+       which is typed on the prompt.
+       Hit me, we can still revert, but something needs to be done about this.
+       * (erc-extract-command-from-line): intern-soft the function here.
+       If the function symbol has a property 'do-not-parse-args, operate as 
before,
+       otherwise, split the arguments prior to calling the command handler.
+       * (erc-process-input-line): Updated to accommodate the change above.
+       * (erc-send-distinguish-noncommands): Ditto.
+       * (erc-cmd-NAMES): Ditto.
+       * (erc-cmd-ME): Put 'do-not-parse-args property.
+
+       * erc-dcc-list: Renamed
+       * (erc-dcc-member). Treat :nick as either a address@hidden or nick,
+       do appropriate comparisons, simplified.
+       * (erc-dcc-list-add): New functions
+       various callers of (cons (list ...) erc-dcc-list) updated.
+       Other stuff I'm too bored to document now
+
+2003-01-15  Jorgen Schaefer  <address@hidden>
+
+       * erc-stamp.el(erc-insert-timestamp-right):
+       Removed redundant code that overrid the
+       window-width. Now subtracts (length string) from every found
+       indentation positions.
+
+2003-01-14  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-cmd-AMSG): Remove useless call to erc-display-message.
+
+       * erc-dcc.el:
+       * erc-dcc-chat/send-request: New variables, control how to treat
+       incoming dcc chat or send requests. Can be set to 'ask, which behaves
+       like it did before, 'auto, which accepts automatically, and
+       'ignore, which ignores those type of requests completely.
+       * (erc-cmd-CREQ): New user-level command.
+       * (erc-cmd-SREQ): Ditto.
+
+       * erc.el: * (erc-cmd-AMSG). New command.
+
+       * erc-xdcc.el: * (erc-xdcc): delete empty strings from ARGS
+
+       * erc-dcc.el: * erc-dcc-ipv4-regexp: New constant
+       * (erc-ip-to-decimal): Use it.
+       * erc-dcc-host:valid-regexp erc-dcc-ipv4-regexp:
+       * erc-dcc-host: :type
+       * (pcomplete/erc-mode/DCC): Add completion for GET and CLOSE.
+       * Some docstring/comment fixes.
+
+       * erc-stamp.el:
+       * (erc-insert-timestamp-right): Subtract (length string) from
+       POS in any case, otherwise, linewrap occurs.
+
+       * erc-dcc.el:
+       * Fixed the unibyte-multibyte problem (now a dcc get buffer is 
(set-buffer-multibyte nil),
+         and saves correctly (tried with 21.3.50)). Thanks to Eli for 
suggesting it!
+       * Added :start-time plist property/value to GET handling so that we can 
calculate elapsed-time.
+       * Some (unwind-protect (progn (set-buffer ...) ...)) constructs 
replaced with (with-current-buffer ...)
+
+2003-01-13  Mario Lang  <address@hidden>
+
+       * erc-xdcc.el:
+       * erc-xdcc-help-text: New variable which makes replies to the originator
+       much more flexible.
+       * erc-xdcc-help-format: Removed.
+       * (erc-xdcc-help): Handle the new variable.
+       * (erc-xdcc): Simplified
+
+       * erc-xdcc.el: * erc-xdcc-handler-alist: New variable.
+       * (erc-xdcc): Move code for list and send sub-commands into
+       * (erc-xdcc-help): New function.
+       * (erc-xdcc-list): New function.
+       * (erc-xdcc-send): New function.
+
+2003-01-12  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-server-JOIN):
+       Oops, send MODE command only when *we* joined a channel.
+
+       * erc.el:
+       Fixing ERCs behavior wrt IRCnet's !channels have a different name for
+       JOIN than in reality (e.g. you can join !forcertest or !!forcertest
+       and really get to !ABCDEforcertest)
+
+       (erc-cmd-JOIN): Removed erc-send-command MODE.
+       (erc-server-JOIN): Ask for MODE now.
+
+2003-01-12  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el:
+       (erc-dcc-get-filter), (erc-dcc-get-file): store size as a string, not an
+           integer. check size > 0 for the case where a size wasn't provided, 
since
+           string-to-int will return 0 on an empty string
+
+2003-01-12  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: * Use RAWFILE arg with find-file-noselect
+       * Fix alist/plist conversion left-over
+       * Add verbose-info about sending blocks.
+
+2003-01-11  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: * (pcomplete-erc-mode/DCC): Fixes
+
+       * erc-xdcc.el: Initial version.
+
+       * erc-pcomplete.el:
+       * (erc-pcomplete): Fix so that cycle-completion works again.
+       * (pcomplete-parse-erc-arguments): If there is a space after the last 
word
+       before point, we need to return a "" arg, and it's position.
+
+       * erc-dcc.el: Fix to pcomplete/erc-mode/DCC
+
+       * erc-dcc.el: * (pcomplete/erc-mode/DCC): New function
+
+       * erc-dcc.el: *** empty log message ***
+
+       * erc-dcc.el: Move code around, just basic changes
+
+2003-01-11  Jorgen Schaefer  <address@hidden>
+
+       * erc-stamp.el(erc-insert-timestamp-right):
+       Check whether erc-fill-column is
+       available before using it. Else default to fill-column or if
+       everything else fails, the window width of the current window. For the
+       fill-columns, use them directly as the starting position for the
+       timestamp.
+
+2003-01-11  Andreas Fuchs  <address@hidden>
+
+       * erc-stamp.el:
+       erc-insert-timestamp-right: use correct window's window-width. If
+                         buffer is not in a window, use erc-fill-column.
+
+2003-01-11  Mario Lang  <address@hidden>
+
+       * erc-dcc.el (erc-dcc-do-LIST-command): Fix
+
+       * erc-dcc.el:
+       * buffer-local variables erc-dcc-sent-marker and erc-dcc-send-confirmed 
marker removed
+         Keep This info in erc-dcc-member :sent and :confirmed plist values
+       :buffer plist for :type 'SEND removed, since we can get this with 
(marker-buffer
+       * erc-dcc-send-connect-hook: New hook, defaults to erc-dcc-send-block 
and erc-dcc-send-connected, which now prints a msg...
+
+       * erc-dcc.el:
+       * (erc-dcc-chat-accept): Renamed from erc-dcc-chat. Callers updated.
+       * (erc-dcc-chat): Renamed from erc-dcc-chat-request.
+       Callers updated, and interactive form added.
+       * (erc-dcc-server-accept): No longer do any type-specific stuff.
+       * (erc-dcc-chat-sentinel): Call erc-dcc-chat-setup if event is "open 
from "
+       from here, otherwise call erc-dcc-chat-close.
+
+       * (
+
+       * erc-dcc.el: *** empty log message ***
+
+       * erc-dcc.el: Moved some functions around.
+       Doc string fixes.
+       "/dcc send nick filename" works now
+
+2003-01-11  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-send-command): Fixed flood protect message.
+
+       * erc-button.el(erc-button-syntax-table): Make `-' a legal nick
+       constituent.
+
+2003-01-10  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: Some more steps toward dcc send.
+
+2003-01-10  Francis Litterio  <address@hidden>
+
+       * erc-notify.el(erc-notify-timer):
+       Changed to make it IRC-case-insensitive when comparing nicks.
+       (erc-notify-JOIN): Changed to make it IRC-case-insensitive when 
comparing nicks.
+       (erc-notify-NICK): Changed to make it IRC-case-insensitive when 
comparing nicks.
+       (erc-notify-QUIT): Changed to make it IRC-case-insensitive when 
comparing nicks.
+       (erc-cmd-NOTIFY): Now "/notify -l" lists the nicks on your notify list. 
 Now
+           when you remove a nick from your notify list, you no longer receive 
a spurious
+           signoff notification for that nick.  Changed to make it 
IRC-case-insensitive when
+           comparing nicks.
+
+       * erc.el(erc-ison-p):
+       Fixed so it calls erc-member-ignore-case instead of member.
+
+       * erc.el(erc-member-ignore-case):
+       New function.  Just like member-ignore-case, but obeys
+           the IRC protocol case matching rules.
+
+2003-01-10  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el:
+       (erc-dcc-do-GET-command), (erc-dcc-get-file): use the plist syntax, this
+           fixes dcc get again
+
+2003-01-10  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: erc-complete-functions: New variable.
+       erc-mode-map: Bind \t to 'erc-complete-word
+       erc-complete-word: New function.
+
+       * erc-pcomplete.el(erc-pcomplete-mode):
+       Use new erc-complete-functions
+       (erc-pcomplete): Check that we're in the input line, else return nil.
+
+       * erc-button.el(erc-button-mode): Use new erc-complete-functions
+       erc-button-old-tab-command: Removed.
+       (erc-button-next-or-old): Removed
+       (erc-button-next): check that we're not in the input line, else just 
return nil.
+
+2003-01-10  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: cleanup
+
+       * erc-dcc.el:
+       * (erc-dcc-chat-request): No longer use erc-send-ctcp-message.
+
+       * erc-dcc.el:
+       * (erc-dcc-no-such-nick): Also call delete-process if we have a peer 
already
+
+       * erc-dcc.el:
+       * (erc-dcc-no-such-nick): New function, server event handler for event 
401.
+       If we send a CTCP message requesting something dcc related, we set up an
+       entry in erc-dcc-list before sending the request (for the server proc 
object
+       for listening conns for example).  But if that nick does not exist
+       on that server, we now nicely cleanup erc-dcc-list again.
+
+2003-01-09  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: Moved code around a bit, and doc fixes
+
+       * erc-dcc.el: *** empty log message ***
+
+       * erc-dcc.el: Rename erc-dcc-plist to erc-dcc-list
+
+2003-01-09  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-server (erc-dcc-chat-setup):
+       use erc's (erc-setup-buffer) to determine how to
+           display new DCC windows
+       (erc-dcc-chat-buffer-killed): buffer-local hook for DCC buffers to 
close the
+           process
+       (erc-dcc-chat-close): code common to a killed buffer or a disconnection 
from
+           the other side
+       (erc-dcc-chat-sentinel): use (erc-dcc-chat-close)
+       (erc-dcc-server-accept): use (erc-log) instead of (message)
+
+       * erc.el:
+       (erc), (erc-setup-buffer): factor out window generation code so DCC can 
use
+           it too
+
+       * erc-dcc.el:
+       (erc-dcc-do-CLOSE-command), (erc-dcc-do-LIST-command): work with 
erc-dcc-plist
+
+       * erc-dcc.el:
+       erc-dcc-alist: became erc-dcc-plist, so we can more easily grab 
particular
+           properties
+       dcc catalog: unify use of DCC: and [dcc] (either's fine, but let's be
+           consistent)
+       (erc-dcc-member): takes an arbitrary list of constraints now
+       (erc-dcc-proc-member): removed, as (erc-dcc-member) can be used for this
+       (erc-dcc-do-CHAT-command): use the catalog to show the user what's 
going on
+       (erc-dcc-chat-server): removed
+       (erc-dcc-server): takes name sentinel and filter arguments, can be used 
for
+           both send and chat now
+
+       .. this release means all send/get support is broken until we fix up the
+       things that still expect to be using an alist. this include /dcc list, 
/dcc
+       close
+
+2003-01-09  Francis Litterio  <address@hidden>
+
+       * erc-ring.el(erc-previous-command):
+       If you have a partially typed input line and press M-p,
+           you lose what you typed.  Now we save it so you can come back to it.
+
+2003-01-09  Jorgen Schaefer  <address@hidden>
+
+       * erc-ring.el(erc-add-to-input-ring): s/nullp/null/
+
+2003-01-09  Damien Elmes  <address@hidden>
+
+       * erc-ring.el(erc-add-to-input-ring):
+       set up the ring if it's not already setup
+
+       * erc-dcc.el(erc-dcc-member): case insensitive match of nicknames
+       (erc-dcc-do-CHAT-command): echo what we're doing (at least for now)
+
+2003-01-09  Mario Lang  <address@hidden>
+
+       * erc-dcc.el: (temporarily) fix erc-process setting...
+
+       * erc-dcc.el: * (erc-dcc-chat-send-line): Removed
+
+       * erc.el:
+       Check if target is stringp (we can now also have 'dcc as value...)
+
+       * erc-dcc.el(erc-dcc-chat-send-input-line):
+       New function, used for
+       erc-send-input-line-function.
+       Use erc-send-current-line now.
+
+       * erc-dcc.el: evt to elt...
+
+       * erc-dcc.el: Remove () from a var (how silly!)
+
+       * erc-dcc.el: * (erc-dcc-get-host): Use format-network-address.
+       * (erc-dcc-host): Change semantic.  If erc-dcc-host is set, use it.
+       Otherwise, try to figure out the host by calling erc-dcc-get-host.
+       * (erc-dcc-server-port): New variable.
+       * erc-dcc-chat-log: Renamed to erc-dcc-server-accept
+
+       * erc-dcc.el(erc-dcc-do-CHAT-command):
+       Change arg of call to erc-dcc-chat-request from elt to nick
+
+2003-01-09  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-send-current-line):
+       Now rejects multi-line commands (i.e., lines that
+           start with "/" and contain newlines).
+
+2003-01-09  Jorgen Schaefer  <address@hidden>
+
+       * erc-button.el:
+       Functionality to use TAB to jump to the next button:
+
+       (erc-button-next-or-old): New function.
+       (erc-button-next): New function.
+       erc-button-keymap: added erc-button-next
+       erc-button-old-tab-command: New variable.
+       define-erc-module button: Add and remove 'erc-button-next-or-old as
+       appropriate.
+
+2003-01-09  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       New variable: erc-auto-reconnect (defaults to t).  If non-nil, ERC will
+           automatically reconnect to a server after an unexpected 
disconnection.
+       (erc-process-sentinel): Changed to refer to variable erc-auto-reconnect.
+
+2003-01-08  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * erc-send-input-line-function: New variable, used for dispatch...
+
+2003-01-08  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-chat-sentinel):
+       check event type before killing process
+       (erc-dcc-chat-log): new, handles the setup of dcc chats for incoming
+           connections
+       (erc-dcc-chat): use (erc-dcc-chat-setup)
+       (erc-dcc-chat-setup): code common to incoming and outgoing DCC chats
+       (erc-dcc-chat-request): request a DCC chat with another user
+       (erc-dcc-proc-member): locate a member in erc-dcc-alist by process
+
+       The very first ERC to ERC DCC chat was held between delysid and resolve 
today!
+
+2003-01-08  Mario Lang  <address@hidden>
+
+       * erc-track.el(erc-all-buffer-names):
+       Check for erc-dcc-chat-mode too
+
+2003-01-08  Francis Litterio  <address@hidden>
+
+       * erc-ring.el, erc.el(erc-kill-input):
+       Resets erc-input-ring-index to nil, so that invoking this
+           command conceptually puts you after your most recent input in the 
input
+           history.
+       (erc-previous-command and erc-next-command): Changed so that history 
movement
+           is more intuitive.  Also preserves the blank input line that marks 
the
+           place after the newest command in the history ring (i.e., you'll 
see a
+           blank command once every trip around the ring in either direction).
+
+2003-01-08  Mario Lang  <address@hidden>
+
+       * erc-dcc.el(erc-dcc-chat): Add docstring
+       Add self-test.
+       Fix error if /dcc chat nick doesn't find the nick
+
+2003-01-08  Francis Litterio  <address@hidden>
+
+       * Makefile:
+       Changed so that "make" works correctly under Cygwin.  Before this 
change, the
+       pathname passed to Emacs on the command line under Cygwin had the form
+       "/cygwin/c/...", which prevented emacs from finding the file.  Now the 
pathname
+       has the form "c:/...".  This works for any drive letter.
+
+2003-01-08  Mario Lang  <address@hidden>
+
+       * erc-button.el: reindent some code, and add TODO to comments
+
+       * erc-dcc.el: *** empty log message ***
+
+       * erc-dcc.el: Make dcc-chat-ended a notice
+       Remove now bogus comment
+
+2003-01-08  Damien Elmes  <address@hidden>
+
+       * erc-dcc.el(erc-pack-int): from erc-packed-int
+       (erc-unpack-int): new
+
+       * erc-dcc.el(erc-unpack-str): added
+
+2003-01-08  Mario Lang  <address@hidden>
+
+       * erc.el(erc-server-482):
+       New handler, handles KICK reply if you're not channel-op
+
+       * erc-dcc.el: Document SEND in erc-dcc-alist.
+       Move sproc, parent-proc and file into erc-dcc-alist
+
+       * erc-dcc.el: stubs
+
+       * erc-dcc.el(erc-dcc-get-host):
+       Change :iface to :local since Kim committed it now to CVS emacs
+
+       * erc-dcc.el(erc-dcc-get-host):
+       New function, requires the not-yet-in-CVS-emacs local-address.patch to 
process.c.
+       Some other minor additions
+
+2003-01-08  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-cmd-IGNORE):
+       Now returns t to prevent "Bad syntax" error.
+       (erc-cmd-UNIGNORE): Now returns t to prevent "Bad syntax" error.
+       (erc-server-PRIVMSG-or-NOTICE): Capitalized first word in message to 
user.
+
+       * erc.el(erc-scroll-to-bottom):
+       Temporarily bind resize-mini-windows to nil so that
+           users who have it set to a non-nil value will not suffer from 
premature
+           minibuffer shrinkage due to the below recenter call.  I have no 
idea why
+           this works, but it solves the problem, and has no negative side 
effects.
+
+2003-01-07  Jorgen Schaefer  <address@hidden>
+
+       * erc-dcc.el:
+       erc-dcc-ctcp-query-chat-regexp: The IP is not really an IP, but a
+       number (no . allowed there).
+       (erc-dcc-send-ctcp-string): use let* here to avoid cluttering up the
+       match data.
+       Also, use erc-decimal-to-ip to get the IP.
+       (erc-ip-to-decimal): Removed some pasted ERC timestamps
+       (erc-decimal-to-ip): New function.
+       erc-dcc-chat-mode-map: Return map in the initialization.
+
+2003-01-07  Francis Litterio  <address@hidden>
+
+       * erc-match.el(erc-match-fool-p):
+       Changed to call erc-match-directed-at-fool-p instead of
+            erc-directed-at-fool-p.
+
+2003-01-07  Mario Lang  <address@hidden>
+
+       * erc-dcc.el(erc-cmd-DCC):
+       Change (cond ... (t nil)) to (when ...)
+
+       * erc-dcc.el: Use erc-current-nick-p
+
+2003-01-07  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-join-buffer: Added 'window-noselect to docstring and :type.
+       erc-auto-query: Added 'window-noselect to :type.
+       (erc): Treat erc-join-buffer being 'window-noselect appropriately.
+
+       * erc.el(erc-current-nick-p): New function.
+       (erc-nick-equal-p): New function.
+       (erc-already-logged-in), (erc-server-JOIN), (erc-auto-query),
+       (erc-server-PRIVMSG-or-NOTICE): Use erc-current-nick-p.
+       (erc-update-channel-member): Use erc-nick-equal-p.
+
+       * erc-match.el(erc-match-current-nick-p):
+       Renamed from erc-current-nick-p
+       (erc-match-pal-p): Renamed from erc-pal-p
+       (erc-match-fool-p): Renamed from erc-fool-p
+       (erc-match-keyword-p): Renamed from erc-keyword-p
+       (erc-match-dangerous-host-p): Renamed from erc-dangerous-host-p
+       (erc-match-directed-at-fool-p): Renamed from erc-directed-at-fool-p
+       (erc-match-message): Use erc-match-TYPE-p instead of erc-TYPE-p
+
+       * erc.el:
+       Support for IRCnets' "nick/channel temporarily unavailable"
+
+       (erc-nickname-in-use): New function (mostly copied from erc-server-433).
+       (erc-server-433): Use erc-nickname-in-use
+       (erc-server-437): New function.
+       erc-server-hook-list: Added (437 erc-server-437).
+
+2003-01-07  Mario Lang  <address@hidden>
+
+       * erc-fill.el: Add autoload cookie
+
+       * erc-notify.el:
+       Now also pass SERVER argument to signon/off hooks, and provide a 
erc-notify-signon/off function for echo-area printing
+
+       * erc-notify.el(erc-notiy-QUIT):
+       Change use of delq to delete, delq does not work with strings
+
+2003-01-06  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-ctcp-query-VERSION):
+       v%s -> %s, so we are no longer vVersion...
+
+2003-01-06  Mario Lang  <address@hidden>
+
+       * erc.el: Small change to erc-ison-p, and fixme tag
+
+2003-01-06  Francis Litterio  <address@hidden>
+
+       * erc.el(erc):
+       Fixed bug where variable "away" would be nil in new channel buffers
+              even if the user is away when joining the channel.
+       (erc-strip-controls): Fixed a bug where erc-strip-controls accidentally
+              removed all text properties from the string.
+
+2003-01-06  Mario Lang  <address@hidden>
+
+       * erc-dcc.el:
+       Some stub functions, some code, nothing really works yet
+
+       * erc.el(erc-ison-p): New function
+
+       * erc-dcc.el: Some functions which will be needed for dcc send
+
+       * erc-dcc.el(erc-ip-address-to-decimal):
+       New function, thanks lawrence
+
+       * erc-dcc.el: Again, simplify code, fix stuff, DCC CHAT works now
+
+       * erc-dcc.el: Many fixes, chat nearly works now
+
+       * erc-netsplit.el: Also detect fast netsplit/joins
+
+       * erc-dcc.el: some more fixes
+
+       * erc-dcc.el: Fixup stage 1, now dcc get works
+
+       * erc-dcc.el: make /dcc LIST work
+
+       * erc-dcc.el:
+       Initial checkin, don't use it!  its really far from complete.  Hackers: 
help!
+
+       * erc-notify.el:
+       New function erc-notify-NICK, and added signon/off hooks which were 
missing
+
+2003-01-05  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-truncate-buffer-to-size):
+       set inhibit-read-only to t for the
+       deletion. This is usually done by the function calling the hook, but
+       not if it's called interactively. Also, rewrote some weird if/if
+       combination.
+
+       * erc-track.el(erc-track-shortennames):
+       Documentation fix (erc-all-buffers is really
+       erc-all-buffer-names)
+
+       These changes make server buffers be tracked as well, as there are
+       quite a few interesting things going on there (e.g. CTCP etc.)
+       (erc-all-buffer-names): Check for (eq major-mode 'erc-mode) instead of
+       erc-default-recipients.
+       (erc-track-modified-channels): Don't require a default target (e.g.,
+       this-channel being non-nil)
+
+2003-01-03  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       erc-auto-query: can now be set to a symbol to control how new messages 
should
+           be popped up (or not popped up, as the case may be)
+       (erc-query): new function which handles the bulk of what 
(erc-cmd-QUERY) did
+           previously
+       (erc-cmd-QUERY): use (erc-query)
+       (erc-auto-query): use (erc-query)
+
+       * erc.el(erc-current-logfile):
+       Downcase result of log generation function, as IRC is
+       case insensitive. Fixes problems where "/query user" results in a 
different
+       log file to a query from "User". Avoided adding an extra flag to 
control this
+       behavior - if you think this was the wrong decision, please correct it 
and
+       I'll remember it for next time.
+
+2002-12-31  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-split-command):
+       Removed assignment to free variable "continue".
+       (erc-strip-controls): New function.  Takes a string, returns the string 
with
+       all IRC color/bold/underline/etc. control codes stripped out.
+       (erc-interpret-controls): If variable erc-interpret-controls-p is nil, 
now
+       uses erc-strip-controls to strip control codes.
+       (erc-ctcp-reply-ECHO): Changed reference and assignment to free 
variable "s"
+       into reference/assignment to "msg", which appears to be the original 
author's
+       intent.
+
+       * erc-list.el(erc-chanlist):
+       Changed to use the new erc-once-with-server-event function
+       instead of the old macro of the same name.
+
+       * erc-notify.el(erc-notify-timer):
+       Changed to use the new erc-once-with-server-event function
+       instead of the old macro of the same name.  Also fixed a bug were 
variable
+       erc-last-ison was being read from a non-server buffer (thus giving its 
default
+       value instead of its per-server value).
+
+       * erc.el(erc-once-with-server-event):
+       This is now a function.  It was a macro with a
+       bug (the call to gensym happened at byte-compile-time not 
macro-call-time).
+       (erc-toggle-debug-irc-protocol): Now [return] is bound to this function 
in
+       the *erc-protocol* buffer.
+
+2002-12-30  Alex Schroeder  <address@hidden>
+
+       * erc-autoaway.el(erc-autoaway-idletimer): Doc,
+       ref. erc-autoaway-use-emacs-idle.
+       (autoaway): Doc, explain different idle definitions.  Reestablish
+       the idletimer only when erc-autoaway-use-emacs-idle is non-nil.
+       (erc-auto-set-away): Doc, ref erc-auto-discard-away.
+       (erc-auto-discard-away): Doc, ref erc-auto-set-away.
+       (erc-autoaway-use-emacs-idle): Doc, ref erc-autoaway-mode, and
+       added a note that this feature is currently broken.
+       (erc-autoaway-reestablish-idletimer): Doc.
+       (erc-autoaway-possibly-set-away): Split test such that
+       erc-time-diff is only computed when necessary, add a comment why
+       erc-process-alive is not necessary.
+       (erc-autoaway-set-away): Test for erc-process-alive.
+
+2002-12-29  Alex Schroeder  <address@hidden>
+
+       * erc-autoaway.el:
+       Changed the order of defcustoms to avoid errors in the :set property
+       of erc-autoaway-idle-seconds.
+
+2002-12-29  Damien Elmes  <address@hidden>
+
+       * erc-track.el:
+       * (erc-track-get-active-buffer): remove superfluous (+ arg 0)
+
+2002-12-29  Alex Schroeder  <address@hidden>
+
+       * erc-autoaway.el(erc-autoaway): Moved the defgroup up to the
+       top, before the define-erc-module call.
+       (autoaway): Extended doc.
+       (erc-autoaway-idle-seconds): Use a :set property to handle
+       erc-autoaway-use-emacs-idle.
+       (erc-auto-set-away): Set default to t.  Added doc strings where
+       necessary, reformatted doc strings such that the first line can
+       stand on its own.  This is important for the output of M-x
+       apropos.
+
+2002-12-28  Jorgen Schaefer  <address@hidden>
+
+       * erc-auto.in:
+       added (provide 'erc-auto), which is required for (require 'erc-auto) :)
+
+       * erc.el(erc-display-prompt):
+       Set the face property of the prompt to
+       everything but the last character.
+
+       * erc.el(erc-send-current-line):
+       Check whether point is in the input line. If
+       not, just beep and do nothing.
+
+2002-12-28  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-bol):
+       Fixed bug when there is only a prompt, and no property
+       change.
+
+       * erc.el(erc-display-prompt): Rewrote using a save-excursion
+       and erc-propertize.  No longer use a field for the prompt, but a
+       plain text property called erc-prompt.
+       (erc-bol): Use the erc-prompt text property instead of a field.
+       Return point instead of t.
+       (erc-parse-current-line): No need to call point here, then, since
+       erc-bol now returns point.
+
+       * Makefile:
+       make ChangeLog .PHONY, thus forcing it always to be rebuilt.
+
+2002-12-28  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-log-irc-protocol):
+       Removed check whether get-buffer-create
+           returned nil. "The value is never nil", says the docstring.
+
+       * erc.el: Day Of The Small Changes
+
+       (erc-display-prompt): Make the prompt 'front-sticky, which prevents it
+           from being modified. It *should* also make end-of-line move to the
+           end of the field (i.e. the end of the prompt) when point is at the
+           beginning of the prompt, but it doesn't. Dunno why. :(
+
+2002-12-27  Francis Litterio  <address@hidden>
+
+       * Makefile:
+       Added "-f" to "rm" command in rule for target "realclean".
+
+       * erc.el:
+       New function: erc-log-irc-protocol.  Consolidates nearly duplicate code
+       from functions erc-send-command and erc-process-filter into one 
function.
+
+       * erc.el(erc-toggle-debug-irc-protocol):
+       Removed unneeded argument PREFIX and code
+       which referenced it at end of function.
+       (erc-send-command): Now we only append a newline to the logged copy
+       of output protocol text if it doesn't have one.
+
+2002-12-27  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-toggle-debug-irc-protocol):
+       Display buffer if it's not shown
+           already, and use view-mode.
+       (erc-toggle-debug-irc-protocol), (erc-send-command),
+           (erc-process-filter): inhibit-only t to insert into the
+           *erc-protocol* buffer (view-mode)
+
+2002-12-27  Francis Litterio  <address@hidden>
+
+       * erc.el(erc-mode-map):
+       Removed keybinding for erc-toggle-debug-irc-protocol.
+       (erc-toggle-debug-irc-protocol): Now used erc-make-notice to propertize 
the
+       face of the enabled/disabled messages in the *erc-protocol* buffer.
+       (erc-send-command): Now outgoing IRC protocol traffic is logged too.
+
+       * erc.el:
+       Added user-customizable variable erc-debug-irc-protocol.
+       Added function erc-toggle-debug-irc-protocol.
+       (erc-process-filter): Now supports IRC protocol logging.  If variable
+       erc-debug-irc-protocol is non-nil, all IRC protocol traffic is appended
+       to buffer *erc-protocol*, which is created if necessary.
+
+2002-12-27  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-display-prompt):
+       Don't make the prompt intangible; that didn't
+           make things that much better for the user, but confused ispell,
+           which checked the prompt when it should check the first word
+
+2002-12-27  Alex Schroeder  <address@hidden>
+
+       * AUTHORS: fixed resolve's email add
+
+       * AUTHORS: added damien
+
+       * erc.el(erc-truncate-buffer-on-save):
+       Removed documentation that
+       described behavior now changed.  It used to say "When nil, no
+       buffer is ever truncated."  This is no longer true; even when
+       buffers are NOT truncated on save, they can be truncated, eg. by
+       adding erc-truncate-buffer to the hook.
+       (erc-logging-enabled): New function.
+       (erc-current-logfile): New function.
+       (erc): Use erc-logging-enabled and erc-current-logfile.
+       (erc-truncate-buffer-to-size): Rewrote it, and made sure to use a
+       (save-restriction (widen) ...) such that the truncation actually
+       runs in the whole buffer, not in the last message only (as
+       erc-insert-post-hook will do!).  This should fix rw's
+       out-of-bounds error.
+       (erc-generate-log-file-name-short): Made all but the BUFFER
+       argument optional.  Doc: Mention
+       erc-generate-log-file-name-function.
+       (erc-generate-log-file-name-long): Doc: Mention
+       erc-generate-log-file-name-function.
+       (erc-save-buffer-in-logs): Use erc-logging-enabled and
+       erc-current-logfile.  Doc: Mention erc-logging-enabled.
+
+       (erc-encode-string-for-target): Only do the real work when
+       featurep mule; else just return the string unchanged.
+
+2002-12-27  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       erc-encoding-default: check for (coding-system-p) for older emacs 
versions
+
+       * erc.el(erc-connect): missing ()s added. "don't commit at 2am"
+
+       * erc.el(erc-connect):
+       check if (set-process-coding-system) is available before use
+
+2002-12-27  Alex Schroeder  <address@hidden>
+
+       * AUTHORS: added franl
+
+2002-12-26  Alex Schroeder  <address@hidden>
+
+       * erc-pcomplete.el(pcomplete-parse-erc-arguments):
+       Reworked, and fixed a bug that had
+       caused completions to corrupt preceding text under some circumstances.
+
+       * erc.el(erc-encoding-default): New.
+       (erc-encode-string-for-target): Use it instead of a hard-coded ctext.
+       (erc-encoding-coding-alist): Doc.
+
+2002-12-26  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       Removed fix for bug 658552 recently checked-in, because it doesn't work.
+
+       * erc.el(erc-kill-buffer-function):
+       Removed check that connection is up
+       before running erc-kill-server-hook hooks.  Those hooks should use
+       erc-process-alive to avoid interacting with the process.
+
+       * erc.el:
+       Fixed erc-send-current-line so it no longer assigns the free variable 
"s", and
+       it doesn't move point to end-of-buffer in non-ERC buffers.  Fixed
+       erc-kill-buffer-function so it doesn't run the erc-kill-server-hook 
hooks if the
+       server connection is closed.  Fixed bug 658552, which is described in 
detail at
+       
http://sourceforge.net/tracker/index.php?func=detail&aid=658552&group_id=30118&atid=398125
+
+2002-12-26  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-cmd-SMV): Bug, now call erc-version-modules.
+
+       * erc-pcomplete.el(erc-pcomplete-version): New.
+
+2002-12-26  Francis Litterio  <address@hidden>
+
+       * erc-pcomplete.el:
+       Fix for bug where you could not complete a nick when there was text 
following
+       the nick.
+
+2002-12-25  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-already-logged-in): Use erc-process-alive.
+       (erc-prepare-mode-line-format): Use erc-process-alive.
+       (erc-process-alive): Check erc-process for boundp and processp.
+
+       * erc.el(erc-kill-buffer-function):
+       Do not check whether the process is
+       alive before running the hook, because there might be functions on
+       the hook that need to run even when the process is dead.  And
+       function that wants to check this, should use (erc-process-alive).
+       (erc-process-alive): New function.
+       (erc-kill-server): Use it.
+       (erc-kill-channel): Use it.
+
+       * erc.el(erc-kill-buffer-function):
+       Reverted ignore-error change.
+       ignore-error is dangerous because we might miss bugs in functions
+       on erc-kill-server-hook.
+
+       * erc.el(erc-kill-buffer-function): Use memq instead of member
+       when checking process-status.  Added doc string with references to
+       the other hooks.
+       (erc-kill-server): Only send the command when the erc-process is
+       still alive.  This prevents the error: "Process
+       erc-irc.openprojects.net-6667 not running" when killing the buffer
+       after having used /QUIT.
+
+2002-12-24  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-server-ERROR):
+       Show the error reason, not only the originating host.
+
+       * erc.el(erc-kill-buffer-function):
+       (ignore-errors ...) in 'erc-kill-server-hook.
+           When the process for this server does not exist anymore, the hook
+           will cause an error, effectively preventing the buffer from being
+           killed.
+
+2002-12-24  Francis Litterio  <address@hidden>
+
+       * erc-notify.el:
+       Fixed erc-notify-timer so that it passes the correct nick to
+       the functions on erc-notify-signoff-hook.
+
+2002-12-24  Alex Schroeder  <address@hidden>
+
+       * erc-track.el: Doc
+
+       * erc-track.el(erc-make-mode-line-buffer-name): Removed a
+       superfluous if construct around erc-track-showcount-string.
+       (erc-track-modified-channels): Use 1+.
+       Plus some doc and comment changes.
+
+2002-12-23  Mario Lang  <address@hidden>
+
+       * erc.el: Fix (erc-version) string
+
+2002-12-23  Francis Litterio  <address@hidden>
+
+       * erc.el:
+       Removed unnecessary assignment to free-variable "p" in erc-downcase.
+
+       * erc.el:
+       Now /PART reason strings are generated the same way /QUIT reason strings
+       are generated (see variable erc-part-reason).  Also, when a server 
buffer
+       is killed, a QUIT command is automatically sent to the server.
+
+       * erc.el:
+       Changed erc-string-no-properties so that it is more efficient.  Now it 
uses
+       set-text-properties instead of creating and deleting a temporary buffer.
+
+2002-12-21  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-kill-input: added a check to prevent a (ding) and an error when
+           there's nothing to kill (thanks to Francis Litterio, franl on IRC)
+
+2002-12-21  Mario Lang  <address@hidden>
+
+       * erc.el:
+       AWAY notice duplication prevention. erc-prevent-duplicates now set to 
("301") by default, and timeout to 60
+
+       * erc.el: erc-prevent-duplicates: New variable, see docstring
+
+2002-12-20  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el:
+       erc-track-modified-channels: Use cddr of cell for old-face. cdr of
+           cell is '(1 . face-name), i have no idea why :)
+
+2002-12-20  Damien Elmes  <address@hidden>
+
+       * erc.el(erc-current-nick):
+       check the server buffer is active before using
+
+       Also tabified and cleaned up some trailing whitespace
+
+2002-12-15  Mario Lang  <address@hidden>
+
+       * erc-track.el: erc-track-count patch by az
+
+2002-12-14  Damien Elmes  <address@hidden>
+
+       * erc.el:
+       last-peers: initialize to a cons. thanks to Francis Litterio
+           <address@hidden> for the patch
+
+       * erc.el:
+       erc-kill-channel-hook, erc-kill-buffer-hook, (erc-kill-channel):
+           both hooks now call erc-save-buffer-in-logs, so that query buffers 
are
+           saved properly now, and not just channel buffers.
+
+2002-12-13  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-unique-channel-names): Fix another #hurd
+       vs. #hurd-bunny bug.
+
+       * erc-match.el(match): No longer modify erc-send-modify-hook,
+       since it does not work without a parsed text property, anyway.
+       (erc-keywords): Allow cons cells.
+       (erc-remove-entry-from-list): Deal with cons cells.
+       (erc-keyword-p): Ditto.
+       (erc-match-message): Ditto.
+
+       Moved nil to the beginning of the list, removed :tags for the
+       -type variables:
+       (erc-current-nick-highlight-type): Ditto.
+       (erc-pal-highlight-type): Ditto.
+       (erc-fool-highlight-type): Ditto.
+       (erc-keyword-highlight-type): Ditto.
+       (erc-dangerous-host-highlight-type): Ditto.
+       (erc-log-matches-flag): Moved nil to the beginning.
+
+2002-12-11  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-beg-of-input-line: Don't do (goto-char (beginning-of-line)), since
+           beginning-of-line always moves point and returns nil. Thanks to
+           franl on IRC for noting this.
+
+       * erc-stamp.el:
+       erc-insert-timestamp-left, erc-insert-timestamp-right: Made the
+           timestamp a 'field named 'erc-timestamp. Now end-of-line and
+           beginning-of-line will move over the timestamp.
+
+2002-12-10  Damien Elmes  <address@hidden>
+
+       * erc-button.el(erc-button-add-button):
+       make the created button rear-nonsticky, to allow
+       cutting and pasting of buttons without worrying about the button 
properties
+       being inherited by the text typed afterwards.
+
+       * erc.el: save logfile when killing buffer
+
+2002-12-09  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-modified-channels-display): Reworked.
+       (erc-track-face-more-important-p): Removed.
+       (erc-track-find-face): Return only one face.
+       (erc-track-modified-channels): Reworked.
+       (erc-modified-channels-string): Changed from (BUFFER FACE...) to
+       (BUFFER . FACE)
+
+       * erc-stamp.el(erc-insert-timestamp-right): Do not assume
+       erc-fill-column is available.
+
+2002-12-09  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-ech-notices-in-minibuffer-flag, erc-minibuffer-notice: Clarified
+           the difference in the docstrings.
+
+2002-12-08  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: erc-noncommands-list: added erc-cmd-SM and erc-cmd-SMV
+
+2002-12-08  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-cmd-SM): New.
+       (erc-cmd-SMV): New.
+
+       * erc.el(erc-modes): New.
+
+2002-12-08  Jorgen Schaefer  <address@hidden>
+
+       * erc-compat.el:
+       field-end: use (not (fboundp 'field-end)) instead of (featurep 'xemacs)
+
+2002-12-08  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-version-modules): New.
+
+2002-12-08  Mario Lang  <address@hidden>
+
+       * debian/changelog, debian/control, debian/scripts/startup.erc:
+       debian release 3.0.cvs.20021208
+
+2002-12-08  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-split-command): Do the right thing with CTCPs.
+
+2002-12-08  Mario Lang  <address@hidden>
+
+       * erc-stamp.el: Be a bit more functional
+
+2002-12-08  Jorgen Schaefer  <address@hidden>
+
+       * erc-compat.el:
+       XEmacs doesn't seem to have field-end, so we provide our own version 
here.
+
+2002-12-08  Mario Lang  <address@hidden>
+
+       * Makefile: Small fixes to debrelease target
+
+2002-12-08  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       make-obsolete-variable: xemacs doesn't have the WHEN parameter, remove 
it.
+
+2002-12-07  Jorgen Schaefer  <address@hidden>
+
+       * erc-imenu.el(erc-create-imenu-index):
+       Use (forward-line 0) instead of
+         (beginning-of-line) now, sine the latter ignores fields (used in the
+         prompt).
+
+       * erc.el:
+       Rewrite of the prompt stuff to use a field named 'erc-prompt:
+
+       erc-prompt: Removed getter and setter functions. The properties were
+         already set (and overwritten) in erc-display-prompt.
+       (erc-prompt): Add the trailing space here, not all over the code.
+       (erc-display-prompt): Cleaned up a bit. The text-properties now are
+         valid on the whole prompt. Also, made the prompt 'intangible to
+         avoid confused users.
+       (erc-bol): Now use the field 'erc-prompt for finding the prompt
+       (erc-parse-current-line): Cleaned up considerably. Uses (erc-bol) now.
+       (erc-load-irc-script-lines): Adjusted for the new (erc-prompt).
+       (erc-save-buffer-in-logs): Adjusted for the new (erc-prompt).
+
+       * erc.el:
+       erc-uncontrol-input-line: The comment said "Consider it deprecated",
+       so I removed it now.
+       erc-prompt-interactive-input: Marked obsolete as of previous change.
+
+       * erc.el:
+       erc-smiley, erc-unmorse: Put at the end to separate it from the
+       important parts of erc.el.
+
+2002-12-07  Alex Schroeder  <address@hidden>
+
+       * erc-stamp.el(erc-insert-timestamp-right): New algorithm.
+
+2002-12-07  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       last-peers, erc-message: Explained what last-peers is used for.
+
+2002-12-07  Alex Schroeder  <address@hidden>
+
+       * erc-page.el(erc-cmd-PAGE): New function.
+       (erc-ctcp-query-PAGE): Use the catalog entry for the message, too.
+       (erc-ctcp-query-PAGE-hook): Added custom type.
+       (erc-page-function): Changed custom type from ... function-item to
+       ... function.
+       As well as doc strings.
+
+2002-12-06  Alex Schroeder  <address@hidden>
+
+       * erc-page.el: provide feature at the end
+
+2002-12-06  Brian P Templeton  <address@hidden>
+
+       * erc-nickserv.el:
+       Added austnet in erc-nickserv.el (thanks to Damien Elmes
+       <address@hidden>)
+
+2002-12-05  Mario Lang  <address@hidden>
+
+       * erc-complete.el: Add autoload cookie
+
+       * erc-speak.el: Small fix to make proper voice-changes
+
+2002-12-05  Alex Schroeder  <address@hidden>
+
+       * erc-lang.el: New
+
+2002-12-03  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-mode-map: Put back C-c C-p (PART) and C-c C-q (QUIT)
+
+2002-12-02  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-insert-post-hook: Add :options erc-make-read-only, 
erc-save-buffer-in-logs
+       erc-send-post-hook: Add :options erc-make-read-only
+
+       * erc.el: erc-insert-hook: Removed ("this hook is obsolescent")
+       erc-insert-post-hook: Added :options '(erc-truncate-buffer)
+
+2002-12-02  Mario Lang  <address@hidden>
+
+       * erc.el: Add missing requires
+
+2002-11-29  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-quit-reason-normal):
+       Remove v before %s so it's "Version ..." not
+          "vVersion ..."
+
+2002-11-26  Alex Schroeder  <address@hidden>
+
+       * erc-compat.el(erc-encode-coding-string): Add second argument
+               coding-system, and for non-mule xemacsen, use a new defun 
instead
+               of identity.
+
+       * erc.el:  (define-erc-module): Use the appropriate group.
+       (erc-port): Changed custom type.
+       (erc-insert-hook): Custom group changed to erc-hooks.
+       (erc-after-connect): ditto
+       (erc-before-connect): ditto
+       (erc-disconnected-hook): ditto
+
+       * erc-button.el(erc-button): New group, changed all custom groups
+       from erc to erc-button, but left all erc-faces as-is.
+
+       * erc-track.el(erc-track): New group, changed all custom groups
+       from erc to erc-track.
+
+2002-11-26  Mario Lang  <address@hidden>
+
+       * erc-macs.el:
+       Macros for erc-victim handling.  Primary idea is to use setf and some 
fancy things to get nice syntax. have a look
+
+2002-11-26  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       pings, erc-cmd-PING, erc-ctcp-reply-PING, catalog entry CTCP-PING:
+       Cleaned up. Removed buffer-local variable pings which stored a list of
+       all sent CTCP PING requests. Now send our full time with the CTCP PING
+       request and interpret the answer.
+
+2002-11-25  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: nick-stk: replaced by the local variable current-nick.
+
+2002-11-25  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-send-command): Use erc-encode-string-for-target.
+       (erc-encode-string-for-target): New.
+
+       * erc-compat.el(erc-encode-coding-string): Add second argument
+       coding-system, and for non-mule xemacsen, use a new defun instead
+       of identity.
+
+       * erc-nickserv.el(erc-nickserv-version): New.
+
+2002-11-25  Jorgen Schaefer  <address@hidden>
+
+       * Makefile:
+       UNCOMPILED: erc-chess.el depends on chess-network.el, which might not
+       be installed. Don't compile it.
+
+       * erc.el:
+       erc-mode-map: Added C-a as erc-bol (no reason why it shouldn't be),
+       and removed C-c C-p (part channel) and C-c C-q (quite server) as these
+       are a bit drastic in their consequences and easy to mistype.
+
+2002-11-24  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el: erc-track-faces-priority-list: Extended list
+
+       * erc.el:
+       channel-members: Updated docstring: We have a VOICE predicate, too.
+
+       * erc-track.el(erc-unique-substrings):
+       Don't shorten a single channel to "#", but
+       always give at least 2 chars (except when there are no two chars).
+
+2002-11-23  Jorgen Schaefer  <address@hidden>
+
+       * erc-nickserv.el:
+       support for BrasNET. Thanks to rw on IRC for the settings.
+
+2002-11-23  Alex Schroeder  <address@hidden>
+
+       * erc.el: (erc-default-recipients, erc-session-user-full-name)
+               (nick-stk, pings, erc-announced-server-name, erc-connected)
+               (channel-user-limit, last-peers, invitation, away, channel-list)
+               (last-sent-time, last-ping-time, last-ctcp-time, erc-lines-sent)
+               (erc-bytes-sent, quitting, bad-nick, erc-logged-in)
+               (erc-default-nicks): Defvars.
+
+       * erc-compat.el: Switched tests to iso-8859-1 instead of latin-1.
+
+       * erc-compat.el(erc-compat-version): New.
+
+2002-11-22  Alex Schroeder  <address@hidden>
+
+       * erc.el(smiley): Smileys are a very small module, now.
+
+2002-11-22  Jorgen Schaefer  <address@hidden>
+
+       * erc.el:
+       erc-event-to-hook, erc-event-to-hook-name: eval-and-compile these,
+           since we need them in a macro. ERC now compiles again!
+
+       * erc-speak.el:
+       erc-minibuffer-privmsg: Removed setting this variable to nil, since it
+           was removed from erc.el.
+
+       * erc.el(erc-interactive-input-map): Added docstring.
+       (erc-wash-quit-reason): Extended docstring.
+       (erc-server-ERROR): Added docstring.
+       (erc-server-321): buffer-local variable channel-list probably
+           shouldn't be renamed erc-channel-list - removed FIXME.
+
+       * erc.el: small cleanup.
+       ("was not used anymore" here means "not used in erc/*.el nor in
+       fsbot", thanks to deego for checking that.)
+
+       erc-minibuffer-privmsg: Removed (was not used anymore)
+       (erc-reformat-command): Removed (was not used anymore)
+       (erc-strip-erc-parsed-property): Removed (was not used anymore)
+       (erc-process-ctcp-response): Removed (replaced by ctcp-query-XXX-hook)
+       (erc-send-paragraph): Removed ("Note that this function is obsolete,
+           erc-send-current-line handles multiline input.")
+       (erc-input-hook): Removed ("This hook is obsolete. See
+           `erc-send-pre-hook', `erc-send-modify-hook' and
+           `erc-send-post-hook' instead.")
+       (erc-message-hook): Removed ("This hook is obsolete. See
+           `erc-server-PRIVMSG-hook' and `erc-server-NOTICE-hook'.")
+       (erc-cmd-default-channel): Removed ("FIXME: no clue what this is
+           supposed to do." - it was supposed to prepend the default channel
+           to a command before sending it. E.g. typing "/FOO now!" would send
+           the IRC command "FOO #mycurrentchannel now!")
+
+       * erc.el:
+       erc-ctcp-query-PING: Send the whole argument back, not just the first
+       number. This is required for many clients (e.g. irssi, BitchX, ...)
+       which send their ping times in two different numbers for microsecond
+       accuracy.
+
+2002-11-22  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-track-shorten-function): Allow nil.
+
+2002-11-21  Alex Schroeder  <address@hidden>
+
+       * erc-track.el(erc-unique-channel-names): Fixed bug that appeared
+       if one target name was a substring of another -- eg. #hurd and
+       #hurd-bunny.  Added appropriate test.
+
+2002-11-20  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el:
+       erc-unique-channel-names: Don't take a substring of channel that could
+       be longer than the channel, but at most (min (length candidate)
+       (length channel). (thanks to deego for noticing this)
+
+2002-11-19  Mario Lang  <address@hidden>
+
+       * erc-notify.el: * (require pcomplete): Only when compiling.
+
+2002-11-19  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el:
+       erc-track-faces-priority-list: New variable, defines what faces will
+       be shown in the modeline. If set to nil, the old behavior ("all")
+       remains.
+       erc-track-face-more-important-p: new function
+       erc-track-find-face: new function
+
+2002-11-19  Alex Schroeder  <address@hidden>
+
+       * erc-fill.el(erc-stamp): Require it.
+
+       * erc-match.el(away): devar for the compiler.
+
+       * erc-stamp.el(stamp): Moved.
+
+       * erc.el(erc-version-string): New version.
+
+       * erc-autoaway.el(erc-autoaway-idletimer): Moved to the front of
+       the file.
+
+       * erc-auto.in: (generated-autoload-file, command-line-args-left):
+       Added defvar without value to silence byte compiler.
+
+       * Makefile(realclean): renamed fullclean to realclean.
+       (UNCOMPILED): New list, for erc-bbdb.el, erc-ibuffer.el,
+       erc-speak.el.
+       (SOURCE): Do not compile UNCOMPILED.
+       (release): New target.
+       (ChangeLog): New target.
+       (todo): New target.
+
+       * erc-complete.el(erc-match): Require it.
+       (hippie-exp): Require it.
+
+       * erc-ezbounce.el(erc): Require it.
+
+       * erc-imenu.el(imenu): Require it.
+
+       * erc-nickserv.el(erc-networks): Moved up.
+
+       * erc-notify.el(pcomplete): Require it.
+
+       * erc-replace.el(erc): Require it.
+
+       * erc-sound.el(sound): Typo -- define-key in erc-mode-map.
+
+       * erc-speedbar.el(dframe): Require it.
+       (speedbar): Require it.
+
+       * erc-track.el(erc-default-recipients): devar for the compiler.
+
+       * README: New file.
+
+2002-11-18  Mario Lang  <address@hidden>
+
+       * AUTHORS: File needed for mkChangeLog
+
+       * mkChangeLog: Original code by mhp
+
+2002-11-18  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-button-list): Renamed to erc-list and moved
+       to erc.el.
+
+       * erc.el(erc-list): New.
+
+       * erc-track.el(erc-make-mode-line-buffer-name): Simplified.
+       (erc-modified-channels-display): Simplified.  Now works with all
+       faces, and fixes the bug that when two faces where used (bold
+       erc-current-nick-face), then no faces was added.
+
+       * erc-track.el: Lots of new tests.  Moved some defuns around in
+       the file.
+       (erc-all-channel-names): Renamed.
+       (erc-all-buffer-names): New name, now include query buffers as
+       well.
+       (erc-modified-channels-update-inside): New variable.
+       (erc-modified-channels-update): Use it to prevent running display
+       if already inside it.  This prevented debugging of
+       `erc-modified-channels-display'.
+       (erc-make-mode-line-buffer-name): Moved.
+       (erc-track-shorten-names): Don't test using erc-channel-p as that
+       failed with query buffers.
+       (erc-unique-substrings): Move setq i + 1 to the end of the while
+       loop, so that start is used as a default value instead of start +
+       1.
+
+2002-11-18  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el:
+       erc-unique-substrings: define this before using it in assert
+
+       * erc.el:
+       with-erc-channel-buffer: Define *before* using this macro. This
+       hopefully fixes a bug noted on IRC.
+
+       * erc-notify.el:
+       erc-notify-signon-hook, erc-notify-signoff-hook: New hooks. They're
+       even run when their name suggests!
+
+2002-11-18  Alex Schroeder  <address@hidden>
+
+       * erc-list.el: Typo.
+
+       * erc-speedbar.el: Whitespace only.
+
+       * erc.el(define-erc-module): Avoid defining an alias if name and
+       alias are the same.
+
+       * erc-ibuffer.el: URL
+
+       * erc-imenu.el(erc-imenu-version): New constant.
+
+       * erc-ibuffer.el(erc-ibuffer-version): New constant.
+
+       * erc-ibuffer.el: File header, comments.
+
+       * erc-fill.el(erc-fill-version): New constant.
+
+       * erc-ezbounce.el(erc-ezb-version): New constant.
+
+       * erc-complete.el(erc-complete-version): New constant.
+
+       * erc-chess.el(erc-chess-version): New constant.
+
+       * erc-chess.el: Whitespace only.
+
+       * erc-bbdb.el(erc-bbdb-version): Typo.
+
+       * erc-bbdb.el(erc-bbdb-version): New constant.
+       Lots of whitespace changes.  Changes to the header.
+
+       * erc-track.el(erc-track-shorten-aggressively): Doc.
+       (erc-all-channel-names): New function.
+       (erc-unique-channel-names): New function.
+       (unique-substrings): Renamed.
+       (erc-unique-substrings): New name
+       (unique-substrings-1): Renamed.
+       (erc-unique-substring-1): New name.  Added lots of tests.
+       (erc-track-shorten-names): Call erc-unique-channel-names instead
+
+       * erc-match.el(match): Rewrote a as module.
+
+2002-11-17  Alex Schroeder  <address@hidden>
+
+       * erc-netsplit.el(erc-netsplit-version): New.
+       (netsplit): Defined as a module, replacing erc-netsplit-initialize
+       and erc-netsplit-destroy.
+
+2002-11-17  Jorgen Schaefer  <address@hidden>
+
+       * erc-track.el(erc-track-switch-buffer):
+       define-erc-module defines erc-track-mode,
+       not erc-track-modified-channels-mode.
+
+       * erc.el:
+       Variables erc-play-sound, erc-sound-path, erc-default-sound,
+       erc-play-command, erc-ctcp-query-SOUND-hook and functions
+       erc-cmd-SOUND, erc-ctcp-query-SOUND, erc-play-sound, erc-toggle-sound
+       moved to erc-sound.el
+
+       Variables erc-page-function, erc-ctcp-query-PAGE-hook and function
+       erc-ctcp-query-PAGE moved to erc-page.el
+
+       * erc-page.el:
+       erc-page.el: New file. CTCP PAGE support for ERC, extracted from erc.el.
+
+       * erc-sound.el:
+       defin-erc-module: Typo. Autoload should do erc-sound-mode and 
"erc-sound".
+
+       * erc-sound.el:
+       erc-sound.el: New file. Contains all the CTCP SOUND stuff from erc.el.
+
+       * erc.el(erc-process-ctcp-request):
+       Removed (old-style CTCP handling)
+       (erc-join-autogreet): Removed (was broken anyways)
+
+2002-11-17  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-button-version): New constant.
+
+       * erc-button.el(button): rewrote as a module.
+
+2002-11-17  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: New functions:
+       (erc-event-to-hook), (erc-event-to-hook-name): Convert an event to the
+       corresponding hook. The latter only returns the name, while the former
+       interns the hook symbol and returns it.
+
+2002-11-17  Alex Schroeder  <address@hidden>
+
+       * erc-replace.el:
+       Practically total rewrite.  All smiley stuff deleted.
+
+       * erc-track.el(track): typo.
+
+       * erc.el(define-erc-module): Doc change.
+
+2002-11-17  Jorgen Schaefer  <address@hidden>
+
+       * erc-autoaway.el: Changed to use define-erc-module.
+
+       * erc.el(define-erc-module):
+       Make the enable/disable functions interactive.
+
+       * erc.el(erc):
+       Don't use switch-to-buffer when we're in the minibuffer,
+       because that does not work. Use display-buffer instead. This leaves
+       two problems: The point does not advance to the end of the buffer for
+       whatever reason, and after leaving the minibuffer, the new window gets
+       buried.
+
+2002-11-17  Alex Schroeder  <address@hidden>
+
+       * erc-stamp.el(stamp): Doc change.
+
+       * erc-stamp.el(erc-stamp-version): New constant.
+       (stamp): downcase alias name of the mode.
+
+       * erc.el(define-erc-module): Added defalias option, renamed
+       parameters again.
+
+       * erc-track.el: erc-track-modified-channels-mode is now only an
+       alias to erc-track-mode.  Only erc-track-mode is autoloaded.
+       (track): Rewrote call to define-erc-module.
+
+2002-11-16  Mario Lang  <address@hidden>
+
+       * debian/README.Debian: * Spelling fix
+
+       * erc-fill.el: * Fix autoload definition for erc-fill-mode
+
+       * debian/control, debian/maint/postinst, debian/maint/prerm:
+       * Remove /usr/doc -> /usr/share/doc link handling
+
+       * debian/changelog: * Sync with reality
+
+       * debian/scripts/startup.erc:
+       * Add /usr/share/emacs/site-lisp/erc/ to load-path
+       * (load "erc-auto")
+
+       * debian/README.Debian:
+       * Info about the changes since last release updated
+
+       * erc-pcomplete.el: * Fix emacs/xemacs compatibility
+
+       * debian/scripts/install: * Don't compile erc-compat, fix ELCDIR
+
+       * debian/control: * Change maintainer field
+
+       * erc.el:
+       * (defin-erc-module): Renamed argument mode-name to mname because silly 
byte-compiler thought we were talking about `mode-name'.
+
+       * Makefile: * Added debrelease target
+
+       * erc-bbdb.el, erc-pcomplete.el, erc-stamp.el, erc.el:
+       * (define-erc-module): Added mode-name argument.
+       * Converted erc-bbdb, erc-pcomplete and erc-stamp to new macro.
+       * autoload fixes
+
+       * erc-bbdb.el:
+       * Create a global-minor-mode (i.e., make it a proper erc-module)
+
+       * erc.el: * (define-erc-module): New defmacro
+
+2002-11-16  Jorgen Schaefer  <address@hidden>
+
+       * erc-autoaway.el(erc-autoaway-idle-seconds):
+       t in docstrings should be non-nil
+
+2002-11-16  Alex Schroeder  <address@hidden>
+
+       * erc-autoaway.el, erc-button.el, erc-fill.el, erc-match.el,
+         erc-menu.el, erc-ring.el, erc-track.el:
+       Cleanup of file headers: copyright years, GPL mumbo-jumbo, commentaries.
+
+       * erc-stamp.el(erc-insert-away-timestamp-function):
+       New custom type.
+       (erc-insert-timestamp-function): New custom type.
+
+       * erc-fill.el(erc-fill-function): Doc, new custom type.
+       (erc-fill-static): Doc.
+       (erc-fill-enable): New function.
+       (erc-fill-disable): New function.
+       (erc-fill-mode): New function.
+
+       * erc-match.el(erc-match-enable): add-hook for both
+       erc-insert-modify-hook and erc-send-modify-hook.
+       (erc-match-disable): remove-hook for both
+       erc-insert-modify-hook and erc-send-modify-hook.
+
+2002-11-15  Jorgen Schaefer  <address@hidden>
+
+       * erc-autoaway.el:
+       - Added a way to use auto-away using emacs idle timers
+       - Renamed erc-set-autoaway to erc-autoaway-possibly-set-away for 
consistency
+
+2002-11-14  Jorgen Schaefer  <address@hidden>
+
+       * erc.el: erc-mode-map: Removed the C-c C-g binding for erc-grab
+
+       * erc.el:
+       (erc-server-341) Another instance of the channel/chnl problem i didn't
+       see last time
+
+2002-11-14  Alex Schroeder  <address@hidden>
+
+       * erc-compat.el(erc-decode-coding-string): typo
+
+2002-11-14  Jorgen Schaefer  <address@hidden>
+
+       * erc.el(erc-server-341):
+       variable name should be chnl not channel, as it is
+       used this way in this function, and the other erc-server-[0-9]* use
+       chnl too.
+
+       * erc-autoaway.el:
+       Set back on all servers, not just the current one, since we're set
+       away on all servers as well.
+
+       * HISTORY: Fixed typo (ngu.org => gnu.org)
+
+       * erc-autoaway.el, erc-fill.el, erc.el: erc-autoaway.el:
+       * new file
+
+       * erc.el: Removed auto-discard-away facility (now included in
+       erc-autoaway.el)
+       (erc-away-p): new function
+
+       * erc-fill.el (erc-fill-variable): Check whether erc-timestamp-format
+       is bound before using it (erc-fill.el does not require erc-stamp).
+
+2002-11-10  Alex Schroeder  <address@hidden>
+
+       * TODO:
+       TODO: moved it to http://www.emacswiki.org/cgi-bin/wiki.pl?ErcTODO
+
+       * erc.el(with-erc-channel-buffer): Rudimentary doc string.
+
+2002-11-09  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-nick-popup-alist): Made a defcustom.
+
+       * erc-button.el(erc-button-disable): New function.
+       (erc-button-enable): New function, replaces the add-hook calls at 
top-level.
+       (erc-button-mode): New minor mode.
+
+2002-11-08  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-button-entry): Use erc-button-syntax-table.
+
+       * erc.el, erc-stamp.el: Doc changes.
+
+       * erc-match.el(erc-match-mode): New function, replacing the
+       add-hook.
+       (erc-match-enable): New function.
+       (erc-match-disable): New function.
+       (erc-current-nick-highlight-type): Changed from 'nickname to 'nick
+       to make it consistent with the others.
+       (erc-match-message): Ditto.
+
+       * erc-button.el(erc-button-syntax-table): New variable.
+       (erc-button-add-buttons): Use it.
+
+2002-11-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       1) (bug) ERC pops up a new buffer and window when being messaged
+          from an ignored person. fixed
+       2) (misfeature) ERC notices the user in the minibuffer when it
+          ignores something - this can get very annoying, since the
+          minibuffer is also visible when not looking at ERC buffers.
+          Added a customizable variable for this, the default is nil.
+       3) (wishlist) There is no IGNORE or UNIGNORE command.
+          Added.
+       4) (wishlist) Some IRC clients, notably irssi, allow the user to
+          ignore "replies" to ignored people. A reply is defined as a
+          line starting with "nick:", where nick is the nick of an
+          ignored person. Added that functionality.
+       Done by Jorgen Schaefer <address@hidden>
+
+2002-11-02  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-connect): set-process-coding-system to raw-text.
+
+2002-11-01  Brian P Templeton  <address@hidden>
+
+       * erc-pcomplete.el, erc-stamp.el, erc-track.el:
+       Fixed more autoloads
+
+       * erc-compat.el: Added autoload for erc-define-minor-mode
+
+2002-11-01  Mario Lang  <address@hidden>
+
+       * erc.el: * (erc-send-command): will break long messages into
+       a bunch of smaller ones, to prevent them from being truncated by the 
server.
+       The patch also axes some trailing whitespace. :-) <resolve>
+
+2002-10-31  Alex Schroeder  <address@hidden>
+
+       * erc-pcomplete.el(erc-compat): Require.
+       (erc-completion-mode): Use erc-define-minor-mode.
+
+       * erc-track.el(erc-compat): Require.
+       (erc-track-modified-channels-mode): Use erc-define-minor-mode.
+
+       * erc-stamp.el(erc-compat): Require.
+       (erc-timestamp-mode): Use erc-define-minor-mode.
+
+       * erc-compat.el: New file with the code for erc-define-minor-mode,
+       erc-encode-coding-string and erc-decode-coding-string.  Essentially
+       all the stuff that cannot be tested for using a simple boundp or
+       fboundp -- eg. because the number of arguments are wrong.
+
+       * erc.el(erc-compat): Require.
+       (erc-process-coding-system): Moved to erc-compat.el.
+       (erc-connect): Do not set-process-coding-system.
+       (encode-coding-string): Compatibility code moved to erc-compat.el.
+       (decode-coding-string): Compatibility code moved to erc-compat.el.
+       (erc-encode-coding-string): Compatibility code moved to erc-compat.el.
+       (erc-decode-coding-string): Compatibility code moved to erc-compat.el.
+
+2002-10-27  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-display-line-1): Removed call to
+       erc-decode-coding-string.
+       (erc-parse-line-from-server): Added call to
+       erc-decode-coding-string before anything gets parsed at all.
+       (erc-decode-coding-string): Use undecided coding system.
+
+2002-10-24  Sandra Jean Chua  <address@hidden>
+
+       * erc-button.el, erc.el:
+       Added LASTLOG command and action for nick-button
+
+2002-10-22  Sandra Jean Chua  <address@hidden>
+
+       * erc-pcomplete.el:
+       Fixed nopruning bug, added /MODE channel (mode) [nicks...] completion - 
mode not completed yet.
+
+2002-10-16  Sandra Jean Chua  <address@hidden>
+
+       * erc-pcomplete.el:
+       Fixed 'Hi delysid:' bug in SAY completion after realizing that 
pcomplete on commands already took care of completing the initial nick:
+
+2002-10-15  Mario Lang  <address@hidden>
+
+       * erc-pcomplete.el: update from sachac
+
+2002-10-13  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-emacs-time-to-erc-time): Catch when tm is nil.
+
+2002-10-11  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * Fixed `erc-scroll-to-bottom' to scroll to the bottom even when
+         in the middle of a line. Might also fix the Magic ECHAN Bug[tm]. (-:
+
+2002-10-11  Mario Lang  <address@hidden>
+
+       * erc-nickserv.el: Fixed erc-networks for the opn->freenode change
+
+2002-10-08  Mario Lang  <address@hidden>
+
+       * erc-pcomplete.el:
+       Make erc-completion-mode work interactively with already joined channel 
buffers
+
+       * erc-chess.el: Add autoload cookies
+
+       * erc-notify.el: Add pcomplete support
+
+       * erc.el:
+       Remove autoload statements, remove autoload cookie from erc-mode and 
erc-info-mode
+
+       * erc-fill.el, erc-match.el: add/remove autoload cookies
+
+2002-10-06  Alex Schroeder  <address@hidden>
+
+       * erc-pcomplete.el(erc-completion-mode): New global minor mode
+       with autoload cookie.
+       (erc-pcomplete-enable): Renamed erc-pcomplete-initialize.
+       (erc-pcomplete-disable): New function.
+
+       * erc-complete.el: Doc changes.
+
+       * erc-stamp.el(erc-stamp-enable): Renamed erc-stamp-initialize.
+       (erc-stamp-disable): Renamed erc-stamp-destroy.
+       (erc-timestamp-mode): Use new names.
+
+       * erc.el: Removed autoload for erc-complete and
+       erc-track-modified-channels-mode -- the autoload cookie should do
+       that instead.
+       (erc-input-message): Doc string, removed binding for erc-complete.
+       (erc-mode-map): Removed binding for erc-complete.
+
+2002-10-03  Mario Lang  <address@hidden>
+
+       * erc-notify.el:
+       New functions erc-notify-JOIN and erc-notify-QUIT to catch some common 
cases (warning, untested)
+
+2002-10-01  Alex Schroeder  <address@hidden>
+
+       * erc-stamp.el(erc-timestamp-mode): New function.  Removed call
+       to erc-stamp-initialize at the end.
+
+2002-09-25  Brian P Templeton  <address@hidden>
+
+       * erc.el:
+       Added customizable `erc-process-coding-system' variable.
+
+2002-09-22  Brian P Templeton  <address@hidden>
+
+       * erc-fill.el:
+       `erc-fill-variable' now does the right thing when `erc-hide-timestamps' 
is non-nil
+
+2002-09-21  Mario Lang  <address@hidden>
+
+       * erc-fill.el:
+       patch from Peter Solodov <address@hidden>  (note, its slightly broken 
still
+
+2002-09-05  Mario Lang  <address@hidden>
+
+       * erc-pcomplete.el: Added LEAVE as alias for PART
+
+2002-09-04  Mario Lang  <address@hidden>
+
+       * erc-pcomplete.el:
+       By sachac (good work!) keep up doing such things
+
+2002-08-31  Mario Lang  <address@hidden>
+
+       * erc.el:
+       A fix for Bug#133267: now you can put (erc-save-buffer-in-logs) on 
erc-insert-post-hook to save *every* incoming message.
+
+2002-08-30  Brian P Templeton  <address@hidden>
+
+       * erc.el:
+       Changed default value of erc-common-server-suffixes because of the OPN
+       name change
+
+2002-08-28  Mario Lang  <address@hidden>
+
+       * erc-stamp.el: Try to reactivate isearch in xemacs
+
+       * erc-stamp.el:
+       fixes issues related to comparative emacsology and a silly bug
+
+2002-08-27  Mario Lang  <address@hidden>
+
+       * erc.el:
+       New hook erc-send-completed-hook (for robot stuff), changed alexanders 
email address to reflect reality, little fix to erc-auto-query to get a bit of 
a speedup
+
+2002-08-22  Mario Lang  <address@hidden>
+
+       * erc-button.el:
+       Fixed case-fold-search (thanks sachac), now lambda works in 
erc-button-alist, added wardwiki+google+symvar+rfc+itime regexps from the wiki
+
+2002-08-19  Mario Lang  <address@hidden>
+
+       * erc-button.el:
+       erc-nick-popup-alist: New variable to make erc-nick-popup configurable
+
+2002-08-16  Alex Schroeder  <address@hidden>
+
+       * erc-button.el(erc-recompute-nick-regexp): Fixed regexp.
+
+       * erc-button.el(erc-button-buttonize-nicks): Changed custom type
+       to integer.
+       (erc-button-add-buttons): Moved button removal code to new
+       function.
+       (erc-button-remove-old-buttons): New function.
+       (erc-button-add-button): Removed use of overlays and used
+       erc-button-add-face instead.
+       (erc-button-add-face): New function to merge faces as text
+       properties.  This should be much faster when lots of buttons
+       appear.
+       (erc-button-list): New helper function.
+
+       * erc.el(erc-display-message): Fixed argument list.
+       (erc-display-prompt): Reduced calls to length, use start-open
+       property for XEmacs to prevent a little box of erc-prompt-face at
+       the end of messages other people send.
+       (erc-refresh-channel-members): Fix XEmacs calls to split-string,
+       which may return an empty string at the end of the list.  This
+       would cause hangups in erc-button in re-search-forward loops.
+       (erc-get-channel-mode-from-keypress): Replaced control codes with
+       octal escape sequences.
+
+2002-08-14  Mario Lang  <address@hidden>
+
+       * erc-button.el:
+       Try to be compatible to XEmacs regexp-opt. (Im going to quit this job 
if I find more of those damn differencies
+
+       * debian/README.Debian, debian/scripts/install:
+       * Added info to README.Debian
+       * Finished debian/scripts/install
+
+2002-08-13  Mario Lang  <address@hidden>
+
+       * debian/scripts/install: First attempt to fix it
+
+       * debian/README.Debian, debian/changelog, debian/scripts/install:
+       changelog: Changed maintainer and added new entry
+       README.Debian: Re-explained the byte-compile issue
+       scripts/install: Exclude erc-bbdb|chess|ibuffer|speedbar from
+       byte-compiling
+
+       * erc-track.el: Added C-c C-SPC in addition to C-c C-@
+
+       * erc-notify.el: Little docstring change
+
+2002-08-09  Mario Lang  <address@hidden>
+
+       * erc-stamp.el:
+       Change one use of set-text-properties to add-text-properties (tnx Lathi)
+
+2002-08-02  Mario Lang  <address@hidden>
+
+       * erc-stamp.el: added erc-timestamp-only-if-changed-flag
+
+2002-07-22  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Removed timestamp related code and moved into erc-stamp.el
+
+       * erc-stamp.el:
+       Timestamping code moved out of erc.el. Additional, now we can timestamp 
either on the left or on the right side
+
+2002-07-16  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Make ctcp ping return its message in the active buffer, instead of 
the server buffer
+       * Corrected minimal typo in catalog
+       * Added var and variable as alias for /set
+
+2002-07-08  Mario Lang  <address@hidden>
+
+       * erc-track.el:
+       * New function erc-track-switch-buffer (by resolve)
+         Bound to C-c C-SPC, enjoy!
+
+2002-07-08  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: New snapshot deb
+
+       * debian/scripts/install: Rewrote in make.
+       Does not byte-compile erc-speak.el at all, and excludes erc-track.el 
too, if
+       ran for xemacs.
+
+       * debian/control: Added dependency on make
+
+       * debian/copyright: Updated copyright info
+
+       * debian/rules: Use $(wildcard *.el) instead of a hardcoded list
+
+2002-07-03  Diane Murray  <address@hidden>
+
+       * erc.el:
+       erc-iswitchb now works correctly if erc-modified-channels-alist is 
non-nil
+
+2002-07-01  Diane Murray  <address@hidden>
+
+       * erc-menu.el:
+       * changed how we check if we should activate "Track hidden channels" and
+         whether it should be selected - fixes a bug XEmacs where whole menu 
bar
+         does not work if menu is loaded
+
+       * erc-menu.el:
+       * added "Disconnect from server", only selectable if erc-connected is 
non-nil
+
+       * topic is allowed to be set by normal users if channel mode is not +t
+
+       * add " ..." after description if arguments needed after selecting menu 
item
+
+       * only allow selecting of menu points needing a channel if current 
buffer is
+         a channel buffer - done by testing if channel-members is non-nil
+
+       * put erc-match functions in new group "Pals, fools and other keywords"
+
+       * erc.el:
+       * moved definition of erc-show-my-nick to GUI variables section
+
+       * erc-connected variable now defined with defvar
+         now set in channel and query buffers, was only in server buffer before
+         upon disconnect, set erc-connected to nil in all the server's buffers
+
+       * added erc-cmd-GQUIT and its alias erc-cmd-GQ - quit all servers at 
once
+
+       * added interactive function erc-quit-server, bound to C-c C-q
+
+       * added erc-server-WALLOPS
+
+       * added WALLOPS to english catalog, fixed s461 (was showing message 
twice)
+
+       * typo fixes, spacing change
+
+2002-06-29  Mario Lang  <address@hidden>
+
+       * erc.el: Use pp-to-string in /set (without args)
+
+       * erc-netsplit.el:
+       Make /set anonymous-lign set erc-anonymous-login, also report
+       which var was set to which val.
+
+2002-06-28  Diane Murray  <address@hidden>
+
+       * erc-menu.el: added "Customize ERC"
+
+2002-06-25  Mario Lang  <address@hidden>
+
+       * erc.el: New variable: erc-use-info-buffers, defaults to nil.
+         This prevents info-buffers from being created/updated.
+         Set to t if you use :INFO buffers.
+         (by rw)
+       Delete (erc-display-prompt) from reconnect to avoid clutter
+
+2002-06-23  Diane Murray  <address@hidden>
+
+       * erc.el:
+       erc-get-channel-mode-from-keypress is now bound to C-c C-m
+       erc-insert-mode-command is taken care of by this function as well
+
+2002-06-21  Mario Lang  <address@hidden>
+
+       * erc-track.el:
+       Fixed bug where buffer-names suddenly had text-properties.
+
+2002-06-19  Diane Murray  <address@hidden>
+
+       * Makefile: changed erc-auto.el to $(SPECIAL) in make fullclean
+
+       * Makefile: remove erc-auto.el on make fullclean
+
+2002-06-18  Diane Murray  <address@hidden>
+
+       * erc-match.el: fixed spelling error
+
+       * erc-track.el, erc-match.el: * erc-match.el:
+         highlight current nickname in its own face (inactive by default):
+         - added erc-current-nick-highlight-type, erc-current-nick-face,
+           erc-current-nick-p
+
+       * erc-track.el:
+         added support for erc-current-nick-face
+
+2002-06-17  Diane Murray  <address@hidden>
+
+       * erc.el: * added beginning support for 005 numerics:
+         - added buffer local variable erc-server-parameters
+         - added erc-server-005, which sets erc-server-parameters if the 
server has
+           used this code to show its parameters
+
+2002-06-16  Diane Murray  <address@hidden>
+
+       * erc.el:
+       * bugfix: when pasting lines with blank lines in between, remove the 
blank lines
+         but send the rest
+
+       * since we know the command, use it when checking what's in 
erc-hide-list
+         added check to erc-server-KICK
+
+       * added some blank lines for better readability
+
+2002-06-16  Alex Schroeder  <address@hidden>
+
+       * erc-nickserv.el(erc-nickserv-alist): Fixed typo.
+
+2002-06-15  Alex Schroeder  <address@hidden>
+
+       * erc-nickserv.el(erc-networks): Added doc string.
+       (erc-nickserv-alist): Added doc string.
+
+2002-06-14  Diane Murray  <address@hidden>
+
+       * erc-ring.el:
+       fixed bug so that the prompt and command always get put at the end of 
the buffer
+
+2002-06-10  Mario Lang  <address@hidden>
+
+       * erc-nickserv.el: Added iip support.
+       Added :type for erc-nickserv-passwords custom.
+       Fixed hook usage.
+
+2002-06-07  Diane Murray  <address@hidden>
+
+       * erc-nickserv.el: * added GalaxyNet
+
+       * erc-nickserv-alist:
+         - sorting networks alphabetically
+         - added two more pieces of information in erc-nickserv-alist:
+           word to use for identification and whether to use the nickname
+
+       * erc-current-network:
+         - made regex case insensitive, downcase server to match
+         - uses the new information
+         - now uses new variable erc-networks instead of doing checking 
manually
+
+       * added variable erc-networks
+
+       * fixed some indentation, documentation
+
+2002-06-07  Mario Lang  <address@hidden>
+
+       * erc.el: Fix for kill-buffer hook stuff
+
+2002-06-06  Mario Lang  <address@hidden>
+
+       * erc.el: Added /squery command
+
+2002-06-06  Diane Murray  <address@hidden>
+
+       * erc-menu.el: * made group Channel modes
+         - moved change mode and invite only mode to here
+         - added secret, moderated, no external send, topic lock, limit, key
+
+       * check that user is in a channel buffer and user is a channel operator
+         for all op-related actions
+
+       * "Identify to nickserv" needs erc-nickserv-identify defined
+
+       * added "Show ERC version"
+
+       * erc.el:
+       * added erc-set-channel-limit, erc-set-channel-key, 
erc-toggle-channel-mode
+
+       * added erc-get-channel-mode-from-keypress, which is bound to C-c m
+         sends the next character which is typed to one of the 3 new functions
+         - did not remove erc-invite-only-mode and it's key binding in case
+           people are used to it, although it probably should be removed...
+
+       * in erc-server-MODE:
+         added check if tgt equal to user's nick
+         removed erc-display-line, only using the erc-display-message
+
+       * added s461 to english catalog
+
+       * fixed bug where XEmacs would not quit if erc-quit-reason was
+         set to erc-quit-reason-various and assoc-default was not defined
+
+2002-06-04  Andreas Fuchs  <address@hidden>
+
+       * erc-ezbounce.el, erc-match.el:
+       * erc-ezbounce.el: Added. Provides support for ezbouncer; automatic 
login,
+                          session management implemented. I've contacted the 
author
+                          about stuff in EZBounce's logging.
+       * erc-match.el: Fixed a stupid mistake where
+                       "*** Your new nick is <foo>" would trigger an error.
+
+2002-06-04  Diane Murray  <address@hidden>
+
+       * erc-nickserv.el, erc.el: * added erc-nickserv.el
+       * moved nickserv identification variables and functions to the new file
+         (require 'erc-nickserv) is now necessary for this to work
+
+       * erc.el:
+       * results of /COUNTRY now formatted as notice; errors are ignored,
+         fixing
+         bug which made prompt disappear
+
+       * added undefined-ctcp error message to english catalog
+
+       * changed some (when (not erc-disable-ctcp-replies) to use unless 
instead
+         and some if's without else statements to use when or use
+
+       * CTCP replies now use erc-display-message, formatted as notices
+
+       * added following to english catalog:
+         - undefined-ctcp
+         - CTCP-CLIENTINFO, CTCP-ECHO, CTCP-FINGER, CTCP-PAGE, CTCP-PING,
+           CTCP-SOUND, CTCP-TIME, CTCP-UNKNOWN, CTCP-VERSION
+         - s303, s305, s306, s353
+
+       * split erc-server-305-or-306 into erc-server-305 and erc-server-306
+
+       * KICK already had buffer set, using it
+
+       * erc.el:
+       * erc-format-timestamp now only called from erc-display-message and
+         erc-send-current-line
+
+       * all instances of erc-display-line with erc-highlight-error
+         changed to use erc-display-message
+
+       * added following error messages to english catalog:
+         bad-ping-response, bad-syntax, cannot-find-file, cannot-read-file,
+         ctcp-request, flood-ctcp-off, flood-strict-mode, no-default-channel,
+         no-target, variable-not-bound
+
+       * added following server related messages to english catalog:
+         s324, s329, s331, s332, s333, s341, s406, KICK, KICK-you, 
KICK-by-you, MODE-nick
+
+       * ignoring server codes 315, 369
+
+       * added erc-server-341, erc-server-406
+
+       * channel topic and mode notices displayed in respective channel 
buffers if they
+         exist
+
+       * erc-server-KICK: display the message before removing this channel so 
that we
+         can track the kick
+
+       * send parsed to erc-ctcp-query-ACTION-hook so that actions can be 
checked
+         by erc-match
+
+       * fixed bug where nil was shown if no reason was given by users on /PART
+
+2002-06-03  Diane Murray  <address@hidden>
+
+       * erc-match.el:
+       * fixed bug where erc-log-matches produced an error when the value of
+         (erc-default-target) was not a channel
+       * use erc-format-timestamp, if it's non-nil, for %t in 
erc-log-match-format
+
+2002-06-01  Diane Murray  <address@hidden>
+
+       * erc-button.el:
+       * made action case insensitive in erc-nick-popup and added a more 
descriptive
+         error message
+
+2002-05-30  Brian P Templeton  <address@hidden>
+
+       * erc.el:
+       Removed multiple calls of `erc-prompt' in `erc-display-prompt'
+
+2002-05-29  Mario Lang  <address@hidden>
+
+       * erc.el:
+       First step timestampkiller cleanup. I'm tired, do the rest tomorrow.
+
+       * erc.el:
+       New functionality: Catch channel/server buffer kills through 
kill-buffer-hook.
+       Currently, it only does a PART if you kill a channel buffer.
+
+2002-05-28  Mario Lang  <address@hidden>
+
+       * erc.el:
+       defvar'ed some buffer-local variables to make elint at least a bit more 
happy.
+         Moved comments into docstrings.
+       Changed some instances of member to memq.
+
+       * erc-track.el, erc.el:
+       * erc.el (erc-message-type-member): New function, used to test
+       for message type. Require erc-parsed text-property.
+       * erc-track.el (erc-track-exclude-types): New variable. Defaults
+       to ("JOIN" "PART") right now for testing, it should eventually set
+       to nil soon again.
+       (erc-track-modified-channels): Use above fun and var to optionally
+       exclude certain message types from channel tracking.
+
+2002-05-28  Diane Murray  <address@hidden>
+
+       * CREDITS: added myself, vain as it sounds ;)
+
+2002-05-25  Mario Lang  <address@hidden>
+
+       * erc.el: * Some small docstring fixes
+       * (erc-display-line): Now takes also a process object in the buffer 
argument.
+         Used for easy sending to the server buffer.
+       * Several places: Just pass proc, not (process-buffer proc)
+
+2002-05-24  Mario Lang  <address@hidden>
+
+       * erc.el: Mostly docstring fixes/additions
+
+       * erc-netsplit.el: Doc fixes, and a new netjoin-done message.
+
+       * erc-fill.el: Doc fixes, erc-fill custom group, autoloads.
+
+       * erc-netsplit.el: Fix to erc-netsplit-timer.
+
+       * erc-netsplit.el: Fixed a silly typo
+
+       * erc-maint.el: is this really necessary?
+
+       * erc.el: Added new variable erc-hide-list.
+       It affects erc globally right now, and is used to hide certain IRC type 
messages like JOIN and PART.
+
+       * Makefile: Doh, I should really test this before checkin :)
+
+       * Makefile: Silly cut&paste bug fixed
+
+       * erc-list.el: Added autoload cookie
+
+       * erc-match.el: Added missing require erc.
+
+       * erc-notify.el: Autoload cookies and a -initialize function.
+
+       * erc-chess.el: Added autoload cookies
+
+       * Makefile: Finally, we have a Makefile.
+       Primarily used for autoload definition generation right now.
+
+       * erc-auto.in: First version.
+
+       * erc-track.el: Added autoload cookie
+
+       * erc-netsplit.el:
+       New module, used to autodetect and hide netsplits.
+       (Untested, no netsplit happened yet :) )
+
+       * erc-nets.el: Added some old code I once worked on.
+       Added autoload cookie
+
+2002-05-24  Diane Murray  <address@hidden>
+
+       * erc-fill.el:
+       removed reference in documentation to old variable, changed it to the 
new one
+
+       * erc.el:
+       * added new function erc-connection-established which is called after 
receiving
+         end of MOTD (does nothing if it's been called before)
+
+       * added new hook erc-after-connect which is called from
+         erc-connection-established with the arguments server (the announced 
server)
+         and nick - which other arguments should be sent??
+
+       * added buffer variable erc-connected which is set to t the first time
+         erc-connection-established is called, set to nil again if we've been
+         disconnected
+
+       * set initial user mode
+         - added custom variable erc-user-mode which can be a string or a 
function
+           which returns a string
+         - new function erc-set-initial-user-mode gets called from
+           erc-connection-established
+
+2002-05-22  Diane Murray  <address@hidden>
+
+       * erc.el: fixed bug where prompt was missing after reconnect
+
+2002-05-21  Diane Murray  <address@hidden>
+
+       * erc.el:
+       in erc-nickserv-identify: if network is unknown, just use "Nickserv"
+
+       * erc.el: * fixed some typos
+
+       * timestamping
+         - ctcp request messages and replies now have timestamp
+         - timestamps in front of error messages now in timestamp face
+         - added timestamp to more error messages
+
+       * ctcp reply messages, server ping message updated
+
+       * added variable erc-verbose-server-ping - check this instead of 
erc-paranoid
+
+       * added whowas on no such nick:
+         - added variable erc-whowas-on-nosuchnick
+         - in erc-server-401 do WHOWAS if erc-whowas-on-nosuchnick is non-nil
+
+       * erc.el: forgot documentation for erc-nickserv-alist
+
+       * erc.el: NickServ identification changed and enhanced:
+       - erc-nickserv-identify-autodetect now called from 
erc-server-NOTICE-hook
+       - now possible to identify automatically without prompt:
+         - added custom variables erc-prompt-for-nickserv-password and
+           erc-nickserv-passwords
+       - added erc-nickserv-alist containing the different networks' nickserv 
details
+       - added function erc-current-network to determine the network symbol
+       - fixed bug where identification on dalnet didn't work, because they now
+         require address@hidden
+         now sends to all NickServ with address@hidden where possible
+
+2002-05-17  Diane Murray  <address@hidden>
+
+       * erc-fill.el:
+       * filling with erc-fill-variable now works with custom defined fill 
width:
+         - changed erc-fill-column from defvar to defcustom
+         - in erc-fill-variable: set fill-column to value of erc-fill-column
+
+       * erc.el: erc.el:
+       * fixed bug where topic wasn't being set when channel name was provided
+
+       erc-fill.el:
+       * filling with erc-fill-variable now works with custom defined fill 
width:
+         - changed erc-fill-column from defvar to defcustom
+         - in erc-fill-variable: set fill-column to value of erc-fill-column
+
+2002-05-16  John Wiegley  <address@hidden>
+
+       * erc.el: whitespace fix
+
+2002-05-15  Diane Murray  <address@hidden>
+
+       * erc.el:
+       * added explanation of empty string working in 
erc-quit-reason-various-alist
+       * removed the text property from erc-send-message, it caused problems
+         with /SV (as noticed by gbvb on IRC) and is obviously not needed
+       * when receiving a ctcp query, convert type to uppercase to allow for
+         "/ctcp nick time" and not just "/ctcp nick TIME"
+       * timestamp in front of server notices now shown in the timestamp face
+
+2002-05-13  Diane Murray  <address@hidden>
+
+       * erc.el:
+       - in erc-format-privmessage: `erc-format-timestamp' added to message 
after
+         message's text properties are applied so that it doesn't lose its face
+
+       - /quit without reason now works when `erc-quit-reason' is set to
+         `erc-quit-reason-various' and the empty string "" is defined in
+         `erc-quit-reason-various-alist'
+
+2002-05-13  Andreas Fuchs  <address@hidden>
+
+       * erc-bbdb.el:
+       * Applied Drewies patch to pop-up on nick changes when -popup-type is 
'visible
+
+2002-05-12  Andreas Fuchs  <address@hidden>
+
+       * erc-bbdb.el, erc.el:
+       * erc-bbdb.el: pop up the buffer on /whois when erc-bbdb-popup-type is 
'visible
+       * erc.el: fix for empty quit reason problem by drewie.
+
+2002-05-12  Mario Lang  <address@hidden>
+
+       * erc.el: disumu nick patch
+       - added erc-show-my-nick (default t)
+         if t, show nickname like <nickname>
+         if nil, only show a > character before the message
+       - added faces erc-nick-default-face and erc-nick-msg-face
+         - nicknames (channel, msgs, notices) are now in bold face by default
+         - the msg face matches the erc-direct-msg-face color
+
+2002-05-10  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-send-pre-hook): Doc change.
+
+       * CREDITS: Alexander L. Belikoff is confirmed original author.
+
+2002-05-10  Mario Lang  <address@hidden>
+
+       * erc.el:
+       timestamp fix by disumutimestamp fix by disumutimestamp fix by 
disumutimestamp fix by disumutimestamp fix by disumutimestamp fix by 
disumutimestamp fix by disumutimestamp fix by disumu
+
+2002-05-09  Mario Lang  <address@hidden>
+
+       * erc.el: *** empty log message ***
+
+2002-05-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       New var: erc-echo-notices-in-minibuffer-flag. defaults to t.
+
+2002-05-04  John Wiegley  <address@hidden>
+
+       * TODO: *** empty log message ***
+
+2002-05-03  Alex Schroeder  <address@hidden>
+
+       * erc.el: Copyright notice, version string updates.
+
+2002-05-02  Alex Schroeder  <address@hidden>
+
+       * erc.el: Comment: dme is David Edmondson
+
+2002-05-01  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-warn-about-blank-lines): New option.
+       (erc-send-current-line): Use it.
+       (erc-quit-reason-various-alist): New option.
+       (erc-quit-reason): New option.
+       (erc-quit-reason-normal): New function.
+       (erc-quit-reason-zippy): New function.
+       (erc-quit-reason-various): New function.
+       (erc-cmd-QUIT): Use them.
+
+2002-04-30  Alex Schroeder  <address@hidden>
+
+       * erc.el: Version 2.92
+
+       * erc.el(erc-send-modify-hook): Default value is nil.
+
+2002-04-27  John Wiegley  <address@hidden>
+
+       * erc.el:
+       Don't redisplay the prompt if the ERC buffer is no longer alive.
+
+2002-04-26  John Wiegley  <address@hidden>
+
+       * erc.el:
+       Don't call `set-buffer' on old-buf unless the buffer is valid.  It's
+       often not when separate frames are being used.
+
+2002-04-23  Mario Lang  <address@hidden>
+
+       * erc-button.el: fixed up erc-nick-regexp
+
+2002-04-22  Brian P Templeton  <address@hidden>
+
+       * erc.el:
+       `erc-prompt' may now be a function that returns a string (which is
+       used as the prompt). I don't use Customize but I think customization
+       of it may be broken if it's not a string.
+
+       There is a new `erc-prompt' function that returns the prompt as a
+       string (e.g., returning either the result of `(funcall erc-prompt)' or
+       `erc-prompt').
+
+       This allows for dynamic prompts, such as a LispWorks-like prompt, or
+       one containing simply the current channel name. It was requested by
+       Mojo Nichols (nick michols) in #emacs today, 21-Apr-2002; cf. the
+       #emacs logs at <URL:http://www.tunes.org/~nef/logs/emacs/02.04.21.
+
+2002-04-17  Mario Lang  <address@hidden>
+
+       * erc.el:
+       fix erc-send-current-line to work on empty lines again (without sending 
the prompt)
+       Fix C-c C-t to not include the nick/time info
+       (both from antifuchs)
+
+       * erc-complete.el: Fix for xemacs elt behavior
+
+2002-04-17  John Wiegley  <address@hidden>
+
+       * erc-chess.el:
+       Added a missing arg in a call to erc-chess-handler.
+
+2002-04-15  John Wiegley  <address@hidden>
+
+       * erc-chess.el: *** empty log message ***
+
+2002-04-14  John Wiegley  <address@hidden>
+
+       * erc-chess.el: *** empty log message ***
+
+2002-04-12  John Wiegley  <address@hidden>
+
+       * erc-chess.el: *** empty log message ***
+
+       * erc-chess.el: bug fixes
+
+       * erc-chess.el: *** empty log message ***
+
+2002-04-12  Mario Lang  <address@hidden>
+
+       * erc-chess.el: change order.
+
+       * erc-chess.el: more fixing.
+
+       Now, the 'match question works. It sends an accept back.
+       But display popup doesn't work..
+
+       * erc-chess.el: fixup (still far from working)
+
+2002-04-11  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Added :options entry for erc-mode-hook (erc-add-scroll-to-bottom)
+
+2002-04-11  John Wiegley  <address@hidden>
+
+       * erc.el: remove trailing \n from any sent text
+
+       * servers.pl, erc-bbdb.el, erc-button.el, erc-chess.el,
+         erc-complete.el, erc-fill.el, erc-ibuffer.el, erc-list.el,
+         erc-match.el, erc-menu.el, erc-nets.el, erc-replace.el,
+         erc-speak.el, erc-speedbar.el, erc-track.el, erc.el:
+       clean whitespace
+
+       * erc.el: Replaced erc-scroll-to-bottom.
+
+2002-04-11  Mario Lang  <address@hidden>
+
+       * erc-track.el:
+       try to fix behavior when used with different frames.
+
+2002-04-09  Mario Lang  <address@hidden>
+
+       * erc-chess.el:
+       fixup release, far from ready for real usage, but it appears to work.
+
+       * erc.el:
+       speed improvements based on elp-instrument-package RET erc- RET results
+
+       * erc-chess.el: initial version.
+       please test it
+       Get chess.el from johnw's cvs:
+       cvs -d:pserver:address@hidden:/usr/local/cvsroot login
+       cvs -d:pserver:address@hidden:/usr/local/cvsroot co chess
+
+       (as usual, blank password)
+
+       Add the resulting dir to your load-path and require erc-chess.
+
+       Usage: Just do /chess nickname
+       The remote end much use erc, as no other irc client I know of supports 
this ...
+
+       See erc-chess-default-display and maybe set it to chess-images or 
chess-ics1 if you prefer those over chess-plain.
+       Also, see erc-chess-user-full-name to set the name you use in chess 
games.
+
+2002-04-04  Mario Lang  <address@hidden>
+
+       * erc.el: New hackery latenightwise
+
+       * erc.el: upupadowndowncase
+
+2002-04-04  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: Updated for the new snapshot
+
+       * debian/rules: Install README.Debian into the package
+
+       * debian/README.Debian: Initial check-in
+
+2002-04-04  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fixed that /me in query buffers ended up in server buffer
+
+       * erc.el: * Implemented joining +k channels
+
+2002-03-14  Mario Lang  <address@hidden>
+
+       * erc.el: New utility function: erc-channel-list
+       minor fix to erc-get-buffer. hopefully that helps shapr
+
+2002-03-12  Mario Lang  <address@hidden>
+
+       * erc.el:
+       New /command: /QUOTE for sending directly to the IRC server
+       Removed erc-fill from erc-insert-modify-hook. To activate filling, 
simply customize that var.
+
+2002-03-09  Brian P Templeton  <address@hidden>
+
+       * CREDITS: *** empty log message ***
+
+2002-03-09  Mario Lang  <address@hidden>
+
+       * erc-complete.el:
+       New variable: erc-nick-completion-ignore-case. Defaults to t.
+
+       * erc-track.el:
+       * erc-track-shorten-name-function can now be set to nil to avoid 
treating of channel names at all.
+
+2002-03-06  Gergely Nagy  <address@hidden>
+
+       * debian/changelog, debian/rules: update to new snapshot
+
+2002-03-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fixed nasty bug which prevented channel limit from correctly 
display/handling
+
+       * erc-track.el: Made shortening code highly customizable.
+       Now, there is the variable erc-track-shorten-function which holds
+       a function which gets called with one argument, CHANNEL-NAMES, which is 
a list
+       of strings of the channel names.
+       It needs to return a list of strings of the same length with the 
modified values...
+
+       * erc-track.el:
+       Added erc-track-shorten-aggressively, default to nil
+       if it is set to t, erc will shorten a bit more.
+       if nil, erc will shorten the name only if it would get shorter than just
+       one char...
+
+       * erc-speak.el: added iirc to the abbreviation expansion list.
+
+       * erc-track.el:
+       Added customization variable: erc-track-use-faces. defaults to t.
+
+       * erc-track.el: *** empty log message ***
+
+       * erc-track.el:
+       experimental: Added face support to mode-line channel activity tracker.
+       Currently we use the faces used for indicating in the buffer 
(erc-pal-face for channels with pal activity...)
+
+2002-03-05  Mario Lang  <address@hidden>
+
+       * erc-complete.el: * added docfixes (thanks ore)
+
+       * erc-track.el: Fixed channel-name reduction.
+       thanks again alex.
+       Renamed the vars to erc-track-opt-start and erc-track-opt-cutoff.
+
+       * erc.el: fixed another silly error
+
+       * erc-track.el: Implemented channel name shortening.
+       Vars erc-track-cutoff says: all channel names longer than this will be 
shortened.
+       Var erc-track-minimum-channel-length says: don't make names shorten 
than this.
+       (Thanks go out to kensanata for the nice unique-substrings utility 
function).
+
+       * erc.el 2002-07-15T00:01:address@hidden: silly typo corrected
+
+       * erc.el: New variable: erc-common-server-name-suffixes
+         This alist can be used to change the server names displayed in 
mode-line
+         to a shorter version..
+       * New function: erc-shorten-server-name (uses var above)
+       * Changed erc-prepare-mode-line to use erc-shorten-server-name.
+
+2002-02-25  Mario Lang  <address@hidden>
+
+       * erc.el:
+       CTCP handling rewritten. Seems to work. please test and report probs.
+
+2002-02-24  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fixed emacs20 backward compatibility (new defun/alias: erc-propertize)
+
+2002-02-22  Mario Lang  <address@hidden>
+
+       * erc-button.el: *** empty log message ***
+
+2002-02-21  Mario Lang  <address@hidden>
+
+       * erc-button.el, erc.el:
+       minor fixup related to read-only prompts and command renaming.
+
+2002-02-21  Andreas Fuchs  <address@hidden>
+
+       * erc.el: * modify `erc-remove-text-properties-region' to work.
+         Could even be a little faster now. (-:
+
+2002-02-21  Mario Lang  <address@hidden>
+
+       * erc-ring.el:
+       fixed erc-replace-command to behave right when text is read-only.
+       Also, use erc-insert-marker and (point-max) now.
+
+       * erc.el: * Made erc-prompt read-only
+       * new function: erc-make-read-only. Can be used on erc-insert-post-hook 
and erc-send-post-hook to ensure read-only buffer text too
+
+2002-02-19  Mario Lang  <address@hidden>
+
+       * erc-list.el: added comment to docstring
+
+       * erc-speak.el: minor updates, use erc-nick-regexp now
+
+       * erc.el:
+       ensure that erc-timer-hook is called inside the server-buffer.
+
+2002-02-19  Andreas Fuchs  <address@hidden>
+
+       * erc-match.el:
+       * Probably fixed the "number-char-or-marker-p: nil" bug.
+
+2002-02-19  Mario Lang  <address@hidden>
+
+       * erc-notify.el: Initial release.
+
+       * erc.el: added #303 handling
+       moved timer and added an arg (erc-current-time)
+
+       * erc-list.el, erc.el:
+       slightly changed the erc-once-with-server-event macro
+
+       * erc-button.el: erc-button-alist: doc fix and custom type fix
+
+2002-02-18  Mario Lang  <address@hidden>
+
+       * erc-list.el, erc.el: new macro: erc-once-with-server-event
+       erc-list.el: use it
+
+       * erc-match.el:
+       Minor fix related to hook call method change (-until-seccess now)
+
+       * erc.el: fixed ctcp behavior abit (with auto-query on)
+
+       * erc-list.el: ChanList mode.
+       Load it, and type M-x erc-chanlist RET
+       Demonstrates how the new hook system can be nicely used.
+
+       * erc.el:
+       new hook: erc-default-server-hook. This one gets called if we don't 
have anything defined for a certain IRC server message.
+       New function: erc-default-server-handler. (used by above hook).
+       New function: erc-debug-missing-hooks: Used by above hook to save a 
list of unimplemented server messages.
+       New function: erc-server-buffer, erc-server-buffer-p.
+       Various places: use it.
+       Minor fixup.
+
+       * erc-button.el: fix regexp to not buttonize address@hidden hostnames
+
+2002-02-17  Mario Lang  <address@hidden>
+
+       * erc-complete.el, erc.el: Eliminated erc-command-table
+       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!)
+         e.g. /help auto-q
+       fixed autoloads for erc-add-pal and so on to be interactive.
+
+2002-02-17  Andreas Fuchs  <address@hidden>
+
+       * erc-match.el:
+       * Fix unfunctional code in `erc-get-parsed-vector-type'.
+
+       * erc-bbdb.el, erc-button.el, erc-match.el, erc.el:
+       * Be careful: MANY changes ahead. I won't go into too much details.
+
+       * erc.el, new file erc-match.el: split out all pattern-matching code.
+       * erc.el: removed all defcusts for erc-{...}-highlight-props. They are
+         quite useless, anyway.
+       * moved erc-add-entry-to-list and -remove- over to erc-match. changed
+         their arg list.
+       * erc.el: add autoloads for 
erc-{add,delete}-{keyword,pal,fool,dangerous-host}
+       * erc.el: erc-server-PRIVMSG-or-NOTICE:
+         - remove all the highlighting crap
+         - add a (when (eq s nil) ...) so that untreated CTCP messages don't
+           get misdisplayed.
+       * erc.el: erc-mark-message: removed this function, it's useless
+       * erc.el: minor bugfixes.
+
+       * erc-match.el: first checkin. This file now contains all the pattern
+         matching stuff. there is now another defcust group, erc-match,
+         containing all match related stuff (erc-keywords, ...)
+       * erc-match.el: added functionality to log matching lines. Quite
+         customizable, check out the docstring of defun erc-log-matches
+       * erc-match.el: added functionality to make foolish messages
+         invisible/intangible. This could replace erc-ignore-list
+         sometime. it's more powerful right now, anyway.
+       * erc-match.el erc-text-matched-hook: new hook. run when Text matches
+         anything (pal, fool, etc.).
+
+       * erc-button.el: Make nick buttonization customizable.
+       * erc-button.el: Give nick buttonization a lower priority so that it
+         does not break url buttons.
+
+       * erc-bbdb.el: Add \n to the separators by which we split nicknames.
+
+2002-02-17  Mario Lang  <address@hidden>
+
+       * TODO: Added item
+
+2002-02-17  Brian P Templeton  <address@hidden>
+
+       * CREDITS, erc.el: Added invisible timestamp support.
+
+2002-02-16  Gergely Nagy  <address@hidden>
+
+       * debian/changelog, debian/rules, debian/scripts/install:
+       updated to new snapshot
+
+2002-02-16  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fixed channel limit format overflow in mode-line display.
+       (Having to use floats if integers are to large is quite strange, isn't 
it?)
+
+       * TODO: TODO list created.
+       Add comments and expand it.
+
+       * erc.el:
+       Fixed bug in query buffer handling (only happend in mixed-case 
situations)
+
+       * erc.el: shapr checkdoc patch #1
+       massive docfixes! yay, keep going!
+
+2002-02-15  Mario Lang  <address@hidden>
+
+       * erc.el: various other fixes
+       make s301 a catalog entry
+
+2002-02-15  Andreas Fuchs  <address@hidden>
+
+       * erc.el: * erc-server-NICK and erc-server-INVITE: fixed to use
+         `erc-display-message'. These I missed in the first checkin.  I
+         didn't say it in the last log message, but please test these.
+
+       * erc-fill.el, erc.el:
+       * erc.el: updated many functions to use `erc-display-message'. Now, we
+         should go for getting highlighting out of
+         erc-server-PRIVMSG-or-NOTICE. The part I want to attack has been
+         marked.
+       * erc-fill.el: updated static filling to leave the erc-parsed property 
alone.
+
+2002-02-15  Mario Lang  <address@hidden>
+
+       * erc.el:
+       first step, new function: erc-display-message
+
+       * erc.el: added numreply 379 and 405.
+
+       * erc.el: stupid typo fixed
+
+       * erc.el:
+       Finally renamed erc-frame-dedicated-p to erc-frame-dedicated-flag
+       Removed usage of erc-interpret-controls from info buffer drawing (major 
speedup)
+       Other speedups based on the results from elp.
+       ERC is now about 300%-500% faster in some situations with very full 
channels!!!!!
+
+2002-02-14  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * erc-downcase now downcases {}|^ with []\~ -- 'stolen' from zenirc.
+       * various checkdoc fixes. Just the upper third of the file, but that
+         should help a little, too. (-: Again, if you have any writing
+         skills, take out that dusty keyboard and tap it to the beat of M-x
+         checkdoc!
+
+2002-02-14  Gergely Nagy  <address@hidden>
+
+       * erc.el(erc-format-privmessage):
+       fix it, so timestamp-coloring works again (patch from antifuchs)
+
+2002-02-14  Mario Lang  <address@hidden>
+
+       * erc.el: Many fixes based on M-x checkdoc RET.
+       If you have write access, and some english knowledge, help document erc 
too!
+       M-x checkdoc RET, and follow the instructions.
+
+       * erc-button.el, erc-ibuffer.el: minor fixes
+
+       * erc.el: Use nreverse instead of reverse.
+       Use eq instead of equal where possible.
+       Rewrote erc-get-buffer to not use find-if (find-if does very deep 
function-call nesting, which isn't good in a defun which is called so often)
+
+2002-02-13  Mario Lang  <address@hidden>
+
+       * erc-button.el, erc.el:
+       In erc.el, new hook: erc-channel-members-changed-hook.
+       erc-button.el: Now highlight all nicknames. uses regexp-opt.
+
+2002-02-04  Mario Lang  <address@hidden>
+
+       * erc-nets.el:
+       Database of irc networks. Use erc-server-select to interactively select 
one.
+
+       * erc.el: * erc-format-nick-function: New variable.
+       * (erc-format-nick): The default for above var. Just return the nick.
+       * (address@hidden): Prefix NICK with @ or + if OP or VOICE.
+       * Removed erc-track-modified-channels related code and moved into 
erc-track.el
+          Its auto-loaded now
+
+       * erc-track.el: Split code from erc.el
+
+2002-02-01  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el:
+       * erc-target now uses erc-port-to-string
+
+       * servers.pl:
+       Script to convert mircs servers.ini to a elisp salist kind of thing.
+       (development tool, it doesn't help you much as a user)
+
+       * erc.el:
+       * erc-display-line-buffer: renamed to erc-display-line-1
+       * erc-port-equal: New function.
+       * erc-normalize-port: Used by erc-port-equal
+       * minor docstring fixes
+
+2002-02-01  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * erc-already-logged-in-p: compare ports is more robust now.
+
+       * erc-button.el: * Add buttonization to erc-send-modify-hook, too
+
+2002-01-31  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Use insert-before-markers instead of insert in erc-display-line-buffer
+       This fixed address@hidden 0 problem and gives us some speedup! yay
+
+       * erc-ibuffer.el, erc.el: minor fixes
+
+       * erc.el:
+       * (erc-line-beginning-position): Renamed to erc-beg-of-input-line.
+       * (erc-line-end-position): Renamed to erc-end-of-input-line.
+       * erc-multiline-input-p: Variable removed.
+
+       * erc.el:
+       Minor docstring fixes (using M-x checkdoc-current-buffer)
+         If you find time, and you are native english speaker, do that too!!
+
+       * erc.el: fixed macro-invocation
+
+2002-01-31  Andreas Fuchs  <address@hidden>
+
+       * erc.el: * erc-with-all-buffers-of-server: use erc-list-buffers
+       * erc-process-away, erc-{save,kill}-query-buffers: use it.
+       * erc-cmd-away-all: new command. Set away/back on all servers.
+
+       * erc.el:
+       * Fix last multiline bug in erc-send-distinguish-noncommands.
+
+2002-01-31  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el, erc.el: minor fixes
+
+2002-01-30  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el, erc-menu.el, erc-speak.el, erc.el:
+       Renamed erc-track-modified-channels-minor-mode to 
erc-track-modified-channels-mode (at least, its a bit shorter)
+       Added docstring to erc-server-hooks (through the macro)
+       Minor docfix in obsolete hook
+
+2002-01-30  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * erc-send-current-line: fix behavior where buffer changes.
+       * erc-mark-message: fix stupid face bug. highlighting of pals should 
work now.
+
+       * erc-ring.el, erc.el:
+       * new hooks: erc-send-pre-hook, erc-send-modify-hook, erc-send-post-hook
+       * erc-send-this: new variable
+       * erc-noncommands-list: new constant.
+       * erc-send-distinguish-noncommands: use it. (First filter function for 
sending! yay!)
+       * erc-send-current-line: nearly completely rewritten.
+         - now handles multiline input. (yay!)
+         - now uses the three hooks from above.
+       * erc-process-line: new arg, no-command: don't process this line as a 
command.
+
+2002-01-30  Mario Lang  <address@hidden>
+
+       * erc-bbdb.el, erc-button.el, erc-speak.el, erc.el:
+       hook handling rewrite phase 1.
+
+2002-01-30  Andreas Fuchs  <address@hidden>
+
+       * erc.el: * Rework erc-server-PRIVMSG-or-NOTICE
+       * New function: erc-is-message-ctcp-p
+       * New function: erc-format-privmessage
+       * New function: erc-mark-message
+       * erc-server-PRIVMSG-or-NOTICE: use them.
+
+2002-01-30  Mario Lang  <address@hidden>
+
+       * CREDITS, HISTORY:
+       Initial checkin.
+
+2002-01-29  Andreas Fuchs  <address@hidden>
+
+       * erc.el: * erc-put-text-properties: make OBJECT optional
+       * erc-put-text-property: same
+       * erc-server-PRIVMSG-or-NOTICE: use them.
+       * Make erc-display-line-buffer: add the "\n" even when the string would 
be invisible.
+       * same: make the \n invisible, too (:
+
+2002-01-29  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el, erc.el:
+       Rewrote channel tracking using window-configuration-change-hook instead 
of defadvices.
+
+2002-01-28  Andreas Fuchs  <address@hidden>
+
+       * erc-fill.el, erc.el:
+       * Macro define-erc-highlight-customization: Ease up defining
+         erc-{fool,pal,..}-highlight-props defcusts.
+       * defcusts:
+         - erc-fool-highlight-props
+         - erc-pal-highlight-props
+         - erc-dangerous-host-highlight-props
+         - erc-keyword-highlight-props
+
+         Customizable to either nil or "Hide message".
+       * erc-string-invisible-p: check for invisible chars in string
+       * erc-display-line-buffer: use it.
+       * erc-put-text-properties: put a list of props into a piece of text.
+       * erc-server-PRIVMSG-or-NOTICE: use it; set appropriate
+         highlight-props for entire incoming message. This set of changes
+         allows you to e.g. auto-ignore fools.
+
+2002-01-28  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el:
+       Added highlight detection support to the Mark column.
+       Now p, k, f, and d indicate pal, keyword, fool and dangerous-host 
related activity.
+
+       * erc.el:
+       Highlight tracking finished. All necessary info should now be in 
erc-modified-channels.
+
+       * erc.el, erc-ibuffer.el, erc-speedbar.el:
+       Added highlight tracking to track-modified-channels
+          no display code yet, the info is just kept in erc-modified-channels
+       Added erc-modified column to ibuffer
+       speedbar update
+
+       * erc-ibuffer.el: Added erc-members column
+
+       * erc-ibuffer.el: *** empty log message ***
+
+2002-01-28  Andreas Fuchs  <address@hidden>
+
+       * erc-bbdb.el:
+       * Fix a slight typo. The hook function should be called in
+         erc-server-376-hook (-:
+
+2002-01-28  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el: *** empty log message ***
+
+2002-01-27  Mario Lang  <address@hidden>
+
+       * erc-ibuffer.el: Fixup, it sort of works now. Try it
+
+       * erc-ibuffer.el: Initial version
+
+2002-01-26  Mario Lang  <address@hidden>
+
+       * erc.el: *** empty log message ***
+
+2002-01-25  Andreas Fuchs  <address@hidden>
+
+       * erc-bbdb.el: * fix two bad things:
+         - fix the "proc trick": pass proc as an arg through
+           ...-insinuate-... to ...-show-entry
+         - hook highlighting into the 376 hook. This one is bound to get
+           called (-:
+       * We now only append to hooks only.
+       * Highlighting of changing records gets updated automatically.
+
+2002-01-25  Mario Lang  <address@hidden>
+
+       * erc.el: *** empty log message ***
+
+2002-01-25  Andreas Fuchs  <address@hidden>
+
+       * erc-bbdb.el: * nearly complete rewrite of erc-bbdb:
+         -  Removed code duplication in erc-bbdb-NICK and -JOIN.
+         -  Made erc-bbdb-show-entry more general and intelligent.
+         -  erc-bbdb-insinuate-entry is now erc-bbdb-insinuate-and-show-entry
+            (note the different arglist!):
+         -  erc-search-name-and-create now creates "John Doe" users if name
+            is not specified.
+         -  No sign of "mail" anywhere anymore. It's all finger-host. (-:
+         -  erc-bbdb-popup-p is now called erc-bbdb-popup-type.
+         -  New customize values:
+            . erc-bbdb-irc-channel-field     channel field name
+            . erc-bbdb-irc-highlight-field   (see below)
+            . erc-bbdb-auto-create-on-nick-p auto-create record on join
+
+       * Highlighting based on BBDB is now here! Specify which type of
+         highlighting a person in the BBDB (whose nick you know) and have
+         fun! Read help to erc-bbdb-init-highlighting for details. Changes:
+         -  new function erc-bbdb-init-highlighting: gets called on server
+            connect.
+         -  new function erc-bbdb-highlight-record: highlights a person's
+            nick names.
+
+2002-01-24  Andreas Fuchs  <address@hidden>
+
+       * erc-button.el:
+       * Fix the erc-button-alist regexp for EmacsWiki stuff. delYsid's version
+         is better (-:
+
+       * erc-button.el: * Added an Ewiki: specifier to the url-regexp.
+         <nickname> EmacsWiki: EmacsIRCClient tells you <bla>
+         should highlight "EmacsWiki: EmacsIRCClient" and allow you to
+         browse to the wiki when the button is activated.
+       * new custom: erc-emacswiki-url.
+       * new function: erc-browse-emacswiki: use it.
+
+2002-01-23  Mario Lang  <address@hidden>
+
+       * erc-bbdb.el:
+       erc-bbdb-NICK: Added regexp-quote around fingerhost search.
+
+2002-01-10  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * Channel saving/killing on quit from server implemented:
+        - defcust erc-save-queries-on-quit: Save server's channel buffers on 
quitting from server
+        - defcust erc-kill-queries-on-quit: Kill server's channel buffers on 
quitting from server
+        - Macro erc-with-all-buffers-of-server: Run a form inside all the 
server's query buffers
+        - Functions erc-{kill,save}-query-buffers: use it.
+       * Added indent-tabs-mode: t to Local Variables section.
+
+2002-01-07  Andreas Fuchs  <address@hidden>
+
+       * erc-replace.el: * fix stupid documentation errors.
+
+2002-01-07  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (toplevel): Revert previous change. This resulted ina  recursive 
load...
+          You have to put (require 'erc-button) into your .emacs for now
+
+2002-01-05  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Added require for erc-button. This is devel. so I need testers :)
+
+       * erc-button.el: * Added proper file headers (GPL).
+
+2002-01-04  Mario Lang  <address@hidden>
+
+       * erc-button.el: * erc-button-alist: Added entry for finger
+
+       * erc-button.el: * Removed bogus usage of :button-keymap.
+       P
+          Does anyone know what this was supposed to do anyway?
+
+       * erc-button.el: * Initial version.
+       * This module allows a way of buttonizing text in IRC buffers.
+         Default it is used for URLs, but other things could be added.
+         see if you can find another use, erc-button-alist
+
+2001-12-18  Mario Lang  <address@hidden>
+
+       * erc.el: * Added missing 747 numreply (banned)
+
+2001-12-15  Gergely Nagy  <address@hidden>
+
+       * debian/scripts/install, debian/rules:
+       updated to 2.1.cvs.20011215-1
+
+       * debian/changelog: Debian version 2.1.cvs.20011215-1
+
+2001-12-11  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * applied a nicer version of mhp's patch to remove the last prompt from
+         saved logs
+
+       * erc-replace.el: * Initial checkin
+
+2001-12-11  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * fixed bug triggered when reuse-buffer was enabled (the default).
+         Another silly port type problem. Maybe we should unify that once and 
for all sometimes...
+
+2001-12-10  Mario Lang  <address@hidden>
+
+       * erc.el: * erc-message-english: New QUIT and s004 entries.
+       * (erc-save-buffer-on-part): New variable.
+       * (erc-kill-buffer-on-part): New variable.
+       * (erc-server-PART): Use above variables.
+       * (erc-join-channel): Use DEF argument instead of initial input for 
completing-read.
+
+2001-12-08  Tijs van Bakel  <address@hidden>
+
+       * erc.el: added defcustom erc-nick-uniquifier ^ (i prefer _)
+
+2001-12-07  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: changelog for version 2.1.cvs.20011208-1
+
+2001-12-07  Tijs van Bakel  <address@hidden>
+
+       * erc.el:
+       Added erc-scroll-to-bottom as an erc-insert-hook function.  It still 
bugs a bit, so please test it, thanks
+
+2001-12-07  Mario Lang  <address@hidden>
+
+       * erc.el: * Fixed silly bug in erc-server-TOPIC (thanks mhp)
+
+       * erc-speak.el:
+       * Fix non-greedy matching bug. That one somehow swallowed text
+
+       * erc.el:
+       Fix Emacs20 problem. For now, we disable 
erc-track-modified-channels-minor-mode in emacs20
+
+2001-12-07  Andreas Fuchs  <address@hidden>
+
+       * erc-fill.el:
+       * Fix another stupid one-off error. This time it really works!
+        (Until I find the next bug. I guess you can hold your breath) (-:
+
+2001-12-06  Andreas Fuchs  <address@hidden>
+
+       * erc-fill.el: * Fixed static filling:
+       ** No more \ed (continued on next line) lines anymore
+       ** Fixed bug with previous version where longer lines wouldn't get
+          filled correctly (i.e. at all)
+
+2001-12-06  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: changelog for 2.1.cvs.20011206-1 added
+
+2001-12-06  Andreas Fuchs  <address@hidden>
+
+       * erc.el:
+       * Don't discard away status when identifying to NickServ
+       * Modify `erc-already-logged-in': check for port, too.
+
+       * erc-fill.el:
+       * Fix stupid loop non-termination error in erc-fill-static when filling
+         one-line regions.
+       * Make erc-count-lines return meaningful values
+
+2001-12-05  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-process-input): Make ' /command' work for quoting /commands
+
+       * erc-speak.el: see changelog
+
+       * erc-fill.el: see erc.el changelog
+
+       * erc.el:
+       * erc-insert-hook: Changed strategy completely, no start end parameters 
any more.
+       We narrow-to-region now, that's much cleaner.
+       * rename erc-fill-region to erc-fill and change the autoload
+       ** You'll probably need to restart Emacs
+
+2001-12-04  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-send-current-line): Fixed long outstanding bug. XEmacs users 
with erc-fill-region on erc-insert-hook knew that one a long time.
+
+       * erc.el: fix order of attack
+
+       * erc.el: * macroexpanded define-minor-mode for XEmacs
+
+       * erc.el: First try to make channel tracking mouse sensitive
+
+       * erc.el: * More erc-message-format conversion.
+         erc-format-message-english-PART as an example on how to use functions 
to format message
+       * (erc-format-message): Fallback mechanism to use english catalog if 
variable is not bound
+
+2001-12-03  Mario Lang  <address@hidden>
+
+       * erc.el: * (erc-iswitchb): Rewrite, docfix.
+       Make it use erc-modified-channels as default if available.
+
+       * erc-menu.el:
+       * Fixage related to erc-track-modified-channels-minor-mode rewrite
+
+       * erc.el:
+       * (erc-track-modified-channels-minor-mode): Use buffer objects instead 
of erc-default-target return value for internal state keeping.
+
+       * erc.el: * Made reconnect behave nicer (erc-process-sentinel)
+       * Rewrote erc-modified-channels-tracking completely.
+         Its now a minor mode (erc-track-modified-channels-minor-mode)
+         It uses a list as internal representation now, so all silly 
string-parsing
+         related bugs should be gone.
+         Use (erc-track-modified-channels-minor-mode t) now to toggle this 
functionality.
+         Don't set the erc-track-modified-channels-minor-mode variable 
yourself, use the toggle function
+
+2001-11-29  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: final version
+
+2001-11-29  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-channel-p): Make it work with string and buffer as parameter. 
buffer.
+       * (erc-format-message): Add a check for functionp. This allows a 
format-specifier also to be a function name, which gets called with args 
applied and needs to return the actual format string.
+       * Converted some formats, JOIN, JOIN-you, MODE, ...
+
+2001-11-28  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-prepare-mode-line-format): Added sanity checks to prevent it 
from having problems with server buffers where the connection failed
+
+       * erc-bbdb.el:
+       * (erc-bbdb-JOIN): regexp-quote the fingerhost before searching, some 
people have really strange characters as their user names
+
+       * erc.el: Remove a stupid debug like (message ...) call
+
+2001-11-28  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: draft of 2.1.cvs.20011128-1
+
+       * debian/rules: simplify for the all-in-one erc package
+
+       * debian/control: integrated erc-speak back into erc
+
+       * debian/maint/conffiles, debian/maint/conffiles.in, 
debian/maint/postinst,
+         debian/maint/postinst.in, debian/maint/prerm, debian/maint/prerm.in,
+         debian/scripts/install, debian/scripts/install.in, 
debian/scripts/remove,
+         debian/scripts/remove.in, debian/scripts/startup.erc-speak:
+       since erc-speak is gone, resurrect the static files, and update them to 
support the latest erc
+
+2001-11-28  Mario Lang  <address@hidden>
+
+       * erc.el: * (erc-mode): Shouldn't be interactive.
+       * (erc-info-mode): Ditto.
+
+       * erc.el: * (erc-server-352): Added hopcount parsing.
+       Added call to erc-update-channel-member to fill in channel-members 
information
+       on /WHO if the channel is joined.
+
+2001-11-27  Mario Lang  <address@hidden>
+
+       * erc-speedbar.el: *** empty log message ***
+
+       * erc-speedbar.el: * (erc-speedbar-expand-user): New function.
+       Used when more information than just the nick name is available about a 
dude.
+
+       * erc.el: * Fixed stupid edit,checkin,save cycle error :)
+
+       * erc.el:
+       * (erc-generate-log-file-name-default): Renamed to -long
+       Doc fix.
+       * (erc-generate-log-file-name-old): Renamed to -long
+       Doc fix.
+       * (erc-generate-log-file-name-function): Set default to ...-long
+       Doc fixes
+
+       * erc-speedbar.el: *** empty log message ***
+
+2001-11-26  Mario Lang  <address@hidden>
+
+       * erc-speedbar.el: * Integrated channel names list
+         what else do we need to replace info buffers???
+         please test that code and comment on erc-ehlp, thanks
+
+       * erc-speedbar.el:
+       * Added erc-speedbar-goto-buffer and therefore enable switching to the 
buffers from speedbar
+
+       * erc-speedbar.el:
+       I had to check this in, it works !! sort of,, megaalphagammaversion, 
first version. test, play, submit ideas/patches
+
+2001-11-26  Gergely Nagy  <address@hidden>
+
+       * erc.el(erc-mode): moved erc-last-saved-position here
+       moved buffer naming code from here..
+       (erc): ...to here
+       (erc-generate-log-file-name-old): only prepend target if it exists
+
+       made erc-log-insert-log-on-open a defcustom
+
+2001-11-26  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Applied antifuchs/mhp patches, the latest on erc-help, unmodified
+       * New variable: erc-reuse-buffers default to t.
+       * Modified erc-generate-new-buffer-name to use it. it checks if server 
and port are the same,
+         then one can assume that's the same channel/query target again.
+
+2001-11-23  Mario Lang  <address@hidden>
+
+       * erc-bbdb.el:
+       * new function erc-BBDB-NICK to handle nickname annotation on a 
nick-change event of a known record
+
+       * erc.el: * Remove erc-rename-buffer, its no longer necessary
+       * Remove erc-autoop-*. it was broken, and needed rewrite anyway
+       * write erc-already-logged-in in terms of erc-buffer-list and make the 
duplicate login check work again
+
+       * erc.el: * Fixed stupid typo
+
+2001-11-22  Mario Lang  <address@hidden>
+
+       * erc.el: * New local variable, erc-announced-server-name
+       * erc-mode-line-format supports a new symbol, target-and/or-server
+       * The mode-line displays the announced server name now (for autojoin 
later...,
+         greets Adam)
+       * New macro, erc-server-hook-list for a nice way to define the 
defcustoms of the erc-server-*-hook's
+         Thanks go to the guy from #emacs who helped with that
+       * erc-fill-region is now autoloaded from erc-fill.el
+         * erc-fill.el implements a new fill method, erc-fill-static
+           (setq erc-fill-function 'erc-fill-static)
+       * Some other things I forgot right now
+
+       * erc-bbdb.el: *** empty log message ***
+
+       * erc-fill.el: Initial version.
+
+       * erc-complete.el:
+       Applied antifuchs patch to make completion work with (string= 
erc-prompt "")
+
+       * erc-complete.el:
+       added function erc-nick-completion-exclude-myself
+       you can set erc-nick-completion to 'erc-nick-completion-exclude-myself 
to use it
+
+2001-11-21  Mario Lang  <address@hidden>
+
+       * erc-bbdb.el:
+       * Changed usage of 'finger-host to bbdb-finger-host-field
+
+       * erc-bbdb.el:
+       * Changed WHOIS to use finger-host instead of net field.
+       * Added 'visible as option to erc-bbdb-popup-p to only pop-up the bbdb 
buffer if a join happened in a visible buffer on any visible frame.
+       * Added (regexp-quote ...) for nickname search in erc-bbdb-JOIN
+
+2001-11-20  Mario Lang  <address@hidden>
+
+       * erc-bbdb.el: * Added JOIN support
+
+2001-11-19  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Initial message catalog code. converted erc-action-format usage to use 
it
+
+       * erc.el: * erc-play-sound: Added XEmacs related check
+
+       * erc-bbdb.el: * Initial version, many thanks to Andreas Fuchs
+
+       * erc.el: * Fixed silly problem with whois/was handling
+
+       * erc.el: * Renamed prev-rd to erc-previous-read
+       * Removed erc-next-line-add-newlines and s next-line-add-newlines to 
nil in defun erc by default
+
+       * erc.el:
+       fixed xemacs compatibility prob with delete, thanks Adam
+
+2001-11-18  Mario Lang  <address@hidden>
+
+       * erc.el: numreplies 301 & 461
+
+2001-11-13  Tijs van Bakel  <address@hidden>
+
+       * erc.el:
+       Added code for error reply 421 "Unknown command", to test the new 
server parsing system.
+       This was really easy!  Thanks ZenIRC guys & delysid :-)
+
+2001-11-13  Mario Lang  <address@hidden>
+
+       * erc.el: * Allow connecting to SSL enabled irc servers.
+          Ugly hack, but it works for now. Be sure to use the numeric irc port 
994 so that erc can recognize what you want
+         good example is
+       irc server: ircs.segfault.net
+       port: 994
+
+       meet me there, I am still delYsid :)
+
+       * erc.el: * some more numreply handlers
+       * cleanup in erc-process-away-p
+       * new function erc-display-error-notice
+
+       * erc.el: * numreply 501 and 221
+
+       * erc.el:
+       removed obsolete old hook variables. Your functions may break, but it 
is easy to hook them up to the new hooks.
+       erc-part-hook: use erc-server-PART-hook instead
+       erc-kick-hook: use erc-server-KICK-hook instead
+       and so on
+
+       * erc.el:
+       fixed serious bug which cause privmsgs vanishing when erc-auto-query 
was set to nil
+
+       * erc.el: cleaned up erc-process-filter
+
+       * erc.el: * 401 and 320 numreplies implemented
+
+       * erc.el: * Removed old/now obsolete code
+
+       * erc.el: * Fixed bug in erc-server-MODE
+
+2001-11-12  Mario Lang  <address@hidden>
+
+       * erc.el: fixed it
+
+       * erc.el:
+       *** We switched over. New server message parsing/handling is running 
now. Thanks to the zenirc developers for the great ideas I got from the 
code!!!!! Go and test it, poke at it, bug me on irc about problems
+
+       * erc.el: *** empty log message ***
+
+2001-11-12  Tijs van Bakel  <address@hidden>
+
+       * erc.el:
+       Fixed bug in erc-get-buffer, now channel names are compared in
+       a case-insensitive way.
+
+2001-11-12  Mario Lang  <address@hidden>
+
+       * erc.el: erc-server-353
+
+2001-11-12  Tijs van Bakel  <address@hidden>
+
+       * erc.el: Fixed docstring for erc-get-buffer.
+       Added erc-process to a lot of calls to erc-get-buffer, so
+       that only the local process is searched.
+
+2001-11-12  Mario Lang  <address@hidden>
+
+       * erc.el: * erc-buffer-filter: do it differently
+
+       * erc.el: ugly but working fix for mhp's query problem
+
+       * erc.el: * erc-server-PRIVMSG-or-NOTICE
+         Now, all the server word replies are finished. Going to numreplies now
+
+       * erc.el:
+       * debugging facilities for the transition. C-x 2 C-x o M-x ielm RET 
erc-server-vectors RET ; to get a list of all server messages currently not 
handled in the new code. Feel free to pick one and implement it
+
+       * erc.el: * erc-server-KICK and erc-server-TOPIC. new functions
+       * erc-server-305-or-306 and erc-server-311-or-314
+
+       * erc.el:
+       * ported PART and QUIT msgs to the new scheme, many to go. but it is a 
easy task. does someone wanna try and start with numreplies?
+
+       * erc.el: * erc-server-JOIN
+
+       * erc.el: * Ported erc-server-INVITE code
+
+       * erc.el: * erc-server-ERROR and erc-server-MODE
+
+2001-11-11  Mario Lang  <address@hidden>
+
+       * erc.el: * zen
+
+       * erc.el: * New variable erc-connect-function.
+
+       * erc.el:
+       * New function erc-channel-p and use it where appropriate
+
+       * erc.el: * Removed the variable erc-buffer-list completely now
+       * Moved erc-dbuf around a bit
+
+       * erc.el: * Fix silly change in quit/rename msg handling
+
+       * erc.el: thanks mhp, fixed
+
+       * erc.el: * Tijs van Bakel's work from 10th Nov. merged in
+       * My additions to that idea merged in too
+       Basically, this is a major rewrite, if you are scared and want avoid 
problems,
+       stay at your current version. It seems fairly stable though.
+       That changed? erc-buffer-name handling was completely rewritten,
+       and erc-buffer-list local variable handling removed.
+       Simplifies alot of code. Poke at it. read the diff. report bug/send 
patches!
+
+       * erc.el: * Added variable listing when /set is used without args
+
+2001-11-10  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Comment/structure cleanup, removal of unnecessary code
+
+       * erc.el: only some code beautification
+
+       * erc-imenu.el:
+       remove add-hook call, that's done in erc.el now for autoloadability
+
+       * erc.el: * Make erc-imenu autoloadable
+
+       * erc.el:
+       * The long promised erc-mode-line-format handling rewrite
+          Poke at it, try it, play with it, report bugs
+
+       * erc.el:
+       some regex-quote fixes, new function erc-cmd-set, and minor things
+
+2001-11-08  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * added second timestamp-format (erc-away-timestamp-format) for marking 
msgs when being away
+
+       * erc-complete.el: fixed silly defun
+
+       * erc.el: * Rewrote erc-load-irc-script (simplified)
+       * Removed deprecated code
+
+       * erc-speak.el: * reflect changes in erc.el
+
+       * erc.el:
+       * Moved completion related functions into erc-complete.el
+         placed an autoload instead into erc.el. That quite cool,
+         because erc-complete.el only gets loaded when you use
+         TAB first time in erc.
+
+       * erc-complete.el: _ Initial checkin
+
+       * erc.el: * New function: erc-chain-hook-with-args
+       * Changed calls to erc-insert-hook to use it
+
+2001-11-07  Mario Lang  <address@hidden>
+
+       * erc.el: * Patch from Fabien Penso
+         Make completion case insensitive. try it! its cool
+
+       * erc.el: * Reduction patch 2
+         This time, we move the input ring handling into erc-ring.el
+         Remember that you need (require 'erc-ring) in your .emacs to get the 
input handling as a feature
+         And remember, that you don't need it if you don't use input ring :-)
+
+       * erc-ring.el: * Initial checkin
+
+       * erc.el: * The great reduction patch :-)
+         moved relevant function from erc.el to new file erc-menu.el and 
erc-imenu.el
+
+       * erc-imenu.el: Initial version
+
+       * erc-menu.el: * Initial version
+
+       * erc.el: * wording change suggested by Benjamin Drieu
+
+2001-11-07  Tijs van Bakel  <address@hidden>
+
+       * erc.el: Added Emacs version to /SV
+
+2001-11-07  Mario Lang  <address@hidden>
+
+       * erc.el: * Hookification patch, read the diff
+
+       * erc.el: too tired for a changelog :)
+
+2001-11-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * make erc-cmd-op and erc-cmd-deop take multiple nicknames as argument
+
+2001-11-06  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: sync
+
+       * debian/rules: fixed a typo: PKGDIR, not PKIDR
+
+2001-11-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Changed timestamping when away to use erc-timestamp-format and append 
the timestamp instead of prepending it..
+       * minor cleanup, s/(if (not /(unless/ and the like
+
+2001-11-06  Tijs van Bakel  <address@hidden>
+
+       * erc.el: Fixed OP and DEOP commands to return T.
+       Added SV say-version command.
+       Added erc-send-message utility function, but it's not used everywhere 
yet.
+
+2001-11-05  Mario Lang  <address@hidden>
+
+       * erc.el: stupid delYsid, forgot require 'format-spec. good nite
+
+       * erc.el:
+       * new variable erc-action-format. Some erc-notice-prefix fixes again
+
+       * erc.el: * erc-minibuffer-privmsg defaults to t
+
+       * erc.el:
+       * Small fix in relation to the transition to erc-make-notice
+
+2001-11-05  Tijs van Bakel  <address@hidden>
+
+       * erc.el:
+       Renamed erc-message-notices to erc-minibuffer-notice, and renamed 
erc-prevent-minibuffer-privmsg to erc-minibuffer-privmsg, inverting its 
functionality
+
+       * erc.el: Added support for channel names starting with & + and !.
+       Also, many changes partially discussed on the mailing list:
+
+               * erc.el (cl): Add requirement for cl package.
+               (erc-buffer-list): Make this variable global again.
+               (erc-default-face): Fix typo.
+               (erc-timestamp-face): Add face for timestamps.
+               (erc-join-buffer, erc): Add a 'bury option.
+               (erc-send-action): Add timestamp.
+               (erc-command-table): Add /CLEAR, /DEOP, /OP, /Q.
+               (erc-send-current-line): Add timestamp.
+               (erc-send-current-line): Add call to erc-insert-hook.
+               (erc-cmd-clear): New command to clear buffer contents.
+               (erc-cmd-whois): Fix cut'n'paste-o.
+               (erc-cmd-deop): New command to deop a user.
+               (erc-cmd-op): New command to op a user.
+               (erc-make-notice): Moved a lot of duplicate code here.  Perhaps
+               this should also be done for erc-highlight-error.
+               (erc-parse-line-from-server): Now NOTICE will also open a new
+               query, just as PRIVMSG.
+               (erc-parse-line-from-server): Call erc-put-text-property on a
+               channel message/notice first, before concatenating nick and
+               timestamp &c.
+               (erc-message-notices): Add option to display notices in
+               minibuffer.
+               (erc-fill-region): No longer strip spaces in front of incoming
+               messages.
+               (erc-parse-current-line): No longer strip spaces in front of 
text
+               input by user.
+
+       Hopefully I didn't break too much :(
+
+2001-11-05  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * New function erc-nickserv-identify-autodetect for erc-insert-hook. 
Added by default currently.
+
+       * erc.el:
+       * Mini-fix in erc-process-num-reply (= n 353): Added @ as prefix 
character to make certain channels on opn work again nicely
+
+2001-10-31  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: updated to reflect changes
+
+       * debian/scripts/install.in:
+       moved #PKGFLAG# before -f batch-byte-compile
+
+2001-10-29  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Imenu fixed somehow, added IRC services interactive function for 
indentify to NickServ. Read the diff
+
+2001-10-26  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: sigh. -2
+
+2001-10-25  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: updated to reflect changes
+
+       * debian/rules: handle conffiles.in too
+
+       * debian/maint/conffiles.in: new file
+
+       * debian/maint/conffiles: superseded by conffiles.in
+
+       * debian/scripts/startup: superseded by startup.erc
+
+2001-10-25  Mario Lang  <address@hidden>
+
+       * debian/scripts/startup.erc-speak: * Initial version
+
+       * debian/scripts/startup.erc: * Added and fixes minimal typo
+
+2001-10-25  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: updated to reflect changes
+
+       * debian/rules:
+       modified to be able to build the erc-speak package too
+
+       * debian/control: added the new erc-speak package
+
+       * debian/README.erc-speak, debian/maint/postinst.in, 
debian/maint/prerm.in,
+         debian/scripts/install.in, debian/scripts/remove.in:
+       new file
+
+       * debian/maint/postinst, debian/maint/prerm, debian/scripts/install,
+         debian/scripts/remove:
+       removed, superseded by its .in counterpart
+
+2001-10-25  Mario Lang  <address@hidden>
+
+       * erc.el: * Fixed some defcustom :type 's
+       * Added erc-before-connect hook which gets called with server port and 
nick.
+         Use this hook to e.g. setup a tunnel before actually connecting.
+         something like (when (string= server "localhost") ...)
+
+2001-10-24  Mario Lang  <address@hidden>
+
+       * erc.el: * Patch by smoke: fix erc-cmd-* commands and add aliases
+
+2001-10-23  Mario Lang  <address@hidden>
+
+       * erc-speak.el:
+       * Added a new personality for channel name announcement, This makes 
streams of flooded channels much easier to listen to,
+         especially if you are on more than one channel simultaneously.
+
+       * erc.el:
+       * Made the completion postfix customizable through 
erc-nick-completion-postfix
+
+       * erc-speak.el, erc.el:
+       * Added erc-prevent-minibuffer-privmsg
+
+       * erc-speak.el:
+       * Quickish hack to allow exclusion of timestamps from speaking. see 
erc-speak-filter-timestamps
+
+2001-10-21  Mario Lang  <address@hidden>
+
+       * erc-speak.el:
+       * Removed now really obsolete code. Package size reduced by 50%
+
+       * 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!!!
+
+       * erc-speak.el: *** empty log message ***
+
+       * erc-speak.el: * Major simplification. depends on my 2001-10-21 
changes to erc.el.
+       * Things removed, read diff
+
+2001-10-21  Gergely Nagy  <address@hidden>
+
+       * debian/changelog: oops, silly typo
+
+       * debian/changelog, debian/control, debian/copyright,
+         debian/maint/conffiles, debian/maint/postinst, debian/maint/prerm,
+         debian/rules, debian/scripts/install, debian/scripts/remove,
+         debian/scripts/startup:
+       initial check-in
+
+2001-10-21  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Changed erc-insert-hook to get two arguments, START and END of the 
region
+         which got inserted. CAREFUL! This could break stuff, but it makes the 
hook
+         much more usable.
+
+       * erc.el:
+       * Made erc-smiley a new option, currently set to t to showoff this 
feature. :)
+
+2001-10-20  Mario Lang  <address@hidden>
+
+       * erc.el: * Add missing erc-mode-hook variable
+       * Add smiley-support (preliminary test)
+
+2001-10-20  Alex Schroeder  <address@hidden>
+
+       * erc.el:
+       Replaced all occurrences of put-text-property with a call to
+       erc-put-text-property.
+       (erc-put-text-property): New function.
+       (erc-tracking-modified-channels): Moved to the front of the file such
+       that it is already defined when the menu is being defined.
+       (erc-modified-channel-string): Ditto.
+
+2001-10-18  Alex Schroeder  <address@hidden>
+
+       * erc.el: Removed some commentary.  The wiki page is the place to
+       put such information.
+       (erc-fill-prefix): Doc change.
+       (erc-notice-highlight-type): Doc change, now a user option.
+       (erc-pal-highlight-type): Doc change, now a user option.
+       (erc-fool-highlight-type): New option.
+       (erc-keyword-highlight-type): New option.
+       (erc-dangerous-host-highlight-type): New option.
+       (erc-uncontrol-input-line): Doc change.
+       (erc-interpret-controls-p): Doc change, now a user option.
+       (erc-multiline-input): Doc change.
+       (erc-auto-discard-away): Doc change.
+       (erc-pals): Changed from string to regexp.
+       (erc-fools): New option.
+       (erc-keywords): Renamed from erc-highlight-strings.  WATCH OUT:
+       Not backwards compatible change!
+       (erc-dangerous-hosts): Renamed from erc-host-danger-highlight.
+       WATCH OUT: Not backwards compatible change!
+       (erc-menu-definition): Added menu entries for fools, keywords and
+       dangerous hosts.
+       (erc-mode-map): Changed keybindings from C-c <plain ascii> to
+       various C-c <C-ascii> combinations.
+       (erc-dangerous-host-face): Renamed from erc-host-danger-face.
+       WATCH OUT: Not backwards compatible change!
+       (erc-fool-face): New face.
+       (erc-keyword-face): Renamed from erc-highlight-face.  WATCH OUT:
+       Not backwards compatible change!
+       (erc-parse-line-from-server): Fixed highlighting in the cases
+       where (equal erc-pal-highlight-type 'all), added code to handle
+       erc-fool-highlight-type, erc-dangerous-host-highlight-type
+       (erc-update-modes): Replaced erc-delete-string with delete.
+       (erc-keywords): Renamed from erc-highlight-strings, handle
+       erc-keyword-highlight-type.
+       (erc-delete-string): Removed.
+       (erc-list-match): New function.
+       (erc-pal-p): Use erc-list-match.
+       (erc-fool-p): New function.
+       (erc-keyword-p): New function.
+       (erc-dangerous-host-p): Renamed from erc-host-danger-p, use
+       erc-list-match.
+       (erc-directed-at-fool-p): New function.
+       (erc-add-entry-to-list): New function.
+       (erc-remove-entry-from-list): New function.
+       (erc-add-pal): Use erc-add-entry-to-list.
+       (erc-delete-pal): Use erc-remove-entry-from-list.
+       (erc-add-fool): New function.
+       (erc-delete-fool): New function.
+       (erc-add-keyword): New function.
+       (erc-delete-keyword): New function.
+       (erc-add-dangerous-host): New function.
+       (erc-delete-dangerous-host): New function.
+
+2001-10-07  Mario Lang  <address@hidden>
+
+       * erc.el: * irc vs ircd default port fixed
+
+       * erc.el: * Added topic-change to imenu
+
+       * erc.el: * More imenu spiffyness
+
+       * erc.el: * Added imenu support
+
+       * erc.el:
+       * Fix to /topic to show topic instead of setting it to null :)
+
+2001-10-05  Mario Lang  <address@hidden>
+
+       * erc.el: * First version of erc-rename-buffer
+
+       * erc.el: * more header-line tricks.
+
+       * erc.el:
+       * Small fix to do erc-update-mode-line-buffer in 
erc-update-channel-topic
+
+       * erc.el: * Added erc-header-line-format
+
+2001-10-04  Mario Lang  <address@hidden>
+
+       * erc.el: * mini-fix, add msgp to auto-query code
+
+       * erc.el: * Added command-names to completion (erc-command-table)
+       * New variable erc-auto-query. When set, every arriving message to you
+       will open a query buffer for that sender if not already open.
+       * Compatibility function fo non-existing line-beginning|end-position 
functions in XEmacs.
+
+2001-10-03  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Removed alot of (progn ...) where they were not necessary
+       * Changed some (if ...) without else part to (when ...)
+       * Some (while ...) to use (dolist ...)
+       * Fix for completion popup generating tracebacks.
+       * New function erc-arrange-session-in-multiple-windows
+       * Lots of other stuff, read the diff
+
+2001-10-02  Mario Lang  <address@hidden>
+
+       * erc.el: * Added erc-kill-input and keybinding C-c C-u for it
+
+2001-10-01  Mario Lang  <address@hidden>
+
+       * erc.el: * Another fix to nick-completion
+       * Additional checks in erc-track-modified-channels
+
+2001-09-26  Mario Lang  <address@hidden>
+
+       * erc.el: * Fixed completion (alex)
+         * Now popup buffer doesn't destroy your window configuration.
+       * Fixed away handling (incomplete)
+
+2001-09-24  Mario Lang  <address@hidden>
+
+       * erc.el: Fixed silly quoting-escape error
+
+2001-09-23  Mario Lang  <address@hidden>
+
+       * erc.el: * Added auto-op support (unfinished)
+       * Added erc-latest-version.
+       * Added erc-ediff-latest-version.
+
+2001-09-21  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Minor menu additions (invite only mode is now a checkbox)
+
+2001-09-20  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * Fix (erc-cmd-names): This should fix C-c C-n too, hopefully it was 
the right fix and doesn't break anything else.
+
+       * erc.el: * Fixes XEmacs easymenu usage (2nd time).
+
+2001-09-19  Mario Lang  <address@hidden>
+
+       * erc.el:
+       * (erc-complete-nick): Add ": " only if one completes directly after 
the erc-prompt, otherwise, add just one space
+
+       * erc.el:
+       * Changed menu-definition to use easymenu (hopefully this now works 
under XEmacs)
+       * Fix for custom problem with :must-match on XEmacs (thanks shapr)
+       * Added /COUNTRY command using (what-domain) from package mail-extr 
(shapr)
+       * Fix for case-sensitivity problem with pals (they are now all 
downcased)
+       * Different (erc-version) function which now can take prefix argument 
to insert the version information into the current buffer,
+         instead of just displaying it in the minibuffer.
+
+2001-09-10  Mario Lang  <address@hidden>
+
+       * erc.el: Updated erc-version-string
+
+       * erc.el: Version number change and last read-through...
+
+2001-09-04  Mario Lang  <address@hidden>
+
+       * erc.el: Added some asterisks
+
+2001-08-24  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Fixed hidden channel buffer tracking (sort of), now using 
switch-to-buffer for advice.
+       This version is unofficially named 2.1prebeta1. Please test it and send
+       fixes to various problems you may encounter so that we can eventually
+       release 2.1 soon.
+
+2001-08-14  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Added function erc-bol and keybinding C-c C-a for it (contributed by 
Benjamin Rutt <address@hidden)
+
+2001-08-07  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Checked in lathis code and modified it slightly. Still unsure about 
set-window-buffer advice, current attempt doesn't seem to work.
+       Removed (nick -> #channel) from mode-line. (CLOSED) and (AWAY...) 
should still be displayed when appropriate
+
+2001-08-06  Mario Lang  <address@hidden>
+
+       * erc.el:
+       added local-variable channel-list in session-buffers and make /LIST use 
it.
+       erc-join-channel can now do completion after /LIST was executed
+
+2001-08-05  Mario Lang  <address@hidden>
+
+       * erc.el: Tweaked erc-join-channel and erc-part-from-channel
+
+2001-07-27  Mario Lang  <address@hidden>
+
+       * erc.el: some more defcustom stuff
+
+       * erc.el: Patch from Henrik Enberg <address@hidden>:
+          Adds variables erc-frame-alist and erc-frame-dedicated-p.
+
+       * erc.el: fixed erc-part-from-channel
+
+       * erc.el:
+       fixed match-string problem and added interactive topic setting function.
+
+       * erc.el: fixed silly string-match bug
+
+       * erc.el:
+       Added erc-join-channel and erc-part-from-channel (interactive prompts), 
as well as keybindings. C-c C-j #emacs RET is now enough :)
+
+2001-07-27  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-display-line-buffer): Simplified filling.
+       (erc-fill-region): New function.
+
+2001-07-27  Mario Lang  <address@hidden>
+
+       * erc.el: Added redundancy check in output
+
+2001-07-26  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-send-action): Add text-property stuff.
+       (erc-input-action): Removed text-property stuff.
+       (erc-command-table): Corrected command for DESCRIBE.  Still
+       doesn't work though.  No idea what it should do.  Looks like a no op.
+       (erc-cmd-me): Doc change.
+
+2001-07-26  Mario Lang  <address@hidden>
+
+       * erc.el:
+       fixed one occurrence of a setq with only one argument (XEmacs didn't 
like that)
+
+       * erc.el:
+       Added erc-next-line-add-newlines customization possibility.
+
+       * erc.el:
+       added erc-fill-prefix for defining your own way of filling and fixed 
filling somehow
+
+       * erc.el:
+       fixed small incompatibility in erc-parse-line-from-server at (and (= n 
353) regexp
+
+2001-07-25  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Added erc-filling and filling code to erc-display-line-buffer.
+
+2001-07-08  Alex Schroeder  <address@hidden>
+
+       * erc.el(try-complete-erc-nick): Make the ": " part of the
+       expansion
+
+       * erc.el: require ring
+
+2001-07-08  Mario Lang  <address@hidden>
+
+       * erc.el: *** empty log message ***
+
+2001-07-07  Mario Lang  <address@hidden>
+
+       * erc.el: typo
+
+       * erc.el: omit
+
+2001-07-06  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-mode): Call erc-input-ring-setup.
+       (erc-send-current-line): Call erc-add-to-input-ring.
+       (erc-input-ring): New variable.  Currently not buffer local.
+       (erc-input-ring-index): New variable.  Currently not buffer local.
+       (erc-input-ring-setup): New function.
+       (erc-add-to-input-ring): New function.
+       (erc-previous-command): New function.
+       (erc-next-command): New function.
+       (erc-mode-map): Uncommented keybindings for erc-next-command and
+       erc-previous-command.
+
+2001-07-05  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-highlight-strings): Removed debug message.
+
+       * erc.el(erc-join-buffer): Changed default to 'buffer.
+       (erc-join-info-buffer): Changed default to 'disable.
+       (erc-nick-completion): Changed default to 'all.
+
+2001-07-04  uid31117  <address@hidden>
+
+       * erc.el: Resolved...
+
+2001-07-03  Alex Schroeder  <address@hidden>
+
+       * erc.el(erc-highlight-strings): New option and new function.
+       (erc-parse-line-from-server): Use it.
+       Various empty lines removed.  Various doc strings fixed.
+
+       * erc.el: Removed more empty lines.
+
+       * erc.el(erc-member-string): replaced by plain member
+       Otherwise, lots of deleting of empty lines...  I'm not too happy with 
that
+       but I feel better when the code is "cleaned up".
+
+2001-07-03  Mario Lang  <address@hidden>
+
+       * erc.el: Ugly hack, but looks nicer when giving commands
+
+       * erc-speak.el: ugly hack, but looks nicer now
+
+2001-07-03  Alex Schroeder  <address@hidden>
+
+       * erc.el(try-complete-erc-nick): New function.
+       (erc-try-complete-nick): New function.
+       (erc-nick-completion): New option.
+       (erc-complete): Call hippie-expand such that erc-try-complete-nick
+       will be called eventually.  Based on erc-nick-completion
+       try-complete-erc-nick will then complete on the nick at point.
+
+2001-07-02  Mario Lang  <address@hidden>
+
+       * erc.el:
+       Insert (erc-current-nick) instead of (erc-display-prompt). good night :)
+
+       * erc.el:
+       small, but it was annoying, so I just did it (defcustom for 
erc-join-buffer and erc-join-info-buffer)
+
+2001-06-29  Alex Schroeder  <address@hidden>
+
+       * erc.el: Use defface to define all faces.
+       Removed some history from the commentary, as well as some other
+       commentary editing.
+
+2001-06-28  Mario Lang  <address@hidden>
+
+       * erc.el: hmm, defcustom for erc-user-full-name
+
+       * erc-speak.el, erc.el: *** empty log message ***
+
+2001-06-27  Mario Lang  <address@hidden>
+
+       * erc.el: typo
+
+       * erc.el: Some more defcustom
+
+       * erc-speak.el: nothing, really
+
+2001-06-26  Mario Lang  <address@hidden>
+
+       * erc.el: Some defcustom stuff. Still no defgroup though :)
+
+       * erc.el:
+       Initial change to erc.el (2.0). Mainly list of ideas and features
+       and syntax-table entries.
+
+       * erc-speak.el, erc.el: Initial Import
+
+       * erc-speak.el, erc.el: New file.
+
+  Copyright (C) 2001-2015 Free Software Foundation, Inc.
+
+  This file is part of GNU Emacs.
+
+  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
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  GNU Emacs 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 GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;; Local Variables:
+;; coding: utf-8
+;; add-log-time-zone-rule: t
+;; End:
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog.2
similarity index 99%
rename from lisp/erc/ChangeLog
rename to lisp/erc/ChangeLog.2
index a4a7d47..8dce508 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog.2
@@ -750,10 +750,9 @@
        * erc.el (erc-user-input): Do not include text properties when
        returning user input.
 
+See ChangeLog.1 for earlier changes.
 
-See ChangeLog.08 for earlier changes.
-
-       Copyright (C) 2009-2015 Free Software Foundation, Inc.
+  Copyright (C) 2009-2015 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.
 
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index f1e912c..7f901ed 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -80,11 +80,11 @@ for use on `completion-at-point-function'."
 
 (defun erc-pcomplete ()
   "Complete the nick before point."
+  (declare (obsolete completion-at-point "25.1"))
   (interactive)
   (when (> (point) (erc-beg-of-input-line))
-    (setq this-command 'pcomplete)
-    (call-interactively 'pcomplete)
-    t))
+    (let ((completion-at-point-functions '(erc-pcompletions-at-point)))
+      (completion-at-point))))
 
 ;;; Setup function
 
@@ -237,7 +237,7 @@ If optional argument IGNORE-SELF is non-nil, don't return 
the current nick."
   "Returns a list of all nicks on the current server."
   (let (nicks)
     (erc-with-server-buffer
-      (maphash (lambda (nick user)
+      (maphash (lambda (nick _user)
                  (setq nicks (cons (concat nick postfix) nicks)))
                erc-server-users))
       nicks))
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index 1ec3f32..cbcd055 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -114,7 +114,7 @@ If `erc-timestamp-format' is set, this will not be used."
                 (string)))
 
 (defcustom erc-insert-away-timestamp-function
-  'erc-insert-timestamp-left-and-right
+  #'erc-insert-timestamp-left-and-right
   "Function to use to insert the away timestamp.
 
 See `erc-insert-timestamp-function' for details."
@@ -161,12 +161,12 @@ from entering them and instead jump over them."
 ;;;###autoload (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 (define-erc-module stamp timestamp
   "This mode timestamps messages in the channel buffers."
-  ((add-hook 'erc-mode-hook 'erc-munge-invisibility-spec)
-   (add-hook 'erc-insert-modify-hook 'erc-add-timestamp t)
-   (add-hook 'erc-send-modify-hook 'erc-add-timestamp t))
-  ((remove-hook 'erc-mode-hook 'erc-munge-invisibility-spec)
-   (remove-hook 'erc-insert-modify-hook 'erc-add-timestamp)
-   (remove-hook 'erc-send-modify-hook 'erc-add-timestamp)))
+  ((add-hook 'erc-mode-hook #'erc-munge-invisibility-spec)
+   (add-hook 'erc-insert-modify-hook #'erc-add-timestamp t)
+   (add-hook 'erc-send-modify-hook #'erc-add-timestamp t))
+  ((remove-hook 'erc-mode-hook #'erc-munge-invisibility-spec)
+   (remove-hook 'erc-insert-modify-hook #'erc-add-timestamp)
+   (remove-hook 'erc-send-modify-hook #'erc-add-timestamp)))
 
 (defun erc-add-timestamp ()
   "Add timestamp and text-properties to message.
@@ -188,7 +188,8 @@ or `erc-send-modify-hook'."
       (add-text-properties (point-min) (point-max)
                           (list 'timestamp ct))
       (add-text-properties (point-min) (point-max)
-                          (list 'point-entered 'erc-echo-timestamp)))))
+                          (list 'cursor-sensor-functions
+                                (list #'erc-echo-timestamp))))))
 
 (defvar erc-timestamp-last-inserted nil
   "Last timestamp inserted into the buffer.")
@@ -289,8 +290,7 @@ be printed just before the window-width."
     (setq erc-timestamp-last-inserted string)
     (goto-char (point-max))
     (forward-char -1);; before the last newline
-    (let* ((current-window (get-buffer-window (current-buffer)))
-          (str-width (string-width string))
+    (let* ((str-width (string-width string))
           (pos (cond
                 (erc-timestamp-right-column erc-timestamp-right-column)
                 ((and (boundp 'erc-fill-mode)
@@ -303,8 +303,7 @@ be printed just before the window-width."
                 (t
                  (- (window-width) str-width 1))))
           (from (point))
-          (col (current-column))
-          indent)
+          (col (current-column)))
       ;; The following is a kludge used to calculate whether to move
       ;; to the next line before inserting a stamp.  It allows for
       ;; some margin of error if what is displayed on the line differs
@@ -319,9 +318,9 @@ be printed just before the window-width."
       (erc-put-text-property from (point) 'field 'erc-timestamp)
       (erc-put-text-property from (point) 'rear-nonsticky t)
       (when erc-timestamp-intangible
-       (erc-put-text-property from (1+ (point)) 'intangible t)))))
+       (erc-put-text-property from (1+ (point)) 'cursor-intangible t)))))
 
-(defun erc-insert-timestamp-left-and-right (string)
+(defun erc-insert-timestamp-left-and-right (_string)
   "This is another function that can be assigned to
 `erc-insert-timestamp-function'.  If the date is changed, it will
 print a blank line, the date, and another blank line.  If the time is
@@ -356,7 +355,7 @@ Return the empty string if FORMAT is nil."
        ;; inelegant, hack. -- BPT
        (and erc-timestamp-intangible
             (not erc-hide-timestamps)  ; bug#11706
-            (erc-put-text-property 0 (length ts) 'intangible t ts))
+            (erc-put-text-property 0 (length ts) 'cursor-intangible t ts))
        ts)
     ""))
 
@@ -366,15 +365,13 @@ Return the empty string if FORMAT is nil."
 ;; please modify this function and move it to a more appropriate
 ;; location.
 (defun erc-munge-invisibility-spec ()
+  (and erc-timestamp-intangible (not (bound-and-true-p cursor-intangible-mode))
+       (cursor-intangible-mode 1))
+  (and erc-echo-timestamps (not (bound-and-true-p cursor-sensor-mode))
+       (cursor-sensor-mode 1))
   (if erc-hide-timestamps
-      (setq buffer-invisibility-spec
-           (if (listp buffer-invisibility-spec)
-               (cons 'timestamp buffer-invisibility-spec)
-             (list 't 'timestamp)))
-    (setq buffer-invisibility-spec
-         (if (listp buffer-invisibility-spec)
-             (remove 'timestamp buffer-invisibility-spec)
-           (list 't)))))
+      (add-to-invisibility-spec 'timespec)
+    (remove-from-invisibility-spec 'timespec)))
 
 (defun erc-hide-timestamps ()
   "Hide timestamp information from display."
@@ -405,12 +402,11 @@ enabled when the message was inserted."
            (erc-munge-invisibility-spec)))
        (erc-buffer-list)))
 
-(defun erc-echo-timestamp (before now)
-  "Print timestamp text-property of an IRC message.
-Argument BEFORE is where point was before it got moved and
-NOW is position of point currently."
-  (when erc-echo-timestamps
-    (let ((stamp (get-text-property now 'timestamp)))
+(defun erc-echo-timestamp (window _before dir)
+  "Print timestamp text-property of an IRC message."
+  (when (and erc-echo-timestamps (eq 'entered dir))
+    (let* ((now (window-point window))
+          (stamp (get-text-property now 'timestamp)))
       (when stamp
        (message "%s" (format-time-string erc-echo-timestamp-format
                                          stamp))))))
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index 5c7d7ca..a5f697f 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -89,7 +89,7 @@ yield the values intended."
          (goto-char (match-end 0))
          (eshell-finish-arg)))))
 
-   ;; backslash before a special character means escape it
+   ;; parse backslash and the character after
    'eshell-parse-backslash
 
    ;; text beginning with ' is a literally quoted
@@ -305,34 +305,27 @@ If the character is itself a backslash, it needs no 
escaping."
          (string ?\\ char)))))
 
 (defun eshell-parse-backslash ()
-  "Parse a single backslash (\) character, which might mean escape.
-It only means escape if the character immediately following is a
-special character that is not itself a backslash."
+  "Parse a single backslash (\\) character and the character after.
+If the character after the backslash is special, always ignore
+the backslash and return the escaped character.
+
+Otherwise, if the backslash is not in quoted string, the
+backslash is ignored and the character after is returned.  If the
+backslash is in a quoted string, the backslash and the character
+after are both returned."
   (when (eq (char-after) ?\\)
-    (if (eshell-looking-at-backslash-return (point))
-       (throw 'eshell-incomplete ?\\)
-      (if (and (not (eq (char-after (1+ (point))) ?\\))
-              (if eshell-current-quoted
-                  (memq (char-after (1+ (point)))
-                        eshell-special-chars-inside-quoting)
-                (memq (char-after (1+ (point)))
-                      eshell-special-chars-outside-quoting)))
-         (progn
-           (forward-char 2)
-           (list 'eshell-escape-arg
-                 (char-to-string (char-before))))
-       ;; allow \\<RET> to mean a literal "\" character followed by a
-       ;; normal return, rather than a backslash followed by a line
-       ;; continuation (i.e., "\\ + \n" rather than "\ + \\n").  This
-       ;; is necessary because backslashes in Eshell are not special
-       ;; unless they either precede something special, or precede a
-       ;; backslash that precedes something special.  (Mainly this is
-       ;; done to make using backslash on Windows systems more
-       ;; natural-feeling).
-       (if (eshell-looking-at-backslash-return (1+ (point)))
-           (forward-char))
-       (forward-char)
-       "\\"))))
+    (when (eshell-looking-at-backslash-return (point))
+       (throw 'eshell-incomplete ?\\))
+    (forward-char 2) ; Move one char past the backslash.
+    ;; If the char is in a quote, backslash only has special meaning
+    ;; if it is escaping a special char.
+    (if eshell-current-quoted
+        (if (memq (char-before) eshell-special-chars-inside-quoting)
+            (list 'eshell-escape-arg (char-to-string (char-before)))
+          (concat "\\" (char-to-string (char-before))))
+      (if (memq (char-before) eshell-special-chars-outside-quoting)
+          (list 'eshell-escape-arg (char-to-string (char-before)))
+        (char-to-string (char-before))))))
 
 (defun eshell-parse-literal-quote ()
   "Parse a literally quoted string.  Nothing has special meaning!"
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 15120cb..222e801 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -871,12 +871,20 @@ When run interactively, widen the buffer first."
   (goto-char (point-max))
   (recenter -1))
 
-(defun eshell/clear ()
-  "Scroll contents of eshell window out of sight, leaving a blank window."
+(defun eshell/clear (&optional scrollback)
+  "Scroll contents of eshell window out of sight, leaving a blank window.
+If SCROLLBACK is non-nil, clear the scrollback contents."
   (interactive)
-  (let ((number-newlines (count-lines (window-start) (point))))
-    (insert (make-string number-newlines ?\n)))
-    (eshell-send-input))
+  (if scrollback
+      (eshell/clear-scrollback)
+    (let ((number-newlines (count-lines (window-start) (point))))
+      (insert (make-string number-newlines ?\n))
+      (eshell-send-input))))
+
+(defun eshell/clear-scrollback ()
+  "Clear the scrollback content of the eshell window."
+  (let ((inhibit-read-only t))
+    (erase-buffer)))
 
 (defun eshell-get-old-input (&optional use-current-region)
   "Return the command input on the current line."
diff --git a/lisp/ffap.el b/lisp/ffap.el
index d4e30a0..452275a 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1004,7 +1004,7 @@ If a given RFC isn't in these then `ffap-rfc-path' is 
offered."
     ;; Slightly controversial decisions:
     ;; * strip trailing "@" and ":"
     ;; * no commas (good for latex)
-    (file "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:")
+    (file "--:\\\\$\\{\\}+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:")
     ;; An url, or maybe a email/news message-id:
     (url "--:=&address@hidden:alpha:]~#,%;*()!'" "^[0-9a-zA-Z]" ":;.,!?")
     ;; Find a string that does *not* contain a colon:
diff --git a/lisp/files.el b/lisp/files.el
index 42b00ac..0b011f4 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -573,6 +573,12 @@ using \\[read-only-mode]."
 
 Maximum length of the history list is determined by the value
 of `history-length', which see.")
+
+(defvar save-silently nil
+  "If non-nil, avoid messages when saving files.
+Error-related messages will still be printed, but all other
+messages will not.")
+
 
 (put 'ange-ftp-completion-hook-function 'safe-magic t)
 (defun ange-ftp-completion-hook-function (op &rest args)
@@ -1192,7 +1198,7 @@ containing it, until no links are left at any level.
            (setq dirfile (directory-file-name dir))
            ;; If these are equal, we have the (or a) root directory.
            (or (string= dir dirfile)
-               (and (memq system-type '(windows-nt ms-dos cygwin))
+               (and (memq system-type '(windows-nt ms-dos cygwin nacl))
                     (eq (compare-strings dir 0 nil dirfile 0 nil t) t))
                ;; If this is the same dir we last got the truename for,
                ;; save time--don't recalculate.
@@ -1865,6 +1871,13 @@ If that fails, try to open it with `find-file-literally'
             out-of-memory-warning-percentage
             (file-size-human-readable (* total-free-memory 1024)))))))))
 
+(defun files--message (format &rest args)
+  "Like `message', except sometimes don't print to minibuffer.
+If the variable `save-silently' is non-nil, the message is not
+displayed on the minibuffer."
+  (apply #'message format args)
+  (when save-silently (message nil)))
+
 (defun find-file-noselect (filename &optional nowarn rawfile wildcards)
   "Read file FILENAME into a buffer and return the buffer.
 If a buffer exists visiting FILENAME, return that one, but
@@ -1910,8 +1923,8 @@ the various files."
              (or nowarn
                  find-file-suppress-same-file-warnings
                  (string-equal filename (buffer-file-name other))
-                 (message "%s and %s are the same file"
-                          filename (buffer-file-name other)))
+                 (files--message "%s and %s are the same file"
+                                  filename (buffer-file-name other)))
              ;; Optionally also find that buffer.
              (if (or find-file-existing-other-name find-file-visit-truename)
                  (setq buf other))))
@@ -2506,7 +2519,7 @@ 
ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
      ;; this has lower priority to avoid matching changelog.sgml etc.
      ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
      ;; either user's dot-files or under /etc or some such
-     ("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
+     
("/\\.?\\(?:gitconfig\\|gnokiirc\\|hgrc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'"
 . conf-mode)
      ;; alas not all ~/.*rc files are like this
      
("/\\.\\(?:enigma\\|gltron\\|gtk\\|hxplayer\\|net\\|neverball\\|qt/.+\\|realplayer\\|scummvm\\|sversion\\|sylpheed/.+\\|xmp\\)rc\\'"
 . conf-mode)
      
("/\\.\\(?:gdbtkinit\\|grip\\|orbital/.+txt\\|rhosts\\|tuxracer/options\\)\\'" 
. conf-mode)
@@ -3931,17 +3944,19 @@ the old visited file has been renamed to the new name 
FILENAME."
           (make-local-variable 'backup-inhibited)
           (setq backup-inhibited t)))
     (let ((oauto buffer-auto-save-file-name))
-      ;; If auto-save was not already on, turn it on if appropriate.
-      (if (not buffer-auto-save-file-name)
-         (and buffer-file-name auto-save-default
-              (auto-save-mode t))
-       ;; If auto save is on, start using a new name.
-       ;; We deliberately don't rename or delete the old auto save
-       ;; for the old visited file name.  This is because perhaps
-       ;; the user wants to save the new state and then compare with the
-       ;; previous state from the auto save file.
-       (setq buffer-auto-save-file-name
-             (make-auto-save-file-name)))
+      (cond ((null filename)
+            (setq buffer-auto-save-file-name nil))
+           ((not buffer-auto-save-file-name)
+            ;; If auto-save was not already on, turn it on if appropriate.
+            (and buffer-file-name auto-save-default (auto-save-mode t)))
+           (t
+            ;; If auto save is on, start using a new name. We
+            ;; deliberately don't rename or delete the old auto save
+            ;; for the old visited file name.  This is because
+            ;; perhaps the user wants to save the new state and then
+            ;; compare with the previous state from the auto save
+            ;; file.
+            (setq buffer-auto-save-file-name (make-auto-save-file-name))))
       ;; Rename the old auto save file if any.
       (and oauto buffer-auto-save-file-name
           (file-exists-p oauto)
@@ -4639,7 +4654,10 @@ See the subroutine `basic-save-buffer' for more 
information."
     ;; then Rmail-mbox never displays it due to buffer swapping.  If
     ;; the test is ever re-introduced, be sure to handle saving of
     ;; Rmail files.
-    (if (and modp (buffer-file-name) (not noninteractive))
+    (if (and modp
+             (buffer-file-name)
+             (not noninteractive)
+             (not save-silently))
        (message "Saving file %s..." (buffer-file-name)))
     (basic-save-buffer)
     (and modp (memq arg '(4 64)) (setq buffer-backed-up nil))))
@@ -4781,7 +4799,9 @@ Before and after saving the buffer, this function runs
          ;; Support VC `implicit' locking.
          (vc-after-save)
          (run-hooks 'after-save-hook))
-      (or noninteractive (message "(No changes need to be saved)")))))
+      (or noninteractive
+          (not (called-interactively-p 'any))
+          (files--message "(No changes need to be saved)")))))
 
 ;; This does the "real job" of writing a buffer into its visited file
 ;; and making a backup file.  This is what is normally done
@@ -4854,9 +4874,10 @@ Before and after saving the buffer, this function runs
                                ;; Pass in nil&nil rather than point-min&max
                                ;; cause we're saving the whole buffer.
                                ;; write-region-annotate-functions may use it.
-                              (write-region nil nil
-                                            tempname nil  realname
-                                            buffer-file-truename 'excl)
+                               (write-region nil nil
+                                             tempname nil  realname
+                                             buffer-file-truename 'excl)
+                               (when save-silently (message nil))
                               nil)
                           (file-already-exists t))
                    ;; The file was somehow created by someone else between
@@ -4901,8 +4922,9 @@ Before and after saving the buffer, this function runs
                 ;; Pass in nil&nil rather than point-min&max to indicate
                 ;; we're saving the buffer rather than just a region.
                 ;; write-region-annotate-functions may make us of it.
-               (write-region nil nil
-                             buffer-file-name nil t buffer-file-truename)
+                (write-region nil nil
+                              buffer-file-name nil t buffer-file-truename)
+                (when save-silently (message nil))
                (setq success t))
            ;; If we get an error writing the new file, and we made
            ;; the backup by renaming, undo the backing-up.
@@ -5022,13 +5044,14 @@ change the additional actions you can take on files."
       (or queried (> files-done 0) abbrevs-done
          (cond
           ((null autosaved-buffers)
-           (message "(No files need saving)"))
+            (when (called-interactively-p 'any)
+              (files--message "(No files need saving)")))
           ((= (length autosaved-buffers) 1)
-           (message "(Saved %s)" (car autosaved-buffers)))
+           (files--message "(Saved %s)" (car autosaved-buffers)))
           (t
-           (message "(Saved %d files: %s)"
-                    (length autosaved-buffers)
-                    (mapconcat 'identity autosaved-buffers ", "))))))))
+           (files--message "(Saved %d files: %s)"
+                            (length autosaved-buffers)
+                            (mapconcat 'identity autosaved-buffers ", "))))))))
 
 (defun clear-visited-file-modtime ()
   "Clear out records of last mod time of visited file.
@@ -5043,8 +5066,8 @@ It is not a good idea to use this function in Lisp 
programs, because it
 prints a message in the minibuffer.  Instead, use `set-buffer-modified-p'."
   (declare (interactive-only set-buffer-modified-p))
   (interactive "P")
-  (message (if arg "Modification-flag set"
-              "Modification-flag cleared"))
+  (files--message (if arg "Modification-flag set"
+                    "Modification-flag cleared"))
   (set-buffer-modified-p arg))
 
 (defun toggle-read-only (&optional arg interactive)
@@ -5078,7 +5101,8 @@ instead of any buffer contents; END is ignored.
 This does character code conversion and applies annotations
 like `write-region' does."
   (interactive "r\nFAppend to file: ")
-  (write-region start end filename t))
+  (prog1 (write-region start end filename t)
+    (when save-silently (message nil))))
 
 (defun file-newest-backup (filename)
   "Return most recent backup file for FILENAME or nil if no backups exist."
diff --git a/lisp/forms.el b/lisp/forms.el
index 22ddd65..aa57a66 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -297,9 +297,6 @@
 
 ;;; Global variables and constants:
 
-(provide 'forms)                       ;;; official
-(provide 'forms-mode)                  ;;; for compatibility
-
 (defcustom forms-mode-hook nil
   "Hook run upon entering Forms mode."
   :group 'forms
@@ -443,6 +440,7 @@ Also, initial position is at last record."
 
 ;;;###autoload
 (defun forms-mode (&optional primary)
+  ;; FIXME: use define-derived-mode
   "Major mode to visit files in a field-structured manner using a form.
 
 Commands:                        Equivalent keys in read-only mode:
@@ -637,6 +635,8 @@ Commands:                        Equivalent keys in 
read-only mode:
   (setq major-mode 'forms-mode)
   (setq mode-name "Forms")
 
+  (cursor-intangible-mode 1)
+
   ;; find the data file
   (setq forms--file-buffer (find-file-noselect forms-file))
 
@@ -647,7 +647,7 @@ Commands:                        Equivalent keys in 
read-only mode:
        (with-current-buffer forms--file-buffer
          (let ((inhibit-read-only t)
                (file-modified (buffer-modified-p)))
-           (run-hooks 'read-file-filter)
+           (mapc #'funcall read-file-filter)
            (if (not file-modified) (set-buffer-modified-p nil)))
          (if write-file-filter
              (add-hook 'write-file-functions write-file-filter nil t)))
@@ -921,7 +921,7 @@ Commands:                        Equivalent keys in 
read-only mode:
              ,@(if (numberp (car forms-format-list))
                    nil
                  '((add-text-properties (point-min) (1+ (point-min))
-                                        '(front-sticky (read-only 
intangible)))))
+                                        '(front-sticky (read-only 
cursor-intangible)))))
              ;; Prevent insertion after the last text.
              (remove-text-properties (1- (point)) (point)
                                      '(rear-nonsticky)))
@@ -1005,10 +1005,10 @@ Commands:                        Equivalent keys in 
read-only mode:
         (point))
        (list 'face forms--ro-face      ; read-only appearance
             'read-only ,@(list (1+ forms--marker))
-            'intangible ,@(list (1+ forms--marker))
+            'cursor-intangible ,@(list (1+ forms--marker))
             'insert-in-front-hooks '(forms--iif-hook)
             'rear-nonsticky '(face read-only insert-in-front-hooks
-                                   intangible)))))
+                                   cursor-intangible)))))
 
    ((numberp el)
     `((let ((here (point)))
@@ -1034,10 +1034,10 @@ Commands:                        Equivalent keys in 
read-only mode:
         (point))
        (list 'face forms--ro-face
             'read-only ,@(list (1+ forms--marker))
-            'intangible ,@(list (1+ forms--marker))
+            'cursor-intangible ,@(list (1+ forms--marker))
             'insert-in-front-hooks '(forms--iif-hook)
             'rear-nonsticky '(read-only face insert-in-front-hooks
-                                        intangible)))))
+                                        cursor-intangible)))))
 
    ;; end of cond
    ))
@@ -2055,4 +2055,6 @@ Usage: (setq forms-number-of-fields
          (goto-char (point-max))
          (insert ret)))))
 
+(provide 'forms-mode)                  ; for compatibility
+(provide 'forms)
 ;;; forms.el ends here
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog.3
similarity index 99%
rename from lisp/gnus/ChangeLog
rename to lisp/gnus/ChangeLog.3
index 95ead23..442326c 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog.3
@@ -1,3 +1,16 @@
+2015-04-06  Paul Eggert  <address@hidden>
+
+       Use American spelling for 'normalize'
+       * rtree.el (rtree-normalize-range): Rename from rtree-normalise-range.
+       All uses changed.  Add an alias for obsolete usages.
+
+2015-04-03  Katsumi Yamaoka  <address@hidden>
+
+       * gnus-art.el (gnus-article-browse-html-save-cid-content):
+       Always return relative file name.
+       (gnus-article-browse-html-parts):
+       Make external links absolute and cid file names relative.
+
 2015-04-01  Eric Abrahamsen  <address@hidden>
 
        * registry.el (registry-prune): Re-use `registry-full' in
@@ -1679,7 +1692,7 @@
 2013-06-18  Lars Magne Ingebrigtsen  <address@hidden>
 
        * shr.el (shr-tag-table): Insert the images after the table, so that
-       they're not covered by the table colourisation, which often looked
+       they're not covered by the table colorization, which often looked
        awkward.
        (shr-tag-dl, shr-tag-dt, shr-tag-dd): Add support for <dl>, <dt> and
        <dd>.
diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el
index 00d1ee9..331b99b 100644
--- a/lisp/gnus/deuglify.el
+++ b/lisp/gnus/deuglify.el
@@ -188,7 +188,7 @@
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
-;; See ChangeLog for other changes.
+;; See commit log for other changes.
 ;;
 ;; Revision 1.5  2002/01/27 14:39:17  rscholz
 ;; * New variable `gnus-outlook-deuglify-no-wrap-chars' to inhibit
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 19da2cc..14f9adc 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -50,6 +50,7 @@
 (autoload 'ansi-color-apply-on-region "ansi-color")
 (autoload 'mm-url-insert-file-contents-external "mm-url")
 (autoload 'mm-extern-cache-contents "mm-extern")
+(autoload 'url-expand-file-name "url-expand")
 
 (defgroup gnus-article nil
   "Article display."
@@ -254,12 +255,10 @@ This can also be a list of the above values."
   :group 'gnus-article-signature)
 
 (defcustom gnus-hidden-properties
-  (if (featurep 'xemacs)
-      ;; `intangible' is evil, but I keep it here in case it's useful.
-      '(invisible t intangible t)
-    ;; Emacs's command loop moves point out of invisible text anyway, so
-    ;; `intangible' is clearly not needed there.
-    '(invisible t))
+  ;; We use to have `intangible' here as well, but Emacs's command loop moves
+  ;; point out of invisible text anyway, so `intangible' is clearly not
+  ;; needed there.  And XEmacs doesn't handle `intangible' anyway.
+  '(invisible t)
   "Property list to use for hiding text."
   :type 'sexp
   :group 'gnus-article-hiding)
@@ -1628,8 +1627,11 @@ It is a string, such as \"PGP\". If nil, ask user."
 
 (defvar idna-program)
 
-(defcustom gnus-use-idna (and (condition-case nil (require 'idna) (file-error))
-                             (mm-coding-system-p 'utf-8)
+(defcustom gnus-use-idna (and (mm-coding-system-p 'utf-8)
+                             (condition-case nil
+                                 (require 'idna)
+                               (file-error)
+                               (invalid-operation))
                              idna-program
                              (executable-find idna-program))
   "Whether IDNA decoding of headers is used when viewing messages.
@@ -1771,19 +1773,12 @@ Initialized from `text-mode-syntax-table.")
   (re-search-forward (concat "^\\(" header "\\):") nil t))
 
 (defsubst gnus-article-hide-text (b e props)
-  "Set text PROPS on the B to E region, extending `intangible' 1 past B."
-  (gnus-add-text-properties-when 'article-type nil b e props)
-  (when (memq 'intangible props)
-    (put-text-property
-     (max (1- b) (point-min))
-     b 'intangible (cddr (memq 'intangible props)))))
+  "Set text PROPS on the B to E region."
+  (gnus-add-text-properties-when 'article-type nil b e props))
 
 (defsubst gnus-article-unhide-text (b e)
   "Remove hidden text properties from region between B and E."
-  (remove-text-properties b e gnus-hidden-properties)
-  (when (memq 'intangible gnus-hidden-properties)
-    (put-text-property (max (1- b) (point-min))
-                      b 'intangible nil)))
+  (remove-text-properties b e gnus-hidden-properties))
 
 (defun gnus-article-hide-text-type (b e type)
   "Hide text of TYPE between B and E."
@@ -1795,10 +1790,7 @@ Initialized from `text-mode-syntax-table.")
   "Unhide text of TYPE between B and E."
   (gnus-delete-wash-type type)
   (remove-text-properties
-   b e (cons 'article-type (cons type gnus-hidden-properties)))
-  (when (memq 'intangible gnus-hidden-properties)
-    (put-text-property (max (1- b) (point-min))
-                      b 'intangible nil)))
+   b e (cons 'article-type (cons type gnus-hidden-properties))))
 
 (defun gnus-article-delete-text-of-type (type)
   "Delete text of TYPE in the current buffer."
@@ -2328,7 +2320,7 @@ long lines if and only if arg is positive."
       (goto-char (point-max))
       (let ((start (point)))
        (insert "X-Boundary: ")
-       (gnus-add-text-properties start (point) '(invisible t intangible t))
+       (gnus-add-text-properties start (point) gnus-hidden-properties)
        (insert (let (str (max (window-width)))
                  (if (featurep 'xemacs)
                      (setq max (1- max)))
@@ -2792,10 +2784,9 @@ summary buffer."
     (setq gnus-article-browse-html-temp-list nil))
   gnus-article-browse-html-temp-list)
 
-(defun gnus-article-browse-html-save-cid-content (cid handles directory abs)
+(defun gnus-article-browse-html-save-cid-content (cid handles directory)
   "Find CID content in HANDLES and save it in a file in DIRECTORY.
-Return absolute file name if ABS is non-nil, otherwise relative to
-the parent of DIRECTORY."
+Return file name relative to the parent of DIRECTORY."
   (save-match-data
     (let (file afile)
       (catch 'found
@@ -2807,7 +2798,7 @@ the parent of DIRECTORY."
           ((not (or (bufferp (car handle)) (stringp (car handle)))))
           ((equal (mm-handle-media-supertype handle) "multipart")
            (when (setq file (gnus-article-browse-html-save-cid-content
-                             cid handle directory abs))
+                             cid handle directory))
              (throw 'found file)))
           ((equal (concat "<" cid ">") (mm-handle-id handle))
            (setq file (or (mm-handle-filename handle)
@@ -2817,11 +2808,9 @@ the parent of DIRECTORY."
                                         mailcap-mime-extensions))))
                  afile (expand-file-name file directory))
            (mm-save-part-to-file handle afile)
-           (throw 'found (if abs
-                             afile
-                           (concat (file-name-nondirectory
-                                    (directory-file-name directory))
-                                   "/" file))))))))))
+           (throw 'found (concat (file-name-nondirectory
+                                  (directory-file-name directory))
+                                 "/" file)))))))))
 
 (defun gnus-article-browse-html-parts (list &optional header)
   "View all \"text/html\" parts from LIST.
@@ -2857,13 +2846,32 @@ message header will be added to the bodies of the 
\"text/html\" parts."
               (insert content)
               ;; resolve cid contents
               (let ((case-fold-search t)
-                    abs st cid-file)
+                    st base regexp cid-file)
                 (goto-char (point-min))
-                (when (re-search-forward "<head[\t\n >]" nil t)
-                  (setq st (match-end 0)
-                        abs (or
-                             (not (re-search-forward "</head[\t\n >]" nil t))
-                             (re-search-backward "<base[\t\n >]" st t))))
+                (when (and (re-search-forward "<head[\t\n >]" nil t)
+                           (progn
+                             (setq st (match-end 0))
+                             (re-search-forward "</head[\t\n >]" nil t))
+                           (re-search-backward "<base\
+\\(?:[\t\n ]+[^\t\n >]+\\)*[\t\n ]+href=\"\\([^\"]+\\)\"[^>]*>" st t))
+                  (setq base (match-string 1))
+                  (replace-match "<!--\\&-->")
+                  (setq st (point))
+                  (dolist (tag '(("a" . "href") ("form" . "action")
+                                 ("img" . "src")))
+                    (setq regexp (concat "<" (car tag)
+                                         "\\(?:[\t\n ]+[^\t\n >]+\\)*[\t\n ]+"
+                                         (cdr tag) "=\"\\([^\"]+\\)"))
+                    (while (re-search-forward regexp nil t)
+                      (insert (prog1
+                                  (condition-case nil
+                                      (save-match-data
+                                        (url-expand-file-name (match-string 1)
+                                                              base))
+                                    (error (match-string 1)))
+                                (delete-region (match-beginning 1)
+                                               (match-end 1)))))
+                    (goto-char st)))
                 (while (re-search-forward "\
 <img[\t\n ]+\\(?:[^\t\n >]+[\t\n ]+\\)*src=\"\\(cid:\\([^\"]+\\)\\)\""
                                           nil t)
@@ -2877,18 +2885,7 @@ message header will be added to the bodies of the 
\"text/html\" parts."
                                (match-string 2)
                                (with-current-buffer gnus-article-buffer
                                  gnus-article-mime-handles)
-                               cid-dir abs))
-                    (when abs
-                      (setq cid-file
-                            (if (eq system-type 'cygwin)
-                                (concat "file:///"
-                                        (substring
-                                         (with-output-to-string
-                                           (call-process "cygpath" nil
-                                                         standard-output
-                                                         nil "-m" cid-file))
-                                         0 -1))
-                              (concat "file://" cid-file))))
+                               cid-dir))
                     (replace-match cid-file nil nil nil 1))))
               (unless content (setq content (buffer-string))))
             (when (or charset header (not file))
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index e22138b..ff839d7 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -478,6 +478,26 @@ simple manner.")
 
 (defvar gnus-group-edit-buffer nil)
 
+(defvar gnus-tmp-news-method)
+(defvar gnus-tmp-colon)
+(defvar gnus-tmp-news-server)
+(defvar gnus-tmp-decoded-group)
+(defvar gnus-tmp-header)
+(defvar gnus-tmp-process-marked)
+(defvar gnus-tmp-summary-live)
+(defvar gnus-tmp-news-method-string)
+(defvar gnus-tmp-group-icon)
+(defvar gnus-tmp-moderated-string)
+(defvar gnus-tmp-newsgroup-description)
+(defvar gnus-tmp-comment)
+(defvar gnus-tmp-qualified-group)
+(defvar gnus-tmp-subscribed)
+(defvar gnus-tmp-number-of-read)
+(defvar gnus-inhibit-demon)
+(defvar gnus-pick-mode)
+(defvar gnus-tmp-marked-mark)
+(defvar gnus-tmp-number-of-unread)
+
 (defvar gnus-group-line-format-alist
   `((?M gnus-tmp-marked-mark ?c)
     (?S gnus-tmp-subscribed ?c)
@@ -1140,8 +1160,7 @@ The following commands are available:
     (let ((gnus-process-mark ?\200)
          (gnus-group-update-hook nil)
          (gnus-group-marked '("dummy.group"))
-         (gnus-active-hashtb (make-vector 10 0))
-         (topic ""))
+         (gnus-active-hashtb (make-vector 10 0)))
       (gnus-set-active "dummy.group" '(0 . 0))
       (gnus-set-work-buffer)
       (gnus-group-insert-group-line "dummy.group" 0 nil 0 nil)
@@ -1574,7 +1593,7 @@ if it is a string, only list groups matching REGEXP."
              gnus-process-mark ? ))
         (buffer-read-only nil)
         beg end
-        header gnus-tmp-header)        ; passed as parameter to user-funcs.
+         gnus-tmp-header)      ; passed as parameter to user-funcs.
     (beginning-of-line)
     (setq beg (point))
     (gnus-add-text-properties
@@ -1592,20 +1611,31 @@ if it is a string, only list groups matching REGEXP."
                  gnus-indentation ,gnus-group-indentation
                  gnus-level ,gnus-tmp-level))
     (setq end (point))
-    (when gnus-group-update-tool-bar
-      (gnus-put-text-property beg end 'point-entered
-                             'gnus-tool-bar-update)
-      (gnus-put-text-property beg end 'point-left
-                             'gnus-tool-bar-update))
+    (gnus-group--setup-tool-bar-update beg end)
     (forward-line -1)
     (when (inline (gnus-visual-p 'group-highlight 'highlight))
       (gnus-group-highlight-line gnus-tmp-group beg end))
     (gnus-run-hooks 'gnus-group-update-hook)
     (forward-line)))
 
+(defun gnus-group--setup-tool-bar-update (beg end)
+  (when gnus-group-update-tool-bar
+    (if (fboundp 'cursor-sensor-mode)
+        (progn
+          (unless (bound-and-true-p cursor-sensor-mode)
+            (cursor-sensor-mode 1))
+          (gnus-put-text-property beg end 'cursor-sensor-functions
+                                  '(gnus-tool-bar-update)))
+      (gnus-put-text-property beg end 'point-entered
+                              #'gnus-tool-bar-update)
+      (gnus-put-text-property beg end 'point-left
+                              #'gnus-tool-bar-update))))
+
 (defun gnus-group-update-eval-form (group list)
   "Eval `car' of each element of LIST, and return the first that return t.
 Some value are bound so the form can use them."
+  (defvar group-age) (defvar ticked) (defvar score) (defvar level)
+  (defvar mailp) (defvar total) (defvar unread)
   (when list
     (let* ((entry (gnus-group-entry group))
            (unread (if (numberp (car entry)) (car entry) 0))
@@ -3107,8 +3137,8 @@ If SOLID (the prefix), create a solid group."
 
 (defvar nnrss-group-alist)
 (eval-when-compile
-  (defun nnrss-discover-feed (arg))
-  (defun nnrss-save-server-data (arg)))
+  (defun nnrss-discover-feed (_arg))
+  (defun nnrss-save-server-data (_arg)))
 (defun gnus-group-make-rss-group (&optional url)
   "Given a URL, discover if there is an RSS feed.
 If there is, use Gnus to create an nnrss group"
@@ -3757,7 +3787,7 @@ group line."
                      nil nil (gnus-read-active-file-p))))
   (let ((newsrc (gnus-group-entry group)))
     (cond
-     ((string-match "^[ \t]*$" group)
+     ((string-match "\\`[ \t]*\\'" group)
       (error "Empty group name"))
      (newsrc
       ;; Toggle subscription flag.
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index c68d496..1d8ad8e 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -9068,22 +9068,24 @@ non-numeric or nil fetch the number specified by the
                       (regexp-opt ',(append refs (list id subject)))))))
              (gnus-fetch-headers (list last) (if (numberp limit)
                                                  (* 2 limit) limit) t))))
-        article-ids)
+        article-ids new-unreads)
     (when (listp new-headers)
       (dolist (header new-headers)
-       (push (mail-header-number header) article-ids)
-       (when (member (mail-header-number header) gnus-newsgroup-unselected)
-          (push (mail-header-number header) gnus-newsgroup-unreads)
-          (setq gnus-newsgroup-unselected
-                (delete (mail-header-number header)
-                       gnus-newsgroup-unselected))))
+       (push (mail-header-number header) article-ids))
+      (setq article-ids (nreverse article-ids))
+      (setq new-unreads
+           (gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
+      (setq gnus-newsgroup-unselected
+           (gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
+      (setq gnus-newsgroup-unreads
+           (gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
       (setq gnus-newsgroup-headers
             (gnus-delete-duplicate-headers
              (gnus-merge
               'list gnus-newsgroup-headers new-headers
               'gnus-article-sort-by-number)))
       (setq gnus-newsgroup-articles
-           (gnus-sorted-nunion gnus-newsgroup-articles (nreverse article-ids)))
+           (gnus-sorted-nunion gnus-newsgroup-articles article-ids))
       (gnus-summary-limit-include-thread id)))
   (gnus-summary-show-thread))
 
@@ -9868,9 +9870,11 @@ invalid IDNA string (`xn--bar' is invalid).
 You must have GNU Libidn (URL `http://www.gnu.org/software/libidn/')
 installed for this command to work."
   (interactive "P")
-  (if (not (and (condition-case nil (require 'idna)
-                 (file-error))
-               (mm-coding-system-p 'utf-8)
+  (if (not (and (mm-coding-system-p 'utf-8)
+               (condition-case nil
+                   (require 'idna)
+                 (file-error)
+                 (invalid-operation))
                (symbol-value 'idna-program)
                (executable-find (symbol-value 'idna-program))))
       (gnus-message
diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el
index f536a27..656ef80 100644
--- a/lisp/gnus/gnus-topic.el
+++ b/lisp/gnus/gnus-topic.el
@@ -154,7 +154,7 @@ See Info node `(gnus)Formatting Variables'."
   "Go to TOPIC."
   (interactive
    (list (gnus-completing-read "Go to topic" (gnus-topic-list) t)))
-  (let ((buffer-read-only nil))
+  (let ((inhibit-read-only t))
     (dolist (topic (gnus-current-topics topic))
       (unless (gnus-topic-goto-topic topic)
        (gnus-topic-goto-missing-topic topic)
@@ -427,7 +427,7 @@ If PREDICATE is a function, list groups that the function 
returns non-nil;
 if it is t, list groups that have no unread articles.
 If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
   (set-buffer gnus-group-buffer)
-  (let ((buffer-read-only nil)
+  (let ((inhibit-read-only t)
        (lowest (or lowest 1))
        (not-in-list
         (and gnus-group-listed-groups
@@ -582,11 +582,7 @@ articles in the topic and its subtopics."
        (not (eq (nth 2 type) 'hidden))
        level all-entries unread))
     (gnus-topic-update-unreads (car type) unread)
-    (when gnus-group-update-tool-bar
-      (gnus-put-text-property beg end 'point-entered
-                             'gnus-tool-bar-update)
-      (gnus-put-text-property beg end 'point-left
-                             'gnus-tool-bar-update))
+    (gnus-group--setup-tool-bar-update beg end)
     (goto-char end)
     unread))
 
@@ -684,7 +680,7 @@ articles in the topic and its subtopics."
             gnus-topic-mode)
     (let ((group (gnus-group-group-name))
          (m (point-marker))
-         (buffer-read-only nil))
+         (inhibit-read-only t))
       (when (and group
                 (gnus-get-info group)
                 (gnus-topic-goto-topic (gnus-current-topic)))
@@ -902,7 +898,7 @@ articles in the topic and its subtopics."
 (defun gnus-topic-change-level (group level oldlevel &optional previous)
   "Run when changing levels to enter/remove groups from topics."
   (with-current-buffer gnus-group-buffer
-    (let ((buffer-read-only nil))
+    (let ((inhibit-read-only t))
       (unless gnus-topic-inhibit-change-level
        (gnus-group-goto-group (or (car (nth 2 previous)) group))
        (when (and gnus-topic-mode
@@ -1131,22 +1127,17 @@ articles in the topic and its subtopics."
        ["Edit parameters" gnus-topic-edit-parameters t])
        ["List active" gnus-topic-list-active t]))))
 
-(defun gnus-topic-mode (&optional arg redisplay)
+(define-minor-mode gnus-topic-mode
   "Minor mode for topicsifying Gnus group buffers."
-  ;; FIXME: Use define-minor-mode.
-  (interactive (list current-prefix-arg t))
-  (when (eq major-mode 'gnus-group-mode)
-    (make-local-variable 'gnus-topic-mode)
-    (setq gnus-topic-mode
-         (if (null arg) (not gnus-topic-mode)
-           (> (prefix-numeric-value arg) 0)))
+  :lighter " Topic" :keymap gnus-topic-mode-map
+  (if (not (derived-mode-p 'gnus-group-mode))
+      (setq gnus-topic-mode nil)
     ;; Infest Gnus with topics.
     (if (not gnus-topic-mode)
        (setq gnus-goto-missing-group-function nil)
       (when (gnus-visual-p 'topic-menu 'menu)
        (gnus-topic-make-menu-bar))
       (gnus-set-format 'topic t)
-      (add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map)
       (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
       (set (make-local-variable 'gnus-group-prepare-function)
           'gnus-group-prepare-topics)
@@ -1168,8 +1159,7 @@ articles in the topic and its subtopics."
       (setq gnus-topology-checked-p nil)
       ;; We check the topology.
       (when gnus-newsrc-alist
-       (gnus-topic-check-topology))
-      (gnus-run-hooks 'gnus-topic-mode-hook))
+       (gnus-topic-check-topology)))
     ;; Remove topic infestation.
     (unless gnus-topic-mode
       (remove-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
@@ -1177,7 +1167,7 @@ articles in the topic and its subtopics."
       (remove-hook 'gnus-check-bogus-groups-hook 'gnus-topic-clean-alist)
       (setq gnus-group-prepare-function 'gnus-group-prepare-flat)
       (setq gnus-group-sort-alist-function 'gnus-group-sort-flat))
-    (when redisplay
+    (when (gmm-called-interactively-p 'any)
       (gnus-group-list-groups))))
 
 (defun gnus-topic-select-group (&optional all)
@@ -1229,10 +1219,10 @@ Also see `gnus-group-catchup'."
       (call-interactively 'gnus-group-catchup-current)
     (save-excursion
       (let* ((groups
-            (mapcar (lambda (entry) (car (nth 2 entry)))
-                    (gnus-topic-find-groups topic gnus-level-killed t
-                                            nil t)))
-            (buffer-read-only nil)
+              (mapcar (lambda (entry) (car (nth 2 entry)))
+                      (gnus-topic-find-groups topic gnus-level-killed t
+                                              nil t)))
+            (inhibit-read-only t)
             (gnus-group-marked groups))
        (gnus-group-catchup-current)
        (mapcar 'gnus-topic-update-topics-containing-group groups)))))
@@ -1336,7 +1326,7 @@ If COPYP, copy the groups instead."
      (lambda (group)
        (gnus-group-remove-mark group use-marked)
        (let ((topicl (assoc (gnus-current-topic) gnus-topic-alist))
-            (buffer-read-only nil))
+            (inhibit-read-only t))
         (when (and topicl group)
           (gnus-delete-line)
           (gnus-delete-first group topicl))
@@ -1515,7 +1505,7 @@ If NON-RECURSIVE (which is the prefix) is t, don't unmark 
its subtopics."
   (unless topic
     (error "No topic to be deleted"))
   (let ((entry (assoc topic gnus-topic-alist))
-       (buffer-read-only nil))
+       (inhibit-read-only t))
     (when (cdr entry)
       (error "Topic not empty"))
     ;; Delete if visible.
@@ -1560,7 +1550,7 @@ If UNINDENT, remove an indentation."
       (gnus-topic-unindent)
     (let* ((topic (gnus-current-topic))
           (parent (gnus-topic-previous-topic topic))
-          (buffer-read-only nil))
+          (inhibit-read-only t))
       (unless parent
        (error "Nothing to indent %s into" topic))
       (when topic
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 55a881c..94f01c6 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -873,10 +873,9 @@ When called interactively, prompt for REGEXP."
          (setq state (list 'middle))))
       (with-current-buffer "*gnus-uu-body*"
        (goto-char (setq beg (point-max)))
-       (save-excursion
+       (with-current-buffer buffer
          (save-restriction
-           (set-buffer buffer)
-           (let (buffer-read-only)
+           (let ((inhibit-read-only t))
              (set-text-properties (point-min) (point-max) nil)
              ;; These two are necessary for XEmacs 19.12 fascism.
              (put-text-property (point-min) (point-max) 'invisible nil)
@@ -910,8 +909,7 @@ When called interactively, prompt for REGEXP."
                                 (match-beginning 0)
                                 (or (and (re-search-forward "^[^ \t]" nil t)
                                          (1- (point)))
-                                    (progn (forward-line 1) (point)))))))))
-           (widen)))
+                                    (progn (forward-line 1) (point)))))))))))
        (if (and message-forward-as-mime gnus-uu-digest-buffer)
          (if message-forward-show-mml
              (progn
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 04145de..1371e70 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1763,7 +1763,10 @@ no, only reply back to the author."
               (let (mucs-ignore-version-incompatibilities)
                 (require 'un-define))
             (error)))
-       (condition-case nil (require 'idna) (file-error))
+       (condition-case nil
+          (require 'idna)
+        (file-error)
+        (invalid-operation))
        idna-program
        (executable-find idna-program)
        (string= (idna-to-ascii "räksmörgås") "xn--rksmrgs-5wao1o")
@@ -2961,6 +2964,30 @@ See also `message-forbidden-properties'."
 
 (autoload 'ecomplete-setup "ecomplete") ;; for Emacs <23.
 
+(defvar message-smileys '(":-)" ":)"
+                          ":-(" ":("
+                          ";-)" ";)")
+  "A list of recognized smiley faces in `message-mode'.")
+
+(defun message--syntax-propertize (beg end)
+  "Syntax-propertize certain message text specially."
+  (let ((citation-regexp (concat "^" message-cite-prefix-regexp ".*$"))
+        (smiley-regexp (regexp-opt message-smileys)))
+    (goto-char beg)
+    (while (search-forward-regexp citation-regexp
+                                  end 'noerror)
+      (let ((start (match-beginning 0))
+            (end (match-end 0)))
+        (add-text-properties start (1+ start)
+                             `(syntax-table ,(string-to-syntax "<")))
+        (add-text-properties end (min (1+ end) (point-max))
+                             `(syntax-table ,(string-to-syntax ">")))))
+    (goto-char beg)
+    (while (search-forward-regexp smiley-regexp
+            end 'noerror)
+      (add-text-properties (match-beginning 0) (match-end 0)
+                           `(syntax-table ,(string-to-syntax "."))))))
+
 ;;;###autoload
 (define-derived-mode message-mode text-mode "Message"
   "Major mode for editing mail and news to be sent.
@@ -3063,7 +3090,13 @@ M-RET    `message-newline-and-reformat' (break the line 
and reformat)."
     ;; multibyte is not necessary at all. -- zsh
     (mm-enable-multibyte))
   (set (make-local-variable 'indent-tabs-mode) nil) ;No tabs for indentation.
-  (mml-mode))
+  (mml-mode)
+  ;; Syntactic fontification. Helps `show-paren-mode',
+  ;; `electric-pair-mode', and C-M-* navigation by syntactically
+  ;; excluding citations and other artifacts.
+  ;;
+  (set (make-local-variable 'syntax-propertize-function) 
'message--syntax-propertize)
+  (set (make-local-variable 'parse-sexp-ignore-comments) t))
 
 (defun message-setup-fill-variables ()
   "Setup message fill variables."
diff --git a/lisp/gnus/rtree.el b/lisp/gnus/rtree.el
index 59c17ae..50a860a 100644
--- a/lisp/gnus/rtree.el
+++ b/lisp/gnus/rtree.el
@@ -79,11 +79,14 @@
 (defmacro rtree-range (node)
   `(car ,node))
 
-(defsubst rtree-normalise-range (range)
+(defsubst rtree-normalize-range (range)
   (when (numberp range)
     (setq range (cons range range)))
   range)
 
+(define-obsolete-function-alias 'rtree-normalise-range
+  'rtree-normalize-range "25.1")
+
 (defun rtree-make (range)
   "Make an rtree from RANGE."
   ;; Normalize the range.
@@ -96,7 +99,7 @@
        (node (rtree-make-node)))
     (when (> mid 0)
       (rtree-set-left node (rtree-make-1 range mid)))
-    (rtree-set-range node (rtree-normalise-range (cadr range)))
+    (rtree-set-range node (rtree-normalize-range (cadr range)))
     (setcdr range (cddr range))
     (when (> (- length mid 1) 0)
       (rtree-set-right node (rtree-make-1 range (- length mid 1))))
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index 719cb82..97e7d0f 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -440,7 +440,7 @@ and so on."
              (background (choice (const :tag "Dark"          dark     )
                                  (const :tag "Bright"        light    ))) ))
 
-(defcustom hfy-optimisations (list 'keep-overlays)
+(defcustom hfy-optimizations (list 'keep-overlays)
   "Optimizations to turn on: So far, the following have been implemented:\n
   merge-adjacent-tags: If two (or more) span tags are adjacent, identical and
                        separated by nothing more than whitespace, they will
@@ -475,6 +475,7 @@ which can never slow you down, but may result in incomplete 
fontification."
                (const :tag "body-text-only"       body-text-only      ))
   :group 'htmlfontify
   :tag   "optimizations")
+(define-obsolete-variable-alias 'hfy-optimisations 'hfy-optimizations "25.1")
 
 (defvar hfy-tags-cache nil
   "Alist of the form:\n
@@ -606,7 +607,7 @@ in a windowing system - try to trick it..."
 
 (defun hfy-opt (symbol)
   "Is option SYMBOL set."
-  (memq symbol hfy-optimisations))
+  (memq symbol hfy-optimizations))
 
 (defun hfy-default-header (file style)
   "Default value for `hfy-page-header'.
@@ -1197,7 +1198,7 @@ MAP is the invisibility map as returned by 
`hfy-find-invisible-ranges'."
 ;; -- v
 (defun hfy-face-at (p)
   "Find face in effect at point P.
-If overlays are to be considered (see `hfy-optimisations') then this may
+If overlays are to be considered (see `hfy-optimizations') then this may
 return a `defface' style list of face properties instead of a face symbol."
   ;;(message "hfy-face-at");;DBUG
   ;; Fix-me: clean up, remove face-name etc
@@ -1795,8 +1796,8 @@ FILE, if set, is the file name."
 It is assumed that STRING has text properties that allow it to be
 fontified.  This is a simple convenience wrapper around
 `htmlfontify-buffer'."
-  (let* ((hfy-optimisations-1 (copy-sequence hfy-optimisations))
-         (hfy-optimisations (add-to-list 'hfy-optimisations-1
+  (let* ((hfy-optimizations-1 (copy-sequence hfy-optimizations))
+         (hfy-optimizations (add-to-list 'hfy-optimizations-1
                                          'skip-refontification)))
     (with-temp-buffer
       (insert string)
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 8bd1e46..f15e150 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -2162,7 +2162,7 @@ If optional arg SILENT is non-nil, do not display 
progress messages."
                      (eq ibuffer-always-show-last-buffer
                          :nomini)
                      (minibufferp (cadr bufs)))
-                    (cl-caddr bufs)
+                    (nth 2 bufs)
                   (cadr bufs))
                 (ibuffer-current-buffers-with-marks bufs)
                 ibuffer-display-maybe-show-predicates)))
@@ -2194,7 +2194,7 @@ If optional arg SILENT is non-nil, do not display 
progress messages."
     (require 'ibuf-ext))
   (let* ((sortdat (assq ibuffer-sorting-mode
                        ibuffer-sorting-functions-alist))
-        (func (cl-caddr sortdat)))
+        (func (nth 2 sortdat)))
     (let ((result
           ;; actually sort the buffers
           (if (and sortdat func)
diff --git a/lisp/indent.el b/lisp/indent.el
index 74e73a6..18c1fd4 100644
--- a/lisp/indent.el
+++ b/lisp/indent.el
@@ -537,7 +537,7 @@ column to indent to; if it is nil, use one of the three 
methods above."
   ;; In most cases, reindenting modifies the buffer, but it may also
   ;; leave it unmodified, in which case we have to deactivate the mark
   ;; by hand.
-  (deactivate-mark))
+  (setq deactivate-mark t))
 
 (defun indent-relative-maybe ()
   "Indent a new line like previous nonblank line.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 99ca73f..35fb060 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -578,7 +578,7 @@ variable by the command `isearch-toggle-lax-whitespace'.")
   "Stack of search status elements.
 Each element is an `isearch--state' struct where the slots are
  [STRING MESSAGE POINT SUCCESS FORWARD OTHER-END WORD
-  INVALID-REGEXP WRAPPED BARRIER WITHIN-BRACKETS CASE-FOLD-SEARCH]")
+  ERROR WRAPPED BARRIER CASE-FOLD-SEARCH]")
 
 (defvar isearch-string "")  ; The current search string.
 (defvar isearch-message "") ; text-char-description version of isearch-string
@@ -657,8 +657,7 @@ Each element is an `isearch--state' struct where the slots 
are
     (nconc minor-mode-alist
           (list '(isearch-mode isearch-mode))))
 
-(defvar isearch-mode nil) ;; Name of the minor mode, if non-nil.
-(make-variable-buffer-local 'isearch-mode)
+(defvar-local isearch-mode nil) ;; Name of the minor mode, if non-nil.
 
 (define-key global-map "\C-s" 'isearch-forward)
 (define-key esc-map "\C-s" 'isearch-forward-regexp)
@@ -826,6 +825,7 @@ See the command `isearch-forward-symbol' for more 
information."
       (isearch-update)))))
 
 
+(defvar cursor-sensor-inhibit)
 ;; isearch-mode only sets up incremental search for the minor mode.
 ;; All the work is done by the isearch-mode commands.
 
@@ -932,6 +932,12 @@ convert the search string to a regexp used by regexp 
search functions."
   (add-hook 'post-command-hook 'isearch-post-command-hook)
   (add-hook 'mouse-leave-buffer-hook 'isearch-done)
   (add-hook 'kbd-macro-termination-hook 'isearch-done)
+  (make-local-variable 'cursor-sensor-inhibit)
+  (unless (boundp 'cursor-sensor-inhibit)
+    (setq cursor-sensor-inhibit nil))
+  ;; Suspend things like cursor-intangible during Isearch so we can search even
+  ;; within intangible text.
+  (push 'isearch cursor-sensor-inhibit)
 
   ;; isearch-mode can be made modal (in the sense of not returning to
   ;; the calling function until searching is completed) by entering
@@ -1020,6 +1026,7 @@ NOPUSH is t and EDIT is t."
   (remove-hook 'mouse-leave-buffer-hook 'isearch-done)
   (remove-hook 'kbd-macro-termination-hook 'isearch-done)
   (setq isearch-lazy-highlight-start nil)
+  (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit))
 
   ;; Called by all commands that terminate isearch-mode.
   ;; If NOPUSH is non-nil, we don't push the string on the search ring.
@@ -2717,17 +2724,12 @@ update the match data, and return point."
       ;; isearch in their own way, they should set the
       ;; `isearch-open-invisible-temporary' to a function doing this.
       (funcall  (overlay-get ov 'isearch-open-invisible-temporary)  ov nil)
-    ;; Store the values for the `invisible' and `intangible'
-    ;; properties, and then set them to nil. This way the text hidden
-    ;; by this overlay becomes visible.
+    ;; Store the values for the `invisible' property, and then set it to nil.
+    ;; This way the text hidden by this overlay becomes visible.
 
-    ;; Do we really need to set the `intangible' property to t? Can we
-    ;; have the point inside an overlay with an `intangible' property?
     ;; In 19.34 this does not exist so I cannot test it.
     (overlay-put ov 'isearch-invisible (overlay-get ov 'invisible))
-    (overlay-put ov 'isearch-intangible (overlay-get ov 'intangible))
-    (overlay-put ov 'invisible nil)
-    (overlay-put ov 'intangible nil)))
+    (overlay-put ov 'invisible nil)))
 
 
 ;; This is called at the end of isearch.  It will open the overlays
@@ -2741,12 +2743,9 @@ update the match data, and return point."
        ;; this function, not by us tweaking the overlay properties.
        (fct-temp (overlay-get ov 'isearch-open-invisible-temporary)))
     (when (or inside-overlay (not fct-temp))
-      ;; restore the values for the `invisible' and `intangible'
-      ;; properties
+      ;; restore the values for the `invisible' properties.
       (overlay-put ov 'invisible (overlay-get ov 'isearch-invisible))
-      (overlay-put ov 'intangible (overlay-get ov 'isearch-intangible))
-      (overlay-put ov 'isearch-invisible nil)
-      (overlay-put ov 'isearch-intangible nil))
+      (overlay-put ov 'isearch-invisible nil))
     (if inside-overlay
        (funcall (overlay-get ov 'isearch-open-invisible)  ov)
       (if fct-temp
@@ -2784,9 +2783,7 @@ update the match data, and return point."
              ;; properties.
              (funcall fct-temp ov t)
            (overlay-put ov 'invisible (overlay-get ov 'isearch-invisible))
-           (overlay-put ov 'intangible (overlay-get ov 'isearch-intangible))
-           (overlay-put ov 'isearch-invisible nil)
-           (overlay-put ov 'isearch-intangible nil)))))))
+           (overlay-put ov 'isearch-invisible nil)))))))
 
 
 (defun isearch-range-invisible (beg end)
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 0faabeb..5f9196d 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -650,12 +650,14 @@ will take place when text is fontified stealthily."
     (let ((jit-lock-start start)
           (jit-lock-end end))
       (with-buffer-prepared-for-jit-lock
-          (run-hook-with-args 'jit-lock-after-change-extend-region-functions
-                              start end old-len)
-          ;; Make sure we change at least one char (in case of deletions).
-          (setq jit-lock-end (min (max jit-lock-end (1+ start)) (point-max)))
-          ;; Request refontification.
-          (put-text-property jit-lock-start jit-lock-end 'fontified nil))
+       (run-hook-with-args 'jit-lock-after-change-extend-region-functions
+                          start end old-len)
+       ;; Make sure we change at least one char (in case of deletions).
+       (setq jit-lock-end (min (max jit-lock-end (1+ start)) (point-max)))
+       ;; Request refontification.
+       (save-restriction
+        (widen)
+        (put-text-property jit-lock-start jit-lock-end 'fontified nil)))
       ;; Mark the change for deferred contextual refontification.
       (when jit-lock-context-unfontify-pos
         (setq jit-lock-context-unfontify-pos
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index b126066..ff09bf7 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -3,7 +3,7 @@
 ;;; Code:
 
 
-;;;### (autoloads nil "5x5" "play/5x5.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (21799 24401 566172 757000))
 ;;; Generated autoloads from play/5x5.el
 
 (autoload '5x5 "5x5" "\
@@ -65,8 +65,8 @@ should return a grid vector array that is the new solution.
 
 ;;;***
 
-;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21678 60840
+;;;;;;  221777 189000))
 ;;; Generated autoloads from progmodes/ada-mode.el
 
 (autoload 'ada-add-extensions "ada-mode" "\
@@ -85,8 +85,8 @@ Ada mode is the major mode for editing Ada code.
 
 ;;;***
 
-;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21678 60840
+;;;;;;  221777 189000))
 ;;; Generated autoloads from progmodes/ada-stmt.el
 
 (autoload 'ada-header "ada-stmt" "\
@@ -96,8 +96,8 @@ Insert a descriptive header at the top of the file.
 
 ;;;***
 
-;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21678 60840
+;;;;;;  225777 350000))
 ;;; Generated autoloads from progmodes/ada-xref.el
 
 (autoload 'ada-find-file "ada-xref" "\
@@ -108,8 +108,8 @@ Completion is available.
 
 ;;;***
 
-;;;### (autoloads nil "add-log" "vc/add-log.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (21678 60840 513788
+;;;;;;  871000))
 ;;; Generated autoloads from vc/add-log.el
 
 (put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
@@ -238,8 +238,8 @@ old-style time formats for entries are supported.
 
 ;;;***
 
-;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21678 60839
+;;;;;;  441745 885000))
 ;;; Generated autoloads from emacs-lisp/advice.el
 
 (defvar ad-redefinition-action 'warn "\
@@ -374,7 +374,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] 
FLAG...)
 
 ;;;***
 
-;;;### (autoloads nil "align" "align.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "align" "align.el" (21678 60839 237737 687000))
 ;;; Generated autoloads from align.el
 
 (autoload 'align "align" "\
@@ -477,7 +477,7 @@ A replacement function for `newline-and-indent', aligning 
as it goes.
 
 ;;;***
 
-;;;### (autoloads nil "allout" "allout.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "allout" "allout.el" (21678 60839 245738 8000))
 ;;; Generated autoloads from allout.el
 (push (purecopy '(allout 2 3)) package--builtin-versions)
 
@@ -837,8 +837,8 @@ for details on preparing Emacs for automatic allout 
activation.
 
 ;;;***
 
-;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21678
+;;;;;;  60839 241737 848000))
 ;;; Generated autoloads from allout-widgets.el
 (push (purecopy '(allout-widgets 1 0)) package--builtin-versions)
 
@@ -896,8 +896,8 @@ outline hot-spot navigation (see `allout-mode').
 
 ;;;***
 
-;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21696 56380 925320
-;;;;;;  624000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21697 290 536850
+;;;;;;  376000))
 ;;; Generated autoloads from net/ange-ftp.el
 
 (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -918,8 +918,8 @@ directory, so that Emacs will know its current contents.
 
 ;;;***
 
-;;;### (autoloads nil "animate" "play/animate.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "animate" "play/animate.el" (21678 60840 197776
+;;;;;;  230000))
 ;;; Generated autoloads from play/animate.el
 
 (autoload 'animate-string "animate" "\
@@ -951,8 +951,8 @@ the buffer *Birthday-Present-for-Name*.
 
 ;;;***
 
-;;;### (autoloads nil "ansi-color" "ansi-color.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (21678 60839 249738
+;;;;;;  169000))
 ;;; Generated autoloads from ansi-color.el
 (push (purecopy '(ansi-color 3 4 2)) package--builtin-versions)
 
@@ -978,8 +978,8 @@ This is a good function to put in 
`comint-output-filter-functions'.
 
 ;;;***
 
-;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21678
+;;;;;;  60840 229777 510000))
 ;;; Generated autoloads from progmodes/antlr-mode.el
 (push (purecopy '(antlr-mode 2 2 3)) package--builtin-versions)
 
@@ -1015,8 +1015,8 @@ Used in `antlr-mode'.  Also a useful function in 
`java-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "appt" "calendar/appt.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (21678 60839 305740
+;;;;;;  419000))
 ;;; Generated autoloads from calendar/appt.el
 
 (autoload 'appt-add "appt" "\
@@ -1037,8 +1037,8 @@ ARG is positive, otherwise off.
 
 ;;;***
 
-;;;### (autoloads nil "apropos" "apropos.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "apropos" "apropos.el" (21678 60839 249738
+;;;;;;  169000))
 ;;; Generated autoloads from apropos.el
 
 (autoload 'apropos-read-pattern "apropos" "\
@@ -1153,8 +1153,8 @@ Returns list of symbols and documentation found.
 
 ;;;***
 
-;;;### (autoloads nil "arc-mode" "arc-mode.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (21678 60839 249738
+;;;;;;  169000))
 ;;; Generated autoloads from arc-mode.el
 
 (autoload 'archive-mode "arc-mode" "\
@@ -1174,7 +1174,7 @@ archive.
 
 ;;;***
 
-;;;### (autoloads nil "array" "array.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "array" "array.el" (21678 60839 253738 330000))
 ;;; Generated autoloads from array.el
 
 (autoload 'array-mode "array" "\
@@ -1245,8 +1245,8 @@ Entering array mode calls the function `array-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "artist" "textmodes/artist.el" (21750 59840
-;;;;;;  704617 663000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (21756 63738
+;;;;;;  14470 148000))
 ;;; Generated autoloads from textmodes/artist.el
 (push (purecopy '(artist 1 2 6)) package--builtin-versions)
 
@@ -1452,8 +1452,8 @@ Keymap summary
 
 ;;;***
 
-;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21678 60840
+;;;;;;  229777 510000))
 ;;; Generated autoloads from progmodes/asm-mode.el
 
 (autoload 'asm-mode "asm-mode" "\
@@ -1480,8 +1480,8 @@ Special commands:
 
 ;;;***
 
-;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21678
+;;;;;;  60839 625753 279000))
 ;;; Generated autoloads from gnus/auth-source.el
 
 (defvar auth-source-cache-expiry 7200 "\
@@ -1493,8 +1493,8 @@ let-binding.")
 
 ;;;***
 
-;;;### (autoloads nil "autoarg" "autoarg.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (21678 60839 253738
+;;;;;;  330000))
 ;;; Generated autoloads from autoarg.el
 
 (defvar autoarg-mode nil "\
@@ -1554,8 +1554,8 @@ This is similar to `autoarg-mode' but rebinds the keypad 
keys
 
 ;;;***
 
-;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21678 60840
+;;;;;;  229777 510000))
 ;;; Generated autoloads from progmodes/autoconf.el
 
 (autoload 'autoconf-mode "autoconf" "\
@@ -1565,8 +1565,8 @@ Major mode for editing Autoconf configure.ac files.
 
 ;;;***
 
-;;;### (autoloads nil "autoinsert" "autoinsert.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (21678 60839 253738
+;;;;;;  330000))
 ;;; Generated autoloads from autoinsert.el
 
 (autoload 'auto-insert "autoinsert" "\
@@ -1604,8 +1604,8 @@ insert a template for the file depending on the mode of 
the buffer.
 
 ;;;***
 
-;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21673
-;;;;;;  8506 69195 402000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21803
+;;;;;;  61751 253342 299000))
 ;;; Generated autoloads from emacs-lisp/autoload.el
 
 (put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1656,8 +1656,8 @@ should be non-nil).
 
 ;;;***
 
-;;;### (autoloads nil "autorevert" "autorevert.el" (21752 15166 568176
-;;;;;;  278000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (21756 63737 806475
+;;;;;;  370000))
 ;;; Generated autoloads from autorevert.el
 
 (autoload 'auto-revert-mode "autorevert" "\
@@ -1745,7 +1745,7 @@ specifies in the mode line.
 
 ;;;***
 
-;;;### (autoloads nil "avoid" "avoid.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "avoid" "avoid.el" (21678 60839 253738 330000))
 ;;; Generated autoloads from avoid.el
 
 (defvar mouse-avoidance-mode nil "\
@@ -1783,8 +1783,8 @@ definition of \"random distance\".)
 
 ;;;***
 
-;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21678 60840
+;;;;;;  229777 510000))
 ;;; Generated autoloads from progmodes/bat-mode.el
 
 (add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode))
@@ -1802,8 +1802,8 @@ Run script using `bat-run' and `bat-run-args'.
 
 ;;;***
 
-;;;### (autoloads nil "battery" "battery.el" (21754 56896 744606
-;;;;;;  568000))
+;;;### (autoloads nil "battery" "battery.el" (21756 63737 810475
+;;;;;;  270000))
 ;;; Generated autoloads from battery.el
  (put 'battery-mode-line-string 'risky-local-variable t)
 
@@ -1838,8 +1838,8 @@ seconds.
 
 ;;;***
 
-;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21678
+;;;;;;  60839 441745 885000))
 ;;; Generated autoloads from emacs-lisp/benchmark.el
 
 (autoload 'benchmark-run "benchmark" "\
@@ -1875,8 +1875,8 @@ For non-interactive use see also `benchmark-run' and
 
 ;;;***
 
-;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21678 60840
+;;;;;;  445786 150000))
 ;;; Generated autoloads from textmodes/bibtex.el
 
 (autoload 'bibtex-initialize "bibtex" "\
@@ -1968,7 +1968,7 @@ A prefix arg negates the value of 
`bibtex-search-entry-globally'.
 ;;;***
 
 ;;;### (autoloads nil "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;;  (21670 32331 885635 586000))
+;;;;;;  (21678 60840 441785 990000))
 ;;; Generated autoloads from textmodes/bibtex-style.el
 
 (autoload 'bibtex-style-mode "bibtex-style" "\
@@ -1978,8 +1978,8 @@ Major mode for editing BibTeX style files.
 
 ;;;***
 
-;;;### (autoloads nil "binhex" "mail/binhex.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (21678 60839 869763
+;;;;;;  84000))
 ;;; Generated autoloads from mail/binhex.el
 
 (defconst binhex-begin-line 
"^:...............................................................$" "\
@@ -2003,8 +2003,8 @@ Binhex decode region between START and END.
 
 ;;;***
 
-;;;### (autoloads nil "blackbox" "play/blackbox.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (21678 60840
+;;;;;;  197776 230000))
 ;;; Generated autoloads from play/blackbox.el
 
 (autoload 'blackbox "blackbox" "\
@@ -2123,8 +2123,8 @@ a reflection.
 
 ;;;***
 
-;;;### (autoloads nil "bookmark" "bookmark.el" (21779 56495 106033
-;;;;;;  935000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (21798 38124 240660
+;;;;;;  218000))
 ;;; Generated autoloads from bookmark.el
  (define-key ctl-x-r-map "b" 'bookmark-jump)
  (define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2317,8 +2317,8 @@ Incremental search of bookmarks, hiding the non-matches 
as we go.
 
 ;;;***
 
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21778 35636
-;;;;;;  244616 784000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (21797 54705
+;;;;;;  60905 16000))
 ;;; Generated autoloads from net/browse-url.el
 
 (defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2653,7 +2653,7 @@ from `browse-url-elinks-wrapper'.
 
 ;;;***
 
-;;;### (autoloads nil "bs" "bs.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "bs" "bs.el" (21678 60839 257738 491000))
 ;;; Generated autoloads from bs.el
 (push (purecopy '(bs 1 17)) package--builtin-versions)
 
@@ -2694,8 +2694,8 @@ name of buffer configuration.
 
 ;;;***
 
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (21678 60840 197776
+;;;;;;  230000))
 ;;; Generated autoloads from play/bubbles.el
 
 (autoload 'bubbles "bubbles" "\
@@ -2717,7 +2717,7 @@ columns on its right towards the left.
 ;;;***
 
 ;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60840 229777 510000))
 ;;; Generated autoloads from progmodes/bug-reference.el
 
 (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp 
s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2737,8 +2737,8 @@ Like `bug-reference-mode', but only buttonize in comments 
and strings.
 
 ;;;***
 
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21729
-;;;;;;  53695 825320 214000))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21804
+;;;;;;  3763 202437 529000))
 ;;; Generated autoloads from emacs-lisp/bytecomp.el
 (put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
 (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2858,8 +2858,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21678
+;;;;;;  60839 305740 419000))
 ;;; Generated autoloads from calendar/cal-china.el
 
 (put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2868,8 +2868,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21678 60839
+;;;;;;  305740 419000))
 ;;; Generated autoloads from calendar/cal-dst.el
 
 (put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2880,8 +2880,8 @@ and corresponding effects.
 
 ;;;***
 
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21678
+;;;;;;  60839 305740 419000))
 ;;; Generated autoloads from calendar/cal-hebrew.el
 
 (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2893,7 +2893,7 @@ from the cursor position.
 
 ;;;***
 
-;;;### (autoloads nil "calc" "calc/calc.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "calc" "calc/calc.el" (21678 60839 297740 98000))
 ;;; Generated autoloads from calc/calc.el
  (define-key ctl-x-map "*" 'calc-dispatch)
 
@@ -2979,8 +2979,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21678 60839
+;;;;;;  289739 776000))
 ;;; Generated autoloads from calc/calc-undo.el
 
 (autoload 'calc-undo "calc-undo" "\
@@ -2990,8 +2990,8 @@ See Info node `(calc)Defining Functions'.
 
 ;;;***
 
-;;;### (autoloads nil "calculator" "calculator.el" (21702 8774 274627
-;;;;;;  813000))
+;;;### (autoloads nil "calculator" "calculator.el" (21702 18751 28687
+;;;;;;  539000))
 ;;; Generated autoloads from calculator.el
 
 (autoload 'calculator "calculator" "\
@@ -3002,8 +3002,8 @@ See the documentation for `calculator-mode' for more 
information.
 
 ;;;***
 
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (21678 60839
+;;;;;;  313740 741000))
 ;;; Generated autoloads from calendar/calendar.el
 
 (autoload 'calendar "calendar" "\
@@ -3046,8 +3046,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (21678 60839 625753
+;;;;;;  279000))
 ;;; Generated autoloads from gnus/canlock.el
 
 (autoload 'canlock-insert-header "canlock" "\
@@ -3065,7 +3065,7 @@ it fails.
 ;;;***
 
 ;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21743
-;;;;;;  190 195328 729000))
+;;;;;;  12185 601417 366000))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3075,8 +3075,8 @@ Return the syntactic context of the current line.
 
 ;;;***
 
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21678 60840
+;;;;;;  249778 310000))
 ;;; Generated autoloads from progmodes/cc-guess.el
 
 (defvar c-guess-guessed-offsets-alist nil "\
@@ -3174,8 +3174,8 @@ the absolute file name of the file if STYLE-NAME is nil.
 
 ;;;***
 
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21786 29744
-;;;;;;  368212 633000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21797 54705
+;;;;;;  112903 894000))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3332,8 +3332,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21678
+;;;;;;  60840 253778 470000))
 ;;; Generated autoloads from progmodes/cc-styles.el
 
 (autoload 'c-set-style "cc-styles" "\
@@ -3384,8 +3384,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21678 60840
+;;;;;;  257778 629000))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3393,8 +3393,8 @@ and exists only for compatibility reasons.
 
 ;;;***
 
-;;;### (autoloads nil "ccl" "international/ccl.el" (21682 23484 726747
-;;;;;;  991000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (21684 3021 710224
+;;;;;;  877000))
 ;;; Generated autoloads from international/ccl.el
 
 (autoload 'ccl-compile "ccl" "\
@@ -3687,8 +3687,8 @@ See the documentation of `define-ccl-program' for the 
detail of CCL program.
 
 ;;;***
 
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21716 41663
-;;;;;;  456033 27000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21715 51226
+;;;;;;  268496 513000))
 ;;; Generated autoloads from emacs-lisp/cconv.el
 
 (autoload 'cconv-closure-convert "cconv" "\
@@ -3707,15 +3707,15 @@ Add the warnings that closure conversion would 
encounter.
 
 ;;;***
 
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (21678 60839 333741
+;;;;;;  545000))
 ;;; Generated autoloads from cedet/cedet.el
 (push (purecopy '(cedet 2 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21695 35516
-;;;;;;  595262 313000))
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21694 48017
+;;;;;;  606102 36000))
 ;;; Generated autoloads from progmodes/cfengine.el
 (push (purecopy '(cfengine 1 3)) package--builtin-versions)
 
@@ -3744,15 +3744,15 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer 
contents.
 
 ;;;***
 
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21679 47292
-;;;;;;  556033 759000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21678 60854
+;;;;;;  898345 827000))
 ;;; Generated autoloads from emacs-lisp/chart.el
 (push (purecopy '(chart 0 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;;  (21750 59840 206034 761000))
+;;;;;;  (21756 63737 822474 968000))
 ;;; Generated autoloads from emacs-lisp/check-declare.el
 
 (autoload 'check-declare-file "check-declare" "\
@@ -3769,8 +3769,8 @@ Returns non-nil if any false statements are found.
 
 ;;;***
 
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21779
-;;;;;;  56495 106033 935000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21778
+;;;;;;  65092 741003 198000))
 ;;; Generated autoloads from emacs-lisp/checkdoc.el
 (push (purecopy '(checkdoc 0 6 2)) package--builtin-versions)
 (put 'checkdoc-force-docstrings-flag 'safe-local-variable #'booleanp)
@@ -3970,8 +3970,8 @@ checking of documentation strings.
 
 ;;;***
 
-;;;### (autoloads nil "china-util" "language/china-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (21678
+;;;;;;  60839 797760 191000))
 ;;; Generated autoloads from language/china-util.el
 
 (autoload 'decode-hz-region "china-util" "\
@@ -4008,8 +4008,8 @@ Encode the text in the current buffer to HZ.
 
 ;;;***
 
-;;;### (autoloads nil "chistory" "chistory.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "chistory" "chistory.el" (21678 60839 401744
+;;;;;;  277000))
 ;;; Generated autoloads from chistory.el
 
 (autoload 'repeat-matching-complex-command "chistory" "\
@@ -4049,7 +4049,7 @@ and runs the normal hook `command-history-hook'.
 ;;;***
 
 ;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21765
-;;;;;;  23600 805241 145000))
+;;;;;;  52461 376136 680000))
 ;;; Generated autoloads from emacs-lisp/cl-indent.el
 
 (autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4132,8 +4132,8 @@ instead.
 
 ;;;***
 
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21777 14770
-;;;;;;  397461 322000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21799 24999
+;;;;;;  410026 774000))
 ;;; Generated autoloads from emacs-lisp/cl-lib.el
 (push (purecopy '(cl-lib 1 0)) package--builtin-versions)
 
@@ -4151,8 +4151,8 @@ a future Emacs interpreter will be able to use it.")
 
 ;;;***
 
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21678 60840
+;;;;;;  257778 629000))
 ;;; Generated autoloads from progmodes/cmacexp.el
 
 (autoload 'c-macro-expand "cmacexp" "\
@@ -4172,8 +4172,8 @@ For use inside Lisp programs, see also 
`c-macro-expansion'.
 
 ;;;***
 
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21678 60839 401744
+;;;;;;  277000))
 ;;; Generated autoloads from cmuscheme.el
 
 (autoload 'run-scheme "cmuscheme" "\
@@ -4193,7 +4193,7 @@ is run).
 
 ;;;***
 
-;;;### (autoloads nil "color" "color.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "color" "color.el" (21678 60839 401744 277000))
 ;;; Generated autoloads from color.el
 
 (autoload 'color-name-to-rgb "color" "\
@@ -4212,7 +4212,7 @@ If FRAME cannot display COLOR, return nil.
 
 ;;;***
 
-;;;### (autoloads nil "comint" "comint.el" (21781 11826 448890 994000))
+;;;### (autoloads nil "comint" "comint.el" (21798 37607 346141 281000))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions '(ansi-color-process-output 
comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4313,8 +4313,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to 
use.
 
 ;;;***
 
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21678 60840
+;;;;;;  513788 871000))
 ;;; Generated autoloads from vc/compare-w.el
 
 (autoload 'compare-windows "compare-w" "\
@@ -4350,8 +4350,8 @@ on third call it again advances points to the next 
difference and so on.
 
 ;;;***
 
-;;;### (autoloads nil "compile" "progmodes/compile.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (21798 37675
+;;;;;;  396889 196000))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4532,8 +4532,8 @@ This is the value of `next-error-function' in Compilation 
buffers.
 
 ;;;***
 
-;;;### (autoloads nil "completion" "completion.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "completion" "completion.el" (21803 61751 249342
+;;;;;;  464000))
 ;;; Generated autoloads from completion.el
 
 (defvar dynamic-completion-mode nil "\
@@ -4555,8 +4555,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21678
+;;;;;;  60840 445786 150000))
 ;;; Generated autoloads from textmodes/conf-mode.el
 
 (autoload 'conf-mode "conf-mode" "\
@@ -4711,8 +4711,8 @@ For details see `conf-mode'.  Example:
 
 ;;;***
 
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (21678 60840 197776
+;;;;;;  230000))
 ;;; Generated autoloads from play/cookie1.el
 
 (autoload 'cookie "cookie1" "\
@@ -4740,8 +4740,8 @@ and subsequent calls on the same file won't go to disk.
 
 ;;;***
 
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21678
+;;;;;;  60839 461746 688000))
 ;;; Generated autoloads from emacs-lisp/copyright.el
 (put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
 (put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4779,8 +4779,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
 
 ;;;***
 
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21771
-;;;;;;  62389 36768 739000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21772
+;;;;;;  3649 129589 390000))
 ;;; Generated autoloads from progmodes/cperl-mode.el
 (put 'cperl-indent-level 'safe-local-variable 'integerp)
 (put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4978,8 +4978,8 @@ Run a `perldoc' on the word around point.
 
 ;;;***
 
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21678 60840 269779
+;;;;;;  110000))
 ;;; Generated autoloads from progmodes/cpp.el
 
 (autoload 'cpp-highlight-buffer "cpp" "\
@@ -4997,8 +4997,8 @@ Edit display information for cpp conditionals.
 
 ;;;***
 
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21678 60839 461746
+;;;;;;  688000))
 ;;; Generated autoloads from emacs-lisp/crm.el
 
 (autoload 'completing-read-multiple "crm" "\
@@ -5024,8 +5024,8 @@ with empty strings removed.
 
 ;;;***
 
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21787 5486
-;;;;;;  8891 32000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21799 19718
+;;;;;;  378236 623000))
 ;;; Generated autoloads from textmodes/css-mode.el
 
 (autoload 'css-mode "css-mode" "\
@@ -5041,8 +5041,8 @@ Major mode to edit \"Sassy CSS\" files.
 
 ;;;***
 
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21804 3763
+;;;;;;  202437 529000))
 ;;; Generated autoloads from emulation/cua-base.el
 
 (defvar cua-mode nil "\
@@ -5087,8 +5087,8 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v 
bindings.
 
 ;;;***
 
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21678 60839
+;;;;;;  501748 296000))
 ;;; Generated autoloads from emulation/cua-rect.el
 
 (autoload 'cua-rectangle-mark-mode "cua-rect" "\
@@ -5099,8 +5099,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (21803 61751 249342
+;;;;;;  464000))
 ;;; Generated autoloads from cus-edit.el
 
 (defvar custom-browse-sort-alphabetically nil "\
@@ -5419,8 +5419,8 @@ The format is suitable for use with `easy-menu-define'.
 
 ;;;***
 
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (21678 60839 413744
+;;;;;;  759000))
 ;;; Generated autoloads from cus-theme.el
 
 (autoload 'customize-create-theme "cus-theme" "\
@@ -5453,8 +5453,8 @@ omitted, a buffer named *Custom Themes* is used.
 
 ;;;***
 
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21678 60840
+;;;;;;  513788 871000))
 ;;; Generated autoloads from vc/cvs-status.el
 
 (autoload 'cvs-status-mode "cvs-status" "\
@@ -5464,8 +5464,8 @@ Mode used for cvs status output.
 
 ;;;***
 
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21678 60840 269779
+;;;;;;  110000))
 ;;; Generated autoloads from progmodes/cwarn.el
 (push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
 
@@ -5509,8 +5509,8 @@ See `cwarn-mode' for more information on Cwarn mode.
 
 ;;;***
 
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21678
+;;;;;;  60839 797760 191000))
 ;;; Generated autoloads from language/cyril-util.el
 
 (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5538,8 +5538,8 @@ If the argument is nil, we return the display table to 
its standard state.
 
 ;;;***
 
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (21678 60839 417744
+;;;;;;  920000))
 ;;; Generated autoloads from dabbrev.el
 (put 'dabbrev-case-fold-search 'risky-local-variable t)
 (put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5585,8 +5585,8 @@ See also `dabbrev-abbrev-char-regexp' and 
\\[dabbrev-completion].
 
 ;;;***
 
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21678 60839
+;;;;;;  333741 545000))
 ;;; Generated autoloads from cedet/data-debug.el
 
 (autoload 'data-debug-new-buffer "data-debug" "\
@@ -5596,7 +5596,7 @@ Create a new data-debug buffer with NAME.
 
 ;;;***
 
-;;;### (autoloads nil "dbus" "net/dbus.el" (21743 190 195328 729000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (21799 25402 297856 218000))
 ;;; Generated autoloads from net/dbus.el
 
 (autoload 'dbus-handle-event "dbus" "\
@@ -5609,8 +5609,8 @@ If the HANDLER returns a `dbus-error', it is propagated 
as return message.
 
 ;;;***
 
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21678 60840
+;;;;;;  269779 110000))
 ;;; Generated autoloads from progmodes/dcl-mode.el
 
 (autoload 'dcl-mode "dcl-mode" "\
@@ -5736,8 +5736,8 @@ There is some minimal font-lock support (see vars
 
 ;;;***
 
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21777 14770
-;;;;;;  397461 322000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21776 37118
+;;;;;;  308010 713000))
 ;;; Generated autoloads from emacs-lisp/debug.el
 
 (setq debugger 'debug)
@@ -5780,8 +5780,8 @@ To specify a nil argument interactively, exit with an 
empty minibuffer.
 
 ;;;***
 
-;;;### (autoloads nil "decipher" "play/decipher.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (21799 24401
+;;;;;;  570172 675000))
 ;;; Generated autoloads from play/decipher.el
 
 (autoload 'decipher "decipher" "\
@@ -5809,8 +5809,8 @@ The most useful commands are:
 
 ;;;***
 
-;;;### (autoloads nil "delim-col" "delim-col.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (21678 60839 417744
+;;;;;;  920000))
 ;;; Generated autoloads from delim-col.el
 (push (purecopy '(delim-col 2 1)) package--builtin-versions)
 
@@ -5835,7 +5835,7 @@ START and END delimits the corners of text rectangle.
 
 ;;;***
 
-;;;### (autoloads nil "delsel" "delsel.el" (21716 41663 456033 27000))
+;;;### (autoloads nil "delsel" "delsel.el" (21714 30294 262748 97000))
 ;;; Generated autoloads from delsel.el
 
 (defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5863,8 +5863,8 @@ point regardless of any selection.
 
 ;;;***
 
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 29629
-;;;;;;  608890 826000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 62119
+;;;;;;  434295 103000))
 ;;; Generated autoloads from emacs-lisp/derived.el
 
 (autoload 'define-derived-mode "derived" "\
@@ -5932,8 +5932,8 @@ the first time the mode is used.
 
 ;;;***
 
-;;;### (autoloads nil "descr-text" "descr-text.el" (21695 35516 595262
-;;;;;;  313000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (21694 48017 602102
+;;;;;;  111000))
 ;;; Generated autoloads from descr-text.el
 
 (autoload 'describe-text-properties "descr-text" "\
@@ -5982,8 +5982,8 @@ This function is meant to be used as a value of
 
 ;;;***
 
-;;;### (autoloads nil "desktop" "desktop.el" (21753 36028 905339
-;;;;;;  955000))
+;;;### (autoloads nil "desktop" "desktop.el" (21799 25192 774103
+;;;;;;  976000))
 ;;; Generated autoloads from desktop.el
 
 (defvar desktop-save-mode nil "\
@@ -6188,8 +6188,8 @@ Revert to the last loaded desktop.
 
 ;;;***
 
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21797 54705
+;;;;;;  36905 533000))
 ;;; Generated autoloads from gnus/deuglify.el
 
 (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6221,8 +6221,8 @@ Deuglify broken Outlook (Express) articles and redisplay.
 
 ;;;***
 
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21678
+;;;;;;  60839 317740 902000))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload 'diary "diary-lib" "\
@@ -6264,7 +6264,7 @@ Major mode for editing the diary file.
 
 ;;;***
 
-;;;### (autoloads nil "diff" "vc/diff.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "diff" "vc/diff.el" (21678 60840 517789 31000))
 ;;; Generated autoloads from vc/diff.el
 
 (defvar diff-switches (purecopy "-c") "\
@@ -6312,8 +6312,8 @@ This requires the external program `diff' to be in your 
`exec-path'.
 
 ;;;***
 
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21797 55597
+;;;;;;  620753 991000))
 ;;; Generated autoloads from vc/diff-mode.el
 
 (autoload 'diff-mode "diff-mode" "\
@@ -6345,7 +6345,7 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "dig" "net/dig.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "dig" "net/dig.el" (21678 60839 961766 782000))
 ;;; Generated autoloads from net/dig.el
 
 (autoload 'dig "dig" "\
@@ -6356,7 +6356,7 @@ Optional arguments are passed to `dig-invoke'.
 
 ;;;***
 
-;;;### (autoloads nil "dired" "dired.el" (21757 29489 158925 687000))
+;;;### (autoloads nil "dired" "dired.el" (21757 49303 481943 552000))
 ;;; Generated autoloads from dired.el
 
 (defvar dired-listing-switches (purecopy "-al") "\
@@ -6476,8 +6476,8 @@ Keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (21678 60839 429745
+;;;;;;  402000))
 ;;; Generated autoloads from dirtrack.el
 
 (autoload 'dirtrack-mode "dirtrack" "\
@@ -6507,8 +6507,8 @@ from `default-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21678 60839
+;;;;;;  461746 688000))
 ;;; Generated autoloads from emacs-lisp/disass.el
 
 (autoload 'disassemble "disass" "\
@@ -6522,8 +6522,8 @@ redefine OBJECT if it is a symbol.
 
 ;;;***
 
-;;;### (autoloads nil "disp-table" "disp-table.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (21678 60839 429745
+;;;;;;  402000))
 ;;; Generated autoloads from disp-table.el
 
 (autoload 'make-display-table "disp-table" "\
@@ -6644,8 +6644,8 @@ in `.emacs'.
 
 ;;;***
 
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (21678 60840
+;;;;;;  197776 230000))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload 'dissociated-press "dissociate" "\
@@ -6661,7 +6661,7 @@ Default is 2.
 
 ;;;***
 
-;;;### (autoloads nil "dnd" "dnd.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "dnd" "dnd.el" (21678 60839 429745 402000))
 ;;; Generated autoloads from dnd.el
 
 (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) 
(,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . 
dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . 
dnd-open-file)) "\
@@ -6681,8 +6681,8 @@ if some action was made, or nil if the URL is ignored.")
 
 ;;;***
 
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21678 60840
+;;;;;;  449786 311000))
 ;;; Generated autoloads from textmodes/dns-mode.el
 
 (autoload 'dns-mode "dns-mode" "\
@@ -6705,8 +6705,8 @@ Locate SOA record and increment the serial field.
 
 ;;;***
 
-;;;### (autoloads nil "doc-view" "doc-view.el" (21716 41663 456033
-;;;;;;  27000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (21718 7576 270960
+;;;;;;  954000))
 ;;; Generated autoloads from doc-view.el
 
 (autoload 'doc-view-mode-p "doc-view" "\
@@ -6752,8 +6752,8 @@ See the command `doc-view-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "doctor" "play/doctor.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (21678 60840 201776
+;;;;;;  390000))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload 'doctor "doctor" "\
@@ -6763,7 +6763,7 @@ Switch to *doctor* buffer and start giving psychotherapy.
 
 ;;;***
 
-;;;### (autoloads nil "double" "double.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "double" "double.el" (21678 60839 433745 563000))
 ;;; Generated autoloads from double.el
 
 (autoload 'double-mode "double" "\
@@ -6779,8 +6779,8 @@ strings when pressed twice.  See `double-map' for details.
 
 ;;;***
 
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (21678 60840 201776
+;;;;;;  390000))
 ;;; Generated autoloads from play/dunnet.el
 (push (purecopy '(dunnet 2 1)) package--builtin-versions)
 
@@ -6792,7 +6792,7 @@ Switch to *dungeon* buffer and start game.
 ;;;***
 
 ;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21732
-;;;;;;  29888 498897 471000))
+;;;;;;  38826 390629 134000))
 ;;; Generated autoloads from emacs-lisp/easy-mmode.el
 
 (defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -6936,8 +6936,8 @@ CSS contains a list of syntax specifications of the form 
(CHAR . SYNTAX).
 
 ;;;***
 
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21678
+;;;;;;  60839 461746 688000))
 ;;; Generated autoloads from emacs-lisp/easymenu.el
 
 (autoload 'easy-menu-define "easymenu" "\
@@ -7075,8 +7075,8 @@ To implement dynamic menus, either call this from
 
 ;;;***
 
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21678 60840
+;;;;;;  277779 430000))
 ;;; Generated autoloads from progmodes/ebnf2ps.el
 (push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
 
@@ -7341,8 +7341,8 @@ See `ebnf-style-database' documentation.
 
 ;;;***
 
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21678 60840
+;;;;;;  281779 590000))
 ;;; Generated autoloads from progmodes/ebrowse.el
 
 (autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7490,8 +7490,8 @@ Display statistics for a class tree.
 
 ;;;***
 
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21678 60839 433745
+;;;;;;  563000))
 ;;; Generated autoloads from ebuff-menu.el
 
 (autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7523,8 +7523,8 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
 
 ;;;***
 
-;;;### (autoloads nil "echistory" "echistory.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "echistory" "echistory.el" (21678 60839 433745
+;;;;;;  563000))
 ;;; Generated autoloads from echistory.el
 
 (autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7535,8 +7535,8 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21678 60839
+;;;;;;  625753 279000))
 ;;; Generated autoloads from gnus/ecomplete.el
 
 (autoload 'ecomplete-setup "ecomplete" "\
@@ -7546,7 +7546,7 @@ With prefix arg NOCONFIRM, execute current line as-is 
without editing.
 
 ;;;***
 
-;;;### (autoloads nil "ede" "cedet/ede.el" (21715 20800 626041 761000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (21714 11434 472202 812000))
 ;;; Generated autoloads from cedet/ede.el
 (push (purecopy '(ede 1 2)) package--builtin-versions)
 
@@ -7572,8 +7572,8 @@ an EDE controlled project.
 
 ;;;***
 
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21767 65327
-;;;;;;  504606 256000))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21803 61751
+;;;;;;  261341 967000))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -7637,7 +7637,7 @@ Toggle edebugging of all forms.
 
 ;;;***
 
-;;;### (autoloads nil "ediff" "vc/ediff.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (21678 60840 529789 511000))
 ;;; Generated autoloads from vc/ediff.el
 (push (purecopy '(ediff 2 81 4)) package--builtin-versions)
 
@@ -7909,8 +7909,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21678 60840
+;;;;;;  517789 31000))
 ;;; Generated autoloads from vc/ediff-help.el
 
 (autoload 'ediff-customize "ediff-help" "\
@@ -7920,8 +7920,8 @@ With optional NODE, goes to that node.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21678 60840
+;;;;;;  521789 190000))
 ;;; Generated autoloads from vc/ediff-mult.el
 
 (autoload 'ediff-show-registry "ediff-mult" "\
@@ -7933,8 +7933,8 @@ Display Ediff's registry.
 
 ;;;***
 
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21678 60840
+;;;;;;  525789 351000))
 ;;; Generated autoloads from vc/ediff-util.el
 
 (autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -7953,8 +7953,8 @@ To change the default, set the variable 
`ediff-use-toolbar-p', which see.
 
 ;;;***
 
-;;;### (autoloads nil "edmacro" "edmacro.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (21799 24401 550173
+;;;;;;  82000))
 ;;; Generated autoloads from edmacro.el
 (push (purecopy '(edmacro 2 1)) package--builtin-versions)
 
@@ -8003,8 +8003,8 @@ or nil, use a compact 80-column format.
 
 ;;;***
 
-;;;### (autoloads nil "edt" "emulation/edt.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (21678 60839 505748
+;;;;;;  457000))
 ;;; Generated autoloads from emulation/edt.el
 
 (autoload 'edt-set-scroll-margins "edt" "\
@@ -8021,7 +8021,7 @@ Turn on EDT Emulation.
 
 ;;;***
 
-;;;### (autoloads nil "ehelp" "ehelp.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (21678 60839 437745 724000))
 ;;; Generated autoloads from ehelp.el
 
 (autoload 'with-electric-help "ehelp" "\
@@ -8057,15 +8057,15 @@ BUFFER is put back into its original major mode.
 
 ;;;***
 
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21781 11826
-;;;;;;  448890 994000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21803 61751
+;;;;;;  261341 967000))
 ;;; Generated autoloads from emacs-lisp/eieio.el
 (push (purecopy '(eieio 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21770
-;;;;;;  41522 196747 399000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21797
+;;;;;;  54704 984906 655000))
 ;;; Generated autoloads from emacs-lisp/eieio-core.el
 (push (purecopy '(eieio-core 1 4)) package--builtin-versions)
 
@@ -8081,8 +8081,8 @@ It creates an autoload function for CNAME's constructor.
 
 ;;;***
 
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21783 53552 656724
-;;;;;;  351000))
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (21783 27762 910046
+;;;;;;  655000))
 ;;; Generated autoloads from elec-pair.el
 
 (defvar electric-pair-text-pairs '((34 . 34)) "\
@@ -8123,8 +8123,8 @@ Toggle `electric-pair-mode' only in this buffer.
 
 ;;;***
 
-;;;### (autoloads nil "elide-head" "elide-head.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (21678 60839 437745
+;;;;;;  724000))
 ;;; Generated autoloads from elide-head.el
 
 (autoload 'elide-head "elide-head" "\
@@ -8139,8 +8139,8 @@ This is suitable as an entry on `find-file-hook' or 
appropriate mode hooks.
 
 ;;;***
 
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21678 60839
+;;;;;;  473747 171000))
 ;;; Generated autoloads from emacs-lisp/elint.el
 
 (autoload 'elint-file "elint" "\
@@ -8175,8 +8175,8 @@ optional prefix argument REINIT is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21678 60839 473747
+;;;;;;  171000))
 ;;; Generated autoloads from emacs-lisp/elp.el
 
 (autoload 'elp-instrument-function "elp" "\
@@ -8210,8 +8210,8 @@ displayed.
 
 ;;;***
 
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21678 60839 497748
+;;;;;;  135000))
 ;;; Generated autoloads from emacs-lock.el
 
 (autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8238,8 +8238,8 @@ Other values are interpreted as usual.
 
 ;;;***
 
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21678 60839
+;;;;;;  869763 84000))
 ;;; Generated autoloads from mail/emacsbug.el
 
 (autoload 'report-emacs-bug "emacsbug" "\
@@ -8252,8 +8252,8 @@ Prompts for bug subject.  Leaves you in a mail buffer.
 
 ;;;***
 
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (21605 26937 780008
+;;;;;;  15000))
 ;;; Generated autoloads from vc/emerge.el
 
 (autoload 'emerge-files "emerge" "\
@@ -8313,8 +8313,8 @@ Emerge two RCS revisions of a file, with another revision 
as ancestor.
 
 ;;;***
 
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21691 38459
-;;;;;;  74604 918000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21690 51765
+;;;;;;  876519 934000))
 ;;; Generated autoloads from textmodes/enriched.el
 
 (autoload 'enriched-mode "enriched" "\
@@ -8349,7 +8349,7 @@ Commands:
 
 ;;;***
 
-;;;### (autoloads nil "epa" "epa.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "epa" "epa.el" (21678 60839 517748 939000))
 ;;; Generated autoloads from epa.el
 
 (autoload 'epa-list-keys "epa" "\
@@ -8537,8 +8537,8 @@ Insert selected KEYS after the point.
 
 ;;;***
 
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (21678 60839 513748
+;;;;;;  778000))
 ;;; Generated autoloads from epa-dired.el
 
 (autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8563,8 +8563,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-file" "epa-file.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (21678 60839 517748
+;;;;;;  939000))
 ;;; Generated autoloads from epa-file.el
 
 (autoload 'epa-file-handler "epa-file" "\
@@ -8584,8 +8584,8 @@ Encrypt marked files.
 
 ;;;***
 
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (21678 60839 517748
+;;;;;;  939000))
 ;;; Generated autoloads from epa-mail.el
 
 (autoload 'epa-mail-mode "epa-mail" "\
@@ -8662,7 +8662,7 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "epg" "epg.el" (21777 14770 397461 322000))
+;;;### (autoloads nil "epg" "epg.el" (21803 61751 269341 636000))
 ;;; Generated autoloads from epg.el
 (push (purecopy '(epg 1 0 0)) package--builtin-versions)
 
@@ -8673,8 +8673,8 @@ Return a context object.
 
 ;;;***
 
-;;;### (autoloads nil "epg-config" "epg-config.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (21678 60839 517748
+;;;;;;  939000))
 ;;; Generated autoloads from epg-config.el
 
 (autoload 'epg-configuration "epg-config" "\
@@ -8694,7 +8694,7 @@ Look at CONFIG and try to expand GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "erc" "erc/erc.el" (21779 56495 106033 935000))
+;;;### (autoloads nil "erc" "erc/erc.el" (21778 44895 439347 149000))
 ;;; Generated autoloads from erc/erc.el
 (push (purecopy '(erc 5 3)) package--builtin-versions)
 
@@ -8743,36 +8743,36 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL.
 
 ;;;***
 
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21678
+;;;;;;  60839 529749 421000))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21678 60839
+;;;;;;  533749 582000))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21678 60839
+;;;;;;  533749 582000))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21678 60839
+;;;;;;  533749 582000))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
 ;;;***
 
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21696 56380 925320
-;;;;;;  624000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21697 290 520850
+;;;;;;  834000))
 ;;; Generated autoloads from erc/erc-dcc.el
  (autoload 'erc-dcc-mode "erc-dcc")
 
@@ -8802,14 +8802,14 @@ that subcommand.
 ;;;***
 
 ;;;### (autoloads nil "erc-desktop-notifications" 
"erc/erc-desktop-notifications.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (21678 60839 533749 582000))
 ;;; Generated autoloads from erc/erc-desktop-notifications.el
 (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21678
+;;;;;;  60839 533749 582000))
 ;;; Generated autoloads from erc/erc-ezbounce.el
 
 (autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -8871,8 +8871,8 @@ Add EZBouncer convenience functions to ERC.
 
 ;;;***
 
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21678 60839 533749
+;;;;;;  582000))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -8884,8 +8884,8 @@ You can put this on `erc-insert-modify-hook' and/or 
`erc-send-modify-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21678 60839
+;;;;;;  537749 742000))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -8906,8 +8906,8 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21678 60839
+;;;;;;  537749 742000))
 ;;; Generated autoloads from erc/erc-imenu.el
 
 (autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -8917,22 +8917,22 @@ system.
 
 ;;;***
 
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21678 60839 537749
+;;;;;;  742000))
 ;;; Generated autoloads from erc/erc-join.el
  (autoload 'erc-autojoin-mode "erc-join" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21678 60839 537749
+;;;;;;  742000))
 ;;; Generated autoloads from erc/erc-list.el
  (autoload 'erc-list-mode "erc-list")
 
 ;;;***
 
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21678 60839 537749
+;;;;;;  742000))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -8961,8 +8961,8 @@ You can save every individual message by putting this 
function on
 
 ;;;***
 
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21678 60839
+;;;;;;  537749 742000))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9008,15 +9008,15 @@ Delete dangerous-host interactively to 
`erc-dangerous-hosts'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21678 60839 537749
+;;;;;;  742000))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21678
+;;;;;;  60839 537749 742000))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9027,8 +9027,8 @@ Show who's gone.
 
 ;;;***
 
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21678
+;;;;;;  60839 541749 903000))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload 'erc-determine-network "erc-networks" "\
@@ -9045,8 +9045,8 @@ Interactively select a server to connect to using 
`erc-server-alist'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21678 60839
+;;;;;;  541749 903000))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9064,36 +9064,36 @@ with args, toggle notify status of people.
 
 ;;;***
 
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21678 60839 541749
+;;;;;;  903000))
 ;;; Generated autoloads from erc/erc-page.el
  (autoload 'erc-page-mode "erc-page")
 
 ;;;***
 
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21804
+;;;;;;  3763 202437 529000))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21678 60839
+;;;;;;  541749 903000))
 ;;; Generated autoloads from erc/erc-replace.el
  (autoload 'erc-replace-mode "erc-replace")
 
 ;;;***
 
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21678 60839 541749
+;;;;;;  903000))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21678
+;;;;;;  60839 541749 903000))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9110,15 +9110,15 @@ When called interactively, read the password using 
`read-passwd'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21678 60839
+;;;;;;  541749 903000))
 ;;; Generated autoloads from erc/erc-sound.el
  (autoload 'erc-sound-mode "erc-sound")
 
 ;;;***
 
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21678
+;;;;;;  60839 541749 903000))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9130,21 +9130,21 @@ This will add a speedbar major display mode.
 ;;;***
 
 ;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21727
-;;;;;;  11963 635339 992000))
+;;;;;;  22885 681250 112000))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21804 4012
+;;;;;;  674064 262000))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21678 60839
+;;;;;;  541749 903000))
 ;;; Generated autoloads from erc/erc-track.el
 
 (defvar erc-track-minor-mode nil "\
@@ -9169,8 +9169,8 @@ keybindings will not do anything useful.
 
 ;;;***
 
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21678
+;;;;;;  60839 545750 64000))
 ;;; Generated autoloads from erc/erc-truncate.el
  (autoload 'erc-truncate-mode "erc-truncate" nil t)
 
@@ -9189,8 +9189,8 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21678 60839 545750
+;;;;;;  64000))
 ;;; Generated autoloads from erc/erc-xdcc.el
  (autoload 'erc-xdcc-mode "erc-xdcc")
 
@@ -9201,8 +9201,8 @@ Add a file to `erc-xdcc-files'.
 
 ;;;***
 
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21678 60839 477747
+;;;;;;  331000))
 ;;; Generated autoloads from emacs-lisp/ert.el
 
 (autoload 'ert-deftest "ert" "\
@@ -9271,8 +9271,8 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol 
or ert-test).
 
 ;;;***
 
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21678 60839
+;;;;;;  473747 171000))
 ;;; Generated autoloads from emacs-lisp/ert-x.el
 
 (put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9284,8 +9284,8 @@ Kill all test buffers that are still live.
 
 ;;;***
 
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21767 65327
-;;;;;;  504606 256000))
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21767 20340
+;;;;;;  938139 905000))
 ;;; Generated autoloads from eshell/esh-mode.el
 
 (autoload 'eshell-mode "esh-mode" "\
@@ -9295,8 +9295,8 @@ Emacs shell interactive mode.
 
 ;;;***
 
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (21678 60839 561750
+;;;;;;  707000))
 ;;; Generated autoloads from eshell/eshell.el
 (push (purecopy '(eshell 2 4 2)) package--builtin-versions)
 
@@ -9331,8 +9331,8 @@ corresponding to a successful execution.
 
 ;;;***
 
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21696 56380 925320
-;;;;;;  624000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (21697 290 536850
+;;;;;;  376000))
 ;;; Generated autoloads from progmodes/etags.el
 
 (defvar tags-file-name nil "\
@@ -9647,8 +9647,8 @@ for \\[find-tag] (which see).
 
 ;;;***
 
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21678
+;;;;;;  60839 797760 191000))
 ;;; Generated autoloads from language/ethio-util.el
 
 (autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9816,7 +9816,7 @@ With ARG, insert that many delimiters.
 
 ;;;***
 
-;;;### (autoloads nil "eudc" "net/eudc.el" (21704 50495 455324 752000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (21799 24829 185482 342000))
 ;;; Generated autoloads from net/eudc.el
 
 (autoload 'eudc-set-server "eudc" "\
@@ -9870,8 +9870,8 @@ This does nothing except loading eudc by autoload 
side-effect.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21704 50495 455324
-;;;;;;  752000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21703 62119 462294
+;;;;;;  474000))
 ;;; Generated autoloads from net/eudc-bob.el
 
 (autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -9906,8 +9906,8 @@ Display a button for the JPEG DATA.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21704 50495
-;;;;;;  455324 752000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21799 24730
+;;;;;;  583484 950000))
 ;;; Generated autoloads from net/eudc-export.el
 
 (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -9923,8 +9923,8 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a 
record.
 
 ;;;***
 
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21704
-;;;;;;  50495 455324 752000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21703
+;;;;;;  62119 462294 474000))
 ;;; Generated autoloads from net/eudc-hotlist.el
 
 (autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -9934,8 +9934,8 @@ Edit the hotlist of directory servers in a specialized 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21678 60839 477747
+;;;;;;  331000))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload 'ewoc-create "ewoc" "\
@@ -9961,7 +9961,7 @@ fourth arg NOSEP non-nil inhibits this.
 
 ;;;***
 
-;;;### (autoloads nil "eww" "net/eww.el" (21753 36029 405318 957000))
+;;;### (autoloads nil "eww" "net/eww.el" (21756 63737 898473 61000))
 ;;; Generated autoloads from net/eww.el
 
 (defvar eww-suggest-uris '(eww-links-at-point url-get-url-at-point 
eww-current-url) "\
@@ -10008,8 +10008,8 @@ Display the bookmarks.
 
 ;;;***
 
-;;;### (autoloads nil "executable" "progmodes/executable.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (21678
+;;;;;;  60840 285779 750000))
 ;;; Generated autoloads from progmodes/executable.el
 
 (autoload 'executable-command-find-posix-p "executable" "\
@@ -10050,7 +10050,7 @@ file modes.
 
 ;;;***
 
-;;;### (autoloads nil "expand" "expand.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "expand" "expand.el" (21678 60839 561750 707000))
 ;;; Generated autoloads from expand.el
 
 (autoload 'expand-add-abbrevs "expand" "\
@@ -10099,8 +10099,8 @@ This is used only in conjunction with 
`expand-add-abbrevs'.
 
 ;;;***
 
-;;;### (autoloads nil "f90" "progmodes/f90.el" (21740 23998 526747
-;;;;;;  884000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (21741 10923 306579
+;;;;;;  600000))
 ;;; Generated autoloads from progmodes/f90.el
 
 (autoload 'f90-mode "f90" "\
@@ -10167,8 +10167,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "face-remap" "face-remap.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (21678 60839 561750
+;;;;;;  707000))
 ;;; Generated autoloads from face-remap.el
 
 (autoload 'face-remap-add-relative "face-remap" "\
@@ -10327,8 +10327,8 @@ Besides the choice of face, it is the same as 
`buffer-face-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21605 26936
+;;;;;;  980023 383000))
 ;;; Generated autoloads from mail/feedmail.el
 (push (purecopy '(feedmail 11)) package--builtin-versions)
 
@@ -10382,7 +10382,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
 
 ;;;***
 
-;;;### (autoloads nil "ffap" "ffap.el" (21778 35636 244616 784000))
+;;;### (autoloads nil "ffap" "ffap.el" (21797 54704 996906 396000))
 ;;; Generated autoloads from ffap.el
 
 (autoload 'ffap-next "ffap" "\
@@ -10445,8 +10445,8 @@ Evaluate the forms in variable `ffap-bindings'.
 
 ;;;***
 
-;;;### (autoloads nil "filecache" "filecache.el" (21740 23998 26747
-;;;;;;  125000))
+;;;### (autoloads nil "filecache" "filecache.el" (21741 10923 302579
+;;;;;;  694000))
 ;;; Generated autoloads from filecache.el
 
 (autoload 'file-cache-add-directory "filecache" "\
@@ -10503,8 +10503,8 @@ the name is considered already unique; only the second 
substitution
 
 ;;;***
 
-;;;### (autoloads nil "filenotify" "filenotify.el" (21704 50495 455324
-;;;;;;  752000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (21706 14224 249963
+;;;;;;  176000))
 ;;; Generated autoloads from filenotify.el
 
 (autoload 'file-notify-handle-event "filenotify" "\
@@ -10519,8 +10519,8 @@ Otherwise, signal a `file-notify-error'.
 
 ;;;***
 
-;;;### (autoloads nil "files-x" "files-x.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "files-x" "files-x.el" (21678 60839 569751
+;;;;;;  28000))
 ;;; Generated autoloads from files-x.el
 
 (autoload 'add-file-local-variable "files-x" "\
@@ -10585,8 +10585,8 @@ Copy directory-local variables to the -*- line.
 
 ;;;***
 
-;;;### (autoloads nil "filesets" "filesets.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "filesets" "filesets.el" (21678 60839 577751
+;;;;;;  350000))
 ;;; Generated autoloads from filesets.el
 
 (autoload 'filesets-init "filesets" "\
@@ -10597,8 +10597,8 @@ Set up hooks, load the cache file -- if existing -- and 
build the menu.
 
 ;;;***
 
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (21678 60839 577751
+;;;;;;  350000))
 ;;; Generated autoloads from find-cmd.el
 (push (purecopy '(find-cmd 0 6)) package--builtin-versions)
 
@@ -10618,8 +10618,8 @@ result is a string that should be ready for the command 
line.
 
 ;;;***
 
-;;;### (autoloads nil "find-dired" "find-dired.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (21678 60839 577751
+;;;;;;  350000))
 ;;; Generated autoloads from find-dired.el
 
 (autoload 'find-dired "find-dired" "\
@@ -10659,8 +10659,8 @@ use in place of \"-ls\" as the final argument.
 
 ;;;***
 
-;;;### (autoloads nil "find-file" "find-file.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "find-file" "find-file.el" (21678 60839 581751
+;;;;;;  511000))
 ;;; Generated autoloads from find-file.el
 
 (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s 
+[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) 
(match-end 2)))) "\
@@ -10750,8 +10750,8 @@ Visit the file you click on in another window.
 
 ;;;***
 
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21700
-;;;;;;  53432 444919 658000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21701
+;;;;;;  12613 256523 949000))
 ;;; Generated autoloads from emacs-lisp/find-func.el
 
 (autoload 'find-library "find-func" "\
@@ -10909,8 +10909,8 @@ Define some key bindings for the find-function family 
of functions.
 
 ;;;***
 
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (21678 60839 581751
+;;;;;;  511000))
 ;;; Generated autoloads from find-lisp.el
 
 (autoload 'find-lisp-find-dired "find-lisp" "\
@@ -10930,7 +10930,7 @@ Change the filter on a `find-lisp-find-dired' buffer to 
REGEXP.
 
 ;;;***
 
-;;;### (autoloads nil "finder" "finder.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "finder" "finder.el" (21678 60839 581751 511000))
 ;;; Generated autoloads from finder.el
 (push (purecopy '(finder 1 0)) package--builtin-versions)
 
@@ -10952,8 +10952,8 @@ Find packages matching a given keyword.
 
 ;;;***
 
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21678 60839 581751
+;;;;;;  511000))
 ;;; Generated autoloads from flow-ctrl.el
 
 (autoload 'enable-flow-control "flow-ctrl" "\
@@ -10974,8 +10974,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21678 60839
+;;;;;;  625753 279000))
 ;;; Generated autoloads from gnus/flow-fill.el
 
 (autoload 'fill-flowed-encode "flow-fill" "\
@@ -10990,8 +10990,8 @@ to get the effect of a C-q.
 
 ;;;***
 
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21678 60840
+;;;;;;  289779 910000))
 ;;; Generated autoloads from progmodes/flymake.el
 (push (purecopy '(flymake 0 3)) package--builtin-versions)
 
@@ -11021,8 +11021,8 @@ Turn flymake mode off.
 
 ;;;***
 
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21750 59840
-;;;;;;  704617 663000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21756 63738
+;;;;;;  18470 49000))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload 'flyspell-prog-mode "flyspell" "\
@@ -11092,14 +11092,14 @@ Flyspell whole buffer.
 
 ;;;***
 
-;;;### (autoloads nil "foldout" "foldout.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "foldout" "foldout.el" (21678 60839 581751
+;;;;;;  511000))
 ;;; Generated autoloads from foldout.el
 (push (purecopy '(foldout 1 10)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "follow" "follow.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "follow" "follow.el" (21678 60839 581751 511000))
 ;;; Generated autoloads from follow.el
 
 (autoload 'turn-on-follow-mode "follow" "\
@@ -11167,8 +11167,8 @@ selected if the original window is the first one in the 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "footnote" "mail/footnote.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "footnote" "mail/footnote.el" (21799 24401
+;;;;;;  558172 920000))
 ;;; Generated autoloads from mail/footnote.el
 (push (purecopy '(footnote 0 19)) package--builtin-versions)
 
@@ -11187,7 +11187,7 @@ play around with the following keys:
 
 ;;;***
 
-;;;### (autoloads nil "forms" "forms.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "forms" "forms.el" (21804 4012 674064 262000))
 ;;; Generated autoloads from forms.el
 
 (autoload 'forms-mode "forms" "\
@@ -11223,8 +11223,8 @@ Visit a file in Forms mode in other window.
 
 ;;;***
 
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21678 60840
+;;;;;;  289779 910000))
 ;;; Generated autoloads from progmodes/fortran.el
 
 (autoload 'fortran-mode "fortran" "\
@@ -11301,8 +11301,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "fortune" "play/fortune.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (21678 60840 201776
+;;;;;;  390000))
 ;;; Generated autoloads from play/fortune.el
 
 (autoload 'fortune-add-fortune "fortune" "\
@@ -11350,8 +11350,8 @@ and choose the directory as the fortune-file.
 
 ;;;***
 
-;;;### (autoloads nil "frameset" "frameset.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "frameset" "frameset.el" (21799 24401 554173
+;;;;;;  1000))
 ;;; Generated autoloads from frameset.el
 
 (defvar frameset-session-filter-alist '((name . :never) (left . 
frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . 
frameset-filter-iconified)) "\
@@ -11537,15 +11537,15 @@ Interactively, reads the register using 
`register-read-with-preview'.
 
 ;;;***
 
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 38720
-;;;;;;  956749 443000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 48653
+;;;;;;  160356 477000))
 ;;; Generated autoloads from play/gamegrid.el
 (push (purecopy '(gamegrid 1 2)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21724 35774
-;;;;;;  954622 790000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21724 48240
+;;;;;;  923325 678000))
 ;;; Generated autoloads from progmodes/gdb-mi.el
 
 (defvar gdb-enable-debug nil "\
@@ -11622,8 +11622,8 @@ detailed description of this mode.
 
 ;;;***
 
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21678 60839
+;;;;;;  477747 331000))
 ;;; Generated autoloads from emacs-lisp/generic.el
 
 (defvar generic-mode-list nil "\
@@ -11703,8 +11703,8 @@ regular expression that can be used as an element of
 
 ;;;***
 
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21678 60840
+;;;;;;  293780 70000))
 ;;; Generated autoloads from progmodes/glasses.el
 
 (autoload 'glasses-mode "glasses" "\
@@ -11718,8 +11718,8 @@ add virtual separators (like underscores) at places 
they belong to.
 
 ;;;***
 
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21678 60839
+;;;;;;  629753 440000))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11773,7 +11773,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
 
 ;;;***
 
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (21670 32330 885624 725000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (21678 60839 681755 530000))
 ;;; Generated autoloads from gnus/gnus.el
 (push (purecopy '(gnus 5 13)) package--builtin-versions)
 (when (fboundp 'custom-autoload)
@@ -11823,8 +11823,8 @@ prompt the user for the name of an NNTP server to use.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21678 60839
+;;;;;;  629753 440000))
 ;;; Generated autoloads from gnus/gnus-agent.el
 
 (autoload 'gnus-unplugged "gnus-agent" "\
@@ -11914,8 +11914,8 @@ CLEAN is obsolete and ignored.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21785 8881 6781
-;;;;;;  649000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21799 14518
+;;;;;;  691699 178000))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11925,8 +11925,8 @@ Make the current buffer look like a nice article.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21678
+;;;;;;  60839 637753 761000))
 ;;; Generated autoloads from gnus/gnus-bookmark.el
 
 (autoload 'gnus-bookmark-set "gnus-bookmark" "\
@@ -11949,8 +11949,8 @@ deletion, or > if it is flagged for displaying.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21678 60839
+;;;;;;  641753 922000))
 ;;; Generated autoloads from gnus/gnus-cache.el
 
 (autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11991,8 +11991,8 @@ supported.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21678 60839
+;;;;;;  641753 922000))
 ;;; Generated autoloads from gnus/gnus-delay.el
 
 (autoload 'gnus-delay-article "gnus-delay" "\
@@ -12027,8 +12027,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21678 60839
+;;;;;;  641753 922000))
 ;;; Generated autoloads from gnus/gnus-diary.el
 
 (autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -12043,8 +12043,8 @@ Checking delayed messages is skipped if optional arg 
NO-CHECK is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21678 60839
+;;;;;;  641753 922000))
 ;;; Generated autoloads from gnus/gnus-dired.el
 
 (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -12054,8 +12054,8 @@ Convenience method to turn on gnus-dired-mode.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21678 60839
+;;;;;;  645754 83000))
 ;;; Generated autoloads from gnus/gnus-draft.el
 
 (autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12065,8 +12065,8 @@ Reminder user if there are unsent drafts.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21678 60839
+;;;;;;  645754 83000))
 ;;; Generated autoloads from gnus/gnus-fun.el
 
 (autoload 'gnus--random-face-with-type "gnus-fun" "\
@@ -12131,8 +12131,8 @@ Insert a random Face header from `gnus-face-directory'.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21678
+;;;;;;  60839 645754 83000))
 ;;; Generated autoloads from gnus/gnus-gravatar.el
 
 (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
@@ -12149,8 +12149,8 @@ If gravatars are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21702 8774
-;;;;;;  274627 813000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21804 4012
+;;;;;;  678064 192000))
 ;;; Generated autoloads from gnus/gnus-group.el
 
 (autoload 'gnus-fetch-group "gnus-group" "\
@@ -12167,8 +12167,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21678 60839
+;;;;;;  649754 243000))
 ;;; Generated autoloads from gnus/gnus-html.el
 
 (autoload 'gnus-article-html "gnus-html" "\
@@ -12183,8 +12183,8 @@ Pop up a frame and enter GROUP.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21678 60839
+;;;;;;  649754 243000))
 ;;; Generated autoloads from gnus/gnus-kill.el
 
 (defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12197,8 +12197,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f 
gnus-batch-score
 
 ;;;***
 
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21678 60839 653754
+;;;;;;  404000))
 ;;; Generated autoloads from gnus/gnus-ml.el
 
 (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12221,8 +12221,8 @@ Minor mode for providing mailing-list commands.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21678 60839
+;;;;;;  653754 404000))
 ;;; Generated autoloads from gnus/gnus-mlspl.el
 
 (autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12322,8 +12322,8 @@ Calling (gnus-group-split-fancy nil nil 
\"mail.others\") returns:
 
 ;;;***
 
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21725 56638
-;;;;;;  795320 63000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21727 22885
+;;;;;;  701249 695000))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12350,7 +12350,7 @@ Like `message-reply'.
 ;;;***
 
 ;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;;  (21757 29489 158925 687000))
+;;;;;;  (21756 63737 858474 66000))
 ;;; Generated autoloads from gnus/gnus-notifications.el
 
 (autoload 'gnus-notifications "gnus-notifications" "\
@@ -12366,8 +12366,8 @@ This is typically a function to add in
 
 ;;;***
 
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21678 60839
+;;;;;;  653754 404000))
 ;;; Generated autoloads from gnus/gnus-picon.el
 
 (autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12390,8 +12390,8 @@ If picons are already displayed, remove them.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21678 60839
+;;;;;;  653754 404000))
 ;;; Generated autoloads from gnus/gnus-range.el
 
 (autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12459,7 +12459,7 @@ Add NUM into sorted LIST by side effect.
 ;;;***
 
 ;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21774
-;;;;;;  38574 225319 550000))
+;;;;;;  52426 305831 981000))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload 'gnus-registry-initialize "gnus-registry" "\
@@ -12474,8 +12474,8 @@ Install the registry hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21678 60839
+;;;;;;  661754 726000))
 ;;; Generated autoloads from gnus/gnus-sieve.el
 
 (autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12502,8 +12502,8 @@ See the documentation for these variables and functions 
for details.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21678 60839
+;;;;;;  661754 726000))
 ;;; Generated autoloads from gnus/gnus-spec.el
 
 (autoload 'gnus-update-format "gnus-spec" "\
@@ -12513,8 +12513,8 @@ Update the format specification near point.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21716 41663
-;;;;;;  456033 27000))
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21715 35341
+;;;;;;  203436 746000))
 ;;; Generated autoloads from gnus/gnus-start.el
 
 (autoload 'gnus-declare-backend "gnus-start" "\
@@ -12524,8 +12524,8 @@ Declare back end NAME with ABILITIES as a Gnus back end.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21785 8881 6781
-;;;;;;  649000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21803 61751
+;;;;;;  289340 808000))
 ;;; Generated autoloads from gnus/gnus-sum.el
 
 (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12536,8 +12536,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21678 60839
+;;;;;;  673755 208000))
 ;;; Generated autoloads from gnus/gnus-sync.el
 
 (autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12552,8 +12552,8 @@ Install the sync hooks.
 
 ;;;***
 
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21678 60839
+;;;;;;  681755 530000))
 ;;; Generated autoloads from gnus/gnus-win.el
 
 (autoload 'gnus-add-configuration "gnus-win" "\
@@ -12563,8 +12563,8 @@ Add the window configuration CONF to 
`gnus-buffer-configuration'.
 
 ;;;***
 
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (21678 60839 969767
+;;;;;;  103000))
 ;;; Generated autoloads from net/gnutls.el
 
 (defvar gnutls-min-prime-bits 256 "\
@@ -12580,8 +12580,8 @@ A value of nil says to use the default GnuTLS value.")
 
 ;;;***
 
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (21678 60840 205776
+;;;;;;  549000))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload 'gomoku "gomoku" "\
@@ -12607,8 +12607,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21678 60839
+;;;;;;  969767 103000))
 ;;; Generated autoloads from net/goto-addr.el
 
 (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point 
"22.1")
@@ -12649,8 +12649,8 @@ Like `goto-address-mode', but only for comments and 
strings.
 
 ;;;***
 
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21678 60839
+;;;;;;  685755 690000))
 ;;; Generated autoloads from gnus/gravatar.el
 
 (autoload 'gravatar-retrieve "gravatar" "\
@@ -12666,8 +12666,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
 
 ;;;***
 
-;;;### (autoloads nil "grep" "progmodes/grep.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (21678 60840 297780
+;;;;;;  230000))
 ;;; Generated autoloads from progmodes/grep.el
 
 (defvar grep-window-height nil "\
@@ -12831,7 +12831,7 @@ file name to `*.gz', and sets `grep-highlight-matches' 
to `always'.
 
 ;;;***
 
-;;;### (autoloads nil "gs" "gs.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "gs" "gs.el" (21678 60839 733757 619000))
 ;;; Generated autoloads from gs.el
 
 (autoload 'gs-load-image "gs" "\
@@ -12844,8 +12844,8 @@ the form \"WINDOW-ID PIXMAP-ID\".  Value is non-nil if 
successful.
 
 ;;;***
 
-;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 20661 366048
-;;;;;;  601000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 35727 354145
+;;;;;;  723000))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload 'gud-gdb "gud" "\
@@ -12940,8 +12940,8 @@ it if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21750 59840 206034
-;;;;;;  761000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21756 63737 830474
+;;;;;;  768000))
 ;;; Generated autoloads from emacs-lisp/gv.el
 
 (autoload 'gv-get "gv" "\
@@ -13043,8 +13043,8 @@ binding mode.
 
 ;;;***
 
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (21678 60840
+;;;;;;  205776 549000))
 ;;; Generated autoloads from play/handwrite.el
 
 (autoload 'handwrite "handwrite" "\
@@ -13061,8 +13061,8 @@ Variables: `handwrite-linespace'     (default 12)
 
 ;;;***
 
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 25474 348396
+;;;;;;  169000))
 ;;; Generated autoloads from play/hanoi.el
 
 (autoload 'hanoi "hanoi" "\
@@ -13089,8 +13089,8 @@ to be updated.
 
 ;;;***
 
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21678 60839
+;;;;;;  869763 84000))
 ;;; Generated autoloads from mail/hashcash.el
 
 (autoload 'hashcash-insert-payment "hashcash" "\
@@ -13132,8 +13132,8 @@ Prefix arg sets default accept amount temporarily.
 
 ;;;***
 
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21678 60839 733757
+;;;;;;  619000))
 ;;; Generated autoloads from help-at-pt.el
 
 (autoload 'help-at-pt-string "help-at-pt" "\
@@ -13260,8 +13260,8 @@ different regions.  With numeric argument ARG, behaves 
like
 
 ;;;***
 
-;;;### (autoloads nil "help-fns" "help-fns.el" (21721 59582 784612
-;;;;;;  824000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (21720 48653 588347
+;;;;;;  670000))
 ;;; Generated autoloads from help-fns.el
 
 (autoload 'describe-function "help-fns" "\
@@ -13347,8 +13347,8 @@ Produce a texinfo buffer with sorted doc-strings from 
the DOC file.
 
 ;;;***
 
-;;;### (autoloads nil "help-macro" "help-macro.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (21678 60839 737757
+;;;;;;  780000))
 ;;; Generated autoloads from help-macro.el
 
 (defvar three-step-help nil "\
@@ -13362,8 +13362,8 @@ gives the window that lists the options.")
 
 ;;;***
 
-;;;### (autoloads nil "help-mode" "help-mode.el" (21733 50750 334730
-;;;;;;  5000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (21733 15494 350926
+;;;;;;  217000))
 ;;; Generated autoloads from help-mode.el
 
 (autoload 'help-mode "help-mode" "\
@@ -13470,8 +13470,8 @@ BOOKMARK is a bookmark name or a bookmark record.
 
 ;;;***
 
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21678 60839
+;;;;;;  481747 492000))
 ;;; Generated autoloads from emacs-lisp/helper.el
 
 (autoload 'Helper-describe-bindings "helper" "\
@@ -13486,7 +13486,7 @@ Provide help for current mode.
 
 ;;;***
 
-;;;### (autoloads nil "hexl" "hexl.el" (21695 35516 595262 313000))
+;;;### (autoloads nil "hexl" "hexl.el" (21694 48017 602102 111000))
 ;;; Generated autoloads from hexl.el
 
 (autoload 'hexl-mode "hexl" "\
@@ -13580,7 +13580,8 @@ This discards the buffer's undo information.
 
 ;;;***
 
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 1161 438890 423000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 10923 302579
+;;;;;;  694000))
 ;;; Generated autoloads from hi-lock.el
 
 (autoload 'hi-lock-mode "hi-lock" "\
@@ -13747,8 +13748,8 @@ be found in variable `hi-lock-interactive-patterns'.
 
 ;;;***
 
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21799 25495
+;;;;;;  339970 854000))
 ;;; Generated autoloads from progmodes/hideif.el
 
 (autoload 'hide-ifdef-mode "hideif" "\
@@ -13795,8 +13796,8 @@ Several variables affect how the hiding is done:
 
 ;;;***
 
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21678 60840
+;;;;;;  301780 390000))
 ;;; Generated autoloads from progmodes/hideshow.el
 
 (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil 
nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) 
(java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -13858,8 +13859,8 @@ Unconditionally turn off `hs-minor-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21678 60839 741757
+;;;;;;  940000))
 ;;; Generated autoloads from hilit-chg.el
 
 (autoload 'highlight-changes-mode "hilit-chg" "\
@@ -13990,8 +13991,8 @@ See `highlight-changes-mode' for more information on 
Highlight-Changes mode.
 
 ;;;***
 
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21678 60839 741757
+;;;;;;  940000))
 ;;; Generated autoloads from hippie-exp.el
 (push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
 
@@ -14023,8 +14024,8 @@ argument VERBOSE non-nil makes the function verbose.
 
 ;;;***
 
-;;;### (autoloads nil "hl-line" "hl-line.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (21678 60839 741757
+;;;;;;  940000))
 ;;; Generated autoloads from hl-line.el
 
 (autoload 'hl-line-mode "hl-line" "\
@@ -14073,8 +14074,8 @@ Global-Hl-Line mode uses the functions 
`global-hl-line-unhighlight' and
 
 ;;;***
 
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (21678 60839
+;;;;;;  317740 902000))
 ;;; Generated autoloads from calendar/holidays.el
 
 (defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New 
Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 
"Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 
"President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 
"April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 
"Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's 
Day") (holiday-fixed 7 [...]
@@ -14184,8 +14185,8 @@ The optional LABEL is used to label the buffer created.
 
 ;;;***
 
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "html2text" "gnus/html2text.el" (21678 60839
+;;;;;;  685755 690000))
 ;;; Generated autoloads from gnus/html2text.el
 
 (autoload 'html2text "html2text" "\
@@ -14195,8 +14196,8 @@ Convert HTML to plain text in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21670 32624
-;;;;;;  385626 484000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21797 54705
+;;;;;;  36905 533000))
 ;;; Generated autoloads from htmlfontify.el
 (push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
 
@@ -14229,8 +14230,8 @@ You may also want to set `hfy-page-header' and 
`hfy-page-footer'.
 
 ;;;***
 
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21678 60839 745758
+;;;;;;  101000))
 ;;; Generated autoloads from ibuf-macs.el
 
 (autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14332,8 +14333,8 @@ bound to the current value of the filter.
 
 ;;;***
 
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (21670 32624 385626
-;;;;;;  484000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (21799 25376 342382
+;;;;;;  265000))
 ;;; Generated autoloads from ibuffer.el
 
 (autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14372,8 +14373,8 @@ FORMATS is the value to use for `ibuffer-formats'.
 
 ;;;***
 
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21797
+;;;;;;  54704 968907 0))
 ;;; Generated autoloads from calendar/icalendar.el
 (push (purecopy '(icalendar 0 19)) package--builtin-versions)
 
@@ -14426,8 +14427,8 @@ buffer `*icalendar-errors*'.
 
 ;;;***
 
-;;;### (autoloads nil "icomplete" "icomplete.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (21678 60839 749758
+;;;;;;  262000))
 ;;; Generated autoloads from icomplete.el
 
 (defvar icomplete-mode nil "\
@@ -14466,8 +14467,8 @@ completions:
 
 ;;;***
 
-;;;### (autoloads nil "icon" "progmodes/icon.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (21678 60840 301780
+;;;;;;  390000))
 ;;; Generated autoloads from progmodes/icon.el
 
 (autoload 'icon-mode "icon" "\
@@ -14507,8 +14508,8 @@ with no args, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21678
+;;;;;;  60840 309780 710000))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload 'idlwave-shell "idlw-shell" "\
@@ -14533,8 +14534,8 @@ See also the variable `idlwave-shell-prompt-pattern'.
 
 ;;;***
 
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21678 60840
+;;;;;;  313780 870000))
 ;;; Generated autoloads from progmodes/idlwave.el
 (push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
 
@@ -14663,7 +14664,7 @@ The main features of this mode are
 
 ;;;***
 
-;;;### (autoloads nil "ido" "ido.el" (21767 65327 504606 256000))
+;;;### (autoloads nil "ido" "ido.el" (21767 20340 942139 827000))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -14925,7 +14926,7 @@ DEF, if non-nil, is the default value.
 
 ;;;***
 
-;;;### (autoloads nil "ielm" "ielm.el" (21695 35516 595262 313000))
+;;;### (autoloads nil "ielm" "ielm.el" (21694 48017 602102 111000))
 ;;; Generated autoloads from ielm.el
 
 (autoload 'ielm "ielm" "\
@@ -14937,7 +14938,7 @@ See `inferior-emacs-lisp-mode' for details.
 
 ;;;***
 
-;;;### (autoloads nil "iimage" "iimage.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "iimage" "iimage.el" (21678 60839 753758 423000))
 ;;; Generated autoloads from iimage.el
 
 (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -14953,7 +14954,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "image" "image.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "image" "image.el" (21678 60839 757758 583000))
 ;;; Generated autoloads from image.el
 
 (autoload 'image-type-from-data "image" "\
@@ -15146,8 +15147,8 @@ If Emacs is compiled without ImageMagick support, this 
does nothing.
 
 ;;;***
 
-;;;### (autoloads nil "image-dired" "image-dired.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (21678 60839
+;;;;;;  757758 583000))
 ;;; Generated autoloads from image-dired.el
 (push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
 
@@ -15284,8 +15285,8 @@ easy-to-use form.
 
 ;;;***
 
-;;;### (autoloads nil "image-file" "image-file.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "image-file" "image-file.el" (21678 60839 757758
+;;;;;;  583000))
 ;;; Generated autoloads from image-file.el
 
 (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" 
"tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -15347,8 +15348,8 @@ An image file is one whose name has an extension in
 
 ;;;***
 
-;;;### (autoloads nil "image-mode" "image-mode.el" (21716 41663 456033
-;;;;;;  27000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (21718 7576 278960
+;;;;;;  757000))
 ;;; Generated autoloads from image-mode.el
 
 (autoload 'image-mode "image-mode" "\
@@ -15395,7 +15396,7 @@ on these modes.
 
 ;;;***
 
-;;;### (autoloads nil "imenu" "imenu.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "imenu" "imenu.el" (21678 60839 761758 744000))
 ;;; Generated autoloads from imenu.el
 
 (defvar imenu-sort-function nil "\
@@ -15533,8 +15534,8 @@ for more information.
 
 ;;;***
 
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (21678 60839
+;;;;;;  813760 834000))
 ;;; Generated autoloads from language/ind-util.el
 
 (autoload 'indian-compose-region "ind-util" "\
@@ -15564,8 +15565,8 @@ Convert old Emacs Devanagari characters to UCS.
 
 ;;;***
 
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21678 60840
+;;;;;;  317781 30000))
 ;;; Generated autoloads from progmodes/inf-lisp.el
 
 (autoload 'inferior-lisp "inf-lisp" "\
@@ -15583,7 +15584,7 @@ of `inferior-lisp-program').  Runs the hooks from
 
 ;;;***
 
-;;;### (autoloads nil "info" "info.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "info" "info.el" (21678 60839 765758 905000))
 ;;; Generated autoloads from info.el
 
 (defcustom Info-default-directory-list (let* ((config-dir 
(file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name 
"../info" data-directory))) (if (file-directory-p dir) dir))) 
configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" 
"/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" 
"gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply 
#'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx 
[...]
@@ -15795,8 +15796,8 @@ completion alternatives to currently visited manuals.
 
 ;;;***
 
-;;;### (autoloads nil "info-look" "info-look.el" (21764 2734 445319
-;;;;;;  586000))
+;;;### (autoloads nil "info-look" "info-look.el" (21763 18426 747793
+;;;;;;  948000))
 ;;; Generated autoloads from info-look.el
 
 (autoload 'info-lookup-reset "info-look" "\
@@ -15843,8 +15844,8 @@ Perform completion on file preceding point.
 
 ;;;***
 
-;;;### (autoloads nil "info-xref" "info-xref.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (21678 60839 761758
+;;;;;;  744000))
 ;;; Generated autoloads from info-xref.el
 (push (purecopy '(info-xref 3)) package--builtin-versions)
 
@@ -15927,8 +15928,8 @@ the sources handy.
 
 ;;;***
 
-;;;### (autoloads nil "informat" "informat.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "informat" "informat.el" (21678 60839 765758
+;;;;;;  905000))
 ;;; Generated autoloads from informat.el
 
 (autoload 'Info-tagify "informat" "\
@@ -15973,8 +15974,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21678 60839
+;;;;;;  481747 492000))
 ;;; Generated autoloads from emacs-lisp/inline.el
 
 (autoload 'define-inline "inline" "\
@@ -15988,8 +15989,8 @@ For example, invoke \"emacs -batch -f 
batch-info-validate $info/ ~/*.info\"
 
 ;;;***
 
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (21678 60839
+;;;;;;  349742 188000))
 ;;; Generated autoloads from cedet/inversion.el
 (push (purecopy '(inversion 1 3)) package--builtin-versions)
 
@@ -16001,8 +16002,8 @@ Only checks one based on which kind of Emacs is being 
run.
 
 ;;;***
 
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21678
+;;;;;;  60839 769759 66000))
 ;;; Generated autoloads from international/isearch-x.el
 
 (autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -16022,8 +16023,8 @@ Toggle input method in interactive search.
 
 ;;;***
 
-;;;### (autoloads nil "isearchb" "isearchb.el" (21767 65327 504606
-;;;;;;  256000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (21767 20340 942139
+;;;;;;  827000))
 ;;; Generated autoloads from isearchb.el
 (push (purecopy '(isearchb 1 5)) package--builtin-versions)
 
@@ -16037,8 +16038,8 @@ accessed via isearchb.
 
 ;;;***
 
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21678
+;;;;;;  60839 769759 66000))
 ;;; Generated autoloads from international/iso-cvt.el
 
 (autoload 'iso-spanish "iso-cvt" "\
@@ -16129,15 +16130,15 @@ Add submenus to the File menu, to convert to and from 
various formats.
 ;;;***
 
 ;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 769759 66000))
 ;;; Generated autoloads from international/iso-transl.el
  (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
  (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 
'keymap)
 
 ;;;***
 
-;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21750 59840
-;;;;;;  704617 663000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21756 63738
+;;;;;;  22469 950000))
 ;;; Generated autoloads from textmodes/ispell.el
 
 (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t 
exclusive))))
@@ -16370,8 +16371,8 @@ You can bind this to the key C-c i in GNUS or mail by 
adding to
 
 ;;;***
 
-;;;### (autoloads nil "japan-util" "language/japan-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (21678
+;;;;;;  60839 817760 994000))
 ;;; Generated autoloads from language/japan-util.el
 
 (autoload 'setup-japanese-environment-internal "japan-util" "\
@@ -16448,8 +16449,8 @@ If non-nil, second arg INITIAL-INPUT is a string to 
insert before reading.
 
 ;;;***
 
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (21678 60839 793760
+;;;;;;  30000))
 ;;; Generated autoloads from jka-compr.el
 
 (defvar jka-compr-inhibit nil "\
@@ -16472,7 +16473,8 @@ by `jka-compr-installed'.
 
 ;;;***
 
-;;;### (autoloads nil "js" "progmodes/js.el" (21760 5676 875320 615000))
+;;;### (autoloads nil "js" "progmodes/js.el" (21790 46509 351608
+;;;;;;  183000))
 ;;; Generated autoloads from progmodes/js.el
 (push (purecopy '(js 9)) package--builtin-versions)
 
@@ -16486,14 +16488,14 @@ Major mode for editing JavaScript.
 
 ;;;***
 
-;;;### (autoloads nil "json" "json.el" (21779 56495 106033 935000))
+;;;### (autoloads nil "json" "json.el" (21779 20029 611175 954000))
 ;;; Generated autoloads from json.el
 (push (purecopy '(json 1 4)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (21678 60839
+;;;;;;  505748 457000))
 ;;; Generated autoloads from emulation/keypad.el
 
 (defvar keypad-setup nil "\
@@ -16548,8 +16550,8 @@ the decimal key on the keypad is mapped to DECIMAL 
instead of `.'
 
 ;;;***
 
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21678
+;;;;;;  60839 773759 227000))
 ;;; Generated autoloads from international/kinsoku.el
 
 (autoload 'kinsoku "kinsoku" "\
@@ -16570,8 +16572,8 @@ the context of text formatting.
 
 ;;;***
 
-;;;### (autoloads nil "kkc" "international/kkc.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (21678 60839 773759
+;;;;;;  227000))
 ;;; Generated autoloads from international/kkc.el
 
 (defvar kkc-after-update-conversion-functions nil "\
@@ -16593,7 +16595,7 @@ and the return value is the length of the conversion.
 
 ;;;***
 
-;;;### (autoloads nil "kmacro" "kmacro.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (21678 60839 793760 30000))
 ;;; Generated autoloads from kmacro.el
  (global-set-key "\C-x(" 'kmacro-start-macro)
  (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16705,8 +16707,8 @@ If kbd macro currently being defined end it before 
activating it.
 
 ;;;***
 
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (21678
+;;;;;;  60839 817760 994000))
 ;;; Generated autoloads from language/korea-util.el
 
 (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv 
"HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16720,8 +16722,8 @@ The kind of Korean keyboard for Korean input method.
 
 ;;;***
 
-;;;### (autoloads nil "landmark" "play/landmark.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "landmark" "play/landmark.el" (21678 60840
+;;;;;;  209776 710000))
 ;;; Generated autoloads from play/landmark.el
 (push (purecopy '(landmark 1 0)) package--builtin-versions)
 
@@ -16752,8 +16754,8 @@ Use \\[describe-mode] for more info.
 
 ;;;***
 
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (21678 60839
+;;;;;;  817760 994000))
 ;;; Generated autoloads from language/lao-util.el
 
 (autoload 'lao-compose-string "lao-util" "\
@@ -16790,8 +16792,8 @@ Transcribe Romanized Lao string STR to Lao character 
string.
 
 ;;;***
 
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (21678
+;;;;;;  60839 773759 227000))
 ;;; Generated autoloads from international/latexenc.el
 
 (defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) 
("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) 
("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . 
cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) 
("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) 
("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) 
("next" . next) ("utf8" . utf-8) ("utf8x" .  [...]
@@ -16823,7 +16825,7 @@ coding system names is determined from 
`latex-inputenc-coding-alist'.
 ;;;***
 
 ;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 773759 227000))
 ;;; Generated autoloads from international/latin1-disp.el
 
 (defvar latin1-display nil "\
@@ -16864,8 +16866,8 @@ use either \\[customize] or the function 
`latin1-display'.")
 
 ;;;***
 
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21678
+;;;;;;  60840 317781 30000))
 ;;; Generated autoloads from progmodes/ld-script.el
 
 (autoload 'ld-script-mode "ld-script" "\
@@ -16875,8 +16877,8 @@ A major mode to edit GNU ld script files
 
 ;;;***
 
-;;;### (autoloads nil "let-alist" "let-alist.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "let-alist" "let-alist.el" (21678 60839 865762
+;;;;;;  924000))
 ;;; Generated autoloads from let-alist.el
 (push (purecopy '(let-alist 1 0 3)) package--builtin-versions)
 
@@ -16915,7 +16917,7 @@ displayed in the example above.
 
 ;;;***
 
-;;;### (autoloads nil "life" "play/life.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "life" "play/life.el" (21678 60840 209776 710000))
 ;;; Generated autoloads from play/life.el
 
 (autoload 'life "life" "\
@@ -16928,7 +16930,7 @@ generations (this defaults to 1).
 
 ;;;***
 
-;;;### (autoloads nil "linum" "linum.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "linum" "linum.el" (21678 60839 865762 924000))
 ;;; Generated autoloads from linum.el
 (push (purecopy '(linum 0 9 24)) package--builtin-versions)
 
@@ -16965,8 +16967,8 @@ See `linum-mode' for more information on Linum mode.
 
 ;;;***
 
-;;;### (autoloads nil "loadhist" "loadhist.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (21678 60839 865762
+;;;;;;  924000))
 ;;; Generated autoloads from loadhist.el
 
 (autoload 'unload-feature "loadhist" "\
@@ -16997,7 +16999,7 @@ something strange, such as redefining an Emacs function.
 
 ;;;***
 
-;;;### (autoloads nil "locate" "locate.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "locate" "locate.el" (21678 60839 865762 924000))
 ;;; Generated autoloads from locate.el
 
 (defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -17049,8 +17051,8 @@ except that FILTER is not optional.
 
 ;;;***
 
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21803 61751 305340
+;;;;;;  145000))
 ;;; Generated autoloads from vc/log-edit.el
 
 (autoload 'log-edit "log-edit" "\
@@ -17081,8 +17083,8 @@ done.  Otherwise, it uses the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "log-view" "vc/log-view.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (21678 60840 529789
+;;;;;;  511000))
 ;;; Generated autoloads from vc/log-view.el
 
 (autoload 'log-view-mode "log-view" "\
@@ -17092,7 +17094,7 @@ Major mode for browsing CVS log output.
 
 ;;;***
 
-;;;### (autoloads nil "lpr" "lpr.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "lpr" "lpr.el" (21678 60839 865762 924000))
 ;;; Generated autoloads from lpr.el
 
 (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17187,8 +17189,8 @@ for further customization of the printer command.
 
 ;;;***
 
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21678 60839 865762
+;;;;;;  924000))
 ;;; Generated autoloads from ls-lisp.el
 
 (defvar ls-lisp-support-shell-wildcards t "\
@@ -17199,8 +17201,8 @@ Otherwise they are treated as Emacs regexps (for 
backward compatibility).")
 
 ;;;***
 
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (21678 60839 321741
+;;;;;;  62000))
 ;;; Generated autoloads from calendar/lunar.el
 
 (autoload 'lunar-phases "lunar" "\
@@ -17212,8 +17214,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21678 60840
+;;;;;;  317781 30000))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload 'm4-mode "m4-mode" "\
@@ -17223,7 +17225,7 @@ A major mode to edit m4 macro files.
 
 ;;;***
 
-;;;### (autoloads nil "macros" "macros.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "macros" "macros.el" (21678 60839 869763 84000))
 ;;; Generated autoloads from macros.el
 
 (autoload 'name-last-kbd-macro "macros" "\
@@ -17312,8 +17314,8 @@ and then select the region of un-tablified names and use
 
 ;;;***
 
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21678 60839
+;;;;;;  869763 84000))
 ;;; Generated autoloads from mail/mail-extr.el
 
 (autoload 'mail-extract-address-components "mail-extr" "\
@@ -17343,8 +17345,8 @@ Convert mail domain DOMAIN to the country it 
corresponds to.
 
 ;;;***
 
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/mail-hist.el
 
 (autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17373,8 +17375,8 @@ This function normally would be called when the message 
is sent.
 
 ;;;***
 
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/mail-utils.el
 
 (defvar mail-use-rfc822 nil "\
@@ -17448,8 +17450,8 @@ matches may be returned from the message body.
 
 ;;;***
 
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/mailabbrev.el
 
 (defvar mail-abbrevs-mode nil "\
@@ -17498,8 +17500,8 @@ double-quotes.
 
 ;;;***
 
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/mailalias.el
 
 (defvar mail-complete-style 'angles "\
@@ -17552,8 +17554,8 @@ current header, calls `mail-complete-function' and 
passes prefix ARG if any.
 
 ;;;***
 
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/mailclient.el
 
 (autoload 'mailclient-send-it "mailclient" "\
@@ -17565,8 +17567,8 @@ The mail client is taken to be the handler of mailto 
URLs.
 
 ;;;***
 
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21678
+;;;;;;  60840 321781 190000))
 ;;; Generated autoloads from progmodes/make-mode.el
 
 (autoload 'makefile-mode "make-mode" "\
@@ -17683,8 +17685,8 @@ An adapted `makefile-mode' that knows about imake.
 
 ;;;***
 
-;;;### (autoloads nil "makesum" "makesum.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "makesum" "makesum.el" (21678 60839 893764
+;;;;;;  49000))
 ;;; Generated autoloads from makesum.el
 
 (autoload 'make-command-summary "makesum" "\
@@ -17695,7 +17697,7 @@ Previous contents of that buffer are killed first.
 
 ;;;***
 
-;;;### (autoloads nil "man" "man.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "man" "man.el" (21678 60839 893764 49000))
 ;;; Generated autoloads from man.el
 
 (defalias 'manual-entry 'man)
@@ -17751,7 +17753,7 @@ Default bookmark handler for Man buffers.
 
 ;;;***
 
-;;;### (autoloads nil "master" "master.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "master" "master.el" (21678 60839 893764 49000))
 ;;; Generated autoloads from master.el
 (push (purecopy '(master 1 0 2)) package--builtin-versions)
 
@@ -17774,8 +17776,8 @@ yourself the value of `master-of' by calling 
`master-show-slave'.
 
 ;;;***
 
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (21678 60839 893764
+;;;;;;  49000))
 ;;; Generated autoloads from mb-depth.el
 
 (defvar minibuffer-depth-indicate-mode nil "\
@@ -17802,14 +17804,14 @@ recursion depth in the minibuffer prompt.  This is 
only useful if
 
 ;;;***
 
-;;;### (autoloads nil "md4" "md4.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "md4" "md4.el" (21678 60839 897764 210000))
 ;;; Generated autoloads from md4.el
 (push (purecopy '(md4 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "message" "gnus/message.el" (21759 29151 445319
-;;;;;;  109000))
+;;;### (autoloads nil "message" "gnus/message.el" (21803 61751 293340
+;;;;;;  642000))
 ;;; Generated autoloads from gnus/message.el
 
 (define-mail-user-agent 'message-user-agent 'message-mail 
'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -17974,8 +17976,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21678
+;;;;;;  60840 321781 190000))
 ;;; Generated autoloads from progmodes/meta-mode.el
 (push (purecopy '(meta-mode 1 0)) package--builtin-versions)
 
@@ -17991,8 +17993,8 @@ Major mode for editing MetaPost sources.
 
 ;;;***
 
-;;;### (autoloads nil "metamail" "mail/metamail.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/metamail.el
 
 (autoload 'metamail-interpret-header "metamail" "\
@@ -18035,8 +18037,8 @@ redisplayed as output is inserted.
 
 ;;;***
 
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21678 60839 913764
+;;;;;;  853000))
 ;;; Generated autoloads from mh-e/mh-comp.el
 
 (autoload 'mh-smail "mh-comp" "\
@@ -18126,7 +18128,7 @@ delete the draft message.
 
 ;;;***
 
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21678 60839 917765 13000))
 ;;; Generated autoloads from mh-e/mh-e.el
 (push (purecopy '(mh-e 8 6)) package--builtin-versions)
 
@@ -18143,8 +18145,8 @@ Display version information about MH-E and the MH mail 
handling system.
 
 ;;;***
 
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21678 60839
+;;;;;;  917765 13000))
 ;;; Generated autoloads from mh-e/mh-folder.el
 
 (autoload 'mh-rmail "mh-folder" "\
@@ -18225,8 +18227,8 @@ perform the operation on all messages in that region.
 
 ;;;***
 
-;;;### (autoloads nil "midnight" "midnight.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "midnight" "midnight.el" (21678 60839 937765
+;;;;;;  817000))
 ;;; Generated autoloads from midnight.el
 
 (autoload 'clean-buffer-list "midnight" "\
@@ -18252,8 +18254,8 @@ to its second argument TM.
 
 ;;;***
 
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21678 60839
+;;;;;;  937765 817000))
 ;;; Generated autoloads from minibuf-eldef.el
 
 (defvar minibuffer-electric-default-mode nil "\
@@ -18282,7 +18284,7 @@ is modified to remove the default indication.
 
 ;;;***
 
-;;;### (autoloads nil "misc" "misc.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "misc" "misc.el" (21678 60839 941765 977000))
 ;;; Generated autoloads from misc.el
 
 (autoload 'butterfly "misc" "\
@@ -18310,8 +18312,8 @@ The return value is always nil.
 
 ;;;***
 
-;;;### (autoloads nil "misearch" "misearch.el" (21767 65327 504606
-;;;;;;  256000))
+;;;### (autoloads nil "misearch" "misearch.el" (21797 54705 52905
+;;;;;;  188000))
 ;;; Generated autoloads from misearch.el
  (add-hook 'isearch-mode-hook 'multi-isearch-setup)
 
@@ -18346,9 +18348,12 @@ Isearch starts.")
 The buffer where the search is currently searching.
 The value is nil when the search still is in the initial buffer.")
 
-(defvar multi-isearch-buffer-list nil)
+(defvar multi-isearch-buffer-list nil "\
+Sequence of buffers visited by multiple buffers Isearch.
+This is nil if Isearch is not currently searching more than one buffer.")
 
-(defvar multi-isearch-file-list nil)
+(defvar multi-isearch-file-list nil "\
+Sequence of files visited by multiple file buffers Isearch.")
 
 (autoload 'multi-isearch-setup "misearch" "\
 Set up isearch to search multiple buffers.
@@ -18396,8 +18401,8 @@ whose file names match the specified wildcard.
 
 ;;;***
 
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21678
+;;;;;;  60840 321781 190000))
 ;;; Generated autoloads from progmodes/mixal-mode.el
 (push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
 
@@ -18408,8 +18413,8 @@ Major mode for the mixal asm language.
 
 ;;;***
 
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21678 60839
+;;;;;;  697756 173000))
 ;;; Generated autoloads from gnus/mm-encode.el
 
 (autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18419,8 +18424,8 @@ Return a default encoding for FILE.
 
 ;;;***
 
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21678 60839
+;;;;;;  697756 173000))
 ;;; Generated autoloads from gnus/mm-extern.el
 
 (autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18438,8 +18443,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21678 60839
+;;;;;;  697756 173000))
 ;;; Generated autoloads from gnus/mm-partial.el
 
 (autoload 'mm-inline-partial "mm-partial" "\
@@ -18452,8 +18457,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing 
after replacing.
 
 ;;;***
 
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21678 60839 697756
+;;;;;;  173000))
 ;;; Generated autoloads from gnus/mm-url.el
 
 (autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18469,8 +18474,8 @@ Insert file contents of URL using `mm-url-program'.
 
 ;;;***
 
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21678 60839 697756
+;;;;;;  173000))
 ;;; Generated autoloads from gnus/mm-uu.el
 
 (autoload 'mm-uu-dissect "mm-uu" "\
@@ -18489,7 +18494,7 @@ Assume text has been decoded if DECODED is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "mml" "gnus/mml.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (21678 60839 701756 333000))
 ;;; Generated autoloads from gnus/mml.el
 
 (autoload 'mml-to-mime "mml" "\
@@ -18514,8 +18519,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21678 60839 701756
+;;;;;;  333000))
 ;;; Generated autoloads from gnus/mml1991.el
 
 (autoload 'mml1991-encrypt "mml1991" "\
@@ -18530,8 +18535,8 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21678 60839 701756
+;;;;;;  333000))
 ;;; Generated autoloads from gnus/mml2015.el
 
 (autoload 'mml2015-decrypt "mml2015" "\
@@ -18571,16 +18576,16 @@ body) or \"attachment\" (separate from the body).
 
 ;;;***
 
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21678 60839
+;;;;;;  349742 188000))
 ;;; Generated autoloads from cedet/mode-local.el
 
 (put 'define-overloadable-function 'doc-string-elt 3)
 
 ;;;***
 
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21605 26937
+;;;;;;  524012 932000))
 ;;; Generated autoloads from progmodes/modula2.el
 
 (defalias 'modula-2-mode 'm2-mode)
@@ -18613,8 +18618,8 @@ followed by the first character of the construct.
 
 ;;;***
 
-;;;### (autoloads nil "morse" "play/morse.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "morse" "play/morse.el" (21678 60840 209776
+;;;;;;  710000))
 ;;; Generated autoloads from play/morse.el
 
 (autoload 'morse-region "morse" "\
@@ -18639,8 +18644,8 @@ Convert NATO phonetic alphabet in region to ordinary 
ASCII text.
 
 ;;;***
 
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21678 60839 949766
+;;;;;;  299000))
 ;;; Generated autoloads from mouse-drag.el
 
 (autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18687,7 +18692,7 @@ To test this function, evaluate:
 
 ;;;***
 
-;;;### (autoloads nil "mpc" "mpc.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "mpc" "mpc.el" (21678 60839 953766 460000))
 ;;; Generated autoloads from mpc.el
 
 (autoload 'mpc "mpc" "\
@@ -18697,7 +18702,7 @@ Main entry point for MPC.
 
 ;;;***
 
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (21678 60840 209776 710000))
 ;;; Generated autoloads from play/mpuz.el
 
 (autoload 'mpuz "mpuz" "\
@@ -18707,7 +18712,7 @@ Multiplication puzzle with GNU Emacs.
 
 ;;;***
 
-;;;### (autoloads nil "msb" "msb.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "msb" "msb.el" (21678 60839 953766 460000))
 ;;; Generated autoloads from msb.el
 
 (defvar msb-mode nil "\
@@ -18732,8 +18737,8 @@ different buffer menu using the function `msb'.
 
 ;;;***
 
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21678
+;;;;;;  60839 777759 387000))
 ;;; Generated autoloads from international/mule-diag.el
 
 (autoload 'list-character-sets "mule-diag" "\
@@ -18865,8 +18870,8 @@ The default is 20.  If LIMIT is negative, do not limit 
the listing.
 
 ;;;***
 
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (21678
+;;;;;;  60839 781759 548000))
 ;;; Generated autoloads from international/mule-util.el
 
 (defsubst string-to-list (string) "\
@@ -18997,8 +19002,8 @@ per-character basis, this may not be accurate.
 
 ;;;***
 
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (21704 50495
-;;;;;;  455324 752000))
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (21706 14224
+;;;;;;  285958 900000))
 ;;; Generated autoloads from net/net-utils.el
 
 (autoload 'ifconfig "net-utils" "\
@@ -19092,8 +19097,8 @@ Open a network connection to HOST on PORT.
 
 ;;;***
 
-;;;### (autoloads nil "netrc" "net/netrc.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (21678 60839 973767
+;;;;;;  264000))
 ;;; Generated autoloads from net/netrc.el
 
 (autoload 'netrc-credentials "netrc" "\
@@ -19105,8 +19110,8 @@ listed in the PORTS list.
 
 ;;;***
 
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (21716
-;;;;;;  41663 456033 27000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (21718
+;;;;;;  7576 278960 757000))
 ;;; Generated autoloads from net/network-stream.el
 
 (autoload 'open-network-stream "network-stream" "\
@@ -19202,8 +19207,8 @@ asynchronously, if possible.
 
 ;;;***
 
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21678
+;;;;;;  60839 977767 424000))
 ;;; Generated autoloads from net/newst-backend.el
 
 (autoload 'newsticker-running-p "newst-backend" "\
@@ -19225,7 +19230,7 @@ Run `newsticker-start-hook' if newsticker was not 
running already.
 ;;;***
 
 ;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 977767 424000))
 ;;; Generated autoloads from net/newst-plainview.el
 
 (autoload 'newsticker-plainview "newst-plainview" "\
@@ -19235,8 +19240,8 @@ Start newsticker plainview.
 
 ;;;***
 
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21678
+;;;;;;  60839 977767 424000))
 ;;; Generated autoloads from net/newst-reader.el
 
 (autoload 'newsticker-show-news "newst-reader" "\
@@ -19246,8 +19251,8 @@ Start reading news.  You may want to bind this to a key.
 
 ;;;***
 
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21678
+;;;;;;  60839 977767 424000))
 ;;; Generated autoloads from net/newst-ticker.el
 
 (autoload 'newsticker-ticker-running-p "newst-ticker" "\
@@ -19267,8 +19272,8 @@ running already.
 
 ;;;***
 
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21678
+;;;;;;  60839 981767 585000))
 ;;; Generated autoloads from net/newst-treeview.el
 
 (autoload 'newsticker-treeview "newst-treeview" "\
@@ -19278,8 +19283,8 @@ Start newsticker treeview.
 
 ;;;***
 
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21678 60839 705756
+;;;;;;  494000))
 ;;; Generated autoloads from gnus/nndiary.el
 
 (autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19289,8 +19294,8 @@ Generate NOV databases in all nndiary directories.
 
 ;;;***
 
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21678 60839 705756
+;;;;;;  494000))
 ;;; Generated autoloads from gnus/nndoc.el
 
 (autoload 'nndoc-add-type "nndoc" "\
@@ -19304,8 +19309,8 @@ symbol in the alist.
 
 ;;;***
 
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21678 60839
+;;;;;;  709756 654000))
 ;;; Generated autoloads from gnus/nnfolder.el
 
 (autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19316,7 +19321,7 @@ This command does not work if you use short group names.
 
 ;;;***
 
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (21678 60839 717756 976000))
 ;;; Generated autoloads from gnus/nnml.el
 
 (autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19326,7 +19331,7 @@ Generate NOV databases in all nnml directories.
 
 ;;;***
 
-;;;### (autoloads nil "novice" "novice.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "novice" "novice.el" (21678 60840 13768 869000))
 ;;; Generated autoloads from novice.el
 
 (define-obsolete-variable-alias 'disabled-command-hook 
'disabled-command-function "22.1")
@@ -19358,8 +19363,8 @@ future sessions.
 
 ;;;***
 
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21678
+;;;;;;  60840 457786 630000))
 ;;; Generated autoloads from textmodes/nroff-mode.el
 
 (autoload 'nroff-mode "nroff-mode" "\
@@ -19373,14 +19378,14 @@ closing requests for requests that are used in 
matched pairs.
 
 ;;;***
 
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (21678 60839 981767 585000))
 ;;; Generated autoloads from net/ntlm.el
 (push (purecopy '(ntlm 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21678 60840
+;;;;;;  13768 869000))
 ;;; Generated autoloads from nxml/nxml-glyph.el
 
 (autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19392,8 +19397,8 @@ Return nil if the face cannot display a glyph for N.
 
 ;;;***
 
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21678 60840
+;;;;;;  17769 29000))
 ;;; Generated autoloads from nxml/nxml-mode.el
 
 (autoload 'nxml-mode "nxml-mode" "\
@@ -19453,8 +19458,8 @@ Many aspects this mode can be customized using
 
 ;;;***
 
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21678 60840
+;;;;;;  17769 29000))
 ;;; Generated autoloads from nxml/nxml-uchnm.el
 
 (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19466,8 +19471,8 @@ the variable `nxml-enabled-unicode-blocks'.
 
 ;;;***
 
-;;;### (autoloads nil "octave" "progmodes/octave.el" (21695 35516
-;;;;;;  595262 313000))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (21694 48017
+;;;;;;  610101 961000))
 ;;; Generated autoloads from progmodes/octave.el
 
 (autoload 'octave-mode "octave" "\
@@ -19504,8 +19509,8 @@ startup file, `~/.emacs-octave'.
 
 ;;;***
 
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21678 60840
+;;;;;;  325781 350000))
 ;;; Generated autoloads from progmodes/opascal.el
 
 (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
@@ -19540,7 +19545,7 @@ Coloring:
 
 ;;;***
 
-;;;### (autoloads nil "org" "org/org.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "org" "org/org.el" (21804 3763 242436 828000))
 ;;; Generated autoloads from org/org.el
 
 (autoload 'org-babel-do-load-languages "org" "\
@@ -19761,8 +19766,8 @@ Call the customize function with org as argument.
 
 ;;;***
 
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21804 3763
+;;;;;;  222437 179000))
 ;;; Generated autoloads from org/org-agenda.el
 
 (autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -20035,8 +20040,8 @@ to override `appt-message-warning-time'.
 
 ;;;***
 
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (21678 60840
+;;;;;;  117773 29000))
 ;;; Generated autoloads from org/org-capture.el
 
 (autoload 'org-capture-string "org-capture" "\
@@ -20078,8 +20083,8 @@ Set `org-capture-templates' to be similar to 
`org-remember-templates'.
 
 ;;;***
 
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (21804 3763
+;;;;;;  222437 179000))
 ;;; Generated autoloads from org/org-colview.el
 
 (autoload 'org-columns-remove-overlays "org-colview" "\
@@ -20142,8 +20147,8 @@ Turn on or update column view in the agenda.
 
 ;;;***
 
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (21678 60840
+;;;;;;  121773 189000))
 ;;; Generated autoloads from org/org-compat.el
 
 (autoload 'org-check-version "org-compat" "\
@@ -20153,8 +20158,8 @@ Try very hard to provide sensible version strings.
 
 ;;;***
 
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (21678 60840 137773
+;;;;;;  829000))
 ;;; Generated autoloads from org/org-macs.el
 
 (autoload 'org-load-noerror-mustsuffix "org-macs" "\
@@ -20164,8 +20169,8 @@ Load FILE with optional arguments NOERROR and 
MUSTSUFFIX.  Drop the MUSTSUFFIX a
 
 ;;;***
 
-;;;### (autoloads nil "org-version" "org/org-version.el" (21607 54478
-;;;;;;  800121 42000))
+;;;### (autoloads nil "org-version" "org/org-version.el" (21605 26937
+;;;;;;  304017 159000))
 ;;; Generated autoloads from org/org-version.el
 
 (autoload 'org-release "org-version" "\
@@ -20182,8 +20187,8 @@ The Git version of org-mode.
 
 ;;;***
 
-;;;### (autoloads nil "outline" "outline.el" (21720 38720 956749
-;;;;;;  443000))
+;;;### (autoloads nil "outline" "outline.el" (21719 45321 591080
+;;;;;;  883000))
 ;;; Generated autoloads from outline.el
 (put 'outline-regexp 'safe-local-variable 'stringp)
 (put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20226,8 +20231,8 @@ See the command `outline-mode' for more information on 
this mode.
 
 ;;;***
 
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (21787 50612
-;;;;;;  215339 172000))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (21803 61751
+;;;;;;  265341 801000))
 ;;; Generated autoloads from emacs-lisp/package.el
 (push (purecopy '(package 1 0 1)) package--builtin-versions)
 
@@ -20246,6 +20251,8 @@ activate the package system at any time.")
 Load Emacs Lisp packages, and activate them.
 The variable `package-load-list' controls which packages to load.
 If optional arg NO-ACTIVATE is non-nil, don't activate packages.
+If `user-init-file' does not mention `(package-initialize)', add
+it to the file.
 
 \(fn &optional NO-ACTIVATE)" t nil)
 
@@ -20259,8 +20266,8 @@ Download descriptions of all configured ELPA packages.
 For each archive configured in the variable `package-archives',
 inform Emacs about the latest versions of all packages it offers,
 and make them available for download.
-Optional argument, ASYNC, specifies whether the downloads should
-be performed in the background.
+Optional argument ASYNC specifies whether to perform the
+downloads in the background.
 
 \(fn &optional ASYNC)" t nil)
 
@@ -20271,11 +20278,14 @@ in an archive in `package-archives'.  Interactively, 
prompt for its name.
 
 If called interactively or if DONT-SELECT nil, add PKG to
 `package-selected-packages'.
+If ASYNC is non-nil, perform the downloads asynchronously.
+If CALLBACK is non-nil, call it with no arguments once the
+entire operation is done.
 
 If PKG is a package-desc and it is already installed, don't try
 to install it but still mark it as selected.
 
-\(fn PKG &optional DONT-SELECT)" t nil)
+\(fn PKG &optional DONT-SELECT ASYNC CALLBACK)" t nil)
 
 (autoload 'package-install-from-buffer "package" "\
 Install a package from the current buffer.
@@ -20336,7 +20346,7 @@ The list is displayed in a buffer named `*Packages*'.
 
 ;;;***
 
-;;;### (autoloads nil "paren" "paren.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "paren" "paren.el" (21678 60840 193776 69000))
 ;;; Generated autoloads from paren.el
 
 (defvar show-paren-mode nil "\
@@ -20362,8 +20372,8 @@ matching parenthesis is highlighted in 
`show-paren-style' after
 
 ;;;***
 
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21678
+;;;;;;  60839 321741 62000))
 ;;; Generated autoloads from calendar/parse-time.el
 (put 'parse-time-rules 'risky-local-variable t)
 
@@ -20376,8 +20386,8 @@ unknown are returned as nil.
 
 ;;;***
 
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21678 60840
+;;;;;;  329781 510000))
 ;;; Generated autoloads from progmodes/pascal.el
 
 (autoload 'pascal-mode "pascal" "\
@@ -20426,8 +20436,8 @@ See also the user variables `pascal-type-keywords', 
`pascal-start-keywords' and
 
 ;;;***
 
-;;;### (autoloads nil "password-cache" "password-cache.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (21678
+;;;;;;  60840 193776 69000))
 ;;; Generated autoloads from password-cache.el
 
 (defvar password-cache t "\
@@ -20448,8 +20458,8 @@ Check if KEY is in the cache.
 
 ;;;***
 
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21777 14770
-;;;;;;  397461 322000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21804 3853 736850
+;;;;;;  365000))
 ;;; Generated autoloads from emacs-lisp/pcase.el
 
 (autoload 'pcase "pcase" "\
@@ -20526,6 +20536,13 @@ of the form (UPAT EXP).
 
 (function-put 'pcase-let 'lisp-indent-function '1)
 
+(autoload 'pcase-dolist "pcase" "\
+
+
+\(fn SPEC &rest BODY)" nil t)
+
+(function-put 'pcase-dolist 'lisp-indent-function '1)
+
 (autoload 'pcase-defmacro "pcase" "\
 Define a pcase UPattern macro.
 
@@ -20537,8 +20554,8 @@ Define a pcase UPattern macro.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21678 60840 193776
+;;;;;;  69000))
 ;;; Generated autoloads from pcmpl-cvs.el
 
 (autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20548,8 +20565,8 @@ Completion rules for the `cvs' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21678 60840 193776
+;;;;;;  69000))
 ;;; Generated autoloads from pcmpl-gnu.el
 
 (autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20576,8 +20593,8 @@ Completion for the GNU tar utility.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21678 60840
+;;;;;;  193776 69000))
 ;;; Generated autoloads from pcmpl-linux.el
 
 (autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20597,8 +20614,8 @@ Completion for GNU/Linux `mount'.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21678 60840 193776
+;;;;;;  69000))
 ;;; Generated autoloads from pcmpl-rpm.el
 
 (autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20608,8 +20625,8 @@ Completion for the `rpm' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21790 46509 343608
+;;;;;;  375000))
 ;;; Generated autoloads from pcmpl-unix.el
 
 (autoload 'pcomplete/cd "pcmpl-unix" "\
@@ -20664,8 +20681,8 @@ Includes files as well as host names followed by a 
colon.
 
 ;;;***
 
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21678 60840 193776
+;;;;;;  69000))
 ;;; Generated autoloads from pcmpl-x.el
 
 (autoload 'pcomplete/tlmgr "pcmpl-x" "\
@@ -20689,8 +20706,8 @@ Completion for the `ag' command.
 
 ;;;***
 
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (21688 62278 418203
-;;;;;;  119000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (21804 3763 246436
+;;;;;;  758000))
 ;;; Generated autoloads from pcomplete.el
 
 (autoload 'pcomplete "pcomplete" "\
@@ -20747,7 +20764,7 @@ Setup `shell-mode' to use pcomplete.
 
 ;;;***
 
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21678 60840 533789 670000))
 ;;; Generated autoloads from vc/pcvs.el
 
 (autoload 'cvs-checkout "pcvs" "\
@@ -20822,8 +20839,8 @@ The exact behavior is determined also by 
`cvs-dired-use-hook'." (when (stringp d
 
 ;;;***
 
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21678 60840
+;;;;;;  533789 670000))
 ;;; Generated autoloads from vc/pcvs-defs.el
 
 (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key 
m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help 
,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] 
`(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check 
out a module from the repository"))) (define-key m [update] `(menu-item 
,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from 
the repository"))) (define-key m [ex [...]
@@ -20831,8 +20848,8 @@ Global menu used by PCL-CVS.")
 
 ;;;***
 
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21678
+;;;;;;  60840 329781 510000))
 ;;; Generated autoloads from progmodes/perl-mode.el
 (put 'perl-indent-level 'safe-local-variable 'integerp)
 (put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20893,8 +20910,8 @@ Turning on Perl mode runs the normal hook 
`perl-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (21678 60840
+;;;;;;  457786 630000))
 ;;; Generated autoloads from textmodes/picture.el
 
 (autoload 'picture-mode "picture" "\
@@ -20974,8 +20991,8 @@ they are not by default assigned to keys.
 
 ;;;***
 
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (21786 29744 368212
-;;;;;;  633000))
+;;;### (autoloads nil "plstore" "gnus/plstore.el" (21785 63745 85575
+;;;;;;  501000))
 ;;; Generated autoloads from gnus/plstore.el
 
 (autoload 'plstore-open "plstore" "\
@@ -20990,8 +21007,8 @@ Major mode for editing PLSTORE files.
 
 ;;;***
 
-;;;### (autoloads nil "po" "textmodes/po.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "po" "textmodes/po.el" (21678 60840 457786
+;;;;;;  630000))
 ;;; Generated autoloads from textmodes/po.el
 
 (autoload 'po-find-file-coding-system "po" "\
@@ -21002,7 +21019,7 @@ Called through `file-coding-system-alist', before the 
file is visited for real.
 
 ;;;***
 
-;;;### (autoloads nil "pong" "play/pong.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "pong" "play/pong.el" (21678 60840 209776 710000))
 ;;; Generated autoloads from play/pong.el
 
 (autoload 'pong "pong" "\
@@ -21018,7 +21035,7 @@ pong-mode keybindings:\\<pong-mode-map>
 
 ;;;***
 
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (21678 60839 725757 297000))
 ;;; Generated autoloads from gnus/pop3.el
 
 (autoload 'pop3-movemail "pop3" "\
@@ -21029,8 +21046,8 @@ Use streaming commands.
 
 ;;;***
 
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21678 60839 485747
+;;;;;;  653000))
 ;;; Generated autoloads from emacs-lisp/pp.el
 
 (autoload 'pp-to-string "pp" "\
@@ -21080,8 +21097,8 @@ Ignores leading comment characters.
 
 ;;;***
 
-;;;### (autoloads nil "printing" "printing.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "printing" "printing.el" (21678 60840 217777
+;;;;;;  30000))
 ;;; Generated autoloads from printing.el
 (push (purecopy '(printing 6 9 3)) package--builtin-versions)
 
@@ -21669,7 +21686,7 @@ are both set to t.
 
 ;;;***
 
-;;;### (autoloads nil "proced" "proced.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "proced" "proced.el" (21678 60840 217777 30000))
 ;;; Generated autoloads from proced.el
 
 (autoload 'proced "proced" "\
@@ -21687,8 +21704,8 @@ Proced buffers.
 
 ;;;***
 
-;;;### (autoloads nil "profiler" "profiler.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "profiler" "profiler.el" (21678 60840 217777
+;;;;;;  30000))
 ;;; Generated autoloads from profiler.el
 
 (autoload 'profiler-start "profiler" "\
@@ -21716,8 +21733,8 @@ Open profile FILENAME.
 
 ;;;***
 
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21678 60840
+;;;;;;  329781 510000))
 ;;; Generated autoloads from progmodes/prolog.el
 
 (autoload 'prolog-mode "prolog" "\
@@ -21750,7 +21767,7 @@ With prefix argument ARG, restart the Prolog process if 
running before.
 
 ;;;***
 
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21678 60840 377783 430000))
 ;;; Generated autoloads from ps-bdf.el
 
 (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list 
(expand-file-name "fonts/bdf" installation-directory)) 
'("/usr/local/share/emacs/fonts/bdf")) "\
@@ -21761,8 +21778,8 @@ The default value is 
'(\"/usr/local/share/emacs/fonts/bdf\").")
 
 ;;;***
 
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21678 60840
+;;;;;;  333781 670000))
 ;;; Generated autoloads from progmodes/ps-mode.el
 (push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
 
@@ -21808,8 +21825,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when 
the cursor is at the number
 
 ;;;***
 
-;;;### (autoloads nil "ps-print" "ps-print.el" (21670 32624 385626
-;;;;;;  484000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (21678 60840 385783
+;;;;;;  750000))
 ;;; Generated autoloads from ps-print.el
 (push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
 
@@ -22006,15 +22023,15 @@ If EXTENSION is any other symbol, it is ignored.
 
 ;;;***
 
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (21678 60839 349742
+;;;;;;  188000))
 ;;; Generated autoloads from cedet/pulse.el
 (push (purecopy '(pulse 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "python" "progmodes/python.el" (21781 11826
-;;;;;;  448890 994000))
+;;;### (autoloads nil "python" "progmodes/python.el" (21803 61751
+;;;;;;  297340 476000))
 ;;; Generated autoloads from progmodes/python.el
 (push (purecopy '(python 0 24 5)) package--builtin-versions)
 
@@ -22051,7 +22068,7 @@ Major mode for editing Python files.
 
 ;;;***
 
-;;;### (autoloads nil "qp" "gnus/qp.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "qp" "gnus/qp.el" (21678 60839 725757 297000))
 ;;; Generated autoloads from gnus/qp.el
 
 (autoload 'quoted-printable-decode-region "qp" "\
@@ -22070,8 +22087,8 @@ them into characters should be done separately.
 
 ;;;***
 
-;;;### (autoloads nil "quail" "international/quail.el" (21761 26543
-;;;;;;  734945 674000))
+;;;### (autoloads nil "quail" "international/quail.el" (21760 22311
+;;;;;;  618792 686000))
 ;;; Generated autoloads from international/quail.el
 
 (autoload 'quail-title "quail" "\
@@ -22302,7 +22319,7 @@ of each directory.
 ;;;***
 
 ;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21770
-;;;;;;  41522 196747 399000))
+;;;;;;  15582 625546 353000))
 ;;; Generated autoloads from leim/quail/hangul.el
 
 (autoload 'hangul-input-method-activate "quail/hangul" "\
@@ -22315,7 +22332,7 @@ HELP-TEXT is a text set in 
`hangul-input-method-help-text'.
 ;;;***
 
 ;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 861762 763000))
 ;;; Generated autoloads from leim/quail/uni-input.el
 
 (autoload 'ucs-input-activate "quail/uni-input" "\
@@ -22329,8 +22346,8 @@ While this input method is active, the variable
 
 ;;;***
 
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (21678 60839 985767
+;;;;;;  746000))
 ;;; Generated autoloads from net/quickurl.el
 
 (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn 
(require 'quickurl) (add-hook 'local-write-file-hooks (lambda () 
(quickurl-read) nil)))\n;; End:\n" "\
@@ -22401,8 +22418,8 @@ Display `quickurl-list' as a formatted list using 
`quickurl-list-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (21799 25426 601363
+;;;;;;  687000))
 ;;; Generated autoloads from net/rcirc.el
 
 (autoload 'rcirc "rcirc" "\
@@ -22440,8 +22457,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21678
+;;;;;;  60839 489747 814000))
 ;;; Generated autoloads from emacs-lisp/re-builder.el
 
 (defalias 'regexp-builder 're-builder)
@@ -22459,8 +22476,8 @@ matching parts of the target buffer will be highlighted.
 
 ;;;***
 
-;;;### (autoloads nil "recentf" "recentf.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "recentf" "recentf.el" (21678 60840 385783
+;;;;;;  750000))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22486,7 +22503,7 @@ were operated on recently.
 
 ;;;***
 
-;;;### (autoloads nil "rect" "rect.el" (21733 50750 334730 5000))
+;;;### (autoloads nil "rect" "rect.el" (21803 61751 301340 310000))
 ;;; Generated autoloads from rect.el
 
 (autoload 'delete-rectangle "rect" "\
@@ -22626,8 +22643,8 @@ Activates the region if needed.  Only lasts until the 
region is deactivated.
 
 ;;;***
 
-;;;### (autoloads nil "refill" "textmodes/refill.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "refill" "textmodes/refill.el" (21678 60840
+;;;;;;  461786 791000))
 ;;; Generated autoloads from textmodes/refill.el
 
 (autoload 'refill-mode "refill" "\
@@ -22647,8 +22664,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' 
instead.
 
 ;;;***
 
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21704 50495
-;;;;;;  455324 752000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21804 3763
+;;;;;;  270436 337000))
 ;;; Generated autoloads from textmodes/reftex.el
 (autoload 'reftex-citation "reftex-cite" nil t)
 (autoload 'reftex-all-document-files "reftex-parse")
@@ -22702,7 +22719,7 @@ This enforces rescanning the buffer on next use.
 ;;;***
 
 ;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21743
-;;;;;;  190 195328 729000))
+;;;;;;  12185 613417 151000))
 ;;; Generated autoloads from textmodes/reftex-vars.el
 (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) 
(symbolp x))))
 (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) 
(symbolp x))))
@@ -22711,8 +22728,8 @@ This enforces rescanning the buffer on next use.
 
 ;;;***
 
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21678
+;;;;;;  60839 489747 814000))
 ;;; Generated autoloads from emacs-lisp/regexp-opt.el
 
 (autoload 'regexp-opt "regexp-opt" "\
@@ -22741,15 +22758,15 @@ This means the number of non-shy regexp grouping 
constructs
 
 ;;;***
 
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21678 60839 489747
+;;;;;;  814000))
 ;;; Generated autoloads from emacs-lisp/regi.el
 (push (purecopy '(regi 1 8)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (21678 60840
+;;;;;;  473787 271000))
 ;;; Generated autoloads from textmodes/remember.el
 (push (purecopy '(remember 2 0)) package--builtin-versions)
 
@@ -22803,7 +22820,7 @@ to turn the *scratch* buffer into your notes buffer.
 
 ;;;***
 
-;;;### (autoloads nil "repeat" "repeat.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "repeat" "repeat.el" (21678 60840 389783 910000))
 ;;; Generated autoloads from repeat.el
 (push (purecopy '(repeat 0 51)) package--builtin-versions)
 
@@ -22826,8 +22843,8 @@ recently executed command not bound to an input event\".
 
 ;;;***
 
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (21678 60839
+;;;;;;  873763 245000))
 ;;; Generated autoloads from mail/reporter.el
 
 (autoload 'reporter-submit-bug-report "reporter" "\
@@ -22858,8 +22875,8 @@ mail-sending package is used for editing and sending 
the message.
 
 ;;;***
 
-;;;### (autoloads nil "reposition" "reposition.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "reposition" "reposition.el" (21678 60840 389783
+;;;;;;  910000))
 ;;; Generated autoloads from reposition.el
 
 (autoload 'reposition-window "reposition" "\
@@ -22885,7 +22902,7 @@ first comment line visible (if point is in a comment).
 
 ;;;***
 
-;;;### (autoloads nil "reveal" "reveal.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "reveal" "reveal.el" (21678 60840 389783 910000))
 ;;; Generated autoloads from reveal.el
 
 (autoload 'reveal-mode "reveal" "\
@@ -22920,8 +22937,8 @@ the mode if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21678 60839 489747
+;;;;;;  814000))
 ;;; Generated autoloads from emacs-lisp/ring.el
 
 (autoload 'ring-p "ring" "\
@@ -22936,8 +22953,8 @@ Make a ring that can contain SIZE elements.
 
 ;;;***
 
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (21678 60839 985767
+;;;;;;  746000))
 ;;; Generated autoloads from net/rlogin.el
 
 (autoload 'rlogin "rlogin" "\
@@ -22981,8 +22998,8 @@ variable.
 
 ;;;***
 
-;;;### (autoloads nil "rmail" "mail/rmail.el" (21756 8970 306748
-;;;;;;  51000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (21797 54705 48905
+;;;;;;  274000))
 ;;; Generated autoloads from mail/rmail.el
 
 (defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23179,8 +23196,8 @@ Set PASSWORD to be used for retrieving mail from a POP 
or IMAP server.
 
 ;;;***
 
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21678 60839
+;;;;;;  885763 727000))
 ;;; Generated autoloads from mail/rmailout.el
 (put 'rmail-output-file-alist 'risky-local-variable t)
 
@@ -23244,8 +23261,8 @@ than appending to it.  Deletes the message after 
writing if
 
 ;;;***
 
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21678 60840
+;;;;;;  21769 189000))
 ;;; Generated autoloads from nxml/rng-cmpct.el
 
 (autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23256,8 +23273,8 @@ Return a pattern.
 
 ;;;***
 
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21678 60840
+;;;;;;  21769 189000))
 ;;; Generated autoloads from nxml/rng-nxml.el
 
 (autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23269,8 +23286,8 @@ Validation will be enabled if 
`rng-nxml-auto-validate-flag' is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21678 60840
+;;;;;;  25769 349000))
 ;;; Generated autoloads from nxml/rng-valid.el
 
 (autoload 'rng-validate-mode "rng-valid" "\
@@ -23300,8 +23317,8 @@ to use for finding the schema.
 
 ;;;***
 
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21678 60840 25769
+;;;;;;  349000))
 ;;; Generated autoloads from nxml/rng-xsd.el
 
 (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 
'rng-xsd-compile)
@@ -23328,8 +23345,8 @@ must be equal.
 
 ;;;***
 
-;;;### (autoloads nil "robin" "international/robin.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "robin" "international/robin.el" (21605 26936
+;;;;;;  840026 71000))
 ;;; Generated autoloads from international/robin.el
 
 (autoload 'robin-define-package "robin" "\
@@ -23361,7 +23378,7 @@ Start using robin package NAME, which is a string.
 
 ;;;***
 
-;;;### (autoloads nil "rot13" "rot13.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "rot13" "rot13.el" (21678 60840 393784 70000))
 ;;; Generated autoloads from rot13.el
 
 (autoload 'rot13 "rot13" "\
@@ -23398,8 +23415,8 @@ Toggle the use of ROT13 encoding for the current window.
 
 ;;;***
 
-;;;### (autoloads nil "rst" "textmodes/rst.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (21678 60840 477787
+;;;;;;  431000))
 ;;; Generated autoloads from textmodes/rst.el
  (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
 
@@ -23429,8 +23446,8 @@ for modes derived from Text mode, like Mail mode.
 
 ;;;***
 
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21771
-;;;;;;  62389 36768 739000))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21772
+;;;;;;  3649 133589 283000))
 ;;; Generated autoloads from progmodes/ruby-mode.el
 (push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
 
@@ -23447,8 +23464,8 @@ Major mode for editing Ruby code.
 
 ;;;***
 
-;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21678 60840 393784
+;;;;;;  70000))
 ;;; Generated autoloads from ruler-mode.el
 (push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
 
@@ -23466,8 +23483,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21678 60839 489747
+;;;;;;  814000))
 ;;; Generated autoloads from emacs-lisp/rx.el
 
 (autoload 'rx-to-string "rx" "\
@@ -23778,15 +23795,15 @@ enclosed in `(and ...)'.
 
 ;;;***
 
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21678 60839
+;;;;;;  989767 907000))
 ;;; Generated autoloads from net/sasl-ntlm.el
 (push (purecopy '(sasl 1 0)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "savehist" "savehist.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "savehist" "savehist.el" (21678 60840 393784
+;;;;;;  70000))
 ;;; Generated autoloads from savehist.el
 (push (purecopy '(savehist 24)) package--builtin-versions)
 
@@ -23818,8 +23835,8 @@ histories, which is probably undesirable.
 
 ;;;***
 
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21678 60840
+;;;;;;  337781 830000))
 ;;; Generated autoloads from progmodes/scheme.el
 
 (autoload 'scheme-mode "scheme" "\
@@ -23858,8 +23875,8 @@ that variable's value is a string.
 
 ;;;***
 
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21678 60839
+;;;;;;  725757 297000))
 ;;; Generated autoloads from gnus/score-mode.el
 
 (autoload 'gnus-score-mode "score-mode" "\
@@ -23872,8 +23889,8 @@ This mode is an extended emacs-lisp mode.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (21678 60840 393784
+;;;;;;  70000))
 ;;; Generated autoloads from scroll-all.el
 
 (defvar scroll-all-mode nil "\
@@ -23898,8 +23915,8 @@ one window apply to all visible windows in the same 
frame.
 
 ;;;***
 
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21678 60840
+;;;;;;  393784 70000))
 ;;; Generated autoloads from scroll-lock.el
 
 (autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23915,16 +23932,16 @@ vertically fixed relative to window boundaries during 
scrolling.
 
 ;;;***
 
-;;;### (autoloads nil "secrets" "net/secrets.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (21799 25450 636876
+;;;;;;  627000))
 ;;; Generated autoloads from net/secrets.el
 (when (featurep 'dbusbind)
  (autoload 'secrets-show-secrets "secrets" nil t))
 
 ;;;***
 
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (21679 47292
-;;;;;;  556033 759000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (21678 60854
+;;;;;;  970348 529000))
 ;;; Generated autoloads from cedet/semantic.el
 (push (purecopy '(semantic 2 2)) package--builtin-versions)
 
@@ -23982,7 +23999,7 @@ Semantic mode.
 ;;;***
 
 ;;;### (autoloads nil "semantic/bovine/grammar" 
"cedet/semantic/bovine/grammar.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (21678 60839 357742 509000))
 ;;; Generated autoloads from cedet/semantic/bovine/grammar.el
 
 (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -23993,7 +24010,7 @@ Major mode for editing Bovine grammars.
 ;;;***
 
 ;;;### (autoloads nil "semantic/wisent/grammar" 
"cedet/semantic/wisent/grammar.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (21678 60839 393743 956000))
 ;;; Generated autoloads from cedet/semantic/wisent/grammar.el
 
 (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -24003,8 +24020,8 @@ Major mode for editing Wisent grammars.
 
 ;;;***
 
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21786 29744
-;;;;;;  368212 633000))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21785 52256
+;;;;;;  612012 760000))
 ;;; Generated autoloads from mail/sendmail.el
 
 (defvar mail-from-style 'default "\
@@ -24285,14 +24302,14 @@ Like `mail' command, but display mail buffer in 
another frame.
 
 ;;;***
 
-;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21778 35636 244616
-;;;;;;  784000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21778 45004 713399
+;;;;;;  126000))
 ;;; Generated autoloads from emacs-lisp/seq.el
 (push (purecopy '(seq 1 3)) package--builtin-versions)
 
 ;;;***
 
-;;;### (autoloads nil "server" "server.el" (21744 21055 525326 515000))
+;;;### (autoloads nil "server" "server.el" (21744 29479 720733 839000))
 ;;; Generated autoloads from server.el
 
 (put 'server-host 'risky-local-variable t)
@@ -24359,7 +24376,7 @@ only these files will be asked to be saved.
 
 ;;;***
 
-;;;### (autoloads nil "ses" "ses.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "ses" "ses.el" (21804 4012 686064 51000))
 ;;; Generated autoloads from ses.el
 
 (autoload 'ses-mode "ses" "\
@@ -24403,8 +24420,8 @@ formula:
 
 ;;;***
 
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21775
-;;;;;;  59440 64641 144000))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21804
+;;;;;;  4012 698063 841000))
 ;;; Generated autoloads from textmodes/sgml-mode.el
 
 (autoload 'sgml-mode "sgml-mode" "\
@@ -24469,8 +24486,8 @@ To work around that, do:
 
 ;;;***
 
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21704
-;;;;;;  50495 455324 752000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21706
+;;;;;;  14224 297957 474000))
 ;;; Generated autoloads from progmodes/sh-script.el
 (push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
 (put 'sh-shell 'safe-local-variable 'symbolp)
@@ -24533,8 +24550,8 @@ with your script for an edit-interpret-debug cycle.
 
 ;;;***
 
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21678 60839
+;;;;;;  489747 814000))
 ;;; Generated autoloads from emacs-lisp/shadow.el
 
 (autoload 'list-load-path-shadows "shadow" "\
@@ -24583,8 +24600,8 @@ function, `load-path-shadows-find'.
 
 ;;;***
 
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (21678 60840 401784
+;;;;;;  390000))
 ;;; Generated autoloads from shadowfile.el
 
 (autoload 'shadow-define-cluster "shadowfile" "\
@@ -24622,7 +24639,7 @@ Set up file shadowing.
 
 ;;;***
 
-;;;### (autoloads nil "shell" "shell.el" (21678 26426 225333 737000))
+;;;### (autoloads nil "shell" "shell.el" (21678 60840 401784 390000))
 ;;; Generated autoloads from shell.el
 
 (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24670,7 +24687,7 @@ Otherwise, one argument `-i' is passed to the shell.
 
 ;;;***
 
-;;;### (autoloads nil "shr" "net/shr.el" (21748 18111 534605 274000))
+;;;### (autoloads nil "shr" "net/shr.el" (21756 63737 910472 761000))
 ;;; Generated autoloads from net/shr.el
 
 (autoload 'shr-render-region "shr" "\
@@ -24687,8 +24704,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "sieve" "gnus/sieve.el" (21678 60839 729757
+;;;;;;  458000))
 ;;; Generated autoloads from gnus/sieve.el
 
 (autoload 'sieve-manage "sieve" "\
@@ -24713,8 +24730,8 @@ DOM should be a parse tree as generated by
 
 ;;;***
 
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21678 60839
+;;;;;;  729757 458000))
 ;;; Generated autoloads from gnus/sieve-mode.el
 
 (autoload 'sieve-mode "sieve-mode" "\
@@ -24729,8 +24746,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "simula" "progmodes/simula.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (21678 60840
+;;;;;;  345782 150000))
 ;;; Generated autoloads from progmodes/simula.el
 
 (autoload 'simula-mode "simula" "\
@@ -24778,8 +24795,8 @@ with no arguments, if that value is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "skeleton" "skeleton.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (21678 60840 409784
+;;;;;;  710000))
 ;;; Generated autoloads from skeleton.el
 
 (defvar skeleton-filter-function 'identity "\
@@ -24897,8 +24914,8 @@ symmetrical ones, and the same character twice for the 
others.
 
 ;;;***
 
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21678 60840
+;;;;;;  537789 831000))
 ;;; Generated autoloads from vc/smerge-mode.el
 
 (autoload 'smerge-ediff "smerge-mode" "\
@@ -24925,8 +24942,8 @@ If no conflict maker is found, turn off `smerge-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (21678 60839 729757
+;;;;;;  458000))
 ;;; Generated autoloads from gnus/smiley.el
 
 (autoload 'smiley-region "smiley" "\
@@ -24943,8 +24960,8 @@ interactively.  If there's no argument, do it at the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21678 60839
+;;;;;;  889763 888000))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload 'smtpmail-send-it "smtpmail" "\
@@ -24959,8 +24976,8 @@ Send mail that was queued as a result of setting 
`smtpmail-queue-mail'.
 
 ;;;***
 
-;;;### (autoloads nil "snake" "play/snake.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "snake" "play/snake.el" (21678 60840 209776
+;;;;;;  710000))
 ;;; Generated autoloads from play/snake.el
 
 (autoload 'snake "snake" "\
@@ -24983,8 +25000,8 @@ Snake mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21678 60839
+;;;;;;  989767 907000))
 ;;; Generated autoloads from net/snmp-mode.el
 
 (autoload 'snmp-mode "snmp-mode" "\
@@ -25013,8 +25030,8 @@ then `snmpv2-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "solar" "calendar/solar.el" (21735 6077 666769
-;;;;;;  364000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (21735 24088 384215
+;;;;;;  80000))
 ;;; Generated autoloads from calendar/solar.el
 
 (autoload 'sunrise-sunset "solar" "\
@@ -25029,8 +25046,8 @@ This function is suitable for execution in an init file.
 
 ;;;***
 
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (21678 60840
+;;;;;;  209776 710000))
 ;;; Generated autoloads from play/solitaire.el
 
 (autoload 'solitaire "solitaire" "\
@@ -25105,7 +25122,7 @@ Pick your favorite shortcuts:
 
 ;;;***
 
-;;;### (autoloads nil "sort" "sort.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "sort" "sort.el" (21678 60840 409784 710000))
 ;;; Generated autoloads from sort.el
 (put 'sort-fold-case 'safe-local-variable 'booleanp)
 
@@ -25280,7 +25297,7 @@ is non-nil, it also prints a message describing the 
number of deletions.
 
 ;;;***
 
-;;;### (autoloads nil "spam" "gnus/spam.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (21678 60839 733757 619000))
 ;;; Generated autoloads from gnus/spam.el
 
 (autoload 'spam-initialize "spam" "\
@@ -25294,8 +25311,8 @@ installed through `spam-necessary-extra-headers'.
 
 ;;;***
 
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21678
+;;;;;;  60839 729757 458000))
 ;;; Generated autoloads from gnus/spam-report.el
 
 (autoload 'spam-report-process-queue "spam-report" "\
@@ -25337,8 +25354,8 @@ Spam reports will be queued with the method used when
 
 ;;;***
 
-;;;### (autoloads nil "speedbar" "speedbar.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "speedbar" "speedbar.el" (21678 60840 413784
+;;;;;;  870000))
 ;;; Generated autoloads from speedbar.el
 
 (defalias 'speedbar 'speedbar-frame-mode)
@@ -25362,8 +25379,8 @@ selected.  If the speedbar frame is active, then select 
the attached frame.
 
 ;;;***
 
-;;;### (autoloads nil "spook" "play/spook.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "spook" "play/spook.el" (21678 60840 209776
+;;;;;;  710000))
 ;;; Generated autoloads from play/spook.el
 
 (autoload 'spook "spook" "\
@@ -25378,8 +25395,8 @@ Return a vector containing the lines from 
`spook-phrases-file'.
 
 ;;;***
 
-;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 23600 805241
-;;;;;;  145000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 52461 396136
+;;;;;;  269000))
 ;;; Generated autoloads from progmodes/sql.el
 (push (purecopy '(sql 3 5)) package--builtin-versions)
 
@@ -25845,15 +25862,15 @@ Run vsql as an inferior process.
 
 ;;;***
 
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (21678 60839 393743
+;;;;;;  956000))
 ;;; Generated autoloads from cedet/srecode.el
 (push (purecopy '(srecode 1 2)) package--builtin-versions)
 
 ;;;***
 
 ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;;  (21670 32330 885624 725000))
+;;;;;;  (21678 60839 401744 277000))
 ;;; Generated autoloads from cedet/srecode/srt-mode.el
 
 (autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25865,8 +25882,8 @@ Major-mode for writing SRecode macros.
 
 ;;;***
 
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "starttls" "gnus/starttls.el" (21678 60839
+;;;;;;  733757 619000))
 ;;; Generated autoloads from gnus/starttls.el
 
 (autoload 'starttls-open-stream "starttls" "\
@@ -25889,8 +25906,8 @@ GnuTLS requires a port number.
 
 ;;;***
 
-;;;### (autoloads nil "strokes" "strokes.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "strokes" "strokes.el" (21678 60840 417785
+;;;;;;  31000))
 ;;; Generated autoloads from strokes.el
 
 (autoload 'strokes-global-set-stroke "strokes" "\
@@ -26003,8 +26020,8 @@ Read a complex stroke and insert its glyph into the 
current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "studly" "play/studly.el" (21607 54478 800121
-;;;;;;  42000))
+;;;### (autoloads nil "studly" "play/studly.el" (21605 26937 380015
+;;;;;;  699000))
 ;;; Generated autoloads from play/studly.el
 
 (autoload 'studlify-region "studly" "\
@@ -26024,8 +26041,8 @@ Studlify-case the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "subword" "progmodes/subword.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "subword" "progmodes/subword.el" (21678 60840
+;;;;;;  349782 310000))
 ;;; Generated autoloads from progmodes/subword.el
 
 (define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
@@ -26117,8 +26134,8 @@ See `superword-mode' for more information on Superword 
mode.
 
 ;;;***
 
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (21678 60839
+;;;;;;  889763 888000))
 ;;; Generated autoloads from mail/supercite.el
 
 (autoload 'sc-cite-original "supercite" "\
@@ -26150,8 +26167,8 @@ and `sc-post-hook' is run after the guts of this 
function.
 
 ;;;***
 
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (21678 60840 421785
+;;;;;;  191000))
 ;;; Generated autoloads from t-mouse.el
 
 (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26179,7 +26196,7 @@ It relies on the `gpm' daemon being activated.
 
 ;;;***
 
-;;;### (autoloads nil "tabify" "tabify.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "tabify" "tabify.el" (21678 60840 421785 191000))
 ;;; Generated autoloads from tabify.el
 
 (autoload 'untabify "tabify" "\
@@ -26208,8 +26225,8 @@ The variable `tab-width' controls the spacing of tab 
stops.
 
 ;;;***
 
-;;;### (autoloads nil "table" "textmodes/table.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "table" "textmodes/table.el" (21804 4012 706063
+;;;;;;  701000))
 ;;; Generated autoloads from textmodes/table.el
 
 (defvar table-cell-map-hook nil "\
@@ -26801,7 +26818,7 @@ converts a table into plain text without frames.  It is 
a companion to
 
 ;;;***
 
-;;;### (autoloads nil "talk" "talk.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "talk" "talk.el" (21678 60840 421785 191000))
 ;;; Generated autoloads from talk.el
 
 (autoload 'talk-connect "talk" "\
@@ -26816,8 +26833,8 @@ Connect to the Emacs talk group from the current X 
display or tty frame.
 
 ;;;***
 
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21704 50495 455324
-;;;;;;  752000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (21706 14224 305956
+;;;;;;  524000))
 ;;; Generated autoloads from tar-mode.el
 
 (autoload 'tar-mode "tar-mode" "\
@@ -26840,8 +26857,8 @@ See also: variables `tar-update-datestamp' and 
`tar-anal-blocksize'.
 
 ;;;***
 
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21678 60840 349782
+;;;;;;  310000))
 ;;; Generated autoloads from progmodes/tcl.el
 
 (autoload 'tcl-mode "tcl" "\
@@ -26889,8 +26906,8 @@ Prefix argument means invert sense of 
`tcl-use-smart-word-finder'.
 
 ;;;***
 
-;;;### (autoloads nil "telnet" "net/telnet.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (21678 60839 993768
+;;;;;;  67000))
 ;;; Generated autoloads from net/telnet.el
 
 (autoload 'telnet "telnet" "\
@@ -26915,7 +26932,7 @@ Normally input is edited in Emacs and sent a line at a 
time.
 
 ;;;***
 
-;;;### (autoloads nil "term" "term.el" (21775 59440 64641 144000))
+;;;### (autoloads nil "term" "term.el" (21798 37736 247770 610000))
 ;;; Generated autoloads from term.el
 
 (autoload 'make-term "term" "\
@@ -26957,8 +26974,8 @@ use in that buffer.
 
 ;;;***
 
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21678
+;;;;;;  60839 497748 135000))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload 'testcover-this-defun "testcover" "\
@@ -26968,8 +26985,8 @@ Start coverage on function under point.
 
 ;;;***
 
-;;;### (autoloads nil "tetris" "play/tetris.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (21678 60840 209776
+;;;;;;  710000))
 ;;; Generated autoloads from play/tetris.el
 (push (purecopy '(tetris 2 1)) package--builtin-versions)
 
@@ -26994,8 +27011,8 @@ tetris-mode keybindings:
 
 ;;;***
 
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21678 60840
+;;;;;;  485787 751000))
 ;;; Generated autoloads from textmodes/tex-mode.el
 
 (defvar tex-shell-file-name nil "\
@@ -27296,8 +27313,8 @@ Major mode to edit DocTeX files.
 
 ;;;***
 
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21678 60840
+;;;;;;  489787 911000))
 ;;; Generated autoloads from textmodes/texinfmt.el
 
 (autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27336,8 +27353,8 @@ if large.  You can use `Info-split' to do this manually.
 
 ;;;***
 
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21678 60840
+;;;;;;  489787 911000))
 ;;; Generated autoloads from textmodes/texinfo.el
 
 (defvar texinfo-open-quote (purecopy "``") "\
@@ -27421,8 +27438,8 @@ value of `texinfo-mode-hook'.
 
 ;;;***
 
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (21678
+;;;;;;  60839 817760 994000))
 ;;; Generated autoloads from language/thai-util.el
 
 (autoload 'thai-compose-region "thai-util" "\
@@ -27449,8 +27466,8 @@ Compose Thai characters in the current buffer.
 
 ;;;***
 
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (21678 60840 493788
+;;;;;;  71000))
 ;;; Generated autoloads from thingatpt.el
 
 (autoload 'forward-thing "thingatpt" "\
@@ -27514,7 +27531,7 @@ Return the Lisp list at point, or nil if none is found.
 
 ;;;***
 
-;;;### (autoloads nil "thumbs" "thumbs.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (21678 60840 493788 71000))
 ;;; Generated autoloads from thumbs.el
 
 (autoload 'thumbs-find-thumb "thumbs" "\
@@ -27548,8 +27565,8 @@ In dired, call the setroot program on the image at 
point.
 
 ;;;***
 
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21678
+;;;;;;  60839 817760 994000))
 ;;; Generated autoloads from language/tibet-util.el
 
 (autoload 'tibetan-char-p "tibet-util" "\
@@ -27622,8 +27639,8 @@ See also docstring of the function 
tibetan-compose-region.
 
 ;;;***
 
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21695 35516
-;;;;;;  595262 313000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21694 48017
+;;;;;;  622101 735000))
 ;;; Generated autoloads from textmodes/tildify.el
 (push (purecopy '(tildify 4 6 1)) package--builtin-versions)
 
@@ -27689,7 +27706,7 @@ variable will be set to the representation.
 
 ;;;***
 
-;;;### (autoloads nil "time" "time.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "time" "time.el" (21678 60840 493788 71000))
 ;;; Generated autoloads from time.el
 
 (defvar display-time-day-and-date nil "\
@@ -27751,8 +27768,8 @@ Return a string giving the duration of the Emacs 
initialization.
 
 ;;;***
 
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (21678
+;;;;;;  60839 321741 62000))
 ;;; Generated autoloads from calendar/time-date.el
 
 (autoload 'date-to-time "time-date" "\
@@ -27855,8 +27872,8 @@ Convert the time interval in seconds to a short string.
 
 ;;;***
 
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (21678 60840 493788
+;;;;;;  71000))
 ;;; Generated autoloads from time-stamp.el
 (put 'time-stamp-format 'safe-local-variable 'stringp)
 (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -27896,8 +27913,8 @@ With ARG, turn time stamping on if and only if arg is 
positive.
 
 ;;;***
 
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21678
+;;;;;;  60839 321741 62000))
 ;;; Generated autoloads from calendar/timeclock.el
 (push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
 
@@ -28007,7 +28024,7 @@ relative only to the time worked today, and not to past 
time.
 ;;;***
 
 ;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 785759 709000))
 ;;; Generated autoloads from international/titdic-cnv.el
 
 (autoload 'titdic-convert "titdic-cnv" "\
@@ -28029,7 +28046,7 @@ To get complete usage, invoke \"emacs -batch -f 
batch-titdic-convert -h\".
 
 ;;;***
 
-;;;### (autoloads nil "tmm" "tmm.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "tmm" "tmm.el" (21678 60840 497788 230000))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -28071,8 +28088,8 @@ Its value should be an event that has a binding in MENU.
 
 ;;;***
 
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21750
-;;;;;;  59840 206034 761000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21756
+;;;;;;  63737 814475 170000))
 ;;; Generated autoloads from calendar/todo-mode.el
 
 (autoload 'todo-show "todo-mode" "\
@@ -28139,8 +28156,8 @@ Mode for displaying and reprioritizing top priority 
Todo.
 
 ;;;***
 
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (21678 60840 497788
+;;;;;;  230000))
 ;;; Generated autoloads from tool-bar.el
 
 (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28210,8 +28227,8 @@ holds a keymap.
 
 ;;;***
 
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21678 60839 497748
+;;;;;;  135000))
 ;;; Generated autoloads from emacs-lisp/tq.el
 
 (autoload 'tq-create "tq" "\
@@ -28224,8 +28241,8 @@ to a tcp server on another machine.
 
 ;;;***
 
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21741 17831
+;;;;;;  261102 632000))
 ;;; Generated autoloads from emacs-lisp/trace.el
 
 (defvar trace-buffer "*trace-output*" "\
@@ -28270,8 +28287,8 @@ the output buffer or changing the window configuration.
 
 ;;;***
 
-;;;### (autoloads nil "tramp" "net/tramp.el" (21766 44463 655319
-;;;;;;  936000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (21765 52461 392136
+;;;;;;  351000))
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-mode t "\
@@ -28386,8 +28403,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21678 60839
+;;;;;;  997768 228000))
 ;;; Generated autoloads from net/tramp-ftp.el
 
 (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28397,8 +28414,8 @@ Discard Tramp from loading remote files.
 
 ;;;***
 
-;;;### (autoloads nil "tutorial" "tutorial.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "tutorial" "tutorial.el" (21678 60840 497788
+;;;;;;  230000))
 ;;; Generated autoloads from tutorial.el
 
 (autoload 'help-with-tutorial "tutorial" "\
@@ -28422,8 +28439,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (21607 54478
-;;;;;;  300138 641000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (21605 26936
+;;;;;;  888025 150000))
 ;;; Generated autoloads from language/tv-util.el
 
 (autoload 'tai-viet-composition-function "tv-util" "\
@@ -28433,8 +28450,8 @@ resumed later.
 
 ;;;***
 
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21678
+;;;;;;  60840 493788 71000))
 ;;; Generated autoloads from textmodes/two-column.el
  (autoload '2C-command "two-column" () t 'keymap)
  (global-set-key "\C-x6" '2C-command)
@@ -28481,8 +28498,8 @@ First column's text    sSs  Second column's text
 
 ;;;***
 
-;;;### (autoloads nil "type-break" "type-break.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "type-break" "type-break.el" (21678 60840 497788
+;;;;;;  230000))
 ;;; Generated autoloads from type-break.el
 
 (defvar type-break-mode nil "\
@@ -28614,7 +28631,7 @@ FRAC should be the inverse of the fractional value; for 
example, a value of
 
 ;;;***
 
-;;;### (autoloads nil "uce" "mail/uce.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "uce" "mail/uce.el" (21678 60839 889763 888000))
 ;;; Generated autoloads from mail/uce.el
 
 (autoload 'uce-reply-to-uce "uce" "\
@@ -28628,7 +28645,7 @@ You might need to set `uce-mail-reader' before using 
this.
 ;;;***
 
 ;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;;  (21670 32331 385639 720000))
+;;;;;;  (21678 60839 785759 709000))
 ;;; Generated autoloads from international/ucs-normalize.el
 
 (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28693,8 +28710,8 @@ Normalize the string STR by the Unicode NFC and Mac 
OS's HFS Plus.
 
 ;;;***
 
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (21678
+;;;;;;  60840 493788 71000))
 ;;; Generated autoloads from textmodes/underline.el
 
 (autoload 'underline-region "underline" "\
@@ -28714,8 +28731,8 @@ which specify the range to operate on.
 
 ;;;***
 
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21678 60839 893764
+;;;;;;  49000))
 ;;; Generated autoloads from mail/unrmail.el
 
 (autoload 'batch-unrmail "unrmail" "\
@@ -28735,8 +28752,8 @@ The variable `unrmail-mbox-format' controls which mbox 
format to use.
 
 ;;;***
 
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21670 32330
-;;;;;;  885624 725000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21678 60839
+;;;;;;  497748 135000))
 ;;; Generated autoloads from emacs-lisp/unsafep.el
 
 (autoload 'unsafep "unsafep" "\
@@ -28748,7 +28765,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "url" "url/url.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "url" "url/url.el" (21678 60840 513788 871000))
 ;;; Generated autoloads from url/url.el
 
 (autoload 'url-retrieve "url" "\
@@ -28795,8 +28812,8 @@ no further processing).  URL is either a string or a 
parsed URL.
 
 ;;;***
 
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (21678 60840 501788
+;;;;;;  391000))
 ;;; Generated autoloads from url/url-auth.el
 
 (autoload 'url-get-authentication "url-auth" "\
@@ -28837,8 +28854,8 @@ RATING   a rating between 1 and 10 of the strength of 
the authentication.
 
 ;;;***
 
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (21678 60840
+;;;;;;  501788 391000))
 ;;; Generated autoloads from url/url-cache.el
 
 (autoload 'url-store-in-cache "url-cache" "\
@@ -28859,8 +28876,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (21678 60840 501788
+;;;;;;  391000))
 ;;; Generated autoloads from url/url-cid.el
 
 (autoload 'url-cid "url-cid" "\
@@ -28870,8 +28887,8 @@ Extract FNAM from the local disk cache.
 
 ;;;***
 
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (21696 56380 925320
-;;;;;;  624000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (21697 290 540850
+;;;;;;  262000))
 ;;; Generated autoloads from url/url-dav.el
 
 (autoload 'url-dav-supported-p "url-dav" "\
@@ -28905,8 +28922,8 @@ added to this list, so most requests can just pass in 
nil.
 
 ;;;***
 
-;;;### (autoloads nil "url-file" "url/url-file.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (21678 60840 505788
+;;;;;;  551000))
 ;;; Generated autoloads from url/url-file.el
 
 (autoload 'url-file "url-file" "\
@@ -28916,8 +28933,8 @@ Handle file: and ftp: URLs.
 
 ;;;***
 
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (21678 60840 505788
+;;;;;;  551000))
 ;;; Generated autoloads from url/url-gw.el
 
 (autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28938,8 +28955,8 @@ overriding the value of `url-gateway-method'.
 
 ;;;***
 
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21766
-;;;;;;  44463 655319 936000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21765
+;;;;;;  52463 696089 51000))
 ;;; Generated autoloads from url/url-handlers.el
 
 (defvar url-handler-mode nil "\
@@ -28993,8 +29010,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-http" "url/url-http.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-http" "url/url-http.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-http.el
  (autoload 'url-default-expander "url-expand")
 
@@ -29006,8 +29023,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-irc.el
 
 (autoload 'url-irc "url-irc" "\
@@ -29017,8 +29034,8 @@ accessible.
 
 ;;;***
 
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-ldap.el
 
 (autoload 'url-ldap "url-ldap" "\
@@ -29031,8 +29048,8 @@ URL can be a URL string, or a URL vector of the type 
returned by
 
 ;;;***
 
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21678 60840
+;;;;;;  509788 711000))
 ;;; Generated autoloads from url/url-mailto.el
 
 (autoload 'url-mail "url-mailto" "\
@@ -29047,8 +29064,8 @@ Handle the mailto: URL syntax.
 
 ;;;***
 
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-misc.el
 
 (autoload 'url-man "url-misc" "\
@@ -29079,8 +29096,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-news" "url/url-news.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-news.el
 
 (autoload 'url-news "url-news" "\
@@ -29095,8 +29112,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (21678 60840 509788
+;;;;;;  711000))
 ;;; Generated autoloads from url/url-ns.el
 
 (autoload 'isPlainHostName "url-ns" "\
@@ -29136,8 +29153,8 @@ Fetch a data URL (RFC 2397).
 
 ;;;***
 
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (21678 60840
+;;;;;;  509788 711000))
 ;;; Generated autoloads from url/url-parse.el
 
 (autoload 'url-recreate-url "url-parse" "\
@@ -29188,8 +29205,8 @@ parses to
 
 ;;;***
 
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21678 60840
+;;;;;;  509788 711000))
 ;;; Generated autoloads from url/url-privacy.el
 
 (autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29199,8 +29216,8 @@ Setup variables that expose info about you and your 
system.
 
 ;;;***
 
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (21678 60840
+;;;;;;  509788 711000))
 ;;; Generated autoloads from url/url-queue.el
 
 (autoload 'url-queue-retrieve "url-queue" "\
@@ -29214,8 +29231,8 @@ The variable `url-queue-timeout' sets a timeout.
 
 ;;;***
 
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21678 60840
+;;;;;;  509788 711000))
 ;;; Generated autoloads from url/url-tramp.el
 
 (defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
@@ -29233,8 +29250,8 @@ would have been passed to OPERATION.
 
 ;;;***
 
-;;;### (autoloads nil "url-util" "url/url-util.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (21678 60840 513788
+;;;;;;  871000))
 ;;; Generated autoloads from url/url-util.el
 
 (defvar url-debug nil "\
@@ -29402,8 +29419,8 @@ This uses `url-current-object', set locally to the 
buffer.
 
 ;;;***
 
-;;;### (autoloads nil "userlock" "userlock.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "userlock" "userlock.el" (21678 60840 513788
+;;;;;;  871000))
 ;;; Generated autoloads from userlock.el
 
 (autoload 'ask-user-about-lock "userlock" "\
@@ -29431,8 +29448,8 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (21678 60839
+;;;;;;  785759 709000))
 ;;; Generated autoloads from international/utf-7.el
 
 (autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29457,7 +29474,7 @@ The buffer in question is current when this function is 
called.
 
 ;;;***
 
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "utf7" "gnus/utf7.el" (21678 60839 733757 619000))
 ;;; Generated autoloads from gnus/utf7.el
 
 (autoload 'utf7-encode "utf7" "\
@@ -29467,8 +29484,8 @@ Encode UTF-7 STRING.  Use IMAP modification if FOR-IMAP 
is non-nil.
 
 ;;;***
 
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21670 32331
-;;;;;;  385639 720000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21678 60839
+;;;;;;  893764 49000))
 ;;; Generated autoloads from mail/uudecode.el
 
 (autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29492,7 +29509,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
 
 ;;;***
 
-;;;### (autoloads nil "vc" "vc/vc.el" (21748 18111 534605 274000))
+;;;### (autoloads nil "vc" "vc/vc.el" (21756 63738 30469 750000))
 ;;; Generated autoloads from vc/vc.el
 
 (defvar vc-checkout-hook nil "\
@@ -29789,8 +29806,8 @@ Return the branch part of a revision number REV.
 
 ;;;***
 
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21670 32331
-;;;;;;  885635 586000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21678 60840
+;;;;;;  537789 831000))
 ;;; Generated autoloads from vc/vc-annotate.el
 
 (autoload 'vc-annotate "vc-annotate" "\
@@ -29829,8 +29846,8 @@ should be applied to the background or to the 
foreground.
 
 ;;;***
 
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21743 64718 144093
+;;;;;;  773000))
 ;;; Generated autoloads from vc/vc-bzr.el
 
 (defconst vc-bzr-admin-dirname ".bzr" "\
@@ -29846,8 +29863,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21743 64718 148093
+;;;;;;  697000))
 ;;; Generated autoloads from vc/vc-cvs.el
 (defun vc-cvs-registered (f)
   "Return non-nil if file F is registered with CVS."
@@ -29858,8 +29875,8 @@ Name of the format file in a .bzr directory.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21694 14651 747488
-;;;;;;  989000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21694 48017 622101
+;;;;;;  735000))
 ;;; Generated autoloads from vc/vc-dir.el
 
 (autoload 'vc-dir "vc-dir" "\
@@ -29883,8 +29900,8 @@ These are the commands available for use in the file 
status buffer:
 
 ;;;***
 
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21803
+;;;;;;  61751 309339 979000))
 ;;; Generated autoloads from vc/vc-dispatcher.el
 
 (autoload 'vc-do-command "vc-dispatcher" "\
@@ -29907,8 +29924,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21743 64718 148093
+;;;;;;  697000))
 ;;; Generated autoloads from vc/vc-git.el
  (defun vc-git-registered (file)
   "Return non-nil if FILE is registered with git."
@@ -29919,7 +29936,7 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21744 21055 525326 515000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21743 64718 148093 697000))
 ;;; Generated autoloads from vc/vc-hg.el
  (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
@@ -29930,8 +29947,8 @@ case, and the process object in the asynchronous case.
 
 ;;;***
 
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21743 64718 148093
+;;;;;;  697000))
 ;;; Generated autoloads from vc/vc-mtn.el
 
 (defconst vc-mtn-admin-dir "_MTN" "\
@@ -29947,8 +29964,8 @@ Name of the monotone directory's format file.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21748 18111 534605
-;;;;;;  274000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21756 63738 26469
+;;;;;;  850000))
 ;;; Generated autoloads from vc/vc-rcs.el
 
 (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) 
"\
@@ -29961,8 +29978,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21748 18111 534605
-;;;;;;  274000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21756 63738 26469
+;;;;;;  850000))
 ;;; Generated autoloads from vc/vc-sccs.el
 
 (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" 
vc-sccs-search-project-dir)) "\
@@ -29980,8 +29997,8 @@ find any project directory." (let ((project-dir (getenv 
"PROJECTDIR")) dirs dir)
 
 ;;;***
 
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21748 18111 534605
-;;;;;;  274000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21756 63738 26469
+;;;;;;  850000))
 ;;; Generated autoloads from vc/vc-src.el
 
 (defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
@@ -29994,8 +30011,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21744 21055 525326
-;;;;;;  515000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21743 64718 148093
+;;;;;;  697000))
 ;;; Generated autoloads from vc/vc-svn.el
  (defun vc-svn-registered (f)
   (let ((admin-dir (cond ((and (eq system-type 'windows-nt)
@@ -30008,8 +30025,8 @@ For a description of possible values, see 
`vc-check-master-templates'.")
 
 ;;;***
 
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21678
+;;;;;;  60840 349782 310000))
 ;;; Generated autoloads from progmodes/vera-mode.el
 (push (purecopy '(vera-mode 2 28)) package--builtin-versions)
  (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'")  'vera-mode))
@@ -30068,7 +30085,7 @@ Key bindings:
 ;;;***
 
 ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;;  (21735 54828 874639 640000))
+;;;;;;  (21737 7371 369619 402000))
 ;;; Generated autoloads from progmodes/verilog-mode.el
 
 (autoload 'verilog-mode "verilog-mode" "\
@@ -30207,8 +30224,8 @@ Key bindings specific to `verilog-mode-map' are:
 
 ;;;***
 
-;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21735
-;;;;;;  53834 375321 1000))
+;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21799
+;;;;;;  14913 220433 536000))
 ;;; Generated autoloads from progmodes/vhdl-mode.el
 
 (autoload 'vhdl-mode "vhdl-mode" "\
@@ -30762,8 +30779,8 @@ Key bindings:
 
 ;;;***
 
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (21670
-;;;;;;  32331 385639 720000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (21678
+;;;;;;  60839 821761 156000))
 ;;; Generated autoloads from language/viet-util.el
 
 (autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30807,7 +30824,7 @@ Convert Vietnamese characters of the current buffer to 
`VIQR' mnemonics.
 
 ;;;***
 
-;;;### (autoloads nil "view" "view.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "view" "view.el" (21678 60840 553790 471000))
 ;;; Generated autoloads from view.el
 
 (defvar view-remove-frame-by-deleting t "\
@@ -31063,8 +31080,8 @@ Exit View mode and make the current buffer editable.
 
 ;;;***
 
-;;;### (autoloads nil "viper" "emulation/viper.el" (21670 32330 885624
-;;;;;;  725000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (21678 60839 513748
+;;;;;;  778000))
 ;;; Generated autoloads from emulation/viper.el
 (push (purecopy '(viper 3 14 1)) package--builtin-versions)
 
@@ -31081,8 +31098,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node 
`(viper)Top'.
 
 ;;;***
 
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21670
-;;;;;;  32330 885624 725000))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21678
+;;;;;;  60839 497748 135000))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -31172,7 +31189,7 @@ this is equivalent to `display-warning', using
 
 ;;;***
 
-;;;### (autoloads nil "wdired" "wdired.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "wdired" "wdired.el" (21678 60840 553790 471000))
 ;;; Generated autoloads from wdired.el
 (push (purecopy '(wdired 2 0)) package--builtin-versions)
 
@@ -31190,8 +31207,8 @@ See `wdired-mode'.
 
 ;;;***
 
-;;;### (autoloads nil "webjump" "net/webjump.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (21678 60840 9768
+;;;;;;  710000))
 ;;; Generated autoloads from net/webjump.el
 
 (autoload 'webjump "webjump" "\
@@ -31207,8 +31224,8 @@ Please submit bug reports and other feedback to the 
author, Neil W. Van Dyke
 
 ;;;***
 
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21670
-;;;;;;  32331 885635 586000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21678
+;;;;;;  60840 377783 430000))
 ;;; Generated autoloads from progmodes/which-func.el
  (put 'which-func-format 'risky-local-variable t)
  (put 'which-func-current 'risky-local-variable t)
@@ -31238,8 +31255,8 @@ in certain major modes.
 
 ;;;***
 
-;;;### (autoloads nil "whitespace" "whitespace.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (21678 60840 557790
+;;;;;;  631000))
 ;;; Generated autoloads from whitespace.el
 (push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
 
@@ -31607,8 +31624,8 @@ cleaning up these problems.
 
 ;;;***
 
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (21678 60840 557790
+;;;;;;  631000))
 ;;; Generated autoloads from wid-browse.el
 
 (autoload 'widget-browse-at "wid-browse" "\
@@ -31636,8 +31653,8 @@ if ARG is omitted or nil.
 
 ;;;***
 
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (21670 32331 885635
-;;;;;;  586000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (21678 60840 561790
+;;;;;;  791000))
 ;;; Generated autoloads from wid-edit.el
 
 (autoload 'widgetp "wid-edit" "\
@@ -31679,8 +31696,8 @@ Setup current buffer so editing string widgets works.
 
 ;;;***
 
-;;;### (autoloads nil "windmove" "windmove.el" (21733 50750 334730
-;;;;;;  5000))
+;;;### (autoloads nil "windmove" "windmove.el" (21733 15494 362925
+;;;;;;  968000))
 ;;; Generated autoloads from windmove.el
 
 (autoload 'windmove-left "windmove" "\
@@ -31732,7 +31749,7 @@ Default MODIFIER is 'shift.
 
 ;;;***
 
-;;;### (autoloads nil "winner" "winner.el" (21733 50750 334730 5000))
+;;;### (autoloads nil "winner" "winner.el" (21733 15494 362925 968000))
 ;;; Generated autoloads from winner.el
 
 (defvar winner-mode nil "\
@@ -31755,7 +31772,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG 
is `toggle'.
 
 ;;;***
 
-;;;### (autoloads nil "woman" "woman.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "woman" "woman.el" (21678 60840 573791 271000))
 ;;; Generated autoloads from woman.el
 (push (purecopy '(woman 0 551)) package--builtin-versions)
 
@@ -31804,7 +31821,7 @@ Default bookmark handler for Woman buffers.
 
 ;;;***
 
-;;;### (autoloads nil "xml" "xml.el" (21670 32331 885635 586000))
+;;;### (autoloads nil "xml" "xml.el" (21678 60840 573791 271000))
 ;;; Generated autoloads from xml.el
 
 (autoload 'xml-parse-file "xml" "\
@@ -31860,8 +31877,8 @@ Both features can be combined by providing a cons cell
 
 ;;;***
 
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21670 32331 385639
-;;;;;;  720000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21678 60840 29769
+;;;;;;  509000))
 ;;; Generated autoloads from nxml/xmltok.el
 
 (autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -31879,8 +31896,8 @@ If LIMIT is non-nil, then do not consider characters 
beyond LIMIT.
 
 ;;;***
 
-;;;### (autoloads nil "xref" "progmodes/xref.el" (21739 3132 687120
-;;;;;;  143000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (21738 45410 880804
+;;;;;;  179000))
 ;;; Generated autoloads from progmodes/xref.el
 
 (autoload 'xref-pop-marker-stack "xref" "\
@@ -31929,8 +31946,8 @@ The argument has the same meaning as in `apropos'.
 
 ;;;***
 
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21779 56495 106033
-;;;;;;  935000))
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21779 25618 200348
+;;;;;;  730000))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -31959,7 +31976,7 @@ down the SHIFT key while pressing the mouse button.
 
 ;;;***
 
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "yenc" "gnus/yenc.el" (21678 60839 733757 619000))
 ;;; Generated autoloads from gnus/yenc.el
 
 (autoload 'yenc-decode-region "yenc" "\
@@ -31974,7 +31991,7 @@ Extract file name from an yenc header.
 
 ;;;***
 
-;;;### (autoloads nil "zone" "play/zone.el" (21670 32331 385639 720000))
+;;;### (autoloads nil "zone" "play/zone.el" (21678 60840 213776 870000))
 ;;; Generated autoloads from play/zone.el
 
 (autoload 'zone "zone" "\
@@ -32020,9 +32037,11 @@ Zone out, completely.
 ;;;;;;  "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el"
 ;;;;;;  "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el"
 ;;;;;;  "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el"
-;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c.el" 
"cedet/semantic/bovine/debug.el"
+;;;;;;  "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el"
+;;;;;;  "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
 ;;;;;;  "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;;  "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
+;;;;;;  "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el"
+;;;;;;  "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el"
 ;;;;;;  "cedet/semantic/chart.el" "cedet/semantic/complete.el" 
"cedet/semantic/ctxt.el"
 ;;;;;;  "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
 ;;;;;;  "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" 
"cedet/semantic/db-find.el"
@@ -32045,21 +32064,23 @@ Zone out, completely.
 ;;;;;;  "cedet/semantic/tag.el" "cedet/semantic/texi.el" 
"cedet/semantic/util-modes.el"
 ;;;;;;  "cedet/semantic/util.el" "cedet/semantic/wisent.el" 
"cedet/semantic/wisent/comp.el"
 ;;;;;;  "cedet/semantic/wisent/java-tags.el" 
"cedet/semantic/wisent/javascript.el"
-;;;;;;  "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el"
-;;;;;;  "cedet/srecode/args.el" "cedet/srecode/compile.el" 
"cedet/srecode/cpp.el"
-;;;;;;  "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" 
"cedet/srecode/document.el"
+;;;;;;  "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el"
+;;;;;;  "cedet/semantic/wisent/python-wy.el" "cedet/semantic/wisent/python.el"
+;;;;;;  "cedet/semantic/wisent/wisent.el" "cedet/srecode/args.el"
+;;;;;;  "cedet/srecode/compile.el" "cedet/srecode/cpp.el" 
"cedet/srecode/ctxt.el"
+;;;;;;  "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
 ;;;;;;  "cedet/srecode/el.el" "cedet/srecode/expandproto.el" 
"cedet/srecode/extract.el"
 ;;;;;;  "cedet/srecode/fields.el" "cedet/srecode/filters.el" 
"cedet/srecode/find.el"
 ;;;;;;  "cedet/srecode/getset.el" "cedet/srecode/insert.el" 
"cedet/srecode/java.el"
 ;;;;;;  "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" 
"cedet/srecode/mode.el"
-;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt.el" 
"cedet/srecode/table.el"
-;;;;;;  "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el"
-;;;;;;  "dframe.el" "dired-aux.el" "dired-x.el" "dom.el" "dos-fns.el"
-;;;;;;  "dos-vars.el" "dos-w32.el" "dynamic-setting.el" 
"emacs-lisp/avl-tree.el"
-;;;;;;  "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" 
"emacs-lisp/cl-extra.el"
-;;;;;;  "emacs-lisp/cl-generic.el" "emacs-lisp/cl-loaddefs.el" 
"emacs-lisp/cl-macs.el"
-;;;;;;  "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el"
-;;;;;;  "emacs-lisp/eieio-compat.el" "emacs-lisp/eieio-custom.el"
+;;;;;;  "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" 
"cedet/srecode/srt.el"
+;;;;;;  "cedet/srecode/table.el" "cedet/srecode/template.el" 
"cedet/srecode/texi.el"
+;;;;;;  "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el"
+;;;;;;  "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el"
+;;;;;;  "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" 
"emacs-lisp/byte-opt.el"
+;;;;;;  "emacs-lisp/cl-extra.el" "emacs-lisp/cl-generic.el" 
"emacs-lisp/cl-loaddefs.el"
+;;;;;;  "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el"
+;;;;;;  "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-compat.el" 
"emacs-lisp/eieio-custom.el"
 ;;;;;;  "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
 ;;;;;;  "emacs-lisp/eieio-speedbar.el" "emacs-lisp/generator.el"
 ;;;;;;  "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el"
@@ -32078,51 +32099,66 @@ Zone out, completely.
 ;;;;;;  "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.el"
 ;;;;;;  "eshell/esh-groups.el" "eshell/esh-io.el" "eshell/esh-module.el"
 ;;;;;;  "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el"
-;;;;;;  "eshell/esh-var.el" "ezimage.el" "format-spec.el" "fringe.el"
-;;;;;;  "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" 
"gnus/gnus-bcklg.el"
-;;;;;;  "gnus/gnus-cite.el" "gnus/gnus-cloud.el" "gnus/gnus-cus.el"
-;;;;;;  "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el"
-;;;;;;  "gnus/gnus-ems.el" "gnus/gnus-icalendar.el" "gnus/gnus-int.el"
-;;;;;;  "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
-;;;;;;  "gnus/gnus-score.el" "gnus/gnus-srvr.el" "gnus/gnus-topic.el"
-;;;;;;  "gnus/gnus-undo.el" "gnus/gnus-util.el" "gnus/gnus-uu.el"
-;;;;;;  "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" 
"gnus/legacy-gnus-agent.el"
-;;;;;;  "gnus/mail-parse.el" "gnus/mail-prsvr.el" "gnus/mail-source.el"
-;;;;;;  "gnus/mailcap.el" "gnus/messcompat.el" "gnus/mm-archive.el"
-;;;;;;  "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-util.el"
-;;;;;;  "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el" 
"gnus/nnagent.el"
-;;;;;;  "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el"
-;;;;;;  "gnus/nngateway.el" "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el"
-;;;;;;  "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.el" 
"gnus/nnmbox.el"
-;;;;;;  "gnus/nnmh.el" "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el"
-;;;;;;  "gnus/nnrss.el" "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el"
-;;;;;;  "gnus/nnweb.el" "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el"
-;;;;;;  "gnus/rfc2047.el" "gnus/rfc2231.el" "gnus/rtree.el" 
"gnus/sieve-manage.el"
-;;;;;;  "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
-;;;;;;  "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" 
"international/eucjp-ms.el"
-;;;;;;  "international/fontset.el" "international/iso-ascii.el" 
"international/ja-dic-cnv.el"
-;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el"
-;;;;;;  "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el"
-;;;;;;  "leim/quail/arabic.el" "leim/quail/croatian.el" 
"leim/quail/cyril-jis.el"
-;;;;;;  "leim/quail/cyrillic.el" "leim/quail/czech.el" "leim/quail/ethiopic.el"
-;;;;;;  "leim/quail/georgian.el" "leim/quail/greek.el" 
"leim/quail/hanja-jis.el"
-;;;;;;  "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el"
-;;;;;;  "leim/quail/indian.el" "leim/quail/ipa-praat.el" "leim/quail/ipa.el"
-;;;;;;  "leim/quail/japanese.el" "leim/quail/lao.el" "leim/quail/latin-alt.el"
-;;;;;;  "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" 
"leim/quail/latin-pre.el"
-;;;;;;  "leim/quail/lrt.el" "leim/quail/persian.el" "leim/quail/py-punct.el"
-;;;;;;  "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
+;;;;;;  "eshell/esh-var.el" "ezimage.el" "finder-inf.el" "format-spec.el"
+;;;;;;  "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el"
+;;;;;;  "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cloud.el"
+;;;;;;  "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
+;;;;;;  "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-icalendar.el"
+;;;;;;  "gnus/gnus-int.el" "gnus/gnus-logic.el" "gnus/gnus-mh.el"
+;;;;;;  "gnus/gnus-salt.el" "gnus/gnus-score.el" "gnus/gnus-srvr.el"
+;;;;;;  "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el"
+;;;;;;  "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" 
"gnus/ietf-drums.el"
+;;;;;;  "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el"
+;;;;;;  "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el"
+;;;;;;  "gnus/mm-archive.el" "gnus/mm-bodies.el" "gnus/mm-decode.el"
+;;;;;;  "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" 
"gnus/mml-smime.el"
+;;;;;;  "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el"
+;;;;;;  "gnus/nneething.el" "gnus/nngateway.el" "gnus/nnheader.el"
+;;;;;;  "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" "gnus/nnmaildir.el"
+;;;;;;  "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" "gnus/nnnil.el"
+;;;;;;  "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" "gnus/nnspool.el"
+;;;;;;  "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" "gnus/registry.el"
+;;;;;;  "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2231.el"
+;;;;;;  "gnus/rtree.el" "gnus/sieve-manage.el" "gnus/smime.el" 
"gnus/spam-stat.el"
+;;;;;;  "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el"
+;;;;;;  "international/cp51932.el" "international/eucjp-ms.el" 
"international/fontset.el"
+;;;;;;  "international/iso-ascii.el" "international/ja-dic-cnv.el"
+;;;;;;  "international/ja-dic-utl.el" "international/ogonek.el" 
"international/uni-bidi.el"
+;;;;;;  "international/uni-brackets.el" "international/uni-category.el"
+;;;;;;  "international/uni-combining.el" "international/uni-comment.el"
+;;;;;;  "international/uni-decimal.el" "international/uni-decomposition.el"
+;;;;;;  "international/uni-digit.el" "international/uni-lowercase.el"
+;;;;;;  "international/uni-mirrored.el" "international/uni-name.el"
+;;;;;;  "international/uni-numeric.el" "international/uni-old-name.el"
+;;;;;;  "international/uni-titlecase.el" "international/uni-uppercase.el"
+;;;;;;  "kermit.el" "language/hanja-util.el" "language/thai-word.el"
+;;;;;;  "ldefs-boot.el" "leim/ja-dic/ja-dic.el" "leim/quail/4Corner.el"
+;;;;;;  "leim/quail/ARRAY30.el" "leim/quail/CCDOSPY.el" 
"leim/quail/CTLau-b5.el"
+;;;;;;  "leim/quail/CTLau.el" "leim/quail/ECDICT.el" "leim/quail/ETZY.el"
+;;;;;;  "leim/quail/PY-b5.el" "leim/quail/PY.el" "leim/quail/Punct-b5.el"
+;;;;;;  "leim/quail/Punct.el" "leim/quail/QJ-b5.el" "leim/quail/QJ.el"
+;;;;;;  "leim/quail/SW.el" "leim/quail/TONEPY.el" "leim/quail/ZIRANMA.el"
+;;;;;;  "leim/quail/ZOZY.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
+;;;;;;  "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" 
"leim/quail/czech.el"
+;;;;;;  "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el"
+;;;;;;  "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el"
+;;;;;;  "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el"
+;;;;;;  "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el"
+;;;;;;  "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" 
"leim/quail/latin-post.el"
+;;;;;;  "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el"
+;;;;;;  "leim/quail/py-punct.el" "leim/quail/pypunct-b5.el" 
"leim/quail/quick-b5.el"
+;;;;;;  "leim/quail/quick-cns.el" "leim/quail/rfc1345.el" 
"leim/quail/sgml-input.el"
 ;;;;;;  "leim/quail/sisheng.el" "leim/quail/slovak.el" 
"leim/quail/symbol-ksc.el"
-;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/viqr.el"
-;;;;;;  "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el"
-;;;;;;  "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mspools.el"
-;;;;;;  "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
-;;;;;;  "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
-;;;;;;  "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
-;;;;;;  "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
-;;;;;;  "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
-;;;;;;  "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
-;;;;;;  "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
+;;;;;;  "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/tsang-b5.el"
+;;;;;;  "leim/quail/tsang-cns.el" "leim/quail/viqr.el" "leim/quail/vntelex.el"
+;;;;;;  "leim/quail/vnvni.el" "leim/quail/welsh.el" "loadup.el" 
"mail/blessmail.el"
+;;;;;;  "mail/mailheader.el" "mail/mspools.el" "mail/rfc2368.el"
+;;;;;;  "mail/rfc822.el" "mail/rmail-spam-filter.el" "mail/rmailedit.el"
+;;;;;;  "mail/rmailkwd.el" "mail/rmailmm.el" "mail/rmailmsc.el" 
"mail/rmailsort.el"
+;;;;;;  "mail/rmailsum.el" "mail/undigest.el" "mh-e/mh-acros.el"
+;;;;;;  "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el"
+;;;;;;  "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el"
+;;;;;;  "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" 
"mh-e/mh-limit.el"
 ;;;;;;  "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
 ;;;;;;  "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" 
"mh-e/mh-show.el"
 ;;;;;;  "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
@@ -32191,8 +32227,8 @@ Zone out, completely.
 ;;;;;;  "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
 ;;;;;;  "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
 ;;;;;;  "vc/vc-filewise.el" "vcursor.el" "vt-control.el" "vt100-led.el"
-;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21787 50860 126301
-;;;;;;  167000))
+;;;;;;  "w32-fns.el" "w32-vars.el" "x-dnd.el") (21804 4067 633695
+;;;;;;  693000))
 
 ;;;***
 
diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el
index a2983a3..08d53ea 100644
--- a/lisp/leim/quail/cyrillic.el
+++ b/lisp/leim/quail/cyrillic.el
@@ -1332,7 +1332,7 @@ The letters Ч, Ш, Щ and Ю are not affected by Caps Lock."
 ;;  Ч
 ;;      Я  В  Е  Р  Т  Ъ  У  И  О  П  Ш  Щ
 ;;       А  С  Д  Ф  Г  Х  Й  К  Л        Ю
-;;        З  Ь  Ц  Ж  Б  Н  М
+;;        З  ьѝ Ц  Ж  Б  Н  М
 
 (quail-define-rules
  ("/&" ?§)
@@ -1364,7 +1364,7 @@ The letters Ч, Ш, Щ and Ю are not affected by Caps Lock."
  ("{" ?Ш)
  ("}" ?Щ)
  ("Y" ?Ъ)
- ("X" ?Ь)
+ ("X" ?ѝ)
  ("|" ?Ю)
  ("Q" ?Я)
  ("a" ?а)
@@ -1417,7 +1417,7 @@ keys as being transformed into ( and ) respectively.  For 
( and ), use
 
 ;;  () 1! 2? 3+ 4" 5% 6= 7: 8/ 9_ 0№ -I .V
 ;;      ,ы У  Е  И  Ш  Щ  К  С  Д  З  Ц  ;§
-;;       Ь  Я  А  О  Ж  Г  Т  Н  В  М  Ч  'Ы
+;;       ьѝ Я  А  О  Ж  Г  Т  Н  В  М  Ч  'Ы
 ;;        Ю  Й  Ъ  Э  Ф  Х  П  Р  Л  Б
 
 (quail-define-rules
@@ -1448,7 +1448,7 @@ keys as being transformed into ( and ) respectively.  For 
( and ), use
  ("[" ?ц) ("{" ?Ц)
  ("]" ?\;) ("}" ?§)
 
- ("a" ?ь) ("A" ?Ь)
+ ("a" ?ь) ("A" ?ѝ)
  ("s" ?я) ("S" ?Я)
  ("d" ?а) ("D" ?А)
  ("f" ?о) ("F" ?О)
diff --git a/lisp/loadup.el b/lisp/loadup.el
index 003b0db..bfec75f 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -101,9 +101,6 @@
 (load "env")
 (load "format")
 (load "bindings")
-;; This sets temporary-file-directory, used by eg
-;; auto-save-file-name-transforms in files.el.
-(load "cus-start")
 (load "window")  ; Needed here for `replace-buffer-in-windows'.
 (setq load-source-file-function 'load-with-code-conversion)
 (load "files")
@@ -284,6 +281,7 @@
 (load "uniquify")
 (load "electric")
 (load "emacs-lisp/eldoc")
+(load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway)
 (if (not (eq system-type 'ms-dos)) (load "tooltip"))
 
 ;; This file doesn't exist when building a development version of Emacs
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 7d50ece..d150324 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -2762,7 +2762,8 @@ The current mail message becomes the message displayed."
   (let ((mbox-buf rmail-buffer)
        (view-buf rmail-view-buffer)
        blurb beg end body-start coding-system character-coding
-       is-text-message header-style)
+       is-text-message header-style
+       showing-message)
     (if (not msg)
        (setq msg rmail-current-message))
     (unless (setq blurb (rmail-no-mail-p))
@@ -2788,7 +2789,8 @@ The current mail message becomes the message displayed."
        (setq beg (rmail-msgbeg msg)
              end (rmail-msgend msg))
        (when (> (- end beg) rmail-show-message-verbose-min)
-         (message "Showing message %d" msg))
+         (setq showing-message t)
+         (message "Showing message %d..." msg))
        (narrow-to-region beg end)
        (goto-char beg)
        (with-current-buffer rmail-view-buffer
@@ -2802,6 +2804,8 @@ The current mail message becomes the message displayed."
                 (re-search-forward "mime-version: 1.0" nil t))
            (let ((rmail-buffer mbox-buf)
                  (rmail-view-buffer view-buf))
+             (setq showing-message t)
+             (message "Showing message %d..." msg)
              (set (make-local-variable 'rmail-mime-decoded) t)
              (funcall rmail-show-mime-function))
          (setq body-start (search-forward "\n\n" nil t))
@@ -2881,8 +2885,8 @@ The current mail message becomes the message displayed."
        (rmail-swap-buffers)
        (setq rmail-buffer-swapped t)
        (run-hooks 'rmail-show-message-hook)
-       (when (> (- end beg) rmail-show-message-verbose-min)
-         (message "Showing message %d...done" msg))))
+       (when showing-message
+         (setq blurb (format "Showing message %d...done" msg)))))
     blurb))
 
 (defun rmail-copy-headers (beg end &optional ignored-headers)
@@ -4528,17 +4532,22 @@ encoded string (and the same mask) will decode the 
string."
        (let ((coding-system-for-read coding-system-for-read)
              (case-fold-search t)
              unquote
-             armor-start armor-prefix armor-end after-end)
+             armor-start armor-prefix armor-end-regexp armor-end after-end)
 
          (setq armor-start (match-beginning 0)
                armor-prefix (buffer-substring
                              (line-beginning-position)
-                             armor-start)
-               armor-end (re-search-forward
-                          (concat "^"
-                                  armor-prefix
-                                  "-----END PGP MESSAGE-----$")
-                          nil t))
+                             armor-start))
+         (if (string-match "<pre>\\'" armor-prefix)
+             (setq armor-prefix ""))
+
+         (setq armor-end-regexp
+               (concat "^"
+                       armor-prefix
+                       "-----END PGP MESSAGE-----$"))
+         (setq armor-end (re-search-forward armor-end-regexp
+                                            nil t))
+
          (unless armor-end
            (error "Encryption armor beginning has no matching end"))
          (goto-char armor-start)
@@ -4559,13 +4568,13 @@ encoded string (and the same mask) will decode the 
string."
 
                ;; Use the charset specified in the armor.
                (unless coding-system-for-read
-                 (if (re-search-forward "^Charset: \\(.*\\)" nil t)
+                 (if (re-search-forward "^[ \t]*Charset[ \t\n]*:[ 
\t\n]*\\(.*\\)" nil t)
                      (setq coding-system-for-read
                            (epa--find-coding-system-for-mime-charset
                             (intern (downcase (match-string 1)))))))
 
                (goto-char (point-min))
-               (if (re-search-forward "^[ \t]*Content-transfer-encoding[ 
\t]*:[ \t]*quoted-printable[ \t]*$" nil t)
+               (if (re-search-forward "^[ \t]*Content-transfer-encoding[ 
\t\n]*:[ \t\n]*quoted-printable[ \t]*$" nil t)
                    (setq unquote t)))))
 
          (when unquote
@@ -4583,7 +4592,8 @@ encoded string (and the same mask) will decode the 
string."
               (goto-char armor-start)
               (current-buffer))))
 
-         (push (list armor-start (- (point-max) after-end))
+         (push (list armor-start (- (point-max) after-end) mime
+                     armor-end-regexp)
                decrypts)))
 
       (unless decrypts
@@ -4599,14 +4609,35 @@ encoded string (and the same mask) will decode the 
string."
              (narrow-to-region beg end)
              (goto-char (point-min))
              (dolist (d decrypts)
+               ;; Find, in the real Rmail buffer, the same armors
+               ;; that we found and decrypted in the view buffer.
                (if (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t)
-                   (let (armor-start armor-end)
+                   (let (armor-start armor-end armor-end-regexp)
                      (setq armor-start (match-beginning 0)
-                           armor-end (re-search-forward "^-----END PGP 
MESSAGE-----$"
-                                                        nil t))
+                           armor-end-regexp (nth 3 d)
+                           armor-end (re-search-forward
+                                      armor-end-regexp
+                                      nil t))
+
+                     ;; Found as expected -- now replace it with the decrypt.
                      (when armor-end
                        (delete-region armor-start armor-end)
-                       (insert-buffer-substring from-buffer (nth 0 d) (nth 1 
d)))))))))))))
+                       (insert-buffer-substring from-buffer (nth 0 d) (nth 1 
d)))
+
+                     ;; Change the mime type (if this is in a mime part)
+                     ;; so this part will display by default
+                     ;; when the message is shown later.
+                     (when (nth 2 d)
+                       (goto-char armor-start)
+                       (when (re-search-backward "^--" nil t)
+                         (save-restriction
+                           (narrow-to-region (point) armor-start)
+                           (when (re-search-forward "^content-type[ \t\n]*:[ 
\t\n]*" nil t)
+                             (when (looking-at "[^\n \t;]+")
+                               (let ((value (match-string 0)))
+                                 (unless (member value '("text/plain" 
"text/html"))
+                                   (replace-match "text/plain"))))))))
+                     ))))))))))
  
 
 ;;;;  Desktop support
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog.2
similarity index 99%
rename from lisp/mh-e/ChangeLog
rename to lisp/mh-e/ChangeLog.2
index 8b547df..4b41d60 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog.2
@@ -3671,8 +3671,9 @@
 
        * ChangeLog.1: New file.  Contains old ChangeLog.
 
+See ChangeLog.1 for earlier changes.
 
-       Copyright (C) 2005-2015 Free Software Foundation, Inc.
+  Copyright (C) 2005-2015 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.
 
diff --git a/lisp/misearch.el b/lisp/misearch.el
index 6596911..157b04d 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -92,9 +92,12 @@ Isearch starts.")
 The value is nil when the search still is in the initial buffer.")
 
 ;;;###autoload
-(defvar multi-isearch-buffer-list nil)
+(defvar multi-isearch-buffer-list nil
+  "Sequence of buffers visited by multiple buffers Isearch.
+This is nil if Isearch is not currently searching more than one buffer.")
 ;;;###autoload
-(defvar multi-isearch-file-list nil)
+(defvar multi-isearch-file-list nil
+  "Sequence of files visited by multiple file buffers Isearch.")
 
 (defvar multi-isearch-orig-search-fun nil)
 (defvar multi-isearch-orig-wrap nil)
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index c4ed233..3f8cb84 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -236,21 +236,21 @@ Defaults to the value of `browse-url-mozilla-arguments' 
at the time
   :group 'browse-url)
 
 (defcustom browse-url-firefox-program
-  (let ((candidates '("firefox" "iceweasel" "icecat")))
+  (let ((candidates '("icecat" "iceweasel" "firefox")))
     (while (and candidates (not (executable-find (car candidates))))
       (setq candidates (cdr candidates)))
     (or (car candidates) "firefox"))
-  "The name by which to invoke Firefox."
+  "The name by which to invoke Firefox or a variant of it."
   :type 'string
   :group 'browse-url)
 
 (defcustom browse-url-firefox-arguments nil
-  "A list of strings to pass to Firefox as arguments."
+  "A list of strings to pass to Firefox (or variant) as arguments."
   :type '(repeat (string :tag "Argument"))
   :group 'browse-url)
 
 (defcustom browse-url-firefox-startup-arguments browse-url-firefox-arguments
-  "A list of strings to pass to Firefox when it starts up.
+  "A list of strings to pass to Firefox (or variant) when it starts up.
 Defaults to the value of `browse-url-firefox-arguments' at the time
 `browse-url' is loaded."
   :type '(repeat (string :tag "Argument"))
@@ -761,10 +761,13 @@ narrowed."
 ;;;###autoload
 (defun browse-url (url &rest args)
   "Ask a WWW browser to load URL.
-Prompt for a URL, defaulting to the URL at or before point.  Variable
-`browse-url-browser-function' says which browser to use.
+Prompt for a URL, defaulting to the URL at or before point.
+The variable `browse-url-browser-function' says which browser to use.
 If the URL is a mailto: URL, consult `browse-url-mailto-function'
-first, if that exists."
+first, if that exists.
+
+Passes any ARGS to the browser function.
+The default is to pass `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "URL: "))
   (unless (called-interactively-p 'interactive)
     (setq args (or args (list browse-url-new-window-flag))))
@@ -800,7 +803,9 @@ first, if that exists."
 ;;;###autoload
 (defun browse-url-at-point (&optional arg)
   "Ask a WWW browser to load the URL at or before point.
-Variable `browse-url-browser-function' says which browser to use."
+Variable `browse-url-browser-function' says which browser to use.
+Optional prefix argument ARG non-nil inverts the value of the option
+`browse-url-new-window-flag'."
   (interactive "P")
   (let ((url (browse-url-url-at-point)))
     (if url
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index b2c1ba8..474a48f 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -869,7 +869,7 @@ association to the service from D-Bus."
                                ;; Service.
                                (string-equal service (cadr e))
                                ;; Non-empty object path.
-                               (cl-caddr e)
+                               (nth 2 e)
                                (throw :found t)))))
                         dbus-registered-objects-table)
                        nil))))
diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el
index 0e54d84..ec0914d 100644
--- a/lisp/net/eudc-export.el
+++ b/lisp/net/eudc-export.el
@@ -174,7 +174,7 @@ LOCATION is used as the phone location for BBDB."
       (condition-case err
          (setq phone-list (bbdb-parse-phone-number phone))
        (error
-        (if (string= "phone number unparsable." (eudc-cadr err))
+        (if (string= "phone number unparsable." (cadr err))
             (if (not (y-or-n-p (format "BBDB claims %S to be 
unparsable--insert anyway? " phone)))
                 (error "Phone number unparsable")
               (setq phone-list (list (bbdb-string-trim phone))))
diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el
index cf5d13f..66dbc65 100644
--- a/lisp/net/eudc.el
+++ b/lisp/net/eudc.el
@@ -47,6 +47,8 @@
 
 (require 'wid-edit)
 
+(eval-when-compile (require 'cl-lib))
+
 (eval-and-compile
   (if (not (fboundp 'make-overlay))
       (require 'overlay)))
@@ -105,18 +107,6 @@
 ;; attribute name
 (defvar eudc-protocol-has-default-query-attributes nil)
 
-(defun eudc-cadr (obj)
-  (car (cdr obj)))
-
-(defun eudc-cdar (obj)
-  (cdr (car obj)))
-
-(defun eudc-caar (obj)
-  (car (car obj)))
-
-(defun eudc-cdaar (obj)
-  (cdr (car (car obj))))
-
 (defun eudc-plist-member (plist prop)
   "Return t if PROP has a value specified in PLIST."
   (if (not (= 0 (% (length plist) 2)))
@@ -555,10 +545,10 @@ otherwise they are formatted according to 
`eudc-user-attribute-names-alist'."
 
     ;; Search for multiple records
     (while (and rec
-               (not (listp (eudc-cdar rec))))
+               (not (listp (cdar rec))))
       (setq rec (cdr rec)))
 
-    (if (null (eudc-cdar rec))
+    (if (null (cdar rec))
        (list record)                   ; No duplicate attrs in this record
       (mapc (function
             (lambda (field)
@@ -590,7 +580,7 @@ otherwise they are formatted according to 
`eudc-user-attribute-names-alist'."
             ((eq 'first method)
              (setq result
                    (eudc-add-field-to-records (cons (car field)
-                                                    (eudc-cadr field))
+                                                    (cadr field))
                                               result)))
             ((eq 'concat method)
              (setq result
@@ -710,7 +700,7 @@ If ERROR is non-nil, report an error if there is none."
   (let ((result (eudc-query (list (cons 'name name)) '(email)))
        email)
     (if (null (cdr result))
-       (setq email (eudc-cdaar result))
+       (setq email (cl-cdaar result))
       (error "Multiple match--use the query form"))
     (if error
        (if email
@@ -728,7 +718,7 @@ If ERROR is non-nil, report an error if there is none."
   (let ((result (eudc-query (list (cons 'name name)) '(phone)))
        phone)
     (if (null (cdr result))
-       (setq phone (eudc-cdaar result))
+       (setq phone (cl-cdaar result))
       (error "Multiple match--use the query form"))
     (if error
        (if phone
@@ -765,8 +755,8 @@ otherwise a list of symbols is returned."
          ;; If the same attribute appears more than once, merge
          ;; the corresponding values
          (while query-alist
-           (setq key (eudc-caar query-alist)
-                 val (eudc-cdar query-alist)
+           (setq key (caar query-alist)
+                 val (cdar query-alist)
                  cell (assq key query))
            (if cell
                (setcdr cell (concat (cdr cell) " " val))
@@ -863,7 +853,7 @@ see `eudc-inline-expansion-servers'"
                (catch 'found
                  ;; Loop on the servers
                  (while servers
-                   (eudc-set-server (eudc-caar servers) (eudc-cdar servers) t)
+                   (eudc-set-server (caar servers) (cdar servers) t)
 
                    ;; Determine which formats apply in the query-format list
                    (setq query-formats
@@ -1047,14 +1037,14 @@ queries the server for the existing fields and displays 
a corresponding form."
                                 (point))
                  (setq set-server-p t))
                 ((and (eq (car sexp)  'setq)
-                      (eq (eudc-cadr sexp) 'eudc-server-hotlist))
+                      (eq (cadr sexp) 'eudc-server-hotlist))
                  (delete-region (save-excursion
                                   (backward-sexp)
                                   (point))
                                 (point))
                  (setq set-hotlist-p t))
                 ((and (eq (car sexp)  'provide)
-                      (equal (eudc-cadr sexp) '(quote eudc-options-file)))
+                      (equal (cadr sexp) '(quote eudc-options-file)))
                  (setq provide-p t)))
              (if (and provide-p
                       set-hotlist-p
diff --git a/lisp/net/eudcb-ph.el b/lisp/net/eudcb-ph.el
index 1897e0b..a135e9b 100644
--- a/lisp/net/eudcb-ph.el
+++ b/lisp/net/eudcb-ph.el
@@ -81,7 +81,7 @@ are returned"
   (eudc-ph-do-request "fields")
   (if full-records
       (eudc-ph-parse-query-result)
-    (mapcar 'eudc-caar (eudc-ph-parse-query-result))))
+    (mapcar #'caar (eudc-ph-parse-query-result))))
 
 (defun eudc-ph-parse-query-result (&optional fields)
   "Return a list of alists of key/values from in `eudc-ph-process-buffer'.
@@ -126,9 +126,9 @@ Fields not in FIELDS are discarded."
                      (memq current-key fields))
                  (if key
                      (setq record (cons (cons key value) record)) ; New key
-                   (setcdr (car record) (if (listp (eudc-cdar record))
-                                            (append (eudc-cdar record) (list 
value))
-                                          (list (eudc-cdar record) 
value))))))))
+                   (setcdr (car record) (if (listp (cdar record))
+                                            (append (cdar record) (list value))
+                                          (list (cdar record) value))))))))
        (and (not ignore)
             (or (null fields)
                 (eq 'all fields)
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index 2312e22..28253e5 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -308,6 +308,7 @@ unencrypted."
                       (?s . session)
                       (?a . always)))
          (prefix "")
+         (cursor-in-echo-area t)
          response)
       (while (not response)
        (setq response
@@ -315,7 +316,7 @@ unencrypted."
               (assq (downcase
                      (read-char
                       (concat prefix
-                              "Continue connecting? (No, Session only, 
Always)")))
+                              "Continue connecting? (No, Session only, Always) 
")))
                     responses)))
        (unless response
          (ding)
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 74d03f5..5ea1047 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -2167,6 +2167,7 @@ activity.  Only run if the buffer is not visible and
        ,interactive-form
        (let ((process (or process (rcirc-buffer-process)))
             (target (or target rcirc-target)))
+         (ignore target)        ; mark `target' variable as ignorable
         ,@body))))
 
 (defun-rcirc-command msg (message)
@@ -2693,7 +2694,7 @@ the only argument."
 (defun rcirc-handler-KICK (process sender args _text)
   (let* ((channel (car args))
         (nick (cadr args))
-        (reason (cl-caddr args))
+        (reason (nth 2 args))
         (message (concat nick " " channel " " reason)))
     (rcirc-print process sender "KICK" channel message t)
     ;; print in private chat buffer if it exists
@@ -2777,7 +2778,7 @@ the only argument."
   "RPL_AWAY"
   (let* ((nick (cadr args))
         (rec (assoc-string nick rcirc-nick-away-alist))
-        (away-message (cl-caddr args)))
+        (away-message (nth 2 args)))
     (when (or (not rec)
              (not (string= (cdr rec) away-message)))
       ;; away message has changed
@@ -2806,7 +2807,7 @@ the only argument."
   (let ((buffer (or (rcirc-get-buffer process (cadr args))
                    (rcirc-get-temp-buffer-create process (cadr args)))))
     (with-current-buffer buffer
-      (setq rcirc-topic (cl-caddr args)))))
+      (setq rcirc-topic (nth 2 args)))))
 
 (defun rcirc-handler-333 (process sender args _text)
   "333 says who set the topic and when.
@@ -2814,7 +2815,7 @@ Not in rfc1459.txt"
   (let ((buffer (or (rcirc-get-buffer process (cadr args))
                    (rcirc-get-temp-buffer-create process (cadr args)))))
     (with-current-buffer buffer
-      (let ((setter (cl-caddr args))
+      (let ((setter (nth 2 args))
            (time (current-time-string
                   (seconds-to-time
                    (string-to-number (cl-cadddr args))))))
@@ -2823,7 +2824,7 @@ Not in rfc1459.txt"
 
 (defun rcirc-handler-477 (process sender args _text)
   "ERR_NOCHANMODES"
-  (rcirc-print process sender "477" (cadr args) (cl-caddr args)))
+  (rcirc-print process sender "477" (cadr args) (nth 2 args)))
 
 (defun rcirc-handler-MODE (process sender args _text)
   (let ((target (car args))
@@ -2883,7 +2884,7 @@ Passwords are stored in `rcirc-authinfo' (which see)."
     (dolist (i rcirc-authinfo)
       (let ((process (rcirc-buffer-process))
            (server (car i))
-           (nick (cl-caddr i))
+           (nick (nth 2 i))
            (method (cadr i))
            (args (cl-cdddr i)))
        (when (and (string-match server rcirc-server))
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el
index 45caf7c..6f4e173 100644
--- a/lisp/net/secrets.el
+++ b/lisp/net/secrets.el
@@ -702,7 +702,7 @@ If there is no such item, return nil."
   (let ((item-path (secrets-item-path collection item)))
     (unless (secrets-empty-path item-path)
       (dbus-byte-array-to-string
-       (cl-caddr
+       (nth 2
        (dbus-call-method
         :session secrets-service item-path secrets-interface-item
         "GetSecret" :object-path secrets-session-path))))))
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 1e24ea5..f2ee49f 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -168,16 +168,18 @@ Returns VALUE."
 ;;;###tramp-autoload
 (defun tramp-flush-file-property (key file)
   "Remove all properties of FILE in the cache context of KEY."
-  ;; Remove file properties of symlinks.
-  (let ((truename (tramp-get-file-property key file "file-truename" nil)))
+  (let* ((file (tramp-run-real-handler
+               'directory-file-name (list file)))
+        (truename (tramp-get-file-property key file "file-truename" nil)))
+    ;; Remove file properties of symlinks.
     (when (and (stringp truename)
-              (not (string-equal file truename)))
-      (tramp-flush-file-property key truename)))
-  ;; Unify localname.
-  (setq key (copy-sequence key))
-  (aset key 3 (tramp-run-real-handler 'directory-file-name (list file)))
-  (tramp-message key 8 "%s" file)
-  (remhash key tramp-cache-data))
+              (not (string-equal file (directory-file-name truename))))
+      (tramp-flush-file-property key truename))
+    ;; Unify localname.
+    (setq key (copy-sequence key))
+    (aset key 3 file)
+    (tramp-message key 8 "%s" file)
+    (remhash key tramp-cache-data)))
 
 ;;;###tramp-autoload
 (defun tramp-flush-directory-property (key directory)
@@ -188,13 +190,14 @@ Remove also properties of all files in subdirectories."
         (truename (tramp-get-file-property key directory "file-truename" nil)))
     ;; Remove file properties of symlinks.
     (when (and (stringp truename)
-              (not (string-equal directory truename)))
+              (not (string-equal directory (directory-file-name truename))))
       (tramp-flush-directory-property key truename))
     (tramp-message key 8 "%s" directory)
     (maphash
      (lambda (key _value)
        (when (and (stringp (tramp-file-name-localname key))
-                 (string-match directory (tramp-file-name-localname key)))
+                 (string-match (regexp-quote directory)
+                               (tramp-file-name-localname key)))
         (remhash key tramp-cache-data)))
      tramp-cache-data)))
 
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index f59c5fb..3f006e8 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -496,7 +496,6 @@ as given in your `~/.profile'."
 (defcustom tramp-remote-process-environment
   `("TMOUT=0" "LC_CTYPE=''"
     ,(format "TERM=%s" tramp-terminal-type)
-    "EMACS=t" ;; Deprecated.
     ,(format "INSIDE_EMACS='%s,tramp:%s'" emacs-version tramp-version)
     "CDPATH=" "HISTORY=" "MAIL=" "MAILCHECK=" "MAILPATH=" "PAGER=cat"
     "autocorrect=" "correct=")
diff --git a/lisp/obsolete/gulp.el b/lisp/obsolete/gulp.el
index 5ff99f2..f0223fa 100644
--- a/lisp/obsolete/gulp.el
+++ b/lisp/obsolete/gulp.el
@@ -70,7 +70,7 @@ please send them to me ASAP.
 Please don't send the whole file.  Instead, please send a patch made with
 `diff -c' that shows precisely the changes you would like me to install.
 Also please include itemized change log entries for your changes;
-please use lisp/ChangeLog as a guide for the style and for what kinds
+please use lisp/ChangeLog* as a guide for the style and for what kinds
 of information to include.
 
 Thanks.")
diff --git a/lisp/obsolete/mouse-sel.el b/lisp/obsolete/mouse-sel.el
index 25eb3e6..fcadedf 100644
--- a/lisp/obsolete/mouse-sel.el
+++ b/lisp/obsolete/mouse-sel.el
@@ -314,7 +314,7 @@ is `interprogram-cut-paste'.")
     (if (eq selection 'PRIMARY)
        (or (gui-selection-value)
            (bound-and-true-p x-last-selected-text-primary)
-            gui-last-selected-text)
+            gui--last-selected-text-primary)
       (x-get-selection selection)))
   "Function to call to get the selection.
 Called with one argument:
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog.1
similarity index 100%
rename from lisp/org/ChangeLog
rename to lisp/org/ChangeLog.1
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index d21d270..41e799f 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -1066,9 +1066,11 @@ If `only-dangling-p' is non-nil, only ask to resolve 
dangling
 (defvar org-x11idle-exists-p
   ;; Check that x11idle exists
   (and (eq window-system 'x)
-       (eq (call-process-shell-command "command" nil nil nil "-v" 
org-clock-x11idle-program-name) 0)
+       (eq 0 (call-process-shell-command
+              (format "command -v %s" org-clock-x11idle-program-name)))
        ;; Check that x11idle can retrieve the idle time
-       (eq (call-process-shell-command org-clock-x11idle-program-name nil nil 
nil) 0)))
+       ;; FIXME: Why "..-shell-command" rather than just `call-process'?
+       (eq 0 (call-process-shell-command org-clock-x11idle-program-name))))
 
 (defun org-x11-idle-seconds ()
   "Return the current X11 idle time in seconds."
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el
index 29bc878..6c74fb3 100644
--- a/lisp/org/ox-odt.el
+++ b/lisp/org/ox-odt.el
@@ -262,7 +262,8 @@ This style is much the same as that of 
\"OrgFixedWidthBlock\"
 except that the foreground and background colors are set
 according to the default face identified by the `htmlfontify'.")
 
-(defvar hfy-optimisations)
+(defvar hfy-optimizations)
+(define-obsolete-variable-alias 'hfy-optimisations 'hfy-optimizations "25.1")
 (defvar org-odt-embedded-formulas-count 0)
 (defvar org-odt-embedded-images-count 0)
 (defvar org-odt-image-size-probe-method
@@ -3116,8 +3117,8 @@ and prefix with \"OrgSrc\".  For example,
                               (" " "<text:s/>")
                               ("       " "<text:tab/>")))
         (hfy-face-to-css 'org-odt-hfy-face-to-css)
-        (hfy-optimisations-1 (copy-sequence hfy-optimisations))
-        (hfy-optimisations (add-to-list 'hfy-optimisations-1
+        (hfy-optimizations-1 (copy-sequence hfy-optimizations))
+        (hfy-optimizations (add-to-list 'hfy-optimizations-1
                                         'body-text-only))
         (hfy-begin-span-handler
          (lambda (style text-block text-id text-begins-block-p)
diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el
index 3598cd6..7be57e9 100644
--- a/lisp/pcmpl-unix.el
+++ b/lisp/pcmpl-unix.el
@@ -157,7 +157,7 @@ documentation), this function returns nil."
         (while (re-search-forward (concat "^ *" host-re) nil t)
           (add-to-list 'ssh-hosts-list (concat (match-string 1)
                                                (match-string 2)))
-          (while (and (looking-back ",")
+          (while (and (eq (char-before) ?,)
                       (re-search-forward host-re (line-end-position) t))
             (add-to-list 'ssh-hosts-list (concat (match-string 1)
                                                  (match-string 2)))))
diff --git a/lisp/play/hanoi.el b/lisp/play/hanoi.el
index b868db6..635e4a9 100644
--- a/lisp/play/hanoi.el
+++ b/lisp/play/hanoi.el
@@ -277,7 +277,7 @@ BITS must be of length nrings.  Start at START-TIME."
             ;; Disable display of line and column numbers, for speed.
             (line-number-mode nil) (column-number-mode nil))
          ;; do it!
-         (hanoi-n bits rings (car poles) (cadr poles) (cl-caddr poles)
+         (hanoi-n bits rings (nth 0 poles) (nth 1 poles) (nth 2 poles)
                   start-time))
        (message "Done"))
     (setq buffer-read-only t)
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index 9a1273d..44172b0 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -539,28 +539,29 @@ stuff.  Used on level 1 and higher."
                  (let* ((re (c-make-keywords-re nil
                               (c-lang-const c-cpp-include-directives)))
                         (re-depth (regexp-opt-depth re)))
-                   `((,(concat noncontinued-line-end
-                               (c-lang-const c-opt-cpp-prefix)
-                               re
-                               (c-lang-const c-syntactic-ws)
-                               "\\(<[^>\n\r]*>?\\)")
-                      (,(+ ncle-depth re-depth sws-depth 1)
-                       font-lock-string-face)
-
-                      ;; Use an anchored matcher to put paren syntax
-                      ;; on the brackets.
-                      (,(byte-compile
-                         `(lambda (limit)
-                            (let ((beg (match-beginning
-                                        ,(+ ncle-depth re-depth sws-depth 1)))
-                                  (end (1- (match-end ,(+ ncle-depth re-depth
-                                                          sws-depth 1)))))
-                              (if (eq (char-after end) ?>)
-                                  (progn
-                                    (c-mark-<-as-paren beg)
-                                    (c-mark->-as-paren end))
-                                (c-unmark-<->-as-paren beg)))
-                            nil)))))))
+                   ;; We used to use a font-lock "anchored matcher" here for
+                   ;; the paren syntax.  This failed when the ">" was at EOL,
+                   ;; since `font-lock-fontify-anchored-keywords' terminated
+                   ;; its loop at EOL without executing our lambda form at
+                   ;; all.
+                   `((,(c-make-font-lock-search-function
+                        (concat noncontinued-line-end
+                                (c-lang-const c-opt-cpp-prefix)
+                                re
+                                (c-lang-const c-syntactic-ws)
+                                "\\(<[^>\n\r]*>?\\)")
+                        `(,(+ ncle-depth re-depth sws-depth 1)
+                          font-lock-string-face t)
+                        `((let ((beg (match-beginning
+                                      ,(+ ncle-depth re-depth sws-depth 1)))
+                                (end (1- (match-end ,(+ ncle-depth re-depth
+                                                        sws-depth 1)))))
+                            (if (eq (char-after end) ?>)
+                                (progn
+                                  (c-mark-<-as-paren beg)
+                                  (c-mark->-as-paren end))
+                              (c-unmark-<->-as-paren beg)))
+                          nil))))))
 
              ;; #define.
              ,@(when (c-lang-const c-opt-cpp-macro-define)
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index d88fe70..1f58ba1 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -659,13 +659,14 @@ compatible with old code; callers should always specify 
it."
     (setq c-new-BEG (point-min))
     (setq c-new-END (point-max))
     (save-excursion
-      (mapc (lambda (fn)
-             (funcall fn (point-min) (point-max)))
-           c-get-state-before-change-functions)
-      (mapc (lambda (fn)
-             (funcall fn (point-min) (point-max)
-                      (- (point-max) (point-min))))
-           c-before-font-lock-functions)))
+      (let (before-change-functions after-change-functions)
+       (mapc (lambda (fn)
+               (funcall fn (point-min) (point-max)))
+             c-get-state-before-change-functions)
+       (mapc (lambda (fn)
+               (funcall fn (point-min) (point-max)
+                        (- (point-max) (point-min))))
+             c-before-font-lock-functions))))
 
   (set (make-local-variable 'outline-regexp) "[^#\n\^M]")
   (set (make-local-variable 'outline-level) 'c-outline-level)
@@ -972,7 +973,9 @@ Note that the style variables are always made local to the 
buffer."
        (unless
            (or (save-excursion
                  (goto-char (match-beginning 0))
-                 (c-beginning-of-macro))
+                 (let ((here (point)))
+                   (and (save-match-data (c-beginning-of-macro))
+                        (< (point) here))))
                (progn
                  (setq pps-state
                        (parse-partial-sexp pps-position (point) nil nil 
pps-state)
@@ -1170,6 +1173,7 @@ Note that the style variables are always made local to 
the buffer."
        ;; Go to a less nested declaration each time round this loop.
        (and
         (eq (car (c-beginning-of-decl-1 bod-lim)) 'same)
+        (> (point) bod-lim)
         (progn (setq bo-decl (point))
                ;; Are we looking at a keyword such as "template" or
                ;; "typedef" which can decorate a type, or the type itself?
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 362bbf5..9d36e91 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1666,11 +1666,7 @@ Returns the compilation buffer created."
                (list "TERM=emacs"
                      (format "TERMCAP=emacs:co#%d:tc=unknown:"
                              (window-width))))
-             ;; Set the EMACS variable, but
-             ;; don't override users' setting of $EMACS.
-             (unless (getenv "EMACS")
-               (list "EMACS=t"))
-             (list "INSIDE_EMACS=t")
+             (list (format "INSIDE_EMACS=%s,compile" emacs-version))
              (copy-sequence process-environment))))
        (set (make-local-variable 'compilation-arguments)
             (list command mode name-function highlight-regexp))
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 29f1ee9..ad35c48 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -230,6 +230,9 @@ Blank lines separate paragraphs.  Semicolons start comments.
   (defvar xref-find-function)
   (defvar xref-identifier-completion-table-function)
   (lisp-mode-variables nil nil 'elisp)
+  (add-hook 'after-load-functions #'elisp--font-lock-flush-elisp-buffers)
+  (setq-local electric-pair-text-pairs
+              (cons '(?\` . ?\') electric-pair-text-pairs))
   (setq imenu-case-fold-search nil)
   (add-function :before-until (local 'eldoc-documentation-function)
                 #'elisp-eldoc-documentation-function)
@@ -239,6 +242,24 @@ Blank lines separate paragraphs.  Semicolons start 
comments.
   (add-hook 'completion-at-point-functions
             #'elisp-completion-at-point nil 'local))
 
+;; Font-locking support.
+
+(defun elisp--font-lock-flush-elisp-buffers (&optional file)
+  ;; FIXME: Aren't we only ever called from after-load-functions?
+  ;; Don't flush during load unless called from after-load-functions.
+  ;; In that case, FILE is non-nil.  It's somehow strange that
+  ;; load-in-progress is t when an after-load-function is called since
+  ;; that should run *after* the load...
+  (when (or (not load-in-progress) file)
+    ;; FIXME: If the loaded file did not define any macros, there shouldn't
+    ;; be any need to font-lock-flush all the Elisp buffers.
+    (dolist (buf (buffer-list))
+      (with-current-buffer buf
+       (when (derived-mode-p 'emacs-lisp-mode)
+          ;; So as to take into account new macros that may have been defined
+          ;; by the just-loaded file.
+         (font-lock-flush))))))
+
 ;;; Completion at point for Elisp
 
 (defun elisp--local-variables-1 (vars sexp)
@@ -578,12 +599,20 @@ It can be quoted, or be inside a quoted form."
                             (find-function-library sym)))
                        (setq sym (car fun-lib))
                        (cdr fun-lib))))
-           (`defvar (when (boundp sym)
-                      (or (symbol-file sym 'defvar)
-                          (help-C-file-name sym 'var))))
-           (`feature (when (featurep sym)
-                       (ignore-errors
-                         (find-library-name (symbol-name sym)))))
+           (`defvar (and (boundp sym)
+                         ;; Don't show minor modes twice.
+                         ;; TODO: If TYPE ever becomes dependent on the
+                         ;; context, move this check outside.
+                         (not (fboundp sym))
+                         (or (symbol-file sym 'defvar)
+                             (help-C-file-name sym 'var))))
+           (`feature (and (featurep sym)
+                          ;; Skip when a function with the same name
+                          ;; is defined, because it's probably in the
+                          ;; same file.
+                          (not (fboundp sym))
+                          (ignore-errors
+                            (find-library-name (symbol-name sym)))))
            (`defface (when (facep sym)
                        (symbol-file sym 'defface))))))
     (when file
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 7f2fd92..a9376ff 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -663,7 +663,7 @@ that form should be displayed.")
              (setq tok (cadr tokens))
              (if (eq (car tokens) 'hif-lparen)
                  (if (and (hif-if-valid-identifier-p tok)
-                          (eq (cl-caddr tokens) 'hif-rparen))
+                          (eq (nth 2 tokens) 'hif-rparen))
                      (setq tokens (cl-cdddr tokens))
                    (error "#define followed by non-identifier: %S" tok))
                (setq tok (car tokens)
@@ -730,7 +730,7 @@ detecting self-reference."
                        result))
                  ;; Argument list is nil, direct expansion
                  (setq rep (hif-expand-token-list
-                            (cl-caddr rep) ; Macro's token list
+                            (nth 2 rep) ; Macro's token list
                             tok expand_list))
                  ;; Replace all remaining references immediately
                  (setq remains (cl-substitute tok rep remains))
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index ff00298..62f19f4 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -2002,8 +2002,9 @@ indentation is aligned to that column."
   (let* ((parse-status
           (save-excursion (syntax-ppss (point-at-bol))))
          (offset (- (point) (save-excursion (back-to-indentation) (point)))))
-    (indent-line-to (js--proper-indentation parse-status))
-    (when (> offset 0) (forward-char offset))))
+    (unless (nth 3 parse-status)
+      (indent-line-to (js--proper-indentation parse-status))
+      (when (> offset 0) (forward-char offset)))))
 
 ;;; Filling
 
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 67b44aa..eb17d07 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -482,19 +482,10 @@ The type returned can be `comment', `string' or `paren'."
   'python-info-ppss-comment-or-string-p
   #'python-syntax-comment-or-string-p "24.3")
 
-(defun python-docstring-at-p (pos)
-  "Check to see if there is a docstring at POS."
-  (save-excursion
-    (goto-char pos)
-    (if (looking-at-p "'''\\|\"\"\"")
-        (progn
-          (python-nav-backward-statement)
-          (looking-at "\\`\\|class \\|def "))
-      nil)))
-
 (defun python-font-lock-syntactic-face-function (state)
+  "Return syntactic face given STATE."
   (if (nth 3 state)
-      (if (python-docstring-at-p (nth 8 state))
+      (if (python-info-docstring-p state)
           font-lock-doc-face
         font-lock-string-face)
     font-lock-comment-face))
@@ -853,7 +844,9 @@ keyword
        ;; Inside a string.
        ((let ((start (python-syntax-context 'string ppss)))
           (when start
-            (cons :inside-string start))))
+            (cons (if (python-info-docstring-p)
+                      :inside-docstring
+                    :inside-string) start))))
        ;; Inside a paren.
        ((let* ((start (python-syntax-context 'paren ppss))
                (starts-in-newline
@@ -998,6 +991,12 @@ possibilities can be narrowed to specific indentation 
points."
          ;; Copy previous indentation.
          (goto-char start)
          (current-indentation))
+        (`(:inside-docstring . ,start)
+         (let* ((line-indentation (current-indentation))
+                (base-indent (progn
+                               (goto-char start)
+                               (current-indentation))))
+           (max line-indentation base-indent)))
         (`(,(or :after-block-start
                 :after-backslash-first-line
                 :inside-paren-newline-start) . ,start)
@@ -1147,14 +1146,15 @@ Called from a program, START and END specify the region 
to indent."
                                  (not line-is-comment-p))
                             (python-info-current-line-empty-p)))))
                    ;; Don't mess with strings, unless it's the
-                   ;; enclosing set of quotes.
+                   ;; enclosing set of quotes or a docstring.
                    (or (not (python-syntax-context 'string))
                        (eq
                         (syntax-after
                          (+ (1- (point))
                             (current-indentation)
                             (python-syntax-count-quotes (char-after) (point))))
-                        (string-to-syntax "|")))
+                        (string-to-syntax "|"))
+                       (python-info-docstring-p))
                    ;; Skip if current line is a block start, a
                    ;; dedenter or block ender.
                    (save-excursion
@@ -1580,11 +1580,13 @@ forward only one sexp, else move backwards."
        (while (and (funcall search-fn paren-regexp nil t)
                    (python-syntax-context 'paren)))))))
 
-(defun python-nav--forward-sexp (&optional dir safe)
+(defun python-nav--forward-sexp (&optional dir safe skip-parens-p)
   "Move to forward sexp.
 With positive optional argument DIR direction move forward, else
 backwards.  When optional argument SAFE is non-nil do not throw
-errors when at end of sexp, skip it instead."
+errors when at end of sexp, skip it instead.  With optional
+argument SKIP-PARENS-P force sexp motion to ignore parenthesized
+expressions when looking at them in either direction."
   (setq dir (or dir 1))
   (unless (= dir 0)
     (let* ((forward-p (if (> dir 0)
@@ -1596,11 +1598,13 @@ errors when at end of sexp, skip it instead."
         ;; Inside of a string, get out of it.
         (let ((forward-sexp-function))
           (forward-sexp dir)))
-       ((or (eq context-type 'paren)
-            (and forward-p (looking-at (python-rx open-paren)))
-            (and (not forward-p)
-                 (eq (syntax-class (syntax-after (1- (point))))
-                     (car (string-to-syntax ")")))))
+       ((and (not skip-parens-p)
+             (or (eq context-type 'paren)
+                 (if forward-p
+                     (eq (syntax-class (syntax-after (point)))
+                         (car (string-to-syntax "(")))
+                   (eq (syntax-class (syntax-after (1- (point))))
+                       (car (string-to-syntax ")"))))))
         ;; Inside a paren or looking at it, lisp knows what to do.
         (if safe
             (python-nav--lisp-forward-sexp-safe dir)
@@ -1636,7 +1640,7 @@ errors when at end of sexp, skip it instead."
               (cond ((and (not (eobp))
                           (python-info-current-line-empty-p))
                      (python-util-forward-comment dir)
-                     (python-nav--forward-sexp dir))
+                     (python-nav--forward-sexp dir safe skip-parens-p))
                     ((eq context 'block-start)
                      (python-nav-end-of-block))
                     ((eq context 'statement-start)
@@ -1656,7 +1660,7 @@ errors when at end of sexp, skip it instead."
             (cond ((and (not (bobp))
                         (python-info-current-line-empty-p))
                    (python-util-forward-comment dir)
-                   (python-nav--forward-sexp dir))
+                   (python-nav--forward-sexp dir safe skip-parens-p))
                   ((eq context 'block-end)
                    (python-nav-beginning-of-block))
                   ((eq context 'statement-end)
@@ -1674,47 +1678,69 @@ errors when at end of sexp, skip it instead."
                    (python-nav-beginning-of-statement))
                   (t (goto-char next-sexp-pos))))))))))
 
-(defun python-nav-forward-sexp (&optional arg)
+(defun python-nav-forward-sexp (&optional arg safe skip-parens-p)
   "Move forward across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-backward N times."
+backward N times.  When optional argument SAFE is non-nil do not
+throw errors when at end of sexp, skip it instead.  With optional
+argument SKIP-PARENS-P force sexp motion to ignore parenthesized
+expressions when looking at them in either direction (forced to t
+in interactive calls)."
   (interactive "^p")
   (or arg (setq arg 1))
+  ;; Do not follow parens on interactive calls.  This hack to detect
+  ;; if the function was called interactively copes with the way
+  ;; `forward-sexp' works by calling `forward-sexp-function', losing
+  ;; interactive detection by checking `current-prefix-arg'.  The
+  ;; reason to make this distinction is that lisp functions like
+  ;; `blink-matching-open' get confused causing issues like the one in
+  ;; Bug#16191.  With this approach the user gets a symmetric behavior
+  ;; when working interactively while called functions expecting
+  ;; paren-based sexp motion work just fine.
+  (or
+   skip-parens-p
+   (setq skip-parens-p
+         (memq real-this-command
+               (list
+                #'forward-sexp #'backward-sexp
+                #'python-nav-forward-sexp #'python-nav-backward-sexp
+                #'python-nav-forward-sexp-safe #'python-nav-backward-sexp))))
   (while (> arg 0)
-    (python-nav--forward-sexp 1)
+    (python-nav--forward-sexp 1 safe skip-parens-p)
     (setq arg (1- arg)))
   (while (< arg 0)
-    (python-nav--forward-sexp -1)
+    (python-nav--forward-sexp -1 safe skip-parens-p)
     (setq arg (1+ arg))))
 
-(defun python-nav-backward-sexp (&optional arg)
+(defun python-nav-backward-sexp (&optional arg safe skip-parens-p)
   "Move backward across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-forward N times."
+forward N times.  When optional argument SAFE is non-nil do not
+throw errors when at end of sexp, skip it instead.  With optional
+argument SKIP-PARENS-P force sexp motion to ignore parenthesized
+expressions when looking at them in either direction (forced to t
+in interactive calls)."
   (interactive "^p")
   (or arg (setq arg 1))
-  (python-nav-forward-sexp (- arg)))
+  (python-nav-forward-sexp (- arg) safe skip-parens-p))
 
-(defun python-nav-forward-sexp-safe (&optional arg)
+(defun python-nav-forward-sexp-safe (&optional arg skip-parens-p)
   "Move forward safely across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-backward N times."
+backward N times.  With optional argument SKIP-PARENS-P force
+sexp motion to ignore parenthesized expressions when looking at
+them in either direction (forced to t in interactive calls)."
   (interactive "^p")
-  (or arg (setq arg 1))
-  (while (> arg 0)
-    (python-nav--forward-sexp 1 t)
-    (setq arg (1- arg)))
-  (while (< arg 0)
-    (python-nav--forward-sexp -1 t)
-    (setq arg (1+ arg))))
+  (python-nav-forward-sexp arg t skip-parens-p))
 
-(defun python-nav-backward-sexp-safe (&optional arg)
+(defun python-nav-backward-sexp-safe (&optional arg skip-parens-p)
   "Move backward safely across expressions.
 With ARG, do it that many times.  Negative arg -N means move
-forward N times."
+forward N times.  With optional argument SKIP-PARENS-P force sexp
+motion to ignore parenthesized expressions when looking at them in
+either direction (forced to t in interactive calls)."
   (interactive "^p")
-  (or arg (setq arg 1))
-  (python-nav-forward-sexp-safe (- arg)))
+  (python-nav-backward-sexp arg t skip-parens-p))
 
 (defun python-nav--up-list (&optional dir)
   "Internal implementation of `python-nav-up-list'.
@@ -2971,25 +2997,25 @@ This function takes the list of setup code to send from 
the
 
 (defcustom python-shell-completion-setup-code
   "try:
-    import __builtin__
-except ImportError:
-    # Python 3
-    import builtins as __builtin__
-try:
-    import readline, rlcompleter
+    import readline
 except:
     def __PYTHON_EL_get_completions(text):
         return []
 else:
     def __PYTHON_EL_get_completions(text):
+        try:
+            import __builtin__
+        except ImportError:
+            # Python 3
+            import builtins as __builtin__
         builtins = dir(__builtin__)
         completions = []
+        is_ipython = ('__IPYTHON__' in builtins or
+                      '__IPYTHON__active' in builtins)
+        splits = text.split()
+        is_module = splits and splits[0] in ('from', 'import')
         try:
-            splits = text.split()
-            is_module = splits and splits[0] in ('from', 'import')
-            is_ipython = ('__IPYTHON__' in builtins or
-                          '__IPYTHON__active' in builtins)
-            if is_module:
+            if is_ipython and is_module:
                 from IPython.core.completerlib import module_completion
                 completions = module_completion(text.strip())
             elif is_ipython and '__IP' in builtins:
@@ -2997,13 +3023,20 @@ else:
             elif is_ipython and 'get_ipython' in builtins:
                 completions = get_ipython().Completer.all_completions(text)
             else:
+                # Try to reuse current completer.
+                completer = readline.get_completer()
+                if not completer:
+                    # importing rlcompleter sets the completer, use it as a
+                    # last resort to avoid breaking customizations.
+                    import rlcompleter
+                    completer = readline.get_completer()
                 i = 0
                 while True:
-                    res = readline.get_completer()(text, i)
-                    if not res:
+                    completion = completer(text, i)
+                    if not completion:
                         break
                     i += 1
-                    completions.append(res)
+                    completions.append(completion)
         except:
             pass
         return completions"
@@ -3042,10 +3075,14 @@ When a match is found, native completion is disabled."
   "Enable readline based native completion."
   :type 'boolean)
 
-(defcustom python-shell-completion-native-output-timeout 0.01
+(defcustom python-shell-completion-native-output-timeout 5.0
   "Time in seconds to wait for completion output before giving up."
   :type 'float)
 
+(defcustom python-shell-completion-native-try-output-timeout 1.0
+  "Time in seconds to wait for *trying* native completion output."
+  :type 'float)
+
 (defvar python-shell-completion-native-redirect-buffer
   " *Python completions redirect*"
   "Buffer to be used to redirect output of readline commands.")
@@ -3059,7 +3096,9 @@ When a match is found, native completion is disabled."
 
 (defun python-shell-completion-native-try ()
   "Return non-nil if can trigger native completion."
-  (let ((python-shell-completion-native-enable t))
+  (let ((python-shell-completion-native-enable t)
+        (python-shell-completion-native-output-timeout
+         python-shell-completion-native-try-output-timeout))
     (python-shell-completion-native-get-completions
      (get-buffer-process (current-buffer))
      nil "int")))
@@ -3067,27 +3106,73 @@ When a match is found, native completion is disabled."
 (defun python-shell-completion-native-setup ()
   "Try to setup native completion, return non-nil on success."
   (let ((process (python-shell-get-process)))
-    (python-shell-send-string
-     (funcall
-      'mapconcat
-      #'identity
-      (list
-       "try:"
-       "    import readline, rlcompleter"
-       ;; Remove parens on callables as it breaks completion on
-       ;; arguments (e.g. str(Ari<tab>)).
-       "    class Completer(rlcompleter.Completer):"
-       "        def _callable_postfix(self, val, word):"
-       "            return word"
-       "    readline.set_completer(Completer().complete)"
-       "    if readline.__doc__ and 'libedit' in readline.__doc__:"
-       "        readline.parse_and_bind('bind ^I rl_complete')"
-       "    else:"
-       "        readline.parse_and_bind('tab: complete')"
-       "    print ('python.el: readline is available')"
-       "except:"
-       "    print ('python.el: readline not available')")
-      "\n")
+    (python-shell-send-string "
+def __PYTHON_EL_native_completion_setup():
+    try:
+        import readline
+        try:
+            import __builtin__
+        except ImportError:
+            # Python 3
+            import builtins as __builtin__
+        builtins = dir(__builtin__)
+        is_ipython = ('__IPYTHON__' in builtins or
+                      '__IPYTHON__active' in builtins)
+        class __PYTHON_EL_Completer:
+            PYTHON_EL_WRAPPED = True
+            def __init__(self, completer):
+                self.completer = completer
+                self.last_completion = None
+            def __call__(self, text, state):
+                if state == 0:
+                    # The first completion is always a dummy completion.  This
+                    # ensures proper output for sole completions and a current
+                    # input safeguard when no completions are available.
+                    self.last_completion = None
+                    completion = '0__dummy_completion__'
+                else:
+                    completion = self.completer(text, state - 1)
+                if not completion:
+                    if state == 1:
+                        # When no completions are available, two non-sharing
+                        # prefix strings are returned just to ensure output
+                        # while preventing changes to current input.
+                        completion = '1__dummy_completion__'
+                    elif self.last_completion != '~~~~__dummy_completion__':
+                        # This marks the end of output.
+                        completion = '~~~~__dummy_completion__'
+                elif completion.endswith('('):
+                    # Remove parens on callables as it breaks completion on
+                    # arguments (e.g. str(Ari<tab>)).
+                    completion = completion[:-1]
+                self.last_completion = completion
+                return completion
+        completer = readline.get_completer()
+        if not completer:
+            # Used as last resort to avoid breaking customizations.
+            import rlcompleter
+            completer = readline.get_completer()
+        if completer and not getattr(completer, 'PYTHON_EL_WRAPPED', False):
+            # Wrap the existing completer function only once.
+            new_completer = __PYTHON_EL_Completer(completer)
+            if not is_ipython:
+                readline.set_completer(new_completer)
+            else:
+                # IPython hacks readline such that `readline.set_completer`
+                # won't work.  This workaround injects the new completer
+                # function into the existing instance directly.
+                instance = getattr(completer, 'im_self', completer.__self__)
+                instance.rlcomplete = new_completer
+        if readline.__doc__ and 'libedit' in readline.__doc__:
+            readline.parse_and_bind('bind ^I rl_complete')
+        else:
+            readline.parse_and_bind('tab: complete')
+            # Require just one tab to send output.
+            readline.parse_and_bind('set show-all-if-ambiguous on')
+        print ('python.el: readline is available')
+    except IOError:
+        print ('python.el: readline not available')
+__PYTHON_EL_native_completion_setup()"
      process)
     (python-shell-accept-process-output process)
     (when (save-excursion
@@ -3165,9 +3250,8 @@ completion."
              (original-filter-fn (process-filter process))
              (redirect-buffer (get-buffer-create
                                python-shell-completion-native-redirect-buffer))
-             (separators (python-rx
-                          (or whitespace open-paren close-paren)))
-             (trigger "\t\t\t")
+             (separators (python-rx (or whitespace open-paren close-paren)))
+             (trigger "\t")
              (new-input (concat input trigger))
              (input-length
               (save-excursion
@@ -3189,7 +3273,8 @@ completion."
                     (comint-redirect-insert-matching-regexp nil)
                     ;; Feed it some regex that will never match.
                     (comint-redirect-finished-regexp "^\\'$")
-                    (comint-redirect-output-buffer redirect-buffer))
+                    (comint-redirect-output-buffer redirect-buffer)
+                    (current-time (float-time)))
                 ;; Compatibility with Emacs 24.x.  Comint changed and
                 ;; now `comint-redirect-filter' gets 3 args.  This
                 ;; checks which version of `comint-redirect-filter' is
@@ -3202,22 +3287,22 @@ completion."
                               #'comint-redirect-filter original-filter-fn))
                   (set-process-filter process #'comint-redirect-filter))
                 (process-send-string process input-to-send)
-                (accept-process-output
-                 process
-                 python-shell-completion-native-output-timeout)
-                ;; XXX: can't use `python-shell-accept-process-output'
-                ;; here because there are no guarantees on how output
-                ;; ends.  The workaround here is to call
-                ;; `accept-process-output' until we don't find anything
-                ;; else to accept.
-                (while (accept-process-output
-                        process
-                        python-shell-completion-native-output-timeout))
+                ;; Grab output until our dummy completion used as
+                ;; output end marker is found.  Output is accepted
+                ;; *very* quickly to keep the shell super-responsive.
+                (while (and (not (re-search-backward 
"~~~~__dummy_completion__" nil t))
+                            (< (- current-time (float-time))
+                               python-shell-completion-native-output-timeout))
+                  (accept-process-output process 0.01))
                 (cl-remove-duplicates
-                 (split-string
-                  (buffer-substring-no-properties
-                   (point-min) (point-max))
-                  separators t))))
+                 (cl-remove-if
+                  (lambda (c)
+                    (string-match "__dummy_completion__" c))
+                  (split-string
+                   (buffer-substring-no-properties
+                    (point-min) (point-max))
+                   separators t))
+                 :test #'string=)))
           (set-process-filter process original-filter-fn))))))
 
 (defun python-shell-completion-get-completions (process import input)
@@ -3587,17 +3672,12 @@ JUSTIFY should be used (if applicable) as in 
`fill-paragraph'."
             (`pep-257 (and multi-line-p (cons nil 2)))
             (`pep-257-nn (and multi-line-p (cons nil 1)))
             (`symmetric (and multi-line-p (cons 1 1)))))
-         (docstring-p (save-excursion
-                        ;; Consider docstrings those strings which
-                        ;; start on a line by themselves.
-                        (python-nav-beginning-of-statement)
-                        (and (= (point) str-start-pos))))
          (fill-paragraph-function))
     (save-restriction
       (narrow-to-region str-start-pos str-end-pos)
       (fill-paragraph justify))
     (save-excursion
-      (when (and docstring-p python-fill-docstring-style)
+      (when (and (python-info-docstring-p) python-fill-docstring-style)
         ;; Add the number of newlines indicated by the selected style
         ;; at the start of the docstring.
         (goto-char (+ str-start-pos num-quotes))
@@ -4423,23 +4503,40 @@ where the continued line ends."
       (when (looking-at (python-rx block-start))
         (point-marker)))))
 
+(defun python-info-assignment-statement-p (&optional current-line-only)
+  "Check if current line is an assignment.
+With argument CURRENT-LINE-ONLY is non-nil, don't follow any
+continuations, just check the if current line is an assignment."
+  (save-excursion
+    (let ((found nil))
+      (if current-line-only
+          (back-to-indentation)
+        (python-nav-beginning-of-statement))
+      (while (and
+              (re-search-forward (python-rx not-simple-operator
+                                            assignment-operator
+                                            (group not-simple-operator))
+                                 (line-end-position) t)
+              (not found))
+        (save-excursion
+          ;; The assignment operator should not be inside a string.
+          (backward-char (length (match-string-no-properties 1)))
+          (setq found (not (python-syntax-context-type)))))
+      (when found
+        (skip-syntax-forward " ")
+        (point-marker)))))
+
+;; TODO: rename to clarify this is only for the first continuation
+;; line or remove it and move its body to `python-indent-context'.
 (defun python-info-assignment-continuation-line-p ()
-  "Check if current line is a continuation of an assignment.
+  "Check if current line is the first continuation of an assignment.
 When current line is continuation of another with an assignment
 return the point of the first non-blank character after the
 operator."
   (save-excursion
     (when (python-info-continuation-line-p)
       (forward-line -1)
-      (back-to-indentation)
-      (when (and (not (looking-at (python-rx block-start)))
-                 (and (re-search-forward (python-rx not-simple-operator
-                                                    assignment-operator
-                                                    not-simple-operator)
-                                         (line-end-position) t)
-                      (not (python-syntax-context-type))))
-        (skip-syntax-forward "\s")
-        (point-marker)))))
+      (python-info-assignment-statement-p t))))
 
 (defun python-info-looking-at-beginning-of-defun (&optional syntax-ppss)
   "Check if point is at `beginning-of-defun' using SYNTAX-PPSS."
@@ -4464,6 +4561,46 @@ operator."
                 (* whitespace) line-end))
     (string-equal "" (match-string-no-properties 1))))
 
+(defun python-info-docstring-p (&optional syntax-ppss)
+  "Return non-nil if point is in a docstring.
+When optional argument SYNTAX-PPSS is given, use that instead of
+point's current `syntax-ppss'."
+  ;;; https://www.python.org/dev/peps/pep-0257/#what-is-a-docstring
+  (save-excursion
+    (when (and syntax-ppss (python-syntax-context 'string syntax-ppss))
+      (goto-char (nth 8 syntax-ppss)))
+    (python-nav-beginning-of-statement)
+    (let ((counter 1)
+          (indentation (current-indentation))
+          (backward-sexp-point)
+          (re (concat "[uU]?[rR]?"
+                      (python-rx string-delimiter))))
+      (when (and
+             (not (python-info-assignment-statement-p))
+             (looking-at-p re)
+             ;; Allow up to two consecutive docstrings only.
+             (>=
+              2
+              (progn
+                (while (save-excursion
+                         (python-nav-backward-sexp)
+                         (setq backward-sexp-point (point))
+                         (and (= indentation (current-indentation))
+                              (not (bobp)) ; Prevent infloop.
+                              (looking-at-p
+                               (concat "[uU]?[rR]?"
+                                       (python-rx string-delimiter)))))
+                  ;; Previous sexp was a string, restore point.
+                  (goto-char backward-sexp-point)
+                  (cl-incf counter))
+                counter)))
+        (python-util-forward-comment -1)
+        (python-nav-beginning-of-statement)
+        (cond ((bobp))
+              ((python-info-assignment-statement-p) t)
+              ((python-info-looking-at-beginning-of-defun))
+              (t nil))))))
+
 (defun python-info-encoding-from-cookie ()
   "Detect current buffer's encoding from its coding cookie.
 Returns the encoding as a symbol."
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 8d6d2a2..eb23494 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -2486,37 +2486,18 @@ consistent searching."
 
 (defmacro vhdl-prepare-search-2 (&rest body)
   "Enable case insensitive search, switch to syntax table that includes '_',
-and remove `intangible' overlays, then execute BODY, and finally restore the
-old environment.  Used for consistent searching."
-  ;; FIXME: Why not just let-bind `inhibit-point-motion-hooks'?  --Stef
+arrange to ignore `intangible' overlays, then execute BODY, and finally restore
+the old environment.  Used for consistent searching."
   `(let ((case-fold-search t)          ; case insensitive search
         (current-syntax-table (syntax-table))
-        overlay-all-list overlay-intangible-list overlay)
+         (inhibit-point-motion-hooks t))
      ;; use extended syntax table
      (set-syntax-table vhdl-mode-ext-syntax-table)
-     ;; remove `intangible' overlays
-     (when (fboundp 'overlay-lists)
-       (setq overlay-all-list (overlay-lists))
-       (setq overlay-all-list
-            (append (car overlay-all-list) (cdr overlay-all-list)))
-       (while overlay-all-list
-        (setq overlay (car overlay-all-list))
-        (when (memq 'intangible (overlay-properties overlay))
-          (setq overlay-intangible-list
-                (cons overlay overlay-intangible-list))
-          (overlay-put overlay 'intangible nil))
-        (setq overlay-all-list (cdr overlay-all-list))))
      ;; execute BODY safely
      (unwind-protect
          (progn ,@body)
        ;; restore syntax table
-       (set-syntax-table current-syntax-table)
-       ;; restore `intangible' overlays
-       (when (fboundp 'overlay-lists)
-         (while overlay-intangible-list
-           (overlay-put (car overlay-intangible-list) 'intangible t)
-           (setq overlay-intangible-list
-                 (cdr overlay-intangible-list)))))))
+       (set-syntax-table current-syntax-table))))
 
 (defmacro vhdl-visit-file (file-name issue-error &rest body)
   "Visit file FILE-NAME and execute BODY."
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index fe72b3f..afcbbf5 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -279,9 +279,9 @@ backward."
 (defvar xref--marker-ring (make-ring xref-marker-ring-length)
   "Ring of markers to implement the marker stack.")
 
-(defun xref-push-marker-stack ()
-  "Add point to the marker stack."
-  (ring-insert xref--marker-ring (point-marker)))
+(defun xref-push-marker-stack (&optional m)
+  "Add point M (defaults to `point-marker') to the marker stack."
+  (ring-insert xref--marker-ring (or m (point-marker))))
 
 ;;;###autoload
 (defun xref-pop-marker-stack ()
diff --git a/lisp/rect.el b/lisp/rect.el
index 75585d2..acd3a48 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -346,7 +346,8 @@ no text on the right side of the rectangle."
 (defun delete-whitespace-rectangle-line (startcol _endcol fill)
   (when (= (move-to-column startcol (if fill t 'coerce)) startcol)
     (unless (= (point) (point-at-eol))
-      (delete-region (point) (progn (skip-syntax-forward " ") (point))))))
+      (delete-region (point) (progn (skip-syntax-forward " " (point-at-eol))
+                                   (point))))))
 
 ;;;###autoload
 (defalias 'close-rectangle 'delete-whitespace-rectangle) ;; Old name
diff --git a/lisp/replace.el b/lisp/replace.el
index 70b86dd..8e71615 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -68,14 +68,12 @@ to the minibuffer that reads the string to replace, or 
invoke replacements
 from Isearch by using a key sequence like `C-s C-s M-%'." "24.3")
 
 (defcustom query-replace-from-to-separator
-  (propertize
-   (or (ignore-errors
-        ;; Ignore errors when attempt to autoload char-displayable-p
-        ;; fails while preparing to dump.
-        (if (char-displayable-p ?\u2192) " \u2192 " " -> "))
-       " -> ")
-   'face 'minibuffer-prompt)
+  (propertize (if (char-displayable-p ?\u2192) " \u2192 " " -> ")
+              'face 'minibuffer-prompt)
   "String that separates FROM and TO in the history of replacement pairs."
+  ;; Avoids error when attempt to autoload char-displayable-p fails
+  ;; while preparing to dump, also stops customize-rogue listing this.
+  :initialize 'custom-initialize-delay
   :group 'matching
   :type 'sexp
   :version "25.1")
diff --git a/lisp/ses.el b/lisp/ses.el
index b0a09ff..e986015 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -25,8 +25,18 @@
 
 ;;; To-do list:
 
+;; * M-w should deactivate the mark.
+;; * offer some way to use absolute cell addressing.
+;; * Maybe some way to copy a reference to a cell's formula rather than the
+;;   formula itself.
 ;; * split (catch 'cycle ...) call back into one or more functions
 ;; * Use $ or … for truncated fields
+;; * M-t to transpose 2 columns.
+;; * M-d should kill the cell under point.
+;; * C-t to transpose 2 rows.
+;; * C-k and M-k should be ses-kill-row and ses-kill-column.
+;; * C-o should insert the row below point rather than above?
+;; * rows inserted with C-o should inherit formulas from surrounding rows.
 ;; * Add command to make a range of columns be temporarily invisible.
 ;; * Allow paste of one cell to a range of cells -- copy formula to each.
 ;; * Do something about control characters & octal codes in cell print
@@ -296,7 +306,7 @@ default printer and then modify its output.")
       ;; an area containing renamed cell is deleted.
       ses--renamed-cell-symb-list
       ;; Global variables that we override
-      mode-line-process next-line-add-newlines transient-mark-mode)
+      next-line-add-newlines transient-mark-mode)
     "Buffer-local variables used by SES."))
 
 (defmacro ses--metaprogramming (exp) (declare (debug t)) (eval exp t))
@@ -418,6 +428,15 @@ functions refer to its value."
   (declare (debug t))
   `(ses-cell--references ,(if col `(ses-get-cell ,row ,col) row)))
 
+(defmacro ses-sym-rowcol (sym)
+  "From a cell-symbol SYM, gets the cons (row . col).  A1 => (0 . 0).  Result
+is nil if SYM is not a symbol that names a cell."
+  (declare (debug t))
+  `(let ((rc (and (symbolp ,sym) (get ,sym 'ses-cell))))
+     (if (eq rc :ses-named)
+        (gethash ,sym ses--named-cell-hashmap)
+       rc)))
+
 (defun ses-cell-p (cell)
   "Return non-nil if CELL is a cell of current buffer."
   (and (vectorp cell)
@@ -457,24 +476,19 @@ the corresponding cell with name PROPERTY-NAME."
 
 (defmacro ses-cell-value (row &optional col)
   "From a CELL or a pair (ROW,COL), get the current value for that cell."
+  (declare (debug t))
   `(symbol-value (ses-cell-symbol ,row ,col)))
 
 (defmacro ses-col-width (col)
   "Return the width for column COL."
+  (declare (debug t))
   `(aref ses--col-widths ,col))
 
 (defmacro ses-col-printer (col)
   "Return the default printer for column COL."
+  (declare (debug t))
   `(aref ses--col-printers ,col))
 
-(defmacro ses-sym-rowcol (sym)
-  "From a cell-symbol SYM, gets the cons (row . col).  A1 => (0 . 0).  Result
-is nil if SYM is not a symbol that names a cell."
-  `(let ((rc (and (symbolp ,sym) (get ,sym 'ses-cell))))
-     (if (eq rc :ses-named)
-        (gethash ,sym ses--named-cell-hashmap)
-       rc)))
-
 (defun ses-is-cell-sym-p (sym)
   "Check whether SYM point at a cell of this spread sheet."
   (let ((rowcol (get sym 'ses-cell)))
@@ -1054,8 +1068,7 @@ if the cell's value is unchanged and FORCE is nil."
 ;; is called during a recursive ses-print-cell).
 (defun ses-goto-print (row col)
   "Move point to print area for cell (ROW,COL)."
-  (let ((inhibit-point-motion-hooks t)
-       (n 0))
+  (let ((n 0))
     (goto-char (point-min))
     (forward-line row)
     ;; Calculate column position.
@@ -1067,23 +1080,36 @@ if the cell's value is unchanged and FORCE is nil."
         ;; Move point to the bol of next line (for TAB at the last cell).
         (forward-char))))
 
-(defun ses-set-curcell ()
-  "Set `ses--curcell' to the current cell symbol, or a cons (BEG,END) for a
+(defun ses--cell-at-pos (pos &optional object)
+  (or (get-text-property pos 'cursor-intangible object)
+      ;; (when (> pos (if object 0 (point-min)))
+      ;;   (get-text-property (1- pos) 'cursor-intangible object))
+      ))
+
+(defun ses--curcell (&optional pos)
+  "Return the current cell symbol, or a cons (BEG,END) for a
 region, or nil if cursor is not at a cell."
+  (unless pos (setq pos (point)))
   (if (or (not mark-active)
          deactivate-mark
-         (= (region-beginning) (region-end)))
+         (= pos (mark t)))
       ;; Single cell.
-      (setq ses--curcell (get-text-property (point) 'intangible))
+      (ses--cell-at-pos pos)
     ;; Range.
-    (let ((bcell (get-text-property (region-beginning) 'intangible))
-         (ecell (get-text-property (1- (region-end))  'intangible)))
-      (when (= (region-end) ses--data-marker)
+    (let* ((re (max pos (mark t)))
+           (bcell (ses--cell-at-pos (min pos (mark t))))
+           (ecell (ses--cell-at-pos (1- re))))
+      (when (= re ses--data-marker)
        ;; Correct for overflow.
-       (setq ecell (get-text-property (- (region-end) 2)  'intangible)))
-      (setq ses--curcell (if (and bcell ecell)
-                            (cons bcell ecell)
-                          nil))))
+       (setq ecell (ses--cell-at-pos (- (region-end) 2))))
+      (if (and bcell ecell)
+          (cons bcell ecell)
+        nil))))
+
+(defun ses-set-curcell ()
+  "Set `ses--curcell' to the current cell symbol, or a cons (BEG,END) for a
+region, or nil if cursor is not at a cell."
+  (setq ses--curcell (ses--curcell))
   nil)
 
 (defun ses-check-curcell (&rest args)
@@ -1197,11 +1223,10 @@ preceding cell has spilled over."
       ;; Install the printed result.  This is not interruptible.
       (let ((inhibit-read-only t)
            (inhibit-quit      t))
-       (let ((inhibit-point-motion-hooks t))
-         (delete-region (point) (progn
-                                  (move-to-column (+ (current-column)
-                                                     (string-width text)))
-                                  (1+ (point)))))
+        (delete-region (point) (progn
+                                 (move-to-column (+ (current-column)
+                                                    (string-width text)))
+                                 (1+ (point))))
        ;; We use concat instead of inserting separate strings in order to
        ;; reduce the number of cells in the undo list.
        (setq x (concat text (if (< maxcol ses--numcols) " " "\n")))
@@ -1211,13 +1236,15 @@ preceding cell has spilled over."
        ;; inherit from surrounding text?)
        (set-text-properties 0 (length x) nil x)
        (insert-and-inherit x)
-       (put-text-property startpos (point) 'intangible
+       (put-text-property startpos (point) 'cursor-intangible
                           (ses-cell-symbol cell))
        (when (and (zerop row) (zerop col))
          ;; Reconstruct special beginning-of-buffer attributes.
          (put-text-property (point-min) (point) 'keymap 'ses-mode-print-map)
          (put-text-property (point-min) (point) 'read-only 'ses)
-         (put-text-property (point-min) (1+ (point-min)) 'front-sticky t)))
+         (put-text-property (point-min) (1+ (point-min))
+                             ;; `cursor-intangible' shouldn't be sticky at BOB.
+                             'front-sticky '(read-only keymap))))
       (if (= row (1- ses--header-row))
          ;; This line is part of the header --- force recalc.
          (ses-reset-header-string))
@@ -1284,8 +1311,7 @@ COL=NUMCOLS.  Deletes characters if CHANGE < 0.  Caller 
should bind
       (ses-goto-print row col)
       (when at-end
        ;; Insert new columns before newline.
-       (let ((inhibit-point-motion-hooks t))
-         (backward-char 1)))
+        (backward-char 1))
       (if blank
          (insert blank)
        (delete-char (- change))))))
@@ -1299,7 +1325,7 @@ when the width of cell (ROW,COL) has changed."
     ;;Cell was skipped over - reprint previous
     (ses-goto-print row col)
     (backward-char 1)
-    (let ((rowcol (ses-sym-rowcol (get-text-property (point) 'intangible))))
+    (let ((rowcol (ses-sym-rowcol (ses--cell-at-pos (point)))))
       (ses-print-cell (car rowcol) (cdr rowcol)))))
 
 
@@ -1319,17 +1345,16 @@ number, COL is the column number for a data cell -- 
otherwise DEF
 is one of the symbols ses--col-widths, ses--col-printers,
 ses--default-printer, ses--numrows, or ses--numcols."
   (ses-widen)
-  (let ((inhibit-point-motion-hooks t)) ; In case intangible attrs are wrong.
-    (if col
-       ;; It's a cell.
-       (progn
-         (goto-char ses--data-marker)
-         (forward-line (+ 1 (* def (1+ ses--numcols)) col)))
-      ;; Convert def-symbol to offset.
-      (setq def (plist-get ses-paramlines-plist def))
-      (or def (signal 'args-out-of-range nil))
-      (goto-char ses--params-marker)
-      (forward-line def))))
+  (if col
+      ;; It's a cell.
+      (progn
+        (goto-char ses--data-marker)
+        (forward-line (+ 1 (* def (1+ ses--numcols)) col)))
+    ;; Convert def-symbol to offset.
+    (setq def (plist-get ses-paramlines-plist def))
+    (or def (signal 'args-out-of-range nil))
+    (goto-char ses--params-marker)
+    (forward-line def)))
 
 (defun ses-file-format-extend-parameter-list (new-file-format)
   "Extend the global parameters list when file format is updated
@@ -1843,7 +1868,6 @@ Narrows the buffer to show only the print area.  Gives it 
`read-only' and
 `intangible' properties.  Sets up highlighting for current cell."
   (interactive)
   (let ((end (point-min))
-       (inhibit-point-motion-hooks t)
        pos sym)
     (with-silent-modifications
       (ses-goto-data 0 0)    ; Include marker between print-area and data-area.
@@ -1855,7 +1879,9 @@ Narrows the buffer to show only the print area.  Gives it 
`read-only' and
       (put-text-property (point-min) (1- (point)) 'keymap 'ses-mode-print-map)
       ;; For the beginning of the buffer, we want the read-only and keymap
       ;; attributes to be  inherited from the first character.
-      (put-text-property (point-min) (1+ (point-min)) 'front-sticky t)
+      (put-text-property (point-min) (1+ (point-min))
+                         ;; `cursor-intangible' shouldn't be sticky at BOB.
+                         'front-sticky '(read-only keymap))
       ;; Create intangible properties, which also indicate which cell the text
       ;; came from.
       (dotimes-with-progress-reporter (row ses--numrows) "Finding cells..."
@@ -1878,7 +1904,7 @@ Narrows the buffer to show only the print area.  Gives it 
`read-only' and
                             (+ end (ses-col-width col) 1)
                           (forward-char)
                           (point))))
-            (put-text-property pos end 'intangible sym))))))
+            (put-text-property pos end 'cursor-intangible sym))))))
   ;; Create the underlining overlay.  It's impossible for (point) to be 2,
   ;; because column A must be at least 1 column wide.
   (setq ses--curcell-overlay (make-overlay (1+ (point-min)) (1+ (point-min))))
@@ -1968,6 +1994,11 @@ formula:
                                                 (window-hscroll))
                                           (ses-create-header-string))
                                         ses--header-string)))
+    (setq-local mode-line-process '(:eval (ses--mode-line-process)))
+    (add-hook 'pre-redisplay-functions #'ses--cursor-sensor-highlight
+              ;; Highlight the cell after moving cursor out of intangible.
+              'append t)
+    (cursor-intangible-mode 1)
     (let ((was-empty    (zerop (buffer-size)))
          (was-modified (buffer-modified-p)))
       (save-excursion
@@ -2032,32 +2063,7 @@ narrows the buffer now."
          ;; read the local variables at the end of the file.  Now it's safe to
          ;; do the narrowing.
          (narrow-to-region (point-min) ses--data-marker)
-         (setq ses--deferred-narrow nil))
-       ;; Update the mode line.
-       (let ((oldcell ses--curcell))
-         (ses-set-curcell)
-         (unless (eq ses--curcell oldcell)
-           (cond
-            ((not ses--curcell)
-             (setq mode-line-process nil))
-            ((atom ses--curcell)
-             (setq mode-line-process (list " cell "
-                                           (symbol-name ses--curcell))))
-            (t
-             (setq mode-line-process (list " range "
-                                           (symbol-name (car ses--curcell))
-                                           "-"
-                                           (symbol-name (cdr ses--curcell))))))
-           (force-mode-line-update)))
-       ;; Use underline overlay for single-cells only, turn off otherwise.
-       (if (listp ses--curcell)
-           (move-overlay ses--curcell-overlay 2 2)
-         (let ((next (next-single-property-change (point) 'intangible)))
-           (move-overlay ses--curcell-overlay (point) (1- next))))
-       (when (not (pos-visible-in-window-p))
-         ;; Scrolling will happen later.
-         (run-with-idle-timer 0.01 nil 'ses-command-hook)
-         (setq ses--curcell t)))
+         (setq ses--deferred-narrow nil)))
     ;; Prevent errors in this post-command-hook from silently erasing the hook!
     (error
      (unless executing-kbd-macro
@@ -2065,6 +2071,38 @@ narrows the buffer now."
      (message "%s" (error-message-string err))))
   nil) ; Make coverage-tester happy.
 
+(defun ses--mode-line-process ()
+  (let ((cmlp (window-parameter nil 'ses--mode-line-process))
+        (curcell (ses--curcell (window-point))))
+    (if (equal curcell (car cmlp))
+        (cdr cmlp)
+      (let ((mlp
+             (cond
+              ((not curcell)  nil)
+              ((atom curcell) (list " cell " (symbol-name curcell)))
+              (t
+               (list " range "
+                     (symbol-name (car curcell))
+                     "-"
+                     (symbol-name (cdr curcell)))))))
+        (set-window-parameter nil 'ses--mode-line-process (cons curcell mlp))
+        mlp))))
+
+(defun ses--cursor-sensor-highlight (window)
+  (let ((curcell (ses--curcell))
+        (ol (window-parameter window 'ses--curcell-overlay)))
+    (unless ol
+      (setq ol (make-overlay (point) (point)))
+      (overlay-put ol 'window window)
+      (overlay-put ol 'face 'underline)
+      (set-window-parameter window 'ses--curcell-overlay ol))
+    ;; Use underline overlay for single-cells only, turn off otherwise.
+    (if (listp curcell)
+        (delete-overlay ol)
+      (let* ((pos (window-point window))
+             (next (next-single-property-change pos 'cursor-intangible)))
+        (move-overlay ol pos (1- next))))))
+
 (defun ses-create-header-string ()
   "Set up `ses--header-string' as the buffer's header line.
 Based on the current set of columns and `window-hscroll' position."
@@ -2132,7 +2170,7 @@ print area if NONARROW is nil."
   (widen)
   (unless nonarrow
     (setq ses--deferred-narrow t))
-  (let ((startcell (get-text-property (point) 'intangible))
+  (let ((startcell (ses--cell-at-pos (point)))
        (inhibit-read-only t))
     (ses-begin-change)
     (goto-char (point-min))
@@ -2222,7 +2260,7 @@ to are recalculated first."
 (defun ses-recalculate-all ()
   "Recalculate and reprint all cells."
   (interactive "*")
-  (let ((startcell    (get-text-property (point) 'intangible))
+  (let ((startcell    (ses--cell-at-pos (point)))
        (ses--curcell (cons 'A1 (ses-cell-symbol (1- ses--numrows)
                                                 (1- ses--numcols)))))
     (ses-recalculate-cell)
@@ -2730,7 +2768,7 @@ inserts a new row if at bottom of print area.  Repeat 
COUNT times."
       (let ((col (cdr (ses-sym-rowcol ses--curcell))))
        (when (/= 32
                  (char-before (next-single-property-change (point)
-                                                           'intangible)))
+                                                           
'cursor-intangible)))
          ;; We're already in last nonskipped cell on line.  Need to create a
          ;; new column.
          (barf-if-buffer-read-only)
@@ -2811,12 +2849,11 @@ SES attributes recording the contents of the cell as of 
the time of copying."
   (when (= end ses--data-marker)
     ;;Avoid overflow situation
     (setq end (1- ses--data-marker)))
-  (let* ((inhibit-point-motion-hooks t)
-        (x (mapconcat #'ses-copy-region-helper
+  (let* ((x (mapconcat #'ses-copy-region-helper
                       (extract-rectangle beg (1- end)) "\n")))
     (remove-text-properties 0 (length x)
                            '(read-only t
-                             intangible t
+                             cursor-intangible t
                              keymap t
                              front-sticky t)
                            x)
@@ -2832,8 +2869,8 @@ the corresponding data cell."
        (pos 0)
        mycell next sym rowcol)
     (while pos
-      (setq sym    (get-text-property pos 'intangible line)
-           next   (next-single-property-change pos 'intangible line)
+      (setq sym    (ses--cell-at-pos pos line)
+           next   (next-single-property-change pos 'cursor-intangible line)
            rowcol (ses-sym-rowcol sym)
            mycell (ses-get-cell (car rowcol) (cdr rowcol)))
       (put-text-property pos (or next (length line))
@@ -3229,7 +3266,7 @@ With prefix, sorts in REVERSE order."
       ;;Get key columns and sort them
       (dotimes (x (- maxrow minrow -1))
        (ses-goto-print (+ minrow x) sorter)
-       (setq end (next-single-property-change (point) 'intangible))
+       (setq end (next-single-property-change (point) 'cursor-intangible))
        (push (cons (buffer-substring-no-properties (point) end)
                    (+ minrow x))
              keys))
@@ -3379,10 +3416,8 @@ highlighted range in the spreadsheet."
                  (if (eolp)
                      (+ pos (ses-col-width col) 1)
                    (point)))))
-      (put-text-property pos end 'intangible new-name))
-    ;; update mode line
-    (setq mode-line-process (list " cell "
-                                 (symbol-name new-name)))
+      (put-text-property pos end 'cursor-intangible new-name))
+    ;; Update the cell name in the mode-line.
     (force-mode-line-update)))
 
 (defun ses-refresh-local-printer (name _compiled-value) ;FIXME: unused arg?
@@ -3622,7 +3657,7 @@ Use `math-format-value' as a printer for Calc objects."
   "Return ARGS reversed, with the blank elements (nil and *skip*) removed."
   (let (result)
     (dolist (cur args)
-      (unless (memq cur '(nil *skip*))
+      (unless (memq cur '(nil *skip* *error*))
        (push cur result)))
     result))
 
diff --git a/lisp/simple.el b/lisp/simple.el
index 5185607..cf1912a 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1776,6 +1776,7 @@ in this use of the minibuffer.")
 
 (defun minibuffer-avoid-prompt (_new _old)
   "A point-motion hook for the minibuffer, that moves point out of the prompt."
+  (declare (obsolete cursor-intangible-mode "25.1"))
   (constrain-to-field nil (point-max)))
 
 (defcustom minibuffer-history-case-insensitive-variables nil
@@ -4908,7 +4909,7 @@ also checks the value of `use-empty-active-region'."
        ;; without the mark being set (e.g. bug#17324).  We really should fix
        ;; that problem, but in the mean time, let's make sure we don't say the
        ;; region is active when there's no mark.
-       (mark)))
+       (progn (cl-assert (mark)) t)))
 
 
 (defvar redisplay-unhighlight-region-function
@@ -4934,37 +4935,41 @@ also checks the value of `use-empty-active-region'."
       rol)))
 
 (defun redisplay--update-region-highlight (window)
-  (with-current-buffer (window-buffer window)
-    (let ((rol (window-parameter window 'internal-region-overlay)))
-      (if (not (region-active-p))
-          (funcall redisplay-unhighlight-region-function rol)
-        (let* ((pt (window-point window))
-               (mark (mark))
-               (start (min pt mark))
-               (end   (max pt mark))
-               (new
-                (funcall redisplay-highlight-region-function
-                         start end window rol)))
-          (unless (equal new rol)
-            (set-window-parameter window 'internal-region-overlay
-                                  new)))))))
-
-(defun redisplay--update-region-highlights (windows)
-  (with-demoted-errors "redisplay--update-region-highlights: %S"
+  (let ((rol (window-parameter window 'internal-region-overlay)))
+    (if (not (and (region-active-p)
+                  (or highlight-nonselected-windows
+                      (eq window (selected-window))
+                      (and (window-minibuffer-p)
+                           (eq window (minibuffer-selected-window))))))
+        (funcall redisplay-unhighlight-region-function rol)
+      (let* ((pt (window-point window))
+             (mark (mark))
+             (start (min pt mark))
+             (end   (max pt mark))
+             (new
+              (funcall redisplay-highlight-region-function
+                       start end window rol)))
+        (unless (equal new rol)
+          (set-window-parameter window 'internal-region-overlay
+                                new))))))
+
+(defvar pre-redisplay-functions (list #'redisplay--update-region-highlight)
+  "Hook run just before redisplay.
+It is called in each window that is to be redisplayed.  It takes one argument,
+which is the window that will be redisplayed.  When run, the `current-buffer'
+is set to the buffer displayed in that window.")
+
+(defun redisplay--pre-redisplay-functions (windows)
+  (with-demoted-errors "redisplay--pre-redisplay-functions: %S"
     (if (null windows)
-        (redisplay--update-region-highlight (selected-window))
-      (unless (listp windows) (setq windows (window-list-1 nil nil t)))
-      (if highlight-nonselected-windows
-          (mapc #'redisplay--update-region-highlight windows)
-        (let ((msw (and (window-minibuffer-p) (minibuffer-selected-window))))
-          (dolist (w windows)
-            (if (or (eq w (selected-window)) (eq w msw))
-                (redisplay--update-region-highlight w)
-              (funcall redisplay-unhighlight-region-function
-                       (window-parameter w 'internal-region-overlay)))))))))
+        (with-current-buffer (window-buffer (selected-window))
+          (run-hook-with-args 'pre-redisplay-functions (selected-window)))
+      (dolist (win (if (listp windows) windows (window-list-1 nil nil t)))
+        (with-current-buffer (window-buffer win)
+          (run-hook-with-args 'pre-redisplay-functions win))))))
 
 (add-function :before pre-redisplay-function
-              #'redisplay--update-region-highlights)
+              #'redisplay--pre-redisplay-functions)
 
 
 (defvar-local mark-ring nil
@@ -7001,6 +7006,8 @@ More precisely, a char with closeparen syntax is 
self-inserted.")
              (not executing-kbd-macro)
              (not noninteractive)
             ;; Verify an even number of quoting characters precede the close.
+             ;; FIXME: Also check if this parenthesis closes a comment as
+             ;; can happen in Pascal and SML.
             (= 1 (logand 1 (- (point)
                               (save-excursion
                                 (forward-char -1)
diff --git a/lisp/subr.el b/lisp/subr.el
index 163a1c4..1d41e01 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -339,20 +339,41 @@ configuration."
 
 ;;;; List functions.
 
-(defsubst caar (x)
+;; Note: `internal--compiler-macro-cXXr' was copied from
+;; `cl--compiler-macro-cXXr' in cl-macs.el.  If you amend either one,
+;; you may want to amend the other, too.
+(defun internal--compiler-macro-cXXr (form x)
+  (let* ((head (car form))
+         (n (symbol-name (car form)))
+         (i (- (length n) 2)))
+    (if (not (string-match "c[ad]+r\\'" n))
+        (if (and (fboundp head) (symbolp (symbol-function head)))
+            (internal--compiler-macro-cXXr (cons (symbol-function head) (cdr 
form))
+                                     x)
+          (error "Compiler macro for cXXr applied to non-cXXr form"))
+      (while (> i (match-beginning 0))
+        (setq x (list (if (eq (aref n i) ?a) 'car 'cdr) x))
+        (setq i (1- i)))
+      x)))
+
+(defun caar (x)
   "Return the car of the car of X."
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (car x)))
 
-(defsubst cadr (x)
+(defun cadr (x)
   "Return the car of the cdr of X."
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (car (cdr x)))
 
-(defsubst cdar (x)
+(defun cdar (x)
   "Return the cdr of the car of X."
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (car x)))
 
-(defsubst cddr (x)
+(defun cddr (x)
   "Return the cdr of the cdr of X."
+  (declare (compiler-macro internal--compiler-macro-cXXr))
   (cdr (cdr x)))
 
 (defun last (list &optional n)
@@ -910,7 +931,7 @@ in a cleaner way with command remapping, like this:
            (nconc (nreverse skipped) newdef)))
       ;; Look past a symbol that names a keymap.
       (setq inner-def
-           (or (indirect-function defn t) defn))
+           (or (indirect-function defn) defn))
       ;; For nested keymaps, we use `inner-def' rather than `defn' so as to
       ;; avoid autoloading a keymap.  This is mostly done to preserve the
       ;; original non-autoloading behavior of pre-map-keymap times.
@@ -1915,9 +1936,9 @@ PROGRAM is the program file name.  It is searched for in 
`exec-path'
 \(which see).  If nil, just associate a pty with the buffer.  Remaining
 arguments are strings to give program as arguments.
 
-If you want to separate standard output from standard error, invoke
-the command through a shell and redirect one of them using the shell
-syntax."
+If you want to separate standard output from standard error, use
+`make-process' or invoke the command through a shell and redirect
+one of them using the shell syntax."
   (unless (fboundp 'make-process)
     (error "Emacs was compiled without subprocess support"))
   (apply #'make-process
@@ -1953,14 +1974,13 @@ process."
 
 ;; compatibility
 
-(make-obsolete
- 'process-kill-without-query
- "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
- "22.1")
 (defun process-kill-without-query (process &optional _flag)
   "Say no query needed if PROCESS is running when Emacs is exited.
 Optional second argument if non-nil says to require a query.
 Value is t if a query was formerly required."
+  (declare (obsolete
+            "use `process-query-on-exit-flag' or 
`set-process-query-on-exit-flag'."
+            "22.1"))
   (let ((old (process-query-on-exit-flag process)))
     (set-process-query-on-exit-flag process nil)
     old))
@@ -2737,12 +2757,12 @@ Otherwise, return nil."
 (defun special-form-p (object)
   "Non-nil if and only if OBJECT is a special form."
   (if (and (symbolp object) (fboundp object))
-      (setq object (indirect-function object t)))
+      (setq object (indirect-function object)))
   (and (subrp object) (eq (cdr (subr-arity object)) 'unevalled)))
 
 (defun macrop (object)
   "Non-nil if and only if OBJECT is a macro."
-  (let ((def (indirect-function object t)))
+  (let ((def (indirect-function object)))
     (when (consp def)
       (or (eq 'macro (car def))
           (and (autoloadp def) (memq (nth 4 def) '(macro t)))))))
@@ -3485,6 +3505,8 @@ LIMIT.
 
 As a general recommendation, try to avoid using `looking-back'
 wherever possible, since it is slow."
+  (declare
+   (advertised-calling-convention (regexp limit &optional greedy) "25.1"))
   (let ((start (point))
        (pos
         (save-excursion
@@ -3922,9 +3944,7 @@ This function is called directly from the C code."
       ;; discard the file name regexp
       (mapc #'funcall (cdr a-l-element))))
   ;; Complain when the user uses obsolete files.
-  (when (save-match-data
-          (and (string-match "/obsolete/\\([^/]*\\)\\'" abs-file)
-               (not (equal "loaddefs.el" (match-string 1 abs-file)))))
+  (when (string-match-p "/obsolete/\\([^/]*\\)\\'" abs-file)
     ;; Maybe we should just use display-warning?  This seems yucky...
     (let* ((file (file-name-nondirectory abs-file))
           (msg (format "Package %s is obsolete!"
diff --git a/lisp/term.el b/lisp/term.el
index 43138fa..4c82986 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1505,11 +1505,6 @@ Using \"emacs\" loses, because bash disables editing if 
$TERM == emacs.")
           (format "TERMINFO=%s" data-directory)
           (format term-termcap-format "TERMCAP="
                   term-term-name term-height term-width)
-          ;; We are going to get rid of the binding for EMACS,
-          ;; probably in Emacs 23, because it breaks
-          ;; `./configure' of some packages that expect it to
-          ;; say where to find EMACS.
-          (format "EMACS=%s (term:%s)" emacs-version term-protocol-version)
           (format "INSIDE_EMACS=%s,term:%s" emacs-version 
term-protocol-version)
           (format "LINES=%d" term-height)
           (format "COLUMNS=%d" term-width))
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index b5e6ff3..b0667e6 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -214,6 +214,8 @@ See the documentation of `create-fontset-from-fontset-spec' 
for the format.")
 (defvar libgif-version)
 (defvar libjpeg-version)
 
+(defvar libgnutls-version)              ; gnutls.c
+
 ;;; Set default known names for external libraries
 (setq dynamic-library-alist
       (list
@@ -266,7 +268,9 @@ See the documentation of `create-fontset-from-fontset-spec' 
for the format.")
        '(gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
        '(glib "libglib-2.0-0.dll")
        '(gobject "libgobject-2.0-0.dll")
-       '(gnutls "libgnutls-28.dll" "libgnutls-26.dll")
+       (if (>= libgnutls-version 30400)
+          '(gnutls "libgnutls-30.dll")
+        '(gnutls "libgnutls-28.dll" "libgnutls-26.dll"))
        '(libxml2 "libxml2-2.dll" "libxml2.dll")
        '(zlib "zlib1.dll" "libz-1.dll")))
 
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 519f691..726ecf9 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -37,15 +37,31 @@ If a list, assume that the listed features are supported, 
without checking.
 
 The relevant features are:
   modifyOtherKeys  -- if supported, more key bindings work (e.g., \"\\C-,\")
-  reportBackground -- if supported, Xterm reports its background color"
+  reportBackground -- if supported, Xterm reports its background color
+  setSelection     -- if supported, Xterm saves yanked text to the X selection"
   :version "24.1"
-  :group 'xterm
   :type '(choice (const :tag "No" nil)
                  (const :tag "Check" check)
                  ;; NOTE: If you add entries here, make sure to update
                  ;; `terminal-init-xterm' as well.
                  (set (const :tag "modifyOtherKeys support" modifyOtherKeys)
-                      (const :tag "report background" reportBackground))))
+                      (const :tag "report background" reportBackground)
+                      (const :tag "set X selection" setSelection))))
+
+(defcustom xterm-max-cut-length 100000
+  "Maximum number of bytes to cut into xterm using the OSC 52 sequence.
+
+The OSC 52 sequence requires a terminator byte.  Some terminals will ignore or
+mistreat a terminated sequence that is longer than a certain size, usually to
+protect users from runaway sequences.
+
+This variable allows you to tweak the maximum number of bytes that will be sent
+using the OSC 52 sequence.
+
+If you select a region larger than this size, it won't be copied to your system
+clipboard.  Since clipboard data is base 64 encoded, the actual number of
+string bytes that can be copied is 3/4 of this value."
+  :type 'integer)
 
 (defconst xterm-paste-ending-sequence "\e[201~"
   "Characters send by the terminal to end a bracketed paste.")
@@ -620,7 +636,13 @@ The relevant features are:
         ;; introduced) or higher, initialize the
         ;; modifyOtherKeys support.
         (when (>= version 216)
-          (terminal-init-xterm-modify-other-keys))))))
+          (terminal-init-xterm-modify-other-keys))
+        ;; In version 203 support for accessing the X selection was
+        ;; added.  Hterm reports itself as version 256 and supports it
+        ;; as well.  gnome-terminal doesn't and is excluded by this
+        ;; test.
+        (when (>= version 203)
+          (terminal-init-xterm-activate-set-selection))))))
 
 (defun xterm--query (query handlers)
   "Send QUERY string to the terminal and watch for a response.
@@ -699,7 +721,10 @@ We run the first FUNCTION whose STRING matches the input 
events."
                     '(("\e]11;" .  xterm--report-background-handler))))
 
     (when (memq 'modifyOtherKeys xterm-extra-capabilities)
-      (terminal-init-xterm-modify-other-keys)))
+      (terminal-init-xterm-modify-other-keys))
+
+    (when (memq 'setSelection xterm-extra-capabilities)
+      (terminal-init-xterm-activate-set-selection)))
 
   ;; Unconditionally enable bracketed paste mode: terminals that don't
   ;; support it just ignore the sequence.
@@ -719,6 +744,64 @@ We run the first FUNCTION whose STRING matches the input 
events."
   (push "\e[?2004l" (terminal-parameter nil 'tty-mode-reset-strings))
   (push "\e[?2004h" (terminal-parameter nil 'tty-mode-set-strings)))
 
+(defun terminal-init-xterm-activate-set-selection ()
+  "Terminal initialization for `gui-set-selection'."
+  (set-terminal-parameter nil 'xterm--set-selection t))
+
+;; FIXME: This defines the gui method for all terminals, even tho it only
+;; supports a subset of them.
+(gui-method-define gui-set-selection nil #'xterm--set-selection)
+
+(defun xterm--set-selection (type data)
+  "Copy DATA to the X selection using the OSC 52 escape sequence.
+
+TYPE specifies which selection to set; it must be either
+`PRIMARY' or `CLIPBOARD'.  DATA must be a string.
+
+This can be used as a `gui-set-selection' method for
+xterm-compatible terminal emulators.  Then your system clipboard
+will be updated whenever you copy a region of text in Emacs.
+
+If the resulting OSC 52 sequence would be longer than
+`xterm-max-cut-length', then the TEXT is not sent to the system
+clipboard.
+
+This function either sends a raw OSC 52 sequence or wraps the OSC
+52 in a Device Control String sequence.  This way, it will work
+on a bare terminal emulators as well as inside the screen
+program.  When inside the screen program, this function also
+chops long DCS sequences into multiple smaller ones to avoid
+hitting screen's max DCS length."
+  (let* ((screen (eq (terminal-parameter nil 'terminal-initted)
+                     'terminal-init-screen)))
+    ;; Only do something if the current terminal is actually an XTerm
+    ;; or screen.
+    (when (terminal-parameter nil 'xterm--set-selection)
+      (let* ((bytes (encode-coding-string data 'utf-8-unix))
+             (base-64 (if screen
+                          (replace-regexp-in-string
+                           "\n" "\e\\\eP"
+                           (base64-encode-string bytes)
+                           :fixedcase :literal)
+                        (base64-encode-string bytes :no-line-break)))
+             (length (length base-64)))
+        (if (> length xterm-max-cut-length)
+            (progn
+              (warn "Selection too long to send to terminal: %d bytes" length)
+              (sit-for 2))
+          (send-string-to-terminal
+           (concat
+            (when screen "\eP")
+            "\e]52;"
+            (pcase type
+              ('PRIMARY "p")
+              ('CLIPBOARD "c")
+              (_ (error "Invalid selection type: %S" type)))
+            ";"
+            base-64
+            "\a"
+            (when screen "\e\\"))))))))
+
 ;; Set up colors, for those versions of xterm that support it.
 (defvar xterm-standard-colors
   ;; The names in the comments taken from XTerm-col.ad in the xterm
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index 7280080..424cdb7 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -41,7 +41,7 @@
 (defconst css-pseudo-class-ids
   '("active" "checked" "disabled" "empty" "enabled" "first"
     "first-child" "first-of-type" "focus" "hover" "indeterminate" "lang"
-    "last-child" "last-of-type" "left" "link" "nth-child"
+    "last-child" "last-of-type" "left" "link" "not" "nth-child"
     "nth-last-child" "nth-last-of-type" "nth-of-type" "only-child"
     "only-of-type" "right" "root" "target" "visited")
   "Identifiers for pseudo-classes.")
@@ -327,6 +327,10 @@
     (`(:elem . basic) css-indent-offset)
     (`(:elem . arg) 0)
     (`(:list-intro . ,(or `";" `"")) t) ;"" stands for BOB (bug#15467).
+    (`(:before . "{")
+     (when (smie-rule-hanging-p)
+       (smie-backward-sexp ";")
+       (smie-indent-virtual)))
     (`(:before . ,(or "{" "("))
      (if (smie-rule-hanging-p) (smie-rule-parent 0)))))
 
@@ -377,7 +381,8 @@ pseudo-classes, and at-rules."
   (setq-local comment-start-skip "/\\*+[ \t]*")
   (setq-local comment-end "*/")
   (setq-local comment-end-skip "[ \t]*\\*+/")
-  (setq-local fill-paragraph-function 'css-fill-paragraph)
+  (setq-local fill-paragraph-function #'css-fill-paragraph)
+  (setq-local adaptive-fill-function #'css-adaptive-fill)
   (setq-local add-log-current-defun-function #'css-current-defun-name)
   (smie-setup css-smie-grammar #'css-smie-rules
               :forward-token #'css-smie--forward-token
@@ -391,6 +396,12 @@ pseudo-classes, and at-rules."
 
 (defun css-fill-paragraph (&optional justify)
   (save-excursion
+    ;; Fill succeeding comment when invoked right before a multi-line
+    ;; comment.
+    (when (save-excursion
+            (beginning-of-line)
+            (comment-search-forward (point-at-eol) t))
+      (goto-char (match-end 0)))
     (let ((ppss (syntax-ppss))
           (eol (line-end-position)))
       (cond
@@ -410,8 +421,11 @@ pseudo-classes, and at-rules."
                 (paragraph-separate
                  (if (and comment-continue
                           (string-match "[^ \t]" comment-continue))
-                     (concat "\\(?:[ \t]*" (regexp-quote comment-continue)
-                             "\\)?\\(?:" paragraph-separate "\\)")
+                     (concat "\\(?:[ \t]*\\(?:"
+                             (regexp-quote comment-continue) "\\|"
+                             comment-start-skip "\\|"
+                             comment-end-skip "\\)\\)?"
+                             "\\(?:" paragraph-separate "\\)")
                    paragraph-separate))
                 (paragraph-start
                  (if (and comment-continue
@@ -464,6 +478,12 @@ pseudo-classes, and at-rules."
             ;; Don't use the default filling code.
             t)))))))
 
+(defun css-adaptive-fill ()
+  (when (looking-at "[ \t]*/\\*[ \t]*")
+    (let ((str (match-string 0)))
+      (and (string-match "/\\*" str)
+           (replace-match " *" t t str)))))
+
 (defun css-current-defun-name ()
   "Return the name of the CSS section at point, or nil."
   (save-excursion
@@ -500,6 +520,7 @@ pseudo-classes, and at-rules."
   "Major mode to edit \"Sassy CSS\" files."
   (setq-local comment-start "// ")
   (setq-local comment-end "")
+  (setq-local comment-continue " *")
   (setq-local comment-start-skip "/[*/]+[ \t]*")
   (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)")
   (setq-local font-lock-defaults '(scss-font-lock-keywords nil t)))
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index b1aff42..7e961e8 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -544,18 +544,28 @@ With prefix 3, restrict index to region."
 
       (setq buffer-read-only nil)
       (insert (format
-"INDEX <%s> on %s
+               "INDEX <%s> on %s
 Restriction: <%s>
 SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan [f]ollow [?]Help
 ------------------------------------------------------------------------------
-" index-tag (abbreviate-file-name master)
-(if (eq (car (car reftex-index-restriction-data)) 'toc)
-    (nth 2 (car reftex-index-restriction-data))
-  reftex-index-restriction-indicator)))
+"
+               index-tag (abbreviate-file-name master)
+               (if (eq (car (car reftex-index-restriction-data)) 'toc)
+                   (nth 2 (car reftex-index-restriction-data))
+                 reftex-index-restriction-indicator)))
 
       (if (reftex-use-fonts)
-          (put-text-property 1 (point) 'face reftex-index-header-face))
-      (put-text-property 1 (point) 'intangible t)
+          (put-text-property (point-min) (point)
+                             'face reftex-index-header-face))
+      (if (fboundp 'cursor-intangible-mode)
+          (cursor-intangible-mode 1)
+        ;; If `cursor-intangible' is not available, fallback on the old
+        ;; intrusive `intangible' property.
+        (put-text-property (point-min) (point) 'intangible t))
+      (add-text-properties (point-min) (point)
+                           '(cursor-intangible t
+                             front-sticky (cursor-intangible)
+                             rear-nonsticky (cursor-intangible)))
 
       (reftex-insert-index docstruct index-tag)
       (goto-char (point-min))
@@ -697,9 +707,10 @@ SPC=view TAB=goto RET=goto+hide [e]dit [q]uit [r]escan 
[f]ollow [?]Help
 
 (defun reftex-index-post-command-hook ()
   ;; Used in the post-command-hook for the *Index* buffer
+  ;; FIXME: Lots of redundancy with reftex-toc-post-command-hook!
   (when (get-text-property (point) :data)
-    (and (> (point) 1)
-         (not (get-text-property (point) 'intangible))
+    (and (> (point) 1) ;FIXME: Is this point-min or do we care about narrowing?
+         (not (get-text-property (point) 'cursor-intangible))
          (memq reftex-highlight-selection '(cursor both))
          (reftex-highlight 1
            (or (previous-single-property-change (1+ (point)) :data)
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 69cab78..085f2d7 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -280,7 +280,15 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels 
[f]ollow [x]r [?]Help
 
       (if (reftex-use-fonts)
           (put-text-property (point-min) (point) 'font-lock-face 
reftex-toc-header-face))
-      (put-text-property (point-min) (point) 'intangible t)
+      (if (fboundp 'cursor-intangible-mode)
+          (cursor-intangible-mode 1)
+        ;; If `cursor-intangible' is not available, fallback on the old
+        ;; intrusive `intangible' property.
+        (put-text-property (point-min) (point) 'intangible t))
+      (add-text-properties (point-min) (point)
+                           '(cursor-intangible t
+                             front-sticky (cursor-intangible)
+                             rear-nonsticky (cursor-intangible)))
       (put-text-property (point-min) (1+ (point-min)) 'xr-alist xr-alist)
 
       (setq offset
@@ -331,8 +339,8 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels 
[f]ollow [x]r [?]Help
         (let ((current-prefix-arg nil))
           (select-window (get-buffer-window buf frame))
           (reftex-toc nil t)))
-    (and (> (point) 1)
-         (not (get-text-property (point) 'intangible))
+    (and (> (point) 1) ;FIXME: Is this point-min or do we care about narrowing?
+         (not (get-text-property (point) 'cursor-intangible))
          (memq reftex-highlight-selection '(cursor both))
          (reftex-highlight 2
                            (or (previous-single-property-change
@@ -349,10 +357,11 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels 
[f]ollow [x]r [?]Help
 
 (defun reftex-toc-post-command-hook ()
   ;; used in the post-command-hook for the *toc* buffer
+  ;; FIXME: Lots of redundancy with reftex-index-post-command-hook!
   (when (get-text-property (point) :data)
     (put 'reftex-toc :reftex-data (get-text-property (point) :data))
-    (and (> (point) 1)
-         (not (get-text-property (point) 'intangible))
+    (and (> (point) 1) ;FIXME: Is this point-min or do we care about narrowing?
+         (not (get-text-property (point) 'cursor-intangible))
          (memq reftex-highlight-selection '(cursor both))
          (reftex-highlight 2
            (or (previous-single-property-change (1+ (point)) :data)
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 7cf54c6..9572539 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -2676,7 +2676,7 @@ With no argument, this command toggles
 
 ;;;***
 
-;;;### (autoloads nil "reftex-index" "reftex-index.el" 
"d80e84d499050e32569a454d8db16861")
+;;;### (autoloads nil "reftex-index" "reftex-index.el" 
"29cb6e91c2e06592053e9d543f30f0ea")
 ;;; Generated autoloads from reftex-index.el
 
 (autoload 'reftex-index-selection-or-word "reftex-index" "\
@@ -3046,7 +3046,7 @@ During a selection process, these are the local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"e04344fac7ba4c2043439e130bdd283f")
+;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"8b6d6733d445a55206e84fc119909520")
 ;;; Generated autoloads from reftex-toc.el
 
 (autoload 'reftex-toc "reftex-toc" "\
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 8266647..c71ecb4 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -1,4 +1,4 @@
-;;; sgml-mode.el --- SGML- and HTML-editing modes -*- coding: utf-8 -*-
+;;; sgml-mode.el --- SGML- and HTML-editing modes -*- lexical-binding:t -*-
 
 ;; Copyright (C) 1992, 1995-1996, 1998, 2001-2015 Free Software
 ;; Foundation, Inc.
@@ -442,7 +442,7 @@ an optional alist of possible values."
        (comment-style 'plain))
     (comment-indent-new-line soft)))
 
-(defun sgml-mode-facemenu-add-face-function (face end)
+(defun sgml-mode-facemenu-add-face-function (face _end)
   (let ((tag-face (cdr (assq face sgml-face-tag-alist))))
     (cond (tag-face
           (setq tag-face (funcall skeleton-transformation-function tag-face))
@@ -844,7 +844,7 @@ Return non-nil if we skipped over matched tags."
 (defvar sgml-electric-tag-pair-overlays nil)
 (defvar sgml-electric-tag-pair-timer nil)
 
-(defun sgml-electric-tag-pair-before-change-function (beg end)
+(defun sgml-electric-tag-pair-before-change-function (_beg end)
   (condition-case err
   (save-excursion
     (goto-char end)
@@ -1012,7 +1012,7 @@ With prefix argument ARG, repeat this ARG times."
 (or (get 'sgml-tag 'invisible)
     (setplist 'sgml-tag
              (append '(invisible t
-                       point-entered sgml-point-entered
+                        cursor-sensor-functions (sgml-cursor-sensor)
                        rear-nonsticky t
                        read-only t)
                      (symbol-plist 'sgml-tag))))
@@ -1020,63 +1020,59 @@ With prefix argument ARG, repeat this ARG times."
 (defun sgml-tags-invisible (arg)
   "Toggle visibility of existing tags."
   (interactive "P")
-  (let ((modified (buffer-modified-p))
-       (inhibit-read-only t)
-       (inhibit-modification-hooks t)
-       ;; Avoid spurious the `file-locked' checks.
-       (buffer-file-name nil)
-       ;; This is needed in case font lock gets called,
-       ;; since it moves point and might call sgml-point-entered.
-       ;; How could it get called?  -stef
-       (inhibit-point-motion-hooks t)
+  (let ((inhibit-read-only t)
        string)
-    (unwind-protect
-       (save-excursion
-         (goto-char (point-min))
-         (if (setq-local sgml-tags-invisible
-                         (if arg
-                             (>= (prefix-numeric-value arg) 0)
-                           (not sgml-tags-invisible)))
-             (while (re-search-forward sgml-tag-name-re nil t)
-               (setq string
-                     (cdr (assq (intern-soft (downcase (match-string 1)))
-                                sgml-display-text)))
-               (goto-char (match-beginning 0))
-               (and (stringp string)
-                    (not (overlays-at (point)))
-                    (let ((ol (make-overlay (point) (match-beginning 1))))
-                      (overlay-put ol 'before-string string)
-                      (overlay-put ol 'sgml-tag t)))
-               (put-text-property (point)
-                                  (progn (forward-list) (point))
-                                  'category 'sgml-tag))
-           (let ((pos (point-min)))
-             (while (< (setq pos (next-overlay-change pos)) (point-max))
-               (dolist (ol (overlays-at pos))
-                 (if (overlay-get ol 'sgml-tag)
-                     (delete-overlay ol)))))
-           (remove-text-properties (point-min) (point-max) '(category nil))))
-      (restore-buffer-modified-p modified))
+    (with-silent-modifications
+      (save-excursion
+        (goto-char (point-min))
+        (if (setq-local sgml-tags-invisible
+                        (if arg
+                            (>= (prefix-numeric-value arg) 0)
+                          (not sgml-tags-invisible)))
+            (while (re-search-forward sgml-tag-name-re nil t)
+              (setq string
+                    (cdr (assq (intern-soft (downcase (match-string 1)))
+                               sgml-display-text)))
+              (goto-char (match-beginning 0))
+              (and (stringp string)
+                   (not (overlays-at (point)))
+                   (let ((ol (make-overlay (point) (match-beginning 1))))
+                     (overlay-put ol 'before-string string)
+                     (overlay-put ol 'sgml-tag t)))
+              (put-text-property (point)
+                                 (progn (forward-list) (point))
+                                 'category 'sgml-tag))
+          (let ((pos (point-min)))
+            (while (< (setq pos (next-overlay-change pos)) (point-max))
+              (dolist (ol (overlays-at pos))
+                (if (overlay-get ol 'sgml-tag)
+                    (delete-overlay ol)))))
+          (remove-text-properties (point-min) (point-max) '(category nil)))))
+    (cursor-sensor-mode (if sgml-tags-invisible 1 -1))
     (run-hooks 'sgml-tags-invisible-hook)
     (message "")))
 
-(defun sgml-point-entered (x y)
-  ;; Show preceding or following hidden tag, depending of cursor direction.
-  (let ((inhibit-point-motion-hooks t))
-    (save-excursion
-      (condition-case nil
-         (message "Invisible tag: %s"
-                  ;; Strip properties, otherwise, the text is invisible.
-                  (buffer-substring-no-properties
-                   (point)
-                   (if (or (and (> x y)
-                                (not (eq (following-char) ?<)))
-                           (and (< x y)
-                                (eq (preceding-char) ?>)))
-                       (backward-list)
-                     (forward-list))))
-       (error nil)))))
-
+(defun sgml-cursor-sensor (window x dir)
+  ;; Show preceding or following hidden tag, depending of cursor direction (and
+  ;; `dir' is not the direction in this sense).
+  (when (eq dir 'entered)
+    (ignore-errors
+      (let* ((y (window-point window))
+             (otherend
+              (save-excursion
+                (goto-char y)
+                (cond
+                 ((and (eq (char-before) ?>)
+                       (or (not (eq (char-after) ?<))
+                           (> x y)))
+                  (backward-sexp))
+                 ((eq (char-after y) ?<)
+                  (forward-sexp)))
+                (point))))
+        (message "Invisible tag: %s"
+                 ;; Strip properties, otherwise, the text is invisible.
+                 (buffer-substring-no-properties
+                  y otherend))))))
 
 
 (defun sgml-validate (command)
@@ -1158,7 +1154,7 @@ If nil, start from a preceding tag at indentation."
        ((and state (> (nth 0 state) 0)) (cons 'tag (nth 1 state)))
        (t (cons 'text text-start))))))
 
-(defun sgml-beginning-of-tag (&optional top-level)
+(defun sgml-beginning-of-tag (&optional only-immediate)
   "Skip to beginning of tag and return its name.
 If this can't be done, return nil."
   (let ((context (sgml-lexical-context)))
@@ -1167,7 +1163,7 @@ If this can't be done, return nil."
          (goto-char (cdr context))
          (when (looking-at sgml-tag-name-re)
            (match-string-no-properties 1)))
-      (if top-level nil
+      (if only-immediate nil
        (when (not (eq (car context) 'text))
          (goto-char (cdr context))
          (sgml-beginning-of-tag t))))))
@@ -1581,6 +1577,19 @@ LCON is the lexical context, if any."
              (skip-chars-forward " \t\n")
              (< (point) here) (sgml-at-indentation-p))
         (current-column))
+       ;; ;; If the parsing failed, try to recover.
+       ;; ((and (null context) (bobp)
+       ;;      (not (eq (char-after here) ?<)))
+       ;;  (goto-char here)
+       ;;  (if (and (looking-at "--[ \t\n]*>")
+       ;;          (re-search-backward "<!--" nil t))
+       ;;      ;; No wonder parsing failed: we're in a comment.
+       ;;      (sgml-calculate-indent (prog2 (goto-char (match-end 0))
+       ;;                                (sgml-lexical-context)
+       ;;                              (goto-char here)))
+       ;;    ;; We have no clue what's going on, let's be honest about it.
+       ;;    nil))
+       ;; Otherwise, just follow the rules.
        (t
         (goto-char there)
         (+ (current-column)
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 5059300..edc78e5 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -770,7 +770,6 @@ the cell contents dynamically."
   :type 'integer
   :group 'table)
 
-;;;###autoload
 (defcustom table-cell-map-hook nil
   "Normal hooks run when finishing construction of `table-cell-map'.
 User can modify `table-cell-map' by adding custom functions here."
@@ -794,19 +793,16 @@ simply by any key input."
   :type 'boolean
   :group 'table)
 
-;;;###autoload
 (defcustom table-load-hook nil
   "List of functions to be called after the table is first loaded."
   :type 'hook
   :group 'table-hooks)
 
-;;;###autoload
 (defcustom table-point-entered-cell-hook nil
   "List of functions to be called after point entered a table cell."
   :type 'hook
   :group 'table-hooks)
 
-;;;###autoload
 (defcustom table-point-left-cell-hook nil
   "List of functions to be called after point left a table cell."
   :type 'hook
@@ -865,8 +861,6 @@ time.")
   "Cache point coordinate based from the cell origin.")
 (defvar table-cell-cache-mark-coordinate nil
   "Cache mark coordinate based from the cell origin.")
-(defvar table-cell-entered-state nil
-  "Records the state whether currently in a cell or nor.")
 (defvar table-update-timer nil
   "Timer id for deferred cell update.")
 (defvar table-widen-timer nil
@@ -1216,14 +1210,14 @@ This is always set to nil at the entry to 
`table-with-cache-buffer' before execu
 ;; does not cause a problem in the old implementation.  Sigh...
 (when (featurep 'xemacs)
   (defun table--tweak-menu-for-xemacs (menu)
-     (cond
-      ((listp menu)
-       (mapcar #'table--tweak-menu-for-xemacs menu))
-      ((vectorp menu)
-       (let ((len (length menu)))
-        (dotimes (i len)
-          ;; replace :help with something harmless.
-          (if (eq (aref menu i) :help) (aset menu i :included)))))))
+    (cond
+     ((listp menu)
+      (mapcar #'table--tweak-menu-for-xemacs menu))
+     ((vectorp menu)
+      (let ((len (length menu)))
+        (dotimes (i len)
+          ;; replace :help with something harmless.
+          (if (eq (aref menu i) :help) (aset menu i :included)))))))
   (mapcar #'table--tweak-menu-for-xemacs
           (list table-global-menu table-cell-menu))
   (defvar mark-active t))
@@ -5187,8 +5181,8 @@ and the right cell border character."
 
 (defun table--put-cell-point-entered/left-property (beg end &optional object)
   "Put point-entered/left property."
-  (put-text-property beg end 'point-entered 
'table--point-entered-cell-function object)
-  (put-text-property beg end 'point-left 'table--point-left-cell-function 
object))
+  (put-text-property beg end 'cursor-sensor-functions
+                     '(table--point-entered/left-cell-function) object))
 
 (defun table--remove-cell-properties (beg end &optional object)
   "Remove all cell properties.
@@ -5204,8 +5198,7 @@ instead of the current buffer and returns the OBJECT."
                                   'table-valign nil
                                   'face nil
                                   'rear-nonsticky nil
-                                  'point-entered nil
-                                  'point-left nil
+                                  'cursor-sensor-functions nil
                                   'keymap nil)
                                  object))
       (setq beg next)))
@@ -5247,28 +5240,20 @@ instead of the current buffer and returns the OBJECT."
   "Put cell's vertical alignment property."
   (table--put-property cell 'table-valign valign))
 
-(defun table--point-entered-cell-function (&optional _old-point _new-point)
+(defun table--point-entered/left-cell-function (_window _oldpos dir)
   "Point has entered a cell.
 Refresh the menu bar."
   ;; Avoid calling point-motion-hooks recursively.
   (let ((inhibit-point-motion-hooks t))
-    (unless table-cell-entered-state
-      (setq table-cell-entered-state t)
+    (force-mode-line-update)
+    (pcase dir
+     ('left
+      (setq table-mode-indicator nil)
+      (run-hooks 'table-point-left-cell-hook))
+     ('entered
       (setq table-mode-indicator t)
-      (force-mode-line-update)
       (table--warn-incompatibility)
-      (run-hooks 'table-point-entered-cell-hook))))
-
-(defun table--point-left-cell-function (&optional _old-point _new-point)
-  "Point has left a cell.
-Refresh the menu bar."
-  ;; Avoid calling point-motion-hooks recursively.
-  (let ((inhibit-point-motion-hooks t))
-    (when table-cell-entered-state
-      (setq table-cell-entered-state nil)
-      (setq table-mode-indicator nil)
-      (force-mode-line-update)
-      (run-hooks 'table-point-left-cell-hook))))
+      (run-hooks 'table-point-entered-cell-hook)))))
 
 (defun table--warn-incompatibility ()
   "If called from interactive operation warn the know incompatibilities.
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog.1
similarity index 100%
rename from lisp/url/ChangeLog
rename to lisp/url/ChangeLog.1
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index a9614e9..948a45e 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -821,7 +821,7 @@ If the OLD prefix arg is passed, tell the file NAME of the 
old file."
          (header-files
            ;; handle filenames with spaces;
            ;; cf. diff-font-lock-keywords / diff-file-header-face
-          (if (looking-at "[-*][-*][-*] \\([^\t]+\\)\t.*\n[-+][-+][-+] 
\\([^\t]+\\)")
+          (if (looking-at "[-*][-*][-*] \\([^\t\n]+\\).*\n[-+][-+][-+] 
\\([^\t\n]+\\)")
               (list (if old (match-string 1) (match-string 2))
                     (if old (match-string 2) (match-string 1)))
             (forward-line 1) nil)))
diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el
index 062248c..2a973cf 100644
--- a/lisp/vc/diff.el
+++ b/lisp/vc/diff.el
@@ -38,7 +38,7 @@
   :group 'tools)
 
 ;;;###autoload
-(defcustom diff-switches (purecopy "-c")
+(defcustom diff-switches (purecopy "-u")
   "A string or list of strings specifying switches to be passed to diff."
   :type '(choice string (repeat string))
   :group 'diff)
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index ae8d275..f82c7e9 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -917,21 +917,8 @@ where LOGBUFFER is the name of the ChangeLog buffer, and 
each
             (log-edit-narrow-changelog)
             (goto-char (point-min))
 
-            ;; Search for the name of FILE relative to the ChangeLog.  If that
-            ;; doesn't occur anywhere, they're not using full relative
-            ;; filenames in the ChangeLog, so just look for FILE; we'll accept
-            ;; some false positives.
-            (let ((pattern (file-relative-name
-                            file (file-name-directory changelog-file-name))))
-              (if (or (string= pattern "")
-                      (not (save-excursion
-                             (search-forward pattern nil t))))
-                  (setq pattern (file-name-nondirectory file)))
-
-              (setq pattern (concat "\\(^\\|[^[:alnum:]]\\)"
-                                    (regexp-quote pattern)
-                                    "\\($\\|[^[:alnum:]]\\)"))
-
+            (let ((pattern (log-edit-changelog--pattern file
+                                                        changelog-file-name)))
               (let (texts
                     (pos (point)))
                 (while (and (not (eobp)) (re-search-forward pattern nil t))
@@ -946,6 +933,25 @@ where LOGBUFFER is the name of the ChangeLog buffer, and 
each
 
                 (cons (current-buffer) texts)))))))))
 
+(defun log-edit-changelog--pattern (file changelog-file-name)
+  (if (eq (aref file (1- (length file))) ?/)
+      ;; Match any files inside this directory.
+      (concat "^\t\\* " (unless (string= file "./") file))
+    ;; Search for the name of FILE relative to the ChangeLog.  If that
+    ;; doesn't occur anywhere, they're not using full relative
+    ;; filenames in the ChangeLog, so just look for FILE; we'll accept
+    ;; some false positives.
+    (let ((pattern (file-relative-name
+                    file (file-name-directory changelog-file-name))))
+      ;; FIXME: When can the above return an empty string?
+      (if (or (string= pattern "")
+              (not (save-excursion
+                     (search-forward pattern nil t))))
+          (setq pattern (file-name-nondirectory file)))
+      (setq pattern (concat "\\(^\\|[^[:alnum:]]\\)"
+                            (regexp-quote pattern)
+                            "\\($\\|[^[:alnum:]]\\)")))))
+
 (defun log-edit-changelog-insert-entries (buffer beg end &rest files)
   "Insert the text from BUFFER between BEG and END.
 Rename relative filenames in the ChangeLog entry as FILES."
@@ -957,6 +963,8 @@ Rename relative filenames in the ChangeLog entry as FILES."
     (setq bound (point-marker))
     (when log-name
       (dolist (f files)
+        ;; FIXME: f can be a directory, a (possibly indirect) parent
+        ;; of the ChangeLog file.
        (save-excursion
          (goto-char opoint)
          (when (re-search-forward
@@ -992,6 +1000,9 @@ Rename relative filenames in the ChangeLog entry as FILES."
       (apply 'log-edit-changelog-insert-entries
             (append (car log-entry) (cdr log-entry)))
       (insert "\n"))
+    ;; No newline after the last entry.
+    (when log-entries
+      (delete-char -1))
     log-edit-author))
 
 (defun log-edit-toggle-header (header value)
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index 4f8ec27..a2c1cba 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -604,11 +604,24 @@ NOT-URGENT means it is ok to continue if the user says 
not to save."
            (or (log-edit-empty-buffer-p)
                (and (local-variable-p 'vc-log-fileset)
                     (not (equal vc-log-fileset fileset))))
-           `((log-edit-listfun . (lambda ()
-                                    ;; FIXME: Should expand the list
-                                    ;; for directories.
-                                    (mapcar 'file-relative-name
-                                            ',fileset)))
+           `((log-edit-listfun
+               . (lambda ()
+                   ;; FIXME: When fileset includes directories, and
+                   ;; there are relevant ChangeLog files inside their
+                   ;; children, we don't find them.  Either handle it
+                   ;; in `log-edit-insert-changelog-entries' by
+                   ;; walking down the file trees, or somehow pass
+                   ;; `fileset-only-files' from `vc-next-action'
+                   ;; through to this function.
+                   (let ((root (vc-root-dir)))
+                     ;; Returns paths relative to the root, so that
+                     ;; `log-edit-changelog-insert-entries'
+                     ;; substitutes them in correctly later, even when
+                     ;; `vc-checkin' was called from a file buffer, or
+                     ;; a non-root VC-Dir buffer.
+                     (mapcar
+                      (lambda (file) (file-relative-name file root))
+                      ',fileset))))
              (log-edit-diff-function . vc-diff)
              (log-edit-vc-backend . ,backend)
              (vc-log-fileset . ,fileset))
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 48e22c8..bec36fd 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -792,19 +792,26 @@ This prompts for a branch to merge from."
 
 (defun vc-git-find-file-hook ()
   "Activate `smerge-mode' if there is a conflict."
-  (when (and buffer-file-name
-             ;; FIXME
-             ;; 1) the net result is to call git twice per file.
-             ;; 2) v-g-c-f is documented to take a directory.
-             ;; 
http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01126.html
-             (vc-git-conflicted-files buffer-file-name)
-             (save-excursion
-               (goto-char (point-min))
-               (re-search-forward "^<<<<<<< " nil 'noerror)))
-    (vc-file-setprop buffer-file-name 'vc-state 'conflict)
-    (smerge-start-session)
-    (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local)
-    (message "There are unresolved conflicts in this file")))
+  (let (stashed)
+    (when (and buffer-file-name
+               ;; FIXME
+               ;; 1) the net result is to call git twice per file.
+               ;; 2) v-g-c-f is documented to take a directory.
+               ;; 
http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01126.html
+               ;; XXX: Should we first look for the markers, and only
+               ;; call this function when see some?
+               (vc-git-conflicted-files buffer-file-name)
+               (save-excursion
+                 (goto-char (point-min))
+                 (when (re-search-forward "^>>>>>>> " nil 'noerror)
+                   (setq stashed (looking-at "Stashed changes"))
+                   t)))
+      (vc-file-setprop buffer-file-name 'vc-state 'conflict)
+      (smerge-start-session)
+      (unless stashed
+        ;; Stashes are tricky (bug#20292).
+        (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local))
+      (message "There are unresolved conflicts in this file"))))
 
 ;;; HISTORY FUNCTIONS
 
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog.1
similarity index 100%
rename from lwlib/ChangeLog
rename to lwlib/ChangeLog.1
diff --git a/lwlib/README b/lwlib/README
index 25c72eb..ed7583d 100644
--- a/lwlib/README
+++ b/lwlib/README
@@ -4,4 +4,4 @@ library was written by Lucid, Inc and released under the terms 
of the
 GPL version 1 (or later).  It is not considered part of GNU Emacs.
 
 This version of the library differs from the original as described in
-the ChangeLog file.
+the ChangeLog.1 file.
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index 9317dea..61f175b 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -105,7 +105,7 @@ xlwMenuTranslations [] =
 
 /* FIXME: F10 should enter the menu, the first one in the menu-bar.  */
 
-#define offset(field) XtOffset(XlwMenuWidget, field)
+#define offset(field) offsetof (XlwMenuRec, field)
 static XtResource
 xlwMenuResources[] =
 {
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 949dd0e..f32a4dd 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -85,6 +85,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module gettext-h:
   # Code from module gettime:
   # Code from module gettimeofday:
+  # Code from module gitlog-to-changelog:
   # Code from module group-member:
   # Code from module include_next:
   # Code from module intprops:
@@ -810,6 +811,7 @@ AC_DEFUN([gltests_LIBSOURCES], [
 # This macro records the list of files which have been installed by
 # gnulib-tool and may be removed by future gnulib-tool invocations.
 AC_DEFUN([gl_FILE_LIST], [
+  build-aux/gitlog-to-changelog
   build-aux/snippet/_Noreturn.h
   build-aux/snippet/arg-nonnull.h
   build-aux/snippet/c++defs.h
diff --git a/make-dist b/make-dist
index 4e05594..441070f 100755
--- a/make-dist
+++ b/make-dist
@@ -80,7 +80,7 @@ while [ $# -gt 0 ]; do
       new_extension=".new"
       shift
     ;;
-    ## This option tells make-dist to use `bzip2' instead of gzip.
+    ## This option tells make-dist to use 'bzip2' instead of gzip.
     "--bzip2")
       default_gzip="bzip2"
     ;;
@@ -132,7 +132,7 @@ done
 
 ### Make sure we're running in the right place.
 if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/subr.el ]; then
-  echo "${progname}: Can't find \`src/lisp.h' and \`lisp/subr.el'." >&2
+  echo "${progname}: Can't find 'src/lisp.h' and 'lisp/subr.el'." >&2
   echo "${progname} must be run in the top directory of the Emacs" >&2
   echo "distribution tree.  cd to that directory and try again." >&2
   exit 1
@@ -163,7 +163,7 @@ version=`
   sed -n 's/^AC_INIT(GNU Emacs,[        ]*\([^  ,)]*\).*/\1/p' <configure.ac
 ` || version=
 if [ ! "${version}" ]; then
-  echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2
+  echo "${progname}: can't find current Emacs version in './src/emacs.c'" >&2
   exit 1
 fi
 
@@ -190,10 +190,10 @@ fi
 ### Make sure the subdirectory is available.
 tempparent="make-dist.tmp.$$"
 if [ -d ${tempparent} ]; then
-  echo "${progname}: staging directory \`${tempparent}' already exists.
-Perhaps a previous invocation of \`${progname}' failed to clean up after
+  echo "${progname}: staging directory '${tempparent}' already exists.
+Perhaps a previous invocation of '${progname}' failed to clean up after
 itself.  Check that directories whose names are of the form
-\`make-dist.tmp.NNNNN' don't contain any important information, remove
+'make-dist.tmp.NNNNN' don't contain any important information, remove
 them, and try again." >&2
   exit 1
 fi
@@ -210,7 +210,7 @@ if [ $check = yes ]; then
   ## Check for .elc files with no corresponding .el file.
   sed 's/\.el$/.elc/' /tmp/el > /tmp/elelc
 
-  bogosities="`comm -13 /tmp/elelc /tmp/elc`"
+  bogosities=`comm -13 /tmp/elelc /tmp/elc`
   if [ x"${bogosities}" != x"" ]; then
     echo "The following .elc files have no corresponding .el files:"
     echo "${bogosities}"
@@ -218,7 +218,7 @@ if [ $check = yes ]; then
 
   ### Check for .el files with no corresponding .elc file.
   sed 's/\.elc$/.el/' /tmp/elc > /tmp/elcel
-  losers="`comm -23 /tmp/el /tmp/elcel`"
+  losers=`comm -23 /tmp/el /tmp/elcel`
 
   rm -f /tmp/el /tmp/elc /tmp/elcel /tmp/elelc
 
@@ -263,7 +263,7 @@ if [ $update = yes ]; then
   $EMACS -batch -f batch-byte-recompile-directory lisp
 fi                              # $update = yes
 
-echo "Creating staging directory: \`${tempparent}'"
+echo "Creating staging directory: '${tempparent}'"
 
 mkdir ${tempparent}
 tempdir="${tempparent}/${emacsname}"
@@ -274,16 +274,23 @@ if [ "${clean_up}" = yes ]; then
   trap "echo 'Cleaning up the staging directory'; rm -rf ${tempparent}" EXIT
 fi
 
-echo "Creating top directory: \`${tempdir}'"
+echo "Creating top directory: '${tempdir}'"
 mkdir ${tempdir}
 
+if test -d .git; then
+  echo "Making top-level ChangeLog"
+  make distprefix=${tempdir}/ ChangeLog
+else
+  echo "No repository, so omitting top-level ChangeLog"
+fi
+
 ### We copy in the top-level files before creating the subdirectories in
 ### hopes that this will make the top-level files appear first in the
 ### tar file; this means that people can start reading the INSTALL and
 ### README while the rest of the tar file is still unpacking.  Whoopee.
 echo "Making links to top-level files"
 ln INSTALL README BUGS ${tempdir}
-ln ChangeLog Makefile.in autogen.sh configure configure.ac ${tempdir}
+ln ChangeLog.*[0-9] Makefile.in autogen.sh configure configure.ac ${tempdir}
 ln config.bat make-dist .dir-locals.el ${tempdir}
 ln aclocal.m4 ${tempdir}
 
@@ -318,7 +325,7 @@ do
   mkdir ${tempdir}/${subdir}
 done
 
-echo "Making links to \`lisp' and its subdirectories"
+echo "Making links to 'lisp' and its subdirectories"
 files=`find lisp \( -name '*.el' -o -name '*.elc' -o -name 'ChangeLog*' \
  -o -name 'README' \)`
 
@@ -330,10 +337,10 @@ for file in lisp/Makefile.in lisp/makefile.w32-in $files; 
do
   ln $file $tempdir/$file
 done
 
-echo "Making links to \`leim' and its subdirectories"
+echo "Making links to 'leim' and its subdirectories"
 (cd leim
  ln makefile.w32-in ../${tempdir}/leim
- ln ChangeLog README ../${tempdir}/leim
+ ln ChangeLog.*[0-9] README ../${tempdir}/leim
  ln CXTERM-DIC/README CXTERM-DIC/*.tit ../${tempdir}/leim/CXTERM-DIC
  ln SKK-DIC/README SKK-DIC/SKK-JISYO.L ../${tempdir}/leim/SKK-DIC
  ln MISC-DIC/README MISC-DIC/*.* ../${tempdir}/leim/MISC-DIC
@@ -341,18 +348,19 @@ echo "Making links to \`leim' and its subdirectories"
  ln leim-ext.el ../${tempdir}/leim/leim-ext.el)
 
 ## FIXME Can we not just use the "find -type f" method for this one?
-echo "Making links to \`build-aux'"
+echo "Making links to 'build-aux'"
 (cd build-aux
  ln compile config.guess config.sub depcomp msys-to-w32 ../${tempdir}/build-aux
+ ln gitlog-to-changelog gitlog-to-emacslog ../${tempdir}/build-aux
  ln install-sh missing move-if-change ../${tempdir}/build-aux
  ln update-copyright update-subdirs ../${tempdir}/build-aux
  ln dir_top make-info-dir ../${tempdir}/build-aux)
 
-echo "Making links to \`build-aux/snippet'"
+echo "Making links to 'build-aux/snippet'"
 (cd build-aux/snippet
  ln *.h ../../${tempdir}/build-aux/snippet)
 
-echo "Making links to \`src'"
+echo "Making links to 'src'"
 ### Don't distribute the configured versions of
 ### config.in, paths.in, buildobj.h, or Makefile.in.
 (cd src
@@ -360,17 +368,17 @@ echo "Making links to \`src'"
  ln [a-zA-Z]*.[chm] ../${tempdir}/src
  ln [a-zA-Z]*.in ../${tempdir}/src
  ln [a-zA-Z]*.mk ../${tempdir}/src
- ln README ChangeLog ChangeLog.*[0-9] ../${tempdir}/src
+ ln README ChangeLog.*[0-9] ../${tempdir}/src
  ln makefile.w32-in ../${tempdir}/src
  ln .gdbinit .dbxinit ../${tempdir}/src
  cd ../${tempdir}/src
  rm -f globals.h config.h epaths.h Makefile buildobj.h)
 
-echo "Making links to \`src/bitmaps'"
+echo "Making links to 'src/bitmaps'"
 (cd src/bitmaps
  ln README *.xbm ../../${tempdir}/src/bitmaps)
 
-echo "Making links to \`lib'"
+echo "Making links to 'lib'"
 (snippet_h=`(cd build-aux/snippet && ls *.h)`
  cd lib
  ln [a-zA-Z]*.[ch] ../${tempdir}/lib
@@ -379,76 +387,76 @@ echo "Making links to \`lib'"
  script='/[*]/d; s/\.in\.h$/.h/'
  rm -f `(echo "$snippet_h"; ls *.in.h) | sed "$script"`)
 
-echo "Making links to \`lib-src'"
+echo "Making links to 'lib-src'"
 (cd lib-src
  ln [a-zA-Z]*.[ch] ../${tempdir}/lib-src
- ln ChangeLog Makefile.in README ../${tempdir}/lib-src
+ ln ChangeLog.*[0-9] Makefile.in README ../${tempdir}/lib-src
  ln rcs2log ../${tempdir}/lib-src
  ln makefile.w32-in ../${tempdir}/lib-src
  ln update-game-score.exe.manifest ../${tempdir}/lib-src)
 
-echo "Making links to \`m4'"
+echo "Making links to 'm4'"
 (cd m4
  ln *.m4 ../${tempdir}/m4)
 
-echo "Making links to \`nt'"
+echo "Making links to 'nt'"
 (cd nt
  ln emacs-x86.manifest emacs-x64.manifest ../${tempdir}/nt
  ln config.nt emacs-src.tags ../${tempdir}/nt
  ln nmake.defs gmake.defs subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
  ln *.in gnulib.mk ../${tempdir}/nt
  ln mingw-cfg.site epaths.nt INSTALL.OLD ../${tempdir}/nt
- ln ChangeLog INSTALL README README.W32 makefile.w32-in ../${tempdir}/nt)
+ ln ChangeLog.*[0-9] INSTALL README README.W32 makefile.w32-in 
../${tempdir}/nt)
 
-echo "Making links to \`nt/inc' and its subdirectories"
+echo "Making links to 'nt/inc' and its subdirectories"
 for f in `find nt/inc -type f -name '[a-z]*.h'`; do
   ln $f $tempdir/$f
 done
 
-echo "Making links to \`nt/icons'"
+echo "Making links to 'nt/icons'"
 (cd nt/icons
  ln README [a-z]*.ico ../../${tempdir}/nt/icons
  ln [a-z]*.cur ../../${tempdir}/nt/icons)
 
-echo "Making links to \`msdos'"
+echo "Making links to 'msdos'"
 (cd msdos
- ln ChangeLog INSTALL README emacs.ico emacs.pif ../${tempdir}/msdos
+ ln ChangeLog.*[0-9] INSTALL README emacs.ico emacs.pif ../${tempdir}/msdos
  ln depfiles.bat inttypes.h ../${tempdir}/msdos
  ln mainmake.v2 sed*.inp ../${tempdir}/msdos)
 
-echo "Making links to \`nextstep'"
+echo "Making links to 'nextstep'"
 (cd nextstep
- ln ChangeLog README INSTALL Makefile.in ../${tempdir}/nextstep)
+ ln ChangeLog.*[0-9] README INSTALL Makefile.in ../${tempdir}/nextstep)
 
-echo "Making links to \`nextstep/templates'"
+echo "Making links to 'nextstep/templates'"
 (cd nextstep/templates
  ln Emacs.desktop.in Info-gnustep.plist.in Info.plist.in InfoPlist.strings.in 
../../${tempdir}/nextstep/templates)
 
-echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents'"
+echo "Making links to 'nextstep/Cocoa/Emacs.base/Contents'"
 (cd nextstep/Cocoa/Emacs.base/Contents
  ln PkgInfo ../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents)
 
-echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents/Resources'"
+echo "Making links to 'nextstep/Cocoa/Emacs.base/Contents/Resources'"
 (cd nextstep/Cocoa/Emacs.base/Contents/Resources
  ln Credits.html *.icns 
../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources)
 
-echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
+echo "Making links to 'nextstep/GNUstep/Emacs.base/Resources'"
 (cd nextstep/GNUstep/Emacs.base/Resources
  ln README emacs.tiff 
../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources )
 
-echo "Making links to \`oldXMenu'"
+echo "Making links to 'oldXMenu'"
 (cd oldXMenu
  ln *.[ch] *.in *.mk ../${tempdir}/oldXMenu
- ln README ChangeLog ../${tempdir}/oldXMenu)
+ ln README ChangeLog.*[0-9] ../${tempdir}/oldXMenu)
 
-echo "Making links to \`lwlib'"
+echo "Making links to 'lwlib'"
 (cd lwlib
  ln *.[ch] *.in *.mk ../${tempdir}/lwlib
- ln README ChangeLog ../${tempdir}/lwlib)
+ ln README ChangeLog.*[0-9] ../${tempdir}/lwlib)
 
 ## It is important to distribute admin/ because it contains sources
 ## for generated lisp/international/uni-*.el files.
-echo "Making links to \`admin' and its subdirectories"
+echo "Making links to 'admin' and its subdirectories"
 for f in `find admin -type f`; do
   case $f in
     */Makefile) [ -f $f.in ] && continue ;;
@@ -457,7 +465,7 @@ for f in `find admin -type f`; do
 done
 
 if [ "$with_tests" = "yes" ]; then
-  echo "Making links to \`test' and its subdirectories"
+  echo "Making links to 'test' and its subdirectories"
   for f in `find test -type f`; do
     case $f in
       test/automated/*.log) continue ;;
@@ -468,7 +476,7 @@ if [ "$with_tests" = "yes" ]; then
   done
 fi
 
-echo "Making links to \`etc' and its subdirectories"
+echo "Making links to 'etc' and its subdirectories"
 for f in `find etc -type f`; do
   case $f in
     etc/DOC*|etc/*.pyc) continue ;;
@@ -479,38 +487,40 @@ for f in `find etc -type f`; do
   ln $f $tempdir/$f
 done
 
-echo "Making links to \`info'"
+echo "Making links to 'info'"
 ln `find info -type f -print` ${tempdir}/info
 
-echo "Making links to \`doc/emacs'"
+echo "Making links to 'doc/emacs'"
 (cd doc/emacs
- ln *.texi *.in makefile.w32-in ChangeLog* ../../${tempdir}/doc/emacs)
+ ln *.texi *.in makefile.w32-in ChangeLog.*[0-9] ../../${tempdir}/doc/emacs)
 
-echo "Making links to \`doc/misc'"
+echo "Making links to 'doc/misc'"
 (cd doc/misc
- ln *.texi *.tex *.in makefile.w32-in gnus-news.el ChangeLog* 
../../${tempdir}/doc/misc)
+ ln *.texi *.tex *.in makefile.w32-in gnus-news.el ChangeLog.*[0-9] \
+    ../../${tempdir}/doc/misc)
 
-echo "Making links to \`doc/lispref'"
+echo "Making links to 'doc/lispref'"
 (cd doc/lispref
- ln *.texi *.in makefile.w32-in README ChangeLog* ../../${tempdir}/doc/lispref
+ ln *.texi *.in makefile.w32-in README ChangeLog.*[0-9] \
+    ../../${tempdir}/doc/lispref
  ln spellfile ../../${tempdir}/doc/lispref
  ln two-volume.make two-volume-cross-refs.txt ../../${tempdir}/doc/lispref)
 
-echo "Making links to \`doc/lispintro'"
+echo "Making links to 'doc/lispintro'"
 (cd doc/lispintro
  ln *.texi *.in makefile.w32-in *.eps *.pdf ../../${tempdir}/doc/lispintro
- ln README ChangeLog* ../../${tempdir}/doc/lispintro
+ ln README ChangeLog.*[0-9] ../../${tempdir}/doc/lispintro
  cd ../../${tempdir}/doc/lispintro)
 
-echo "Making links to \`doc/man'"
+echo "Making links to 'doc/man'"
 (cd doc/man
- ln ChangeLog* *.1 *.in ../../${tempdir}/doc/man
+ ln *.*[0-9] *.in ../../${tempdir}/doc/man
  cd ../../${tempdir}/doc/man
  rm -f emacs.1)
 
 ### It would be nice if they could all be symlinks to top-level copy, but
 ### you're not supposed to have any symlinks in distribution tar files.
-echo "Making sure copying notices are all copies of \`COPYING'"
+echo "Making sure copying notices are all copies of 'COPYING'"
 for subdir in . etc leim lib lib-src lisp lwlib msdos nt src; do
   rm -f ${tempdir}/${subdir}/COPYING
   cp COPYING ${tempdir}/${subdir}
@@ -538,7 +548,7 @@ if [ "${make_tar}" = yes ]; then
     found=1; break
   done
   if [ "$found" = "0" ]; then
-    echo "WARNING: \`$default_gzip' not found, will not compress" >&2
+    echo "WARNING: '$default_gzip' not found, will not compress" >&2
     default_gzip=cat
   fi
   case "${default_gzip}" in
diff --git a/msdos/ChangeLog b/msdos/ChangeLog.1
similarity index 100%
rename from msdos/ChangeLog
rename to msdos/ChangeLog.1
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog.1
similarity index 100%
rename from nextstep/ChangeLog
rename to nextstep/ChangeLog.1
diff --git a/nt/ChangeLog b/nt/ChangeLog.1
similarity index 100%
rename from nt/ChangeLog
rename to nt/ChangeLog.1
diff --git a/oldXMenu/ChangeLog b/oldXMenu/ChangeLog.1
similarity index 100%
rename from oldXMenu/ChangeLog
rename to oldXMenu/ChangeLog.1
diff --git a/src/ChangeLog b/src/ChangeLog.13
similarity index 99%
rename from src/ChangeLog
rename to src/ChangeLog.13
index 7c7892a..328f798 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog.13
@@ -1,3 +1,23 @@
+2015-04-06  Koichi Arakawa  <address@hidden>  (tiny change)
+
+       * w32proc.c (w32_executable_type): Look for the DLL name in the
+       correct section.  This avoids segfaults with some executables.
+       (Bug#20264)
+
+2015-04-04  Jan Djärv  <address@hidden>
+
+       * xselect.c (x_reply_selection_request)
+       (receive_incremental_selection): Call set_property_change_object
+       inside block_input.
+       (wait_for_property_change): Move set property_change_reply(_object)
+       outside of this function (Bug#16737).
+       (set_property_change_object): New function.
+
+2015-04-03  Jan Djärv  <address@hidden>
+
+       * xterm.c (handle_one_xevent): Always redraw tool tips on
+       MapNotify.  Update tool tip frame sizes on ConfigureNotify.
+
 2015-03-31  Eli Zaretskii  <address@hidden>
 
        * keyboard.c (read_key_sequence): Don't let
@@ -104,7 +124,7 @@
        Fix minor ldexp issues
        * floatfns.c (Fldexp): Require 2 args.  Avoid undefined behavior
        if the exponent is out of 'int' range.  Improve documentation.
-       Fixes: bug#20185
+       (Bug#20185)
 
 2015-03-24  Daniel Colascione  <address@hidden>
 
@@ -195,7 +215,7 @@
 
        Work around x86 glibc backtrace bug
        * sysdep.c (emacs_backtrace): Don't dump core on x86.
-       Fixes: bug#19959
+       (Bug#19959)
 
 2015-03-05  Eli Zaretskii  <address@hidden>
 
@@ -1059,7 +1079,7 @@
        to unused args.
        * lisp.h (CALLMANY, CALLN): New macros.
        * sound.c (Fplay_sound_internal): Coalesce duplicate code.
-       Fixes: bug#19634
+       (Bug#19634)
 
        Use gnustep-config if available
        * emacs.c [NS_IMPL_GNUSTEP]: Don't include <GNUstepBase/GSConfig.h>.
@@ -1083,7 +1103,7 @@
 
        Don't downcase system diagnostics' first letters
        * fileio.c (report_file_errno): Don't downcase, and simplify.
-       Fixes: bug#19642
+       (Bug#19642)
 
        Isolate NIL_IS_ZERO-assuming code better
        Suggested by Stefan Monnier in:
@@ -1128,7 +1148,7 @@
 
        Correct an old fix for GTK font selection
        * gtkutil.c (xg_get_font): Fix off-by-2 typo.
-       Fixes: bug#3228
+       (Bug#3228)
 
        Fix minor bugs with printing null bytes
        * minibuf.c (read_minibuf_noninteractive):
@@ -2117,7 +2137,7 @@
        * fileio.c (Finsert_file_contents): Compute same_at_end character
        position using the old buffer size, not the new one, since
        restore_window_points wants the old size.
-       Fixes: debbugs:19161
+       (Bug#19161)
 
 2014-12-14  Alan Mackenzie  <address@hidden>
 
diff --git a/src/character.c b/src/character.c
index ad78f51..c143c0f 100644
--- a/src/character.c
+++ b/src/character.c
@@ -984,8 +984,7 @@ character is not ASCII nor 8-bit character, an error is 
signaled.  */)
 
 #ifdef emacs
 
-/* Return 'true' if C is an alphabetic character as defined by its
-   Unicode properties.  */
+/* Return true if C is an alphabetic character.  */
 bool
 alphabeticp (int c)
 {
@@ -1008,8 +1007,7 @@ alphabeticp (int c)
          || gen_cat == UNICODE_CATEGORY_Nl);
 }
 
-/* Return 'true' if C is an decimal-number character as defined by its
-   Unicode properties.  */
+/* Return true if C is a decimal-number character.  */
 bool
 decimalnump (int c)
 {
@@ -1022,6 +1020,39 @@ decimalnump (int c)
   return gen_cat == UNICODE_CATEGORY_Nd;
 }
 
+/* Return true if C is a graphic character.  */
+bool
+graphicp (int c)
+{
+  Lisp_Object category = CHAR_TABLE_REF (Vunicode_category_table, c);
+  if (! INTEGERP (category))
+    return false;
+  EMACS_INT gen_cat = XINT (category);
+
+  /* See UTS #18.  */
+  return (!(gen_cat == UNICODE_CATEGORY_Zs /* space separator */
+           || gen_cat == UNICODE_CATEGORY_Zl /* line separator */
+           || gen_cat == UNICODE_CATEGORY_Zp /* paragraph separator */
+           || gen_cat == UNICODE_CATEGORY_Cc /* control */
+           || gen_cat == UNICODE_CATEGORY_Cs /* surrogate */
+           || gen_cat == UNICODE_CATEGORY_Cn)); /* unassigned */
+}
+
+/* Return true if C is a printable character.  */
+bool
+printablep (int c)
+{
+  Lisp_Object category = CHAR_TABLE_REF (Vunicode_category_table, c);
+  if (! INTEGERP (category))
+    return false;
+  EMACS_INT gen_cat = XINT (category);
+
+  /* See UTS #18.  */
+  return (!(gen_cat == UNICODE_CATEGORY_Cc /* control */
+           || gen_cat == UNICODE_CATEGORY_Cs /* surrogate */
+           || gen_cat == UNICODE_CATEGORY_Cn)); /* unassigned */
+}
+
 void
 syms_of_character (void)
 {
diff --git a/src/character.h b/src/character.h
index 7d90295..859d717 100644
--- a/src/character.h
+++ b/src/character.h
@@ -662,6 +662,8 @@ extern Lisp_Object string_escape_byte8 (Lisp_Object);
 
 extern bool alphabeticp (int);
 extern bool decimalnump (int);
+extern bool graphicp (int);
+extern bool printablep (int);
 
 /* Return a translation table of id number ID.  */
 #define GET_TRANSLATION_TABLE(id) \
diff --git a/src/cmds.c b/src/cmds.c
index 270fc39..168ce83 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -213,6 +213,36 @@ to t.  */)
   return Qnil;
 }
 
+static int nonundocount;
+
+static void
+remove_excessive_undo_boundaries (void)
+{
+  bool remove_boundary = true;
+
+  if (!EQ (Vthis_command, KVAR (current_kboard, Vlast_command)))
+    nonundocount = 0;
+
+  if (NILP (Vexecuting_kbd_macro))
+    {
+      if (nonundocount <= 0 || nonundocount >= 20)
+       {
+         remove_boundary = false;
+         nonundocount = 0;
+       }
+      nonundocount++;
+    }
+
+  if (remove_boundary
+      && CONSP (BVAR (current_buffer, undo_list))
+      && NILP (XCAR (BVAR (current_buffer, undo_list)))
+      /* Only remove auto-added boundaries, not boundaries
+        added by explicit calls to undo-boundary.  */
+      && EQ (BVAR (current_buffer, undo_list), last_undo_boundary))
+    /* Remove the undo_boundary that was just pushed.  */
+    bset_undo_list (current_buffer, XCDR (BVAR (current_buffer, undo_list)));
+}
+
 DEFUN ("delete-char", Fdelete_char, Sdelete_char, 1, 2, "p\nP",
        doc: /* Delete the following N characters (previous if N is negative).
 Optional second arg KILLFLAG non-nil means kill instead (save in kill ring).
@@ -227,6 +257,9 @@ because it respects values of `delete-active-region' and 
`overwrite-mode'.  */)
 
   CHECK_NUMBER (n);
 
+  if (abs (XINT (n)) < 2)
+    remove_excessive_undo_boundaries ();
+
   pos = PT + XINT (n);
   if (NILP (killflag))
     {
@@ -252,8 +285,6 @@ because it respects values of `delete-active-region' and 
`overwrite-mode'.  */)
   return Qnil;
 }
 
-static int nonundocount;
-
 /* Note that there's code in command_loop_1 which typically avoids
    calling this.  */
 DEFUN ("self-insert-command", Fself_insert_command, Sself_insert_command, 1, 
1, "p",
@@ -267,34 +298,13 @@ After insertion, the value of `auto-fill-function' is 
called if the
 At the end, it runs `post-self-insert-hook'.  */)
   (Lisp_Object n)
 {
-  bool remove_boundary = 1;
   CHECK_NUMBER (n);
 
   if (XFASTINT (n) < 0)
     error ("Negative repetition argument %"pI"d", XFASTINT (n));
 
-  if (!EQ (Vthis_command, KVAR (current_kboard, Vlast_command)))
-    nonundocount = 0;
-
-  if (NILP (Vexecuting_kbd_macro)
-      && !EQ (minibuf_window, selected_window))
-    {
-      if (nonundocount <= 0 || nonundocount >= 20)
-       {
-         remove_boundary = 0;
-         nonundocount = 0;
-       }
-      nonundocount++;
-    }
-
-  if (remove_boundary
-      && CONSP (BVAR (current_buffer, undo_list))
-      && NILP (XCAR (BVAR (current_buffer, undo_list)))
-      /* Only remove auto-added boundaries, not boundaries
-        added be explicit calls to undo-boundary.  */
-      && EQ (BVAR (current_buffer, undo_list), last_undo_boundary))
-    /* Remove the undo_boundary that was just pushed.  */
-    bset_undo_list (current_buffer, XCDR (BVAR (current_buffer, undo_list)));
+  if (XFASTINT (n) < 2)
+    remove_excessive_undo_boundaries ();
 
   /* Barf if the key that invoked this was not a character.  */
   if (!CHARACTERP (last_command_event))
diff --git a/src/eval.c b/src/eval.c
index e828da9..4902261 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -210,7 +210,7 @@ init_eval_once (void)
   specpdl = specpdl_ptr = pdlvec + 1;
   /* Don't forget to update docs (lispref node "Local Variables").  */
   max_specpdl_size = 1300; /* 1000 is not enough for CEDET's c-by.el.  */
-  max_lisp_eval_depth = 600;
+  max_lisp_eval_depth = 800;
 
   Vrun_hooks = Qnil;
 }
@@ -3305,27 +3305,27 @@ Output stream used is value of `standard-output'.  */)
 
   while (backtrace_p (pdl))
     {
-      write_string (backtrace_debug_on_exit (pdl) ? "* " : "  ", 2);
+      write_string (backtrace_debug_on_exit (pdl) ? "* " : "  ");
       if (backtrace_nargs (pdl) == UNEVALLED)
        {
          Fprin1 (Fcons (backtrace_function (pdl), *backtrace_args (pdl)),
                  Qnil);
-         write_string ("\n", -1);
+         write_string ("\n");
        }
       else
        {
          tem = backtrace_function (pdl);
          Fprin1 (tem, Qnil);   /* This can QUIT.  */
-         write_string ("(", -1);
+         write_string ("(");
          {
            ptrdiff_t i;
            for (i = 0; i < backtrace_nargs (pdl); i++)
              {
-               if (i) write_string (" ", -1);
+               if (i) write_string (" ");
                Fprin1 (backtrace_args (pdl)[i], Qnil);
              }
          }
-         write_string (")\n", -1);
+         write_string (")\n");
        }
       pdl = backtrace_next (pdl);
     }
diff --git a/src/fileio.c b/src/fileio.c
index d4e12cb..796f08d 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2344,62 +2344,62 @@ This is what happens in interactive use with M-x.  */)
 
 DEFUN ("make-symbolic-link", Fmake_symbolic_link, Smake_symbolic_link, 2, 3,
        "FMake symbolic link to file: \nGMake symbolic link to file %s: \np",
-       doc: /* Make a symbolic link to FILENAME, named LINKNAME.
+       doc: /* Make a symbolic link to TARGET, named LINKNAME.
 Both args must be strings.
 Signals a `file-already-exists' error if a file LINKNAME already exists
 unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
 A number as third arg means request confirmation if LINKNAME already exists.
 This happens for interactive use with M-x.  */)
-  (Lisp_Object filename, Lisp_Object linkname, Lisp_Object 
ok_if_already_exists)
+  (Lisp_Object target, Lisp_Object linkname, Lisp_Object ok_if_already_exists)
 {
   Lisp_Object handler;
-  Lisp_Object encoded_filename, encoded_linkname;
+  Lisp_Object encoded_target, encoded_linkname;
   struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
 
-  GCPRO4 (filename, linkname, encoded_filename, encoded_linkname);
-  encoded_filename = encoded_linkname = Qnil;
-  CHECK_STRING (filename);
+  GCPRO4 (target, linkname, encoded_target, encoded_linkname);
+  encoded_target = encoded_linkname = Qnil;
+  CHECK_STRING (target);
   CHECK_STRING (linkname);
   /* If the link target has a ~, we must expand it to get
      a truly valid file name.  Otherwise, do not expand;
      we want to permit links to relative file names.  */
-  if (SREF (filename, 0) == '~')
-    filename = Fexpand_file_name (filename, Qnil);
+  if (SREF (target, 0) == '~')
+    target = Fexpand_file_name (target, Qnil);
 
   if (!NILP (Ffile_directory_p (linkname)))
-    linkname = Fexpand_file_name (Ffile_name_nondirectory (filename), 
linkname);
+    linkname = Fexpand_file_name (Ffile_name_nondirectory (target), linkname);
   else
     linkname = Fexpand_file_name (linkname, Qnil);
 
   /* If the file name has special constructs in it,
      call the corresponding file handler.  */
-  handler = Ffind_file_name_handler (filename, Qmake_symbolic_link);
+  handler = Ffind_file_name_handler (target, Qmake_symbolic_link);
   if (!NILP (handler))
-    RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, filename,
+    RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, target,
                           linkname, ok_if_already_exists));
 
   /* If the new link name has special constructs in it,
      call the corresponding file handler.  */
   handler = Ffind_file_name_handler (linkname, Qmake_symbolic_link);
   if (!NILP (handler))
-    RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, filename,
+    RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, target,
                           linkname, ok_if_already_exists));
 
-  encoded_filename = ENCODE_FILE (filename);
+  encoded_target = ENCODE_FILE (target);
   encoded_linkname = ENCODE_FILE (linkname);
 
   if (NILP (ok_if_already_exists)
       || INTEGERP (ok_if_already_exists))
     barf_or_query_if_file_exists (linkname, false, "make it a link",
                                  INTEGERP (ok_if_already_exists), false);
-  if (symlink (SSDATA (encoded_filename), SSDATA (encoded_linkname)) < 0)
+  if (symlink (SSDATA (encoded_target), SSDATA (encoded_linkname)) < 0)
     {
       /* If we didn't complain already, silently delete existing file.  */
       int symlink_errno;
       if (errno == EEXIST)
        {
          unlink (SSDATA (encoded_linkname));
-         if (symlink (SSDATA (encoded_filename), SSDATA (encoded_linkname))
+         if (symlink (SSDATA (encoded_target), SSDATA (encoded_linkname))
              >= 0)
            {
              UNGCPRO;
@@ -2414,7 +2414,7 @@ This happens for interactive use with M-x.  */)
        }
 
       symlink_errno = errno;
-      report_file_errno ("Making symbolic link", list2 (filename, linkname),
+      report_file_errno ("Making symbolic link", list2 (target, linkname),
                         symlink_errno);
     }
   UNGCPRO;
@@ -4165,7 +4165,7 @@ by calling `format-decode', which see.  */)
       Vdeactivate_mark = old_Vdeactivate_mark;
     }
   else
-    Vdeactivate_mark = Qt;
+    Fset (Qdeactivate_mark, Qt);
 
   emacs_close (fd);
   clear_unwind_protect (fd_index);
diff --git a/src/gnutls.c b/src/gnutls.c
index 35f0eb4..ddd36a9 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -1645,6 +1645,16 @@ DEFUN ("gnutls-available-p", Fgnutls_available_p, 
Sgnutls_available_p, 0, 0, 0,
 void
 syms_of_gnutls (void)
 {
+  DEFSYM (Qlibgnutls_version, "libgnutls-version");
+  Fset (Qlibgnutls_version,
+#ifdef HAVE_GNUTLS
+       make_number (GNUTLS_VERSION_MAJOR * 10000
+                    + GNUTLS_VERSION_MINOR * 100
+                    + GNUTLS_VERSION_PATCH)
+#else
+       make_number (-1)
+#endif
+        );
 #ifdef HAVE_GNUTLS
   gnutls_global_initialized = 0;
 
diff --git a/src/insdel.c b/src/insdel.c
index 80650be..22c2bcc 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1846,7 +1846,7 @@ prepare_to_modify_buffer_1 (ptrdiff_t start, ptrdiff_t 
end,
       = call1 (Fsymbol_value (Qregion_extract_function), Qnil);
 
   signal_before_change (start, end, preserve_ptr);
-  Vdeactivate_mark = Qt;
+  Fset (Qdeactivate_mark, Qt);
 }
 
 /* Like above, but called when we know that the buffer text
diff --git a/src/keyboard.c b/src/keyboard.c
index cfdcd9b..d1d0c71 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -11511,6 +11511,7 @@ for that character after that prefix key.  */);
               doc: /* Form to evaluate when Emacs starts up.
 Useful to set before you dump a modified Emacs.  */);
   Vtop_level = Qnil;
+  XSYMBOL (Qtop_level)->declared_special = false;
 
   DEFVAR_KBOARD ("keyboard-translate-table", Vkeyboard_translate_table,
                  doc: /* Translate table for local keyboard input, or nil.
diff --git a/src/lisp.h b/src/lisp.h
index 69bc7c2..2c25544 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3929,7 +3929,7 @@ extern Lisp_Object Vprin1_to_string_buffer;
 extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
 extern void temp_output_buffer_setup (const char *);
 extern int print_level;
-extern void write_string (const char *, int);
+extern void write_string (const char *);
 extern void print_error_message (Lisp_Object, Lisp_Object, const char *,
                                 Lisp_Object);
 extern Lisp_Object internal_with_output_to_temp_buffer
diff --git a/src/lread.c b/src/lread.c
index 050e43e..fa9a63e 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -3778,8 +3778,11 @@ intern_1 (const char *str, ptrdiff_t len)
   Lisp_Object obarray = check_obarray (Vobarray);
   Lisp_Object tem = oblookup (obarray, str, len, len);
 
-  return SYMBOLP (tem) ? tem : intern_driver (make_string (str, len),
-                                             obarray, tem);
+  return (SYMBOLP (tem) ? tem
+         /* The above `oblookup' was done on the basis of nchars==nbytes, so
+            the string has to be unibyte.  */
+         : intern_driver (make_unibyte_string (str, len),
+                          obarray, tem));
 }
 
 Lisp_Object
diff --git a/src/print.c b/src/print.c
index e3dd064..dc59cee 100644
--- a/src/print.c
+++ b/src/print.c
@@ -87,12 +87,11 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1;
 
 /* Lisp functions to do output using a stream
    must have the stream in a variable called printcharfun
-   and must start with PRINTPREPARE, end with PRINTFINISH,
-   and use PRINTDECLARE to declare common variables.
-   Use PRINTCHAR to output one character,
+   and must start with PRINTPREPARE, end with PRINTFINISH.
+   Use printchar to output one character,
    or call strout to output a block of characters.  */
 
-#define PRINTDECLARE                                                   \
+#define PRINTPREPARE                                                   \
    struct buffer *old = current_buffer;                                        
\
    ptrdiff_t old_point = -1, start_point = -1;                         \
    ptrdiff_t old_point_byte = -1, start_point_byte = -1;               \
@@ -100,10 +99,7 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1;
    bool free_print_buffer = 0;                                         \
    bool multibyte                                                      \
      = !NILP (BVAR (current_buffer, enable_multibyte_characters));     \
-   Lisp_Object original
-
-#define PRINTPREPARE                                                   \
-   original = printcharfun;                                            \
+   Lisp_Object original = printcharfun;                                        
\
    if (NILP (printcharfun)) printcharfun = Qt;                         \
    if (BUFFERP (printcharfun))                                         \
      {                                                                 \
@@ -193,8 +189,6 @@ bool print_output_debug_flag EXTERNALLY_VISIBLE = 1;
                                    ? PT_BYTE - start_point_byte : 0)); \
    set_buffer_internal (old);
 
-#define PRINTCHAR(ch) printchar (ch, printcharfun)
-
 /* This is used to restore the saved contents of print_buffer
    when there is a recursive call to print.  */
 
@@ -252,8 +246,7 @@ printchar (unsigned int ch, Lisp_Object fun)
 
 
 /* Output SIZE characters, SIZE_BYTE bytes from string PTR using
-   method PRINTCHARFUN.  If SIZE < 0, use the string length of PTR for
-   both SIZE and SIZE_BYTE.  PRINTCHARFUN nil means output to
+   method PRINTCHARFUN.  PRINTCHARFUN nil means output to
    print_buffer.  PRINTCHARFUN t means output to the echo area or to
    stdout if non-interactive.  If neither nil nor t, call Lisp
    function PRINTCHARFUN for each character printed.  MULTIBYTE
@@ -266,9 +259,6 @@ static void
 strout (const char *ptr, ptrdiff_t size, ptrdiff_t size_byte,
        Lisp_Object printcharfun)
 {
-  if (size < 0)
-    size_byte = size = strlen (ptr);
-
   if (NILP (printcharfun))
     {
       ptrdiff_t incr = size_byte - (print_buffer_size - print_buffer_pos_byte);
@@ -321,7 +311,7 @@ strout (const char *ptr, ptrdiff_t size, ptrdiff_t 
size_byte,
          while (i < size_byte)
            {
              int ch = ptr[i++];
-             PRINTCHAR (ch);
+             printchar (ch, printcharfun);
            }
        }
       else
@@ -334,7 +324,7 @@ strout (const char *ptr, ptrdiff_t size, ptrdiff_t 
size_byte,
              int len;
              int ch = STRING_CHAR_AND_LENGTH ((const unsigned char *) ptr + i,
                                               len);
-             PRINTCHAR (ch);
+             printchar (ch, printcharfun);
              i += len;
            }
        }
@@ -411,7 +401,7 @@ print_string (Lisp_Object string, Lisp_Object printcharfun)
       GCPRO1 (string);
       if (size == size_byte)
        for (i = 0; i < size; i++)
-         PRINTCHAR (SREF (string, i));
+         printchar (SREF (string, i), printcharfun);
       else
        for (i = 0; i < size_byte; )
          {
@@ -419,7 +409,7 @@ print_string (Lisp_Object string, Lisp_Object printcharfun)
               corresponding character code before handing it to PRINTCHAR.  */
            int len;
            int ch = STRING_CHAR_AND_LENGTH (SDATA (string) + i, len);
-           PRINTCHAR (ch);
+           printchar (ch, printcharfun);
            i += len;
          }
       UNGCPRO;
@@ -431,46 +421,45 @@ DEFUN ("write-char", Fwrite_char, Swrite_char, 1, 2, 0,
 PRINTCHARFUN defaults to the value of `standard-output' (which see).  */)
   (Lisp_Object character, Lisp_Object printcharfun)
 {
-  PRINTDECLARE;
-
   if (NILP (printcharfun))
     printcharfun = Vstandard_output;
   CHECK_NUMBER (character);
   PRINTPREPARE;
-  PRINTCHAR (XINT (character));
+  printchar (XINT (character), printcharfun);
   PRINTFINISH;
   return character;
 }
 
-/* Used from outside of print.c to print a block of SIZE
-   single-byte chars at DATA on the default output stream.
+/* Print the contents of a unibyte C string STRING using PRINTCHARFUN.
+   The caller should arrange to put this inside PRINTPREPARE and PRINTFINISH.
    Do not use this on the contents of a Lisp string.  */
 
-void
-write_string (const char *data, int size)
+static void
+print_c_string (char const *string, Lisp_Object printcharfun)
 {
-  PRINTDECLARE;
-  Lisp_Object printcharfun;
+  ptrdiff_t len = strlen (string);
+  strout (string, len, len, printcharfun);
+}
 
-  printcharfun = Vstandard_output;
+/* Print unibyte C string at DATA on a specified stream PRINTCHARFUN.
+   Do not use this on the contents of a Lisp string.  */
 
+static void
+write_string_1 (const char *data, Lisp_Object printcharfun)
+{
   PRINTPREPARE;
-  strout (data, size, size, printcharfun);
+  print_c_string (data, printcharfun);
   PRINTFINISH;
 }
 
-/* Used to print a block of SIZE single-byte chars at DATA on a
-   specified stream PRINTCHARFUN.
+/* Used from outside of print.c to print a C unibyte
+   string at DATA on the default output stream.
    Do not use this on the contents of a Lisp string.  */
 
-static void
-write_string_1 (const char *data, int size, Lisp_Object printcharfun)
+void
+write_string (const char *data)
 {
-  PRINTDECLARE;
-
-  PRINTPREPARE;
-  strout (data, size, size, printcharfun);
-  PRINTFINISH;
+  write_string_1 (data, Vstandard_output);
 }
 
 
@@ -519,9 +508,8 @@ beginning of a line.  Value is non-nil if a newline is 
printed.
 If PRINTCHARFUN is omitted or nil, the value of `standard-output' is used.  */)
   (Lisp_Object printcharfun, Lisp_Object ensure)
 {
-  Lisp_Object val = Qnil;
+  Lisp_Object val;
 
-  PRINTDECLARE;
   if (NILP (printcharfun))
     printcharfun = Vstandard_output;
   PRINTPREPARE;
@@ -533,10 +521,11 @@ If PRINTCHARFUN is omitted or nil, the value of 
`standard-output' is used.  */)
     signal_error ("Unsupported function argument", printcharfun);
   else if (noninteractive && !NILP (printcharfun))
     val = printchar_stdout_last == 10 ? Qnil : Qt;
-  else if (NILP (Fbolp ()))
-    val = Qt;
+  else
+    val = NILP (Fbolp ()) ? Qt : Qnil;
 
-  if (!NILP (val)) PRINTCHAR ('\n');
+  if (!NILP (val))
+    printchar ('\n', printcharfun);
   PRINTFINISH;
   return val;
 }
@@ -566,8 +555,6 @@ If PRINTCHARFUN is omitted, the value of `standard-output' 
(which see)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
-  PRINTDECLARE;
-
   if (NILP (printcharfun))
     printcharfun = Vstandard_output;
   PRINTPREPARE;
@@ -592,32 +579,24 @@ a list, a buffer, a window, a frame, etc.
 A printed representation of an object is text which describes that object.  */)
   (Lisp_Object object, Lisp_Object noescape)
 {
-  Lisp_Object printcharfun;
-  bool prev_abort_on_gc;
-  Lisp_Object save_deactivate_mark;
   ptrdiff_t count = SPECPDL_INDEX ();
-  struct buffer *previous;
 
   specbind (Qinhibit_modification_hooks, Qt);
 
-  {
-    PRINTDECLARE;
-
-    /* Save and restore this--we are altering a buffer
-       but we don't want to deactivate the mark just for that.
-       No need for specbind, since errors deactivate the mark.  */
-    save_deactivate_mark = Vdeactivate_mark;
-    prev_abort_on_gc = abort_on_gc;
-    abort_on_gc = 1;
-
-    printcharfun = Vprin1_to_string_buffer;
-    PRINTPREPARE;
-    print (object, printcharfun, NILP (noescape));
-    /* Make Vprin1_to_string_buffer be the default buffer after PRINTFINISH */
-    PRINTFINISH;
-  }
+  /* Save and restore this: we are altering a buffer
+     but we don't want to deactivate the mark just for that.
+     No need for specbind, since errors deactivate the mark.  */
+  Lisp_Object save_deactivate_mark = Vdeactivate_mark;
+  bool prev_abort_on_gc = abort_on_gc;
+  abort_on_gc = true;
+
+  Lisp_Object printcharfun = Vprin1_to_string_buffer;
+  PRINTPREPARE;
+  print (object, printcharfun, NILP (noescape));
+  /* Make Vprin1_to_string_buffer be the default buffer after PRINTFINISH */
+  PRINTFINISH;
 
-  previous = current_buffer;
+  struct buffer *previous = current_buffer;
   set_buffer_internal (XBUFFER (Vprin1_to_string_buffer));
   object = Fbuffer_string ();
   if (SBYTES (object) == SCHARS (object))
@@ -659,8 +638,6 @@ If PRINTCHARFUN is omitted, the value of `standard-output' 
(which see)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
-  PRINTDECLARE;
-
   if (NILP (printcharfun))
     printcharfun = Vstandard_output;
   PRINTPREPARE;
@@ -694,16 +671,15 @@ If PRINTCHARFUN is omitted, the value of 
`standard-output' (which see)
 is used instead.  */)
   (Lisp_Object object, Lisp_Object printcharfun)
 {
-  PRINTDECLARE;
   struct gcpro gcpro1;
 
   if (NILP (printcharfun))
     printcharfun = Vstandard_output;
   GCPRO1 (object);
   PRINTPREPARE;
-  PRINTCHAR ('\n');
+  printchar ('\n', printcharfun);
   print (object, printcharfun, 1);
-  PRINTCHAR ('\n');
+  printchar ('\n', printcharfun);
   PRINTFINISH;
   UNGCPRO;
   return object;
@@ -873,7 +849,7 @@ print_error_message (Lisp_Object data, Lisp_Object stream, 
const char *context,
   struct gcpro gcpro1;
 
   if (context != 0)
-    write_string_1 (context, -1, stream);
+    write_string_1 (context, stream);
 
   /* If we know from where the error was signaled, show it in
    *Messages*.  */
@@ -920,7 +896,7 @@ print_error_message (Lisp_Object data, Lisp_Object stream, 
const char *context,
     const char *sep = ": ";
 
     if (!STRINGP (errmsg))
-      write_string_1 ("peculiar error", -1, stream);
+      write_string_1 ("peculiar error", stream);
     else if (SCHARS (errmsg))
       Fprinc (errmsg, stream);
     else
@@ -931,7 +907,7 @@ print_error_message (Lisp_Object data, Lisp_Object stream, 
const char *context,
        Lisp_Object obj;
 
        if (sep)
-         write_string_1 (sep, 2, stream);
+         write_string_1 (sep, stream);
        obj = XCAR (tail);
        if (!NILP (file_error)
            || EQ (errname, Qend_of_file) || EQ (errname, Quser_error))
@@ -1424,18 +1400,15 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
            obj = print_prune_string_charset (obj);
 
          if (string_intervals (obj))
-           {
-             PRINTCHAR ('#');
-             PRINTCHAR ('(');
-           }
+           print_c_string ("#(", printcharfun);
 
-         PRINTCHAR ('\"');
+         printchar ('\"', printcharfun);
          size_byte = SBYTES (obj);
 
          for (i = 0, i_byte = 0; i_byte < size_byte;)
            {
              /* Here, we must convert each multi-byte form to the
-                corresponding character code before handing it to PRINTCHAR.  
*/
+                corresponding character code before handing it to printchar.  
*/
              int c;
 
              FETCH_STRING_CHAR_ADVANCE (c, obj, i, i_byte);
@@ -1443,15 +1416,9 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
              QUIT;
 
              if (c == '\n' && print_escape_newlines)
-               {
-                 PRINTCHAR ('\\');
-                 PRINTCHAR ('n');
-               }
+               print_c_string ("\\n", printcharfun);
              else if (c == '\f' && print_escape_newlines)
-               {
-                 PRINTCHAR ('\\');
-                 PRINTCHAR ('f');
-               }
+               print_c_string ("\\f", printcharfun);
              else if (multibyte
                       && (CHAR_BYTE8_P (c)
                           || (! ASCII_CHAR_P (c) && print_escape_multibyte)))
@@ -1496,21 +1463,21 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
                      if ((c >= 'a' && c <= 'f')
                          || (c >= 'A' && c <= 'F')
                          || (c >= '0' && c <= '9'))
-                       strout ("\\ ", -1, -1, printcharfun);
+                       print_c_string ("\\ ", printcharfun);
                    }
 
                  if (c == '\"' || c == '\\')
-                   PRINTCHAR ('\\');
-                 PRINTCHAR (c);
+                   printchar ('\\', printcharfun);
+                 printchar (c, printcharfun);
                }
            }
-         PRINTCHAR ('\"');
+         printchar ('\"', printcharfun);
 
          if (string_intervals (obj))
            {
              traverse_intervals (string_intervals (obj),
                                  0, print_interval, printcharfun);
-             PRINTCHAR (')');
+             printchar (')', printcharfun);
            }
 
          UNGCPRO;
@@ -1554,14 +1521,10 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
        size_byte = SBYTES (name);
 
        if (! NILP (Vprint_gensym) && !SYMBOL_INTERNED_P (obj))
-         {
-           PRINTCHAR ('#');
-           PRINTCHAR (':');
-         }
+         print_c_string ("#:", printcharfun);
        else if (size_byte == 0)
          {
-           PRINTCHAR ('#');
-           PRINTCHAR ('#');
+           print_c_string ("##", printcharfun);
            break;
          }
 
@@ -1579,9 +1542,12 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
                    || c == ',' || c == '.' || c == '`'
                    || c == '[' || c == ']' || c == '?' || c <= 040
                    || confusing)
-                 PRINTCHAR ('\\'), confusing = 0;
+                 {
+                   printchar ('\\', printcharfun);
+                   confusing = false;
+                 }
              }
-           PRINTCHAR (c);
+           printchar (c, printcharfun);
          }
       }
       break;
@@ -1590,18 +1556,17 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
       /* If deeper than spec'd depth, print placeholder.  */
       if (INTEGERP (Vprint_level)
          && print_depth > XINT (Vprint_level))
-       strout ("...", -1, -1, printcharfun);
+       print_c_string ("...", printcharfun);
       else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
               && (EQ (XCAR (obj), Qquote)))
        {
-         PRINTCHAR ('\'');
+         printchar ('\'', printcharfun);
          print_object (XCAR (XCDR (obj)), printcharfun, escapeflag);
        }
       else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
               && (EQ (XCAR (obj), Qfunction)))
        {
-         PRINTCHAR ('#');
-         PRINTCHAR ('\'');
+         print_c_string ("#'", printcharfun);
          print_object (XCAR (XCDR (obj)), printcharfun, escapeflag);
        }
       else if (print_quoted && CONSP (XCDR (obj)) && NILP (XCDR (XCDR (obj)))
@@ -1626,75 +1591,71 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
        }
       else
        {
-         PRINTCHAR ('(');
+         printchar ('(', printcharfun);
 
-         {
-           printmax_t i, print_length;
-           Lisp_Object halftail = obj;
+         Lisp_Object halftail = obj;
 
-           /* Negative values of print-length are invalid in CL.
-              Treat them like nil, as CMUCL does.  */
-           if (NATNUMP (Vprint_length))
-             print_length = XFASTINT (Vprint_length);
-           else
-             print_length = TYPE_MAXIMUM (printmax_t);
+         /* Negative values of print-length are invalid in CL.
+            Treat them like nil, as CMUCL does.  */
+         printmax_t print_length = (NATNUMP (Vprint_length)
+                                    ? XFASTINT (Vprint_length)
+                                    : TYPE_MAXIMUM (printmax_t));
 
-           i = 0;
-           while (CONSP (obj))
-             {
-               /* Detect circular list.  */
-               if (NILP (Vprint_circle))
-                 {
-                   /* Simple but incomplete way.  */
-                   if (i != 0 && EQ (obj, halftail))
-                     {
-                       int len = sprintf (buf, " . #%"pMd, i / 2);
-                       strout (buf, len, len, printcharfun);
-                       goto end_of_list;
-                     }
-                 }
-               else
-                 {
-                   /* With the print-circle feature.  */
-                   if (i != 0)
-                     {
-                       Lisp_Object num = Fgethash (obj, Vprint_number_table, 
Qnil);
-                       if (INTEGERP (num))
-                         {
-                           strout (" . ", 3, 3, printcharfun);
-                           print_object (obj, printcharfun, escapeflag);
-                           goto end_of_list;
-                         }
-                     }
-                 }
+         printmax_t i = 0;
+         while (CONSP (obj))
+           {
+             /* Detect circular list.  */
+             if (NILP (Vprint_circle))
+               {
+                 /* Simple but incomplete way.  */
+                 if (i != 0 && EQ (obj, halftail))
+                   {
+                     int len = sprintf (buf, " . #%"pMd, i / 2);
+                     strout (buf, len, len, printcharfun);
+                     goto end_of_list;
+                   }
+               }
+             else
+               {
+                 /* With the print-circle feature.  */
+                 if (i != 0)
+                   {
+                     Lisp_Object num = Fgethash (obj, Vprint_number_table, 
Qnil);
+                     if (INTEGERP (num))
+                       {
+                         print_c_string (" . ", printcharfun);
+                         print_object (obj, printcharfun, escapeflag);
+                         goto end_of_list;
+                       }
+                   }
+               }
 
-               if (i)
-                 PRINTCHAR (' ');
+             if (i)
+               printchar (' ', printcharfun);
 
-               if (print_length <= i)
-                 {
-                   strout ("...", 3, 3, printcharfun);
-                   goto end_of_list;
-                 }
+             if (print_length <= i)
+               {
+                 print_c_string ("...", printcharfun);
+                 goto end_of_list;
+               }
 
-               i++;
-               print_object (XCAR (obj), printcharfun, escapeflag);
+             i++;
+             print_object (XCAR (obj), printcharfun, escapeflag);
 
-               obj = XCDR (obj);
-               if (!(i & 1))
-                 halftail = XCDR (halftail);
-             }
+             obj = XCDR (obj);
+             if (!(i & 1))
+               halftail = XCDR (halftail);
          }
 
          /* OBJ non-nil here means it's the end of a dotted list.  */
          if (!NILP (obj))
            {
-             strout (" . ", 3, 3, printcharfun);
+             print_c_string (" . ", printcharfun);
              print_object (obj, printcharfun, escapeflag);
            }
 
        end_of_list:
-         PRINTCHAR (')');
+         printchar (')', printcharfun);
        }
       break;
 
@@ -1703,9 +1664,9 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
        {
          if (escapeflag)
            {
-             strout ("#<process ", -1, -1, printcharfun);
+             print_c_string ("#<process ", printcharfun);
              print_string (XPROCESS (obj)->name, printcharfun);
-             PRINTCHAR ('>');
+             printchar ('>', printcharfun);
            }
          else
            print_string (XPROCESS (obj)->name, printcharfun);
@@ -1713,7 +1674,6 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
       else if (BOOL_VECTOR_P (obj))
        {
          ptrdiff_t i;
-         int len;
          unsigned char c;
          struct gcpro gcpro1;
          EMACS_INT size = bool_vector_size (obj);
@@ -1721,11 +1681,8 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
          ptrdiff_t real_size_in_chars = size_in_chars;
          GCPRO1 (obj);
 
-         PRINTCHAR ('#');
-         PRINTCHAR ('&');
-         len = sprintf (buf, "%"pI"d", size);
+         int len = sprintf (buf, "#&%"pI"d\"", size);
          strout (buf, len, len, printcharfun);
-         PRINTCHAR ('\"');
 
          /* Don't print more characters than the specified maximum.
             Negative values of print-length are invalid.  Treat them
@@ -1739,42 +1696,34 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
              QUIT;
              c = bool_vector_uchar_data (obj)[i];
              if (c == '\n' && print_escape_newlines)
-               {
-                 PRINTCHAR ('\\');
-                 PRINTCHAR ('n');
-               }
+               print_c_string ("\\n", printcharfun);
              else if (c == '\f' && print_escape_newlines)
-               {
-                 PRINTCHAR ('\\');
-                 PRINTCHAR ('f');
-               }
+               print_c_string ("\\f", printcharfun);
              else if (c > '\177')
                {
                  /* Use octal escapes to avoid encoding issues.  */
-                 PRINTCHAR ('\\');
-                 PRINTCHAR ('0' + ((c >> 6) & 3));
-                 PRINTCHAR ('0' + ((c >> 3) & 7));
-                 PRINTCHAR ('0' + (c & 7));
+                 len = sprintf (buf, "\\%o", c);
+                 strout (buf, len, len, printcharfun);
                }
              else
                {
                  if (c == '\"' || c == '\\')
-                   PRINTCHAR ('\\');
-                 PRINTCHAR (c);
+                   printchar ('\\', printcharfun);
+                 printchar (c, printcharfun);
                }
            }
 
          if (size_in_chars < real_size_in_chars)
-           strout (" ...", 4, 4, printcharfun);
-         PRINTCHAR ('\"');
+           print_c_string (" ...", printcharfun);
+         printchar ('\"', printcharfun);
 
          UNGCPRO;
        }
       else if (SUBRP (obj))
        {
-         strout ("#<subr ", -1, -1, printcharfun);
-         strout (XSUBR (obj)->symbol_name, -1, -1, printcharfun);
-         PRINTCHAR ('>');
+         print_c_string ("#<subr ", printcharfun);
+         print_c_string (XSUBR (obj)->symbol_name, printcharfun);
+         printchar ('>', printcharfun);
        }
 #ifdef HAVE_XWIDGETS
       else if (XWIDGETP (obj))
@@ -1790,31 +1739,28 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
 #endif
       else if (WINDOWP (obj))
        {
-         int len;
-         strout ("#<window ", -1, -1, printcharfun);
-         len = sprintf (buf, "%d", XWINDOW (obj)->sequence_number);
+         int len = sprintf (buf, "#<window %"pI"d",
+                            XWINDOW (obj)->sequence_number);
          strout (buf, len, len, printcharfun);
          if (BUFFERP (XWINDOW (obj)->contents))
            {
-             strout (" on ", -1, -1, printcharfun);
+             print_c_string (" on ", printcharfun);
              print_string (BVAR (XBUFFER (XWINDOW (obj)->contents), name),
                            printcharfun);
            }
-         PRINTCHAR ('>');
+         printchar ('>', printcharfun);
        }
       else if (TERMINALP (obj))
        {
-         int len;
          struct terminal *t = XTERMINAL (obj);
-         strout ("#<terminal ", -1, -1, printcharfun);
-         len = sprintf (buf, "%d", t->id);
+         int len = sprintf (buf, "#<terminal %d", t->id);
          strout (buf, len, len, printcharfun);
          if (t->name)
            {
-             strout (" on ", -1, -1, printcharfun);
-             strout (t->name, -1, -1, printcharfun);
+             print_c_string (" on ", printcharfun);
+             print_c_string (t->name, printcharfun);
            }
-         PRINTCHAR ('>');
+         printchar ('>', printcharfun);
        }
       else if (HASH_TABLE_P (obj))
        {
@@ -1824,16 +1770,14 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
          int len;
 #if 0
          void *ptr = h;
-         strout ("#<hash-table", -1, -1, printcharfun);
+         print_c_string ("#<hash-table", printcharfun);
          if (SYMBOLP (h->test))
            {
-             PRINTCHAR (' ');
-             PRINTCHAR ('\'');
-             strout (SDATA (SYMBOL_NAME (h->test)), -1, -1, printcharfun);
-             PRINTCHAR (' ');
-             strout (SDATA (SYMBOL_NAME (h->weak)), -1, -1, printcharfun);
-             PRINTCHAR (' ');
-             len = sprintf (buf, "%"pD"d/%"pD"d", h->count, ASIZE (h->next));
+             print_c_string (" '", printcharfun);
+             print_c_string (SSDATA (SYMBOL_NAME (h->test)), printcharfun);
+             printchar (' ', printcharfun);
+             print_c_string (SSDATA (SYMBOL_NAME (h->weak)), printcharfun);
+             len = sprintf (buf, " %"pD"d/%"pD"d", h->count, ASIZE (h->next));
              strout (buf, len, len, printcharfun);
            }
          len = sprintf (buf, " %p>", ptr);
@@ -1847,29 +1791,29 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
 
          if (!NILP (h->test.name))
            {
-             strout (" test ", -1, -1, printcharfun);
+             print_c_string (" test ", printcharfun);
              print_object (h->test.name, printcharfun, escapeflag);
            }
 
          if (!NILP (h->weak))
            {
-             strout (" weakness ", -1, -1, printcharfun);
+             print_c_string (" weakness ", printcharfun);
              print_object (h->weak, printcharfun, escapeflag);
            }
 
          if (!NILP (h->rehash_size))
            {
-             strout (" rehash-size ", -1, -1, printcharfun);
+             print_c_string (" rehash-size ", printcharfun);
              print_object (h->rehash_size, printcharfun, escapeflag);
            }
 
          if (!NILP (h->rehash_threshold))
            {
-             strout (" rehash-threshold ", -1, -1, printcharfun);
+             print_c_string (" rehash-threshold ", printcharfun);
              print_object (h->rehash_threshold, printcharfun, escapeflag);
            }
 
-         strout (" data ", -1, -1, printcharfun);
+         print_c_string (" data ", printcharfun);
 
          /* Print the data here as a plist. */
          real_size = HASH_TABLE_SIZE (h);
@@ -1880,49 +1824,47 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
              && XFASTINT (Vprint_length) < size)
            size = XFASTINT (Vprint_length);
 
-         PRINTCHAR ('(');
+         printchar ('(', printcharfun);
          for (i = 0; i < size; i++)
            if (!NILP (HASH_HASH (h, i)))
              {
-               if (i) PRINTCHAR (' ');
+               if (i) printchar (' ', printcharfun);
                print_object (HASH_KEY (h, i), printcharfun, escapeflag);
-               PRINTCHAR (' ');
+               printchar (' ', printcharfun);
                print_object (HASH_VALUE (h, i), printcharfun, escapeflag);
              }
 
          if (size < real_size)
-           strout (" ...", 4, 4, printcharfun);
+           print_c_string (" ...", printcharfun);
 
-         PRINTCHAR (')');
-         PRINTCHAR (')');
+         print_c_string ("))", printcharfun);
 
        }
       else if (BUFFERP (obj))
        {
          if (!BUFFER_LIVE_P (XBUFFER (obj)))
-           strout ("#<killed buffer>", -1, -1, printcharfun);
+           print_c_string ("#<killed buffer>", printcharfun);
          else if (escapeflag)
            {
-             strout ("#<buffer ", -1, -1, printcharfun);
+             print_c_string ("#<buffer ", printcharfun);
              print_string (BVAR (XBUFFER (obj), name), printcharfun);
-             PRINTCHAR ('>');
+             printchar ('>', printcharfun);
            }
          else
            print_string (BVAR (XBUFFER (obj), name), printcharfun);
        }
       else if (WINDOW_CONFIGURATIONP (obj))
-       {
-         strout ("#<window-configuration>", -1, -1, printcharfun);
-       }
+       print_c_string ("#<window-configuration>", printcharfun);
       else if (FRAMEP (obj))
        {
          int len;
          void *ptr = XFRAME (obj);
          Lisp_Object frame_name = XFRAME (obj)->name;
 
-         strout ((FRAME_LIVE_P (XFRAME (obj))
-                  ? "#<frame " : "#<dead frame "),
-                 -1, -1, printcharfun);
+         print_c_string ((FRAME_LIVE_P (XFRAME (obj))
+                          ? "#<frame "
+                          : "#<dead frame "),
+                         printcharfun);
          if (!STRINGP (frame_name))
            {
              /* A frame could be too young and have no name yet;
@@ -1943,12 +1885,12 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
          if (! FONT_OBJECT_P (obj))
            {
              if (FONT_SPEC_P (obj))
-               strout ("#<font-spec", -1, -1, printcharfun);
+               print_c_string ("#<font-spec", printcharfun);
              else
-               strout ("#<font-entity", -1, -1, printcharfun);
+               print_c_string ("#<font-entity", printcharfun);
              for (i = 0; i < FONT_SPEC_MAX; i++)
                {
-                 PRINTCHAR (' ');
+                 printchar (' ', printcharfun);
                  if (i < FONT_WEIGHT_INDEX || i > FONT_WIDTH_INDEX)
                    print_object (AREF (obj, i), printcharfun, escapeflag);
                  else
@@ -1958,18 +1900,18 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
            }
          else
            {
-             strout ("#<font-object ", -1, -1, printcharfun);
+             print_c_string ("#<font-object ", printcharfun);
              print_object (AREF (obj, FONT_NAME_INDEX), printcharfun,
                            escapeflag);
            }
-         PRINTCHAR ('>');
+         printchar ('>', printcharfun);
        }
       else
        {
          ptrdiff_t size = ASIZE (obj);
          if (COMPILEDP (obj))
            {
-             PRINTCHAR ('#');
+             printchar ('#', printcharfun);
              size &= PSEUDOVECTOR_SIZE_MASK;
            }
          if (CHAR_TABLE_P (obj) || SUB_CHAR_TABLE_P (obj))
@@ -1983,20 +1925,19 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
                 results in slow redisplay.  */
              if (SUB_CHAR_TABLE_P (obj)
                  && XSUB_CHAR_TABLE (obj)->depth == 3)
-               PRINTCHAR ('\n');
-             PRINTCHAR ('#');
-             PRINTCHAR ('^');
+               printchar ('\n', printcharfun);
+             print_c_string ("#^", printcharfun);
              if (SUB_CHAR_TABLE_P (obj))
-               PRINTCHAR ('^');
+               printchar ('^', printcharfun);
              size &= PSEUDOVECTOR_SIZE_MASK;
            }
          if (size & PSEUDOVECTOR_FLAG)
            goto badtype;
 
-         PRINTCHAR ('[');
+         printchar ('[', printcharfun);
          {
            int i, idx = SUB_CHAR_TABLE_P (obj) ? SUB_CHAR_TABLE_OFFSET : 0;
-           register Lisp_Object tem;
+           Lisp_Object tem;
            ptrdiff_t real_size = size;
 
            /* For a sub char-table, print heading non-Lisp data first.  */
@@ -2014,14 +1955,14 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
 
            for (i = idx; i < size; i++)
              {
-               if (i) PRINTCHAR (' ');
+               if (i) printchar (' ', printcharfun);
                tem = AREF (obj, i);
                print_object (tem, printcharfun, escapeflag);
              }
            if (size < real_size)
-             strout (" ...", 4, 4, printcharfun);
+             print_c_string (" ...", printcharfun);
          }
-         PRINTCHAR (']');
+         printchar (']', printcharfun);
        }
       break;
 
@@ -2029,26 +1970,25 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
       switch (XMISCTYPE (obj))
        {
        case Lisp_Misc_Marker:
-         strout ("#<marker ", -1, -1, printcharfun);
+         print_c_string ("#<marker ", printcharfun);
          /* Do you think this is necessary?  */
          if (XMARKER (obj)->insertion_type != 0)
-           strout ("(moves after insertion) ", -1, -1, printcharfun);
+           print_c_string ("(moves after insertion) ", printcharfun);
          if (! XMARKER (obj)->buffer)
-           strout ("in no buffer", -1, -1, printcharfun);
+           print_c_string ("in no buffer", printcharfun);
          else
            {
-             int len = sprintf (buf, "at %"pD"d", marker_position (obj));
+             int len = sprintf (buf, "at %"pD"d in ", marker_position (obj));
              strout (buf, len, len, printcharfun);
-             strout (" in ", -1, -1, printcharfun);
              print_string (BVAR (XMARKER (obj)->buffer, name), printcharfun);
            }
-         PRINTCHAR ('>');
+         printchar ('>', printcharfun);
          break;
 
        case Lisp_Misc_Overlay:
-         strout ("#<overlay ", -1, -1, printcharfun);
+         print_c_string ("#<overlay ", printcharfun);
          if (! XMARKER (OVERLAY_START (obj))->buffer)
-           strout ("in no buffer", -1, -1, printcharfun);
+           print_c_string ("in no buffer", printcharfun);
          else
            {
              int len = sprintf (buf, "from %"pD"d to %"pD"d in ",
@@ -2058,21 +1998,21 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
              print_string (BVAR (XMARKER (OVERLAY_START (obj))->buffer, name),
                            printcharfun);
            }
-         PRINTCHAR ('>');
+         printchar ('>', printcharfun);
           break;
 
         case Lisp_Misc_Finalizer:
-          strout ("#<finalizer", -1, -1, printcharfun);
+          print_c_string ("#<finalizer", printcharfun);
           if (NILP (XFINALIZER (obj)->function))
-            strout (" used", -1, -1, printcharfun);
-          strout (">", -1, -1, printcharfun);
+            print_c_string (" used", printcharfun);
+         printchar ('>', printcharfun);
           break;
 
          /* Remaining cases shouldn't happen in normal usage, but let's
             print them anyway for the benefit of the debugger.  */
 
        case Lisp_Misc_Free:
-         strout ("#<misc free cell>", -1, -1, printcharfun);
+         print_c_string ("#<misc free cell>", printcharfun);
          break;
 
        case Lisp_Misc_Save_Value:
@@ -2080,7 +2020,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
            int i;
            struct Lisp_Save_Value *v = XSAVE_VALUE (obj);
 
-           strout ("#<save-value ", -1, -1, printcharfun);
+           print_c_string ("#<save-value ", printcharfun);
 
            if (v->save_type == SAVE_TYPE_MEMORY)
              {
@@ -2103,17 +2043,15 @@ print_object (Lisp_Object obj, Lisp_Object 
printcharfun, bool escapeflag)
                    Lisp_Object maybe = area[i];
                    int valid = valid_lisp_object_p (maybe);
 
+                   printchar (' ', printcharfun);
                    if (0 < valid)
-                     {
-                       PRINTCHAR (' ');
-                       print_object (maybe, printcharfun, escapeflag);
-                     }
+                     print_object (maybe, printcharfun, escapeflag);
                    else
-                     strout (valid ? " <some>" : " <invalid>",
-                             -1, -1, printcharfun);
+                     print_c_string (valid < 0 ? "<some>" : "<invalid>",
+                                     printcharfun);
                  }
                if (i == limit && i < amount)
-                 strout (" ...", 4, 4, printcharfun);
+                 print_c_string (" ...", printcharfun);
 
 #else /* not GC_MARK_STACK */
 
@@ -2132,7 +2070,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
                for (index = 0; index < SAVE_VALUE_SLOTS; index++)
                  {
                    if (index)
-                     PRINTCHAR (' ');
+                     printchar (' ', printcharfun);
 
                    switch (save_type (v, index))
                      {
@@ -2168,7 +2106,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
                    strout (buf, i, i, printcharfun);
                  }
              }
-           PRINTCHAR ('>');
+           printchar ('>', printcharfun);
          }
          break;
 
@@ -2183,7 +2121,7 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
        int len;
        /* We're in trouble if this happens!
           Probably should just emacs_abort ().  */
-       strout ("#<EMACS BUG: INVALID DATATYPE ", -1, -1, printcharfun);
+       print_c_string ("#<EMACS BUG: INVALID DATATYPE ", printcharfun);
        if (MISCP (obj))
          len = sprintf (buf, "(MISC 0x%04x)", (int) XMISCTYPE (obj));
        else if (VECTORLIKEP (obj))
@@ -2191,8 +2129,9 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, 
bool escapeflag)
        else
          len = sprintf (buf, "(0x%02x)", (int) XTYPE (obj));
        strout (buf, len, len, printcharfun);
-       strout (" Save your buffers immediately and please report this bug>",
-               -1, -1, printcharfun);
+       print_c_string ((" Save your buffers immediately"
+                        " and please report this bug>"),
+                       printcharfun);
       }
     }
 
@@ -2208,12 +2147,12 @@ print_interval (INTERVAL interval, Lisp_Object 
printcharfun)
 {
   if (NILP (interval->plist))
     return;
-  PRINTCHAR (' ');
+  printchar (' ', printcharfun);
   print_object (make_number (interval->position), printcharfun, 1);
-  PRINTCHAR (' ');
+  printchar (' ', printcharfun);
   print_object (make_number (interval->position + LENGTH (interval)),
                printcharfun, 1);
-  PRINTCHAR (' ');
+  printchar (' ', printcharfun);
   print_object (interval->plist, printcharfun, 1);
 }
 
diff --git a/src/process.c b/src/process.c
index 2800fa5..3ffbbec 100644
--- a/src/process.c
+++ b/src/process.c
@@ -189,6 +189,8 @@ process_socket (int domain, int type, int protocol)
 #define NETCONN1_P(p) (EQ (p->type, Qnetwork))
 #define SERIALCONN_P(p) (EQ (XPROCESS (p)->type, Qserial))
 #define SERIALCONN1_P(p) (EQ (p->type, Qserial))
+#define PIPECONN_P(p) (EQ (XPROCESS (p)->type, Qpipe))
+#define PIPECONN1_P(p) (EQ (p->type, Qpipe))
 
 /* Number of events of change of status of a process.  */
 static EMACS_INT process_tick;
@@ -411,6 +413,11 @@ pset_write_queue (struct Lisp_Process *p, Lisp_Object val)
 {
   p->write_queue = val;
 }
+static void
+pset_stderrproc (struct Lisp_Process *p, Lisp_Object val)
+{
+  p->stderrproc = val;
+}
 
 
 static Lisp_Object
@@ -837,7 +844,7 @@ nil, indicating the current buffer's process.  */)
   p = XPROCESS (process);
 
   p->raw_status_new = 0;
-  if (NETCONN1_P (p) || SERIALCONN1_P (p))
+  if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     {
       pset_status (p, list2 (Qexit, make_number (0)));
       p->tick = ++process_tick;
@@ -903,7 +910,7 @@ nil, indicating the current buffer's process.  */)
   status = p->status;
   if (CONSP (status))
     status = XCAR (status);
-  if (NETCONN1_P (p) || SERIALCONN1_P (p))
+  if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     {
       if (EQ (status, Qexit))
        status = Qclosed;
@@ -987,7 +994,7 @@ Return BUFFER.  */)
     CHECK_BUFFER (buffer);
   p = XPROCESS (process);
   pset_buffer (p, buffer);
-  if (NETCONN1_P (p) || SERIALCONN1_P (p))
+  if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     pset_childp (p, Fplist_put (p->childp, QCbuffer, buffer));
   setup_process_coding_systems (process);
   return buffer;
@@ -1063,7 +1070,7 @@ The string argument is normally a multibyte string, 
except:
     }
 
   pset_filter (p, filter);
-  if (NETCONN1_P (p) || SERIALCONN1_P (p))
+  if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     pset_childp (p, Fplist_put (p->childp, QCfilter, filter));
   setup_process_coding_systems (process);
   return filter;
@@ -1095,7 +1102,7 @@ It gets two arguments: the process, and a string 
describing the change.  */)
     sentinel = Qinternal_default_process_sentinel;
 
   pset_sentinel (p, sentinel);
-  if (NETCONN1_P (p) || SERIALCONN1_P (p))
+  if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     pset_childp (p, Fplist_put (p->childp, QCsentinel, sentinel));
   return sentinel;
 }
@@ -1204,7 +1211,8 @@ list of keywords.  */)
                          Fprocess_datagram_address (process));
 #endif
 
-  if ((!NETCONN_P (process) && !SERIALCONN_P (process)) || EQ (key, Qt))
+  if ((!NETCONN_P (process) && !SERIALCONN_P (process) && !PIPECONN_P 
(process))
+      || EQ (key, Qt))
     return contact;
   if (NILP (key) && NETCONN_P (process))
     return list2 (Fplist_get (contact, QChost),
@@ -1212,6 +1220,11 @@ list of keywords.  */)
   if (NILP (key) && SERIALCONN_P (process))
     return list2 (Fplist_get (contact, QCport),
                  Fplist_get (contact, QCspeed));
+  /* FIXME: Return a meaningful value (e.g., the child end of the pipe)
+     if the pipe process is useful for purposes other than receiving
+     stderr.  */
+  if (NILP (key) && PIPECONN_P (process))
+    return Qt;
   return Fplist_get (contact, key);
 }
 
@@ -1386,10 +1399,15 @@ to use a pty, or nil to use the default specified 
through
 
 :sentinel SENTINEL -- Install SENTINEL as the process sentinel.
 
+:stderr STDERR -- STDERR is either a buffer or a pipe process attached
+to the standard error of subprocess.  Specifying this implies
+`:connection-type' is set to `pipe'.
+
 usage: (make-process &rest ARGS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
 {
   Lisp_Object buffer, name, command, program, proc, contact, current_dir, tem;
+  Lisp_Object xstderr, stderrproc;
   ptrdiff_t count = SPECPDL_INDEX ();
   struct gcpro gcpro1;
   USE_SAFE_ALLOCA;
@@ -1433,6 +1451,27 @@ usage: (make-process &rest ARGS)  */)
   if (!NILP (program))
     CHECK_STRING (program);
 
+  stderrproc = Qnil;
+  xstderr = Fplist_get (contact, QCstderr);
+  if (PROCESSP (xstderr))
+    {
+      if (!PIPECONN_P (xstderr))
+       error ("Process is not a pipe process");
+      stderrproc = xstderr;
+    }
+  else if (!NILP (xstderr))
+    {
+      struct gcpro gcpro1, gcpro2;
+      CHECK_STRING (program);
+      GCPRO2 (buffer, current_dir);
+      stderrproc = CALLN (Fmake_pipe_process,
+                         QCname,
+                         concat2 (name, build_string (" stderr")),
+                         QCbuffer,
+                         Fget_buffer_create (xstderr));
+      UNGCPRO;
+    }
+
   proc = make_process (name);
   /* If an error occurs and we can't start the process, we want to
      remove it from the process list.  This means that each error
@@ -1444,8 +1483,8 @@ usage: (make-process &rest ARGS)  */)
   pset_plist (XPROCESS (proc), Qnil);
   pset_type (XPROCESS (proc), Qreal);
   pset_buffer (XPROCESS (proc), buffer);
-  pset_sentinel (XPROCESS (proc), Qinternal_default_process_sentinel);
-  pset_filter (XPROCESS (proc), Qinternal_default_process_filter);
+  pset_sentinel (XPROCESS (proc), Fplist_get (contact, QCsentinel));
+  pset_filter (XPROCESS (proc), Fplist_get (contact, QCfilter));
   pset_command (XPROCESS (proc), Fcopy_sequence (command));
 
   if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
@@ -1463,6 +1502,13 @@ usage: (make-process &rest ARGS)  */)
   else
     report_file_error ("Unknown connection type", tem);
 
+  if (!NILP (stderrproc))
+    {
+      pset_stderrproc (XPROCESS (proc), stderrproc);
+
+      XPROCESS (proc)->pty_flag = false;
+    }
+
 #ifdef HAVE_GNUTLS
   /* AKA GNUTLS_INITSTAGE(proc).  */
   XPROCESS (proc)->gnutls_initstage = GNUTLS_STAGE_EMPTY;
@@ -1708,7 +1754,7 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
   int inchannel, outchannel;
   pid_t pid;
   int vfork_errno;
-  int forkin, forkout;
+  int forkin, forkout, forkerr = -1;
   bool pty_flag = 0;
   char pty_name[PTY_NAME_SIZE];
   Lisp_Object lisp_pty_name = Qnil;
@@ -1746,6 +1792,17 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
       outchannel = p->open_fd[WRITE_TO_SUBPROCESS];
       inchannel = p->open_fd[READ_FROM_SUBPROCESS];
       forkout = p->open_fd[SUBPROCESS_STDOUT];
+
+      if (!NILP (p->stderrproc))
+       {
+         struct Lisp_Process *pp = XPROCESS (p->stderrproc);
+
+         forkerr = pp->open_fd[SUBPROCESS_STDOUT];
+
+         /* Close unnecessary file descriptors.  */
+         close_process_fd (&pp->open_fd[WRITE_TO_SUBPROCESS]);
+         close_process_fd (&pp->open_fd[SUBPROCESS_STDIN]);
+       }
     }
 
 #ifndef WINDOWSNT
@@ -1792,6 +1849,7 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
     char **volatile new_argv_volatile = new_argv;
     int volatile forkin_volatile = forkin;
     int volatile forkout_volatile = forkout;
+    int volatile forkerr_volatile = forkerr;
     struct Lisp_Process *p_volatile = p;
 
     pid = vfork ();
@@ -1801,6 +1859,7 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
     new_argv = new_argv_volatile;
     forkin = forkin_volatile;
     forkout = forkout_volatile;
+    forkerr = forkerr_volatile;
     p = p_volatile;
 
     pty_flag = p->pty_flag;
@@ -1811,6 +1870,7 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
     {
       int xforkin = forkin;
       int xforkout = forkout;
+      int xforkerr = forkerr;
 
       /* Make the pty be the controlling terminal of the process.  */
 #ifdef HAVE_PTYS
@@ -1910,10 +1970,13 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
 
       if (pty_flag)
        child_setup_tty (xforkout);
+
+      if (xforkerr < 0)
+       xforkerr = xforkout;
 #ifdef WINDOWSNT
-      pid = child_setup (xforkin, xforkout, xforkout, new_argv, 1, 
current_dir);
+      pid = child_setup (xforkin, xforkout, xforkerr, new_argv, 1, 
current_dir);
 #else  /* not WINDOWSNT */
-      child_setup (xforkin, xforkout, xforkout, new_argv, 1, current_dir);
+      child_setup (xforkin, xforkout, xforkerr, new_argv, 1, current_dir);
 #endif /* not WINDOWSNT */
     }
 
@@ -1958,6 +2021,11 @@ create_process (Lisp_Object process, char **new_argv, 
Lisp_Object current_dir)
        close_process_fd (&p->open_fd[READ_FROM_EXEC_MONITOR]);
       }
 #endif
+      if (!NILP (p->stderrproc))
+       {
+         struct Lisp_Process *pp = XPROCESS (p->stderrproc);
+         close_process_fd (&pp->open_fd[SUBPROCESS_STDOUT]);
+       }
     }
 }
 
@@ -2016,6 +2084,187 @@ create_pty (Lisp_Object process)
   p->pid = -2;
 }
 
+DEFUN ("make-pipe-process", Fmake_pipe_process, Smake_pipe_process,
+       0, MANY, 0,
+       doc: /* Create and return a bidirectional pipe process.
+
+In Emacs, pipes are represented by process objects, so input and
+output work as for subprocesses, and `delete-process' closes a pipe.
+However, a pipe process has no process id, it cannot be signaled,
+and the status codes are different from normal processes.
+
+Arguments are specified as keyword/argument pairs.  The following
+arguments are defined:
+
+:name NAME -- NAME is the name of the process.  It is modified if necessary to 
make it unique.
+
+:buffer BUFFER -- BUFFER is the buffer (or buffer-name) to associate
+with the process.  Process output goes at the end of that buffer,
+unless you specify an output stream or filter function to handle the
+output.  If BUFFER is not given, the value of NAME is used.
+
+:coding CODING -- If CODING is a symbol, it specifies the coding
+system used for both reading and writing for this process.  If CODING
+is a cons (DECODING . ENCODING), DECODING is used for reading, and
+ENCODING is used for writing.
+
+:noquery BOOL -- When exiting Emacs, query the user if BOOL is nil and
+the process is running.  If BOOL is not given, query before exiting.
+
+:stop BOOL -- Start process in the `stopped' state if BOOL non-nil.
+In the stopped state, a pipe process does not accept incoming data,
+but you can send outgoing data.  The stopped state is cleared by
+`continue-process' and set by `stop-process'.
+
+:filter FILTER -- Install FILTER as the process filter.
+
+:sentinel SENTINEL -- Install SENTINEL as the process sentinel.
+
+usage:  (make-pipe-process &rest ARGS)  */)
+  (ptrdiff_t nargs, Lisp_Object *args)
+{
+  Lisp_Object proc, contact;
+  struct Lisp_Process *p;
+  struct gcpro gcpro1;
+  Lisp_Object name, buffer;
+  Lisp_Object tem;
+  ptrdiff_t specpdl_count;
+  int inchannel, outchannel;
+
+  if (nargs == 0)
+    return Qnil;
+
+  contact = Flist (nargs, args);
+  GCPRO1 (contact);
+
+  name = Fplist_get (contact, QCname);
+  CHECK_STRING (name);
+  proc = make_process (name);
+  specpdl_count = SPECPDL_INDEX ();
+  record_unwind_protect (remove_process, proc);
+  p = XPROCESS (proc);
+
+  if (emacs_pipe (p->open_fd + SUBPROCESS_STDIN) != 0
+      || emacs_pipe (p->open_fd + READ_FROM_SUBPROCESS) != 0)
+    report_file_error ("Creating pipe", Qnil);
+  outchannel = p->open_fd[WRITE_TO_SUBPROCESS];
+  inchannel = p->open_fd[READ_FROM_SUBPROCESS];
+
+  fcntl (inchannel, F_SETFL, O_NONBLOCK);
+  fcntl (outchannel, F_SETFL, O_NONBLOCK);
+
+#ifdef WINDOWSNT
+  register_aux_fd (inchannel);
+#endif
+
+  /* Record this as an active process, with its channels.  */
+  chan_process[inchannel] = proc;
+  p->infd = inchannel;
+  p->outfd = outchannel;
+
+  if (inchannel > max_process_desc)
+    max_process_desc = inchannel;
+
+  buffer = Fplist_get (contact, QCbuffer);
+  if (NILP (buffer))
+    buffer = name;
+  buffer = Fget_buffer_create (buffer);
+  pset_buffer (p, buffer);
+
+  pset_childp (p, contact);
+  pset_plist (p, Fcopy_sequence (Fplist_get (contact, QCplist)));
+  pset_type (p, Qpipe);
+  pset_sentinel (p, Fplist_get (contact, QCsentinel));
+  pset_filter (p, Fplist_get (contact, QCfilter));
+  pset_log (p, Qnil);
+  if (tem = Fplist_get (contact, QCnoquery), !NILP (tem))
+    p->kill_without_query = 1;
+  if (tem = Fplist_get (contact, QCstop), !NILP (tem))
+    pset_command (p, Qt);
+  eassert (! p->pty_flag);
+
+  if (!EQ (p->command, Qt))
+    {
+      FD_SET (inchannel, &input_wait_mask);
+      FD_SET (inchannel, &non_keyboard_wait_mask);
+    }
+#ifdef ADAPTIVE_READ_BUFFERING
+  p->adaptive_read_buffering
+    = (NILP (Vprocess_adaptive_read_buffering) ? 0
+       : EQ (Vprocess_adaptive_read_buffering, Qt) ? 1 : 2);
+#endif
+
+  /* Make the process marker point into the process buffer (if any).  */
+  if (BUFFERP (buffer))
+    set_marker_both (p->mark, buffer,
+                    BUF_ZV (XBUFFER (buffer)),
+                    BUF_ZV_BYTE (XBUFFER (buffer)));
+
+  {
+    /* Setup coding systems for communicating with the network stream.  */
+
+    /* Qt denotes we have not yet called Ffind_operation_coding_system.  */
+    Lisp_Object coding_systems = Qt;
+    Lisp_Object val;
+
+    tem = Fplist_get (contact, QCcoding);
+    val = Qnil;
+    if (!NILP (tem))
+      {
+       val = tem;
+       if (CONSP (val))
+         val = XCAR (val);
+      }
+    else if (!NILP (Vcoding_system_for_read))
+      val = Vcoding_system_for_read;
+    else if ((!NILP (buffer) && NILP (BVAR (XBUFFER (buffer), 
enable_multibyte_characters)))
+            || (NILP (buffer) && NILP (BVAR (&buffer_defaults, 
enable_multibyte_characters))))
+      /* We dare not decode end-of-line format by setting VAL to
+        Qraw_text, because the existing Emacs Lisp libraries
+        assume that they receive bare code including a sequence of
+        CR LF.  */
+      val = Qnil;
+    else
+      {
+       if (CONSP (coding_systems))
+         val = XCAR (coding_systems);
+       else if (CONSP (Vdefault_process_coding_system))
+         val = XCAR (Vdefault_process_coding_system);
+       else
+         val = Qnil;
+      }
+    pset_decode_coding_system (p, val);
+
+    if (!NILP (tem))
+      {
+       val = tem;
+       if (CONSP (val))
+         val = XCDR (val);
+      }
+    else if (!NILP (Vcoding_system_for_write))
+      val = Vcoding_system_for_write;
+    else if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
+      val = Qnil;
+    else
+      {
+       if (CONSP (coding_systems))
+         val = XCDR (coding_systems);
+       else if (CONSP (Vdefault_process_coding_system))
+         val = XCDR (Vdefault_process_coding_system);
+       else
+         val = Qnil;
+      }
+    pset_encode_coding_system (p, val);
+  }
+  /* This may signal an error.  */
+  setup_process_coding_systems (proc);
+
+  specpdl_ptr = specpdl + specpdl_count;
+
+  UNGCPRO;
+  return proc;
+}
+
 
 /* Convert an internal struct sockaddr to a lisp object (vector or string).
    The address family of sa is not included in the result.  */
@@ -4884,7 +5133,8 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
                 available now and a closed pipe.
                 With luck, a closed pipe will be accompanied by
                 subprocess termination and SIGCHLD.  */
-             else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc))
+             else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)
+                      && !PIPECONN_P (proc))
                ;
 #endif
 #ifdef HAVE_PTYS
@@ -4916,8 +5166,18 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
 #endif /* HAVE_PTYS */
              /* If we can detect process termination, don't consider the
                 process gone just because its pipe is closed.  */
-             else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc))
+             else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)
+                      && !PIPECONN_P (proc))
                ;
+             else if (nread == 0 && PIPECONN_P (proc))
+               {
+                 /* Preserve status of processes already terminated.  */
+                 XPROCESS (proc)->tick = ++process_tick;
+                 deactivate_process (proc);
+                 if (EQ (XPROCESS (proc)->status, Qrun))
+                   pset_status (XPROCESS (proc),
+                                list2 (Qexit, make_number (0)));
+               }
              else
                {
                  /* Preserve status of processes already terminated.  */
@@ -5954,7 +6214,8 @@ If PROCESS is a network or serial process, inhibit 
handling of incoming
 traffic.  */)
   (Lisp_Object process, Lisp_Object current_group)
 {
-  if (PROCESSP (process) && (NETCONN_P (process) || SERIALCONN_P (process)))
+  if (PROCESSP (process) && (NETCONN_P (process) || SERIALCONN_P (process)
+                            || PIPECONN_P (process)))
     {
       struct Lisp_Process *p;
 
@@ -5983,7 +6244,8 @@ If PROCESS is a network or serial process, resume 
handling of incoming
 traffic.  */)
   (Lisp_Object process, Lisp_Object current_group)
 {
-  if (PROCESSP (process) && (NETCONN_P (process) || SERIALCONN_P (process)))
+  if (PROCESSP (process) && (NETCONN_P (process) || SERIALCONN_P (process)
+                            || PIPECONN_P (process)))
     {
       struct Lisp_Process *p;
 
@@ -7030,7 +7292,7 @@ kill_buffer_processes (Lisp_Object buffer)
   FOR_EACH_PROCESS (tail, proc)
     if (NILP (buffer) || EQ (XPROCESS (proc)->buffer, buffer))
       {
-       if (NETCONN_P (proc) || SERIALCONN_P (proc))
+       if (NETCONN_P (proc) || SERIALCONN_P (proc) || PIPECONN_P (proc))
          Fdelete_process (proc);
        else if (XPROCESS (proc)->infd >= 0)
          process_send_signal (proc, SIGHUP, Qnil, 1);
@@ -7330,6 +7592,7 @@ syms_of_process (void)
   DEFSYM (Qreal, "real");
   DEFSYM (Qnetwork, "network");
   DEFSYM (Qserial, "serial");
+  DEFSYM (Qpipe, "pipe");
   DEFSYM (QCbuffer, ":buffer");
   DEFSYM (QChost, ":host");
   DEFSYM (QCservice, ":service");
@@ -7346,6 +7609,7 @@ syms_of_process (void)
   DEFSYM (QCplist, ":plist");
   DEFSYM (QCcommand, ":command");
   DEFSYM (QCconnection_type, ":connection-type");
+  DEFSYM (QCstderr, ":stderr");
   DEFSYM (Qpty, "pty");
   DEFSYM (Qpipe, "pipe");
 
@@ -7451,6 +7715,7 @@ The variable takes effect when `start-process' is called. 
 */);
   defsubr (&Sset_process_plist);
   defsubr (&Sprocess_list);
   defsubr (&Smake_process);
+  defsubr (&Smake_pipe_process);
   defsubr (&Sserial_process_configure);
   defsubr (&Smake_serial_process);
   defsubr (&Sset_network_process_option);
diff --git a/src/process.h b/src/process.h
index 36979dc..e889055 100644
--- a/src/process.h
+++ b/src/process.h
@@ -105,6 +105,9 @@ struct Lisp_Process
     Lisp_Object gnutls_cred_type;
 #endif
 
+    /* Pipe process attached to the standard error of this process.  */
+    Lisp_Object stderrproc;
+
     /* After this point, there are no Lisp_Objects any more.  */
     /* alloc.c assumes that `pid' is the first such non-Lisp slot.  */
 
diff --git a/src/regex.c b/src/regex.c
index 1afc503..38c5e35 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -313,12 +313,12 @@ enum syntaxcode { Swhitespace = 0, Sword = 1, Ssymbol = 2 
};
 /* The rest must handle multibyte characters.  */
 
 # define ISGRAPH(c) (SINGLE_BYTE_CHAR_P (c)                            \
-                   ? (c) > ' ' && !((c) >= 0177 && (c) <= 0237)        \
-                   : 1)
+                    ? (c) > ' ' && !((c) >= 0177 && (c) <= 0240)       \
+                    : graphicp (c))
 
 # define ISPRINT(c) (SINGLE_BYTE_CHAR_P (c)                            \
                    ? (c) >= ' ' && !((c) >= 0177 && (c) <= 0237)       \
-                   : 1)
+                    : printablep (c))
 
 # define ISALNUM(c) (IS_REAL_ASCII (c)                 \
                    ? (((c) >= 'a' && (c) <= 'z')       \
@@ -1865,7 +1865,8 @@ struct range_table_work_area
 #define RANGE_TABLE_WORK_ELT(work_area, i) ((work_area).table[i])
 
 /* Bits used to implement the multibyte-part of the various character classes
-   such as [:alnum:] in a charset's range table.  */
+   such as [:alnum:] in a charset's range table.  The code currently assumes
+   that only the low 16 bits are used.  */
 #define BIT_WORD       0x1
 #define BIT_LOWER      0x2
 #define BIT_PUNCT      0x4
@@ -1874,6 +1875,8 @@ struct range_table_work_area
 #define BIT_MULTIBYTE  0x20
 #define BIT_ALPHA      0x40
 #define BIT_ALNUM      0x80
+#define BIT_GRAPH      0x100
+#define BIT_PRINT      0x200
 
 
 /* Set the bit for character C in a list.  */
@@ -2072,7 +2075,7 @@ re_wctype_to_bit (re_wctype_t cc)
 {
   switch (cc)
     {
-    case RECC_NONASCII: case RECC_PRINT: case RECC_GRAPH:
+    case RECC_NONASCII:
     case RECC_MULTIBYTE: return BIT_MULTIBYTE;
     case RECC_ALPHA: return BIT_ALPHA;
     case RECC_ALNUM: return BIT_ALNUM;
@@ -2081,6 +2084,8 @@ re_wctype_to_bit (re_wctype_t cc)
     case RECC_UPPER: return BIT_UPPER;
     case RECC_PUNCT: return BIT_PUNCT;
     case RECC_SPACE: return BIT_SPACE;
+    case RECC_GRAPH: return BIT_GRAPH;
+    case RECC_PRINT: return BIT_PRINT;
     case RECC_ASCII: case RECC_DIGIT: case RECC_XDIGIT: case RECC_CNTRL:
     case RECC_BLANK: case RECC_UNIBYTE: case RECC_ERROR: return 0;
     default:
@@ -5519,7 +5524,9 @@ re_match_2_internal (struct re_pattern_buffer *bufp, 
const_re_char *string1,
                    | (class_bits & BIT_UPPER && ISUPPER (c))
                    | (class_bits & BIT_WORD  && ISWORD  (c))
                    | (class_bits & BIT_ALPHA && ISALPHA (c))
-                   | (class_bits & BIT_ALNUM && ISALNUM (c)))
+                   | (class_bits & BIT_ALNUM && ISALNUM (c))
+                   | (class_bits & BIT_GRAPH && ISGRAPH (c))
+                   | (class_bits & BIT_PRINT && ISPRINT (c)))
                  not = !not;
                else
                  CHARSET_LOOKUP_RANGE_TABLE_RAW (not, c, range_table, count);
diff --git a/src/textprop.c b/src/textprop.c
index 740b962..108c226 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -52,8 +52,8 @@ enum property_set_type
   TEXT_PROPERTY_APPEND
 };
 
-/* If o1 is a cons whose cdr is a cons, return non-zero and set o2 to
-   the o1's cdr.  Otherwise, return zero.  This is handy for
+/* If o1 is a cons whose cdr is a cons, return true and set o2 to
+   the o1's cdr.  Otherwise, return false.  This is handy for
    traversing plists.  */
 #define PLIST_ELT_P(o1, o2) (CONSP (o1) && ((o2)=XCDR (o1), CONSP (o2)))
 
@@ -123,13 +123,12 @@ CHECK_STRING_OR_BUFFER (Lisp_Object x)
    Fprevious_property_change which call this function with BEGIN == END.
    Handle this case specially.
 
-   If FORCE is soft (0), it's OK to return NULL.  Otherwise,
+   If FORCE is soft (false), it's OK to return NULL.  Otherwise,
    create an interval tree for OBJECT if one doesn't exist, provided
    the object actually contains text.  In the current design, if there
    is no text, there can be no text properties.  */
 
-#define soft 0
-#define hard 1
+enum { soft = false, hard = true };
 
 INTERVAL
 validate_interval_range (Lisp_Object object, Lisp_Object *begin,
@@ -206,15 +205,17 @@ validate_plist (Lisp_Object list)
 
   if (CONSP (list))
     {
-      bool odd_length = 0;
-      Lisp_Object tail;
-      for (tail = list; CONSP (tail); tail = XCDR (tail))
+      Lisp_Object tail = list;
+      do
        {
-         odd_length ^= 1;
+         tail = XCDR (tail);
+         if (! CONSP (tail))
+           error ("Odd length text property list");
+         tail = XCDR (tail);
          QUIT;
        }
-      if (odd_length)
-       error ("Odd length text property list");
+      while (CONSP (tail));
+
       return list;
     }
 
@@ -233,27 +234,27 @@ interval_has_all_properties (Lisp_Object plist, INTERVAL 
i)
   for (tail1 = plist; CONSP (tail1); tail1 = Fcdr (XCDR (tail1)))
     {
       Lisp_Object sym1 = XCAR (tail1);
-      bool found = 0;
+      bool found = false;
 
       /* Go through I's plist, looking for sym1 */
       for (tail2 = i->plist; CONSP (tail2); tail2 = Fcdr (XCDR (tail2)))
        if (EQ (sym1, XCAR (tail2)))
          {
            /* Found the same property on both lists.  If the
-              values are unequal, return zero.  */
+              values are unequal, return false.  */
            if (! EQ (Fcar (XCDR (tail1)), Fcar (XCDR (tail2))))
-             return 0;
+             return false;
 
            /* Property has same value on both lists; go to next one.  */
-           found = 1;
+           found = true;
            break;
          }
 
       if (! found)
-       return 0;
+       return false;
     }
 
-  return 1;
+  return true;
 }
 
 /* Return true if the plist of interval I has any of the
@@ -272,13 +273,13 @@ interval_has_some_properties (Lisp_Object plist, INTERVAL 
i)
       /* Go through i's plist, looking for tail1 */
       for (tail2 = i->plist; CONSP (tail2); tail2 = Fcdr (XCDR (tail2)))
        if (EQ (sym, XCAR (tail2)))
-         return 1;
+         return true;
     }
 
-  return 0;
+  return false;
 }
 
-/* Return nonzero if the plist of interval I has any of the
+/* Return true if the plist of interval I has any of the
    property names in LIST, regardless of their values.  */
 
 static bool
@@ -294,10 +295,10 @@ interval_has_some_properties_list (Lisp_Object list, 
INTERVAL i)
       /* Go through i's plist, looking for tail1 */
       for (tail2 = i->plist; CONSP (tail2); tail2 = XCDR (XCDR (tail2)))
        if (EQ (sym, XCAR (tail2)))
-         return 1;
+         return true;
     }
 
-  return 0;
+  return false;
 }
 
 /* Changing the plists of individual intervals.  */
@@ -373,7 +374,7 @@ add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object 
object,
                enum property_set_type set_type)
 {
   Lisp_Object tail1, tail2, sym1, val1;
-  bool changed = 0;
+  bool changed = false;
   struct gcpro gcpro1, gcpro2, gcpro3;
 
   tail1 = plist;
@@ -387,7 +388,7 @@ add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object 
object,
   /* Go through each element of PLIST.  */
   for (tail1 = plist; CONSP (tail1); tail1 = Fcdr (XCDR (tail1)))
     {
-      bool found = 0;
+      bool found = false;
       sym1 = XCAR (tail1);
       val1 = Fcar (XCDR (tail1));
 
@@ -401,7 +402,7 @@ add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object 
object,
 
            this_cdr = XCDR (tail2);
            /* Found the property.  Now check its value.  */
-           found = 1;
+           found = true;
 
            /* The properties have the same value on both lists.
               Continue to the next property.  */
@@ -438,7 +439,7 @@ add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object 
object,
                  Fsetcar (this_cdr, list2 (Fcar (this_cdr), val1));
              }
            }
-           changed = 1;
+           changed = true;
            break;
          }
 
@@ -451,7 +452,7 @@ add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object 
object,
                                      sym1, Qnil, object);
            }
          set_interval_plist (i, Fcons (sym1, Fcons (val1, i->plist)));
-         changed = 1;
+         changed = true;
        }
     }
 
@@ -468,23 +469,18 @@ add_properties (Lisp_Object plist, INTERVAL i, 
Lisp_Object object,
 static bool
 remove_properties (Lisp_Object plist, Lisp_Object list, INTERVAL i, 
Lisp_Object object)
 {
-  Lisp_Object tail1, tail2, sym, current_plist;
-  bool changed = 0;
+  bool changed = false;
 
   /* True means tail1 is a plist, otherwise it is a list.  */
-  bool use_plist;
+  bool use_plist = ! NILP (plist);
+  Lisp_Object tail1 = use_plist ? plist : list;
 
-  current_plist = i->plist;
-
-  if (! NILP (plist))
-    tail1 = plist, use_plist = 1;
-  else
-    tail1 = list, use_plist = 0;
+  Lisp_Object current_plist = i->plist;
 
   /* Go through each element of LIST or PLIST.  */
   while (CONSP (tail1))
     {
-      sym = XCAR (tail1);
+      Lisp_Object sym = XCAR (tail1);
 
       /* First, remove the symbol if it's at the head of the list */
       while (CONSP (current_plist) && EQ (sym, XCAR (current_plist)))
@@ -495,15 +491,14 @@ remove_properties (Lisp_Object plist, Lisp_Object list, 
INTERVAL i, Lisp_Object
                                    object);
 
          current_plist = XCDR (XCDR (current_plist));
-         changed = 1;
+         changed = true;
        }
 
       /* Go through I's plist, looking for SYM.  */
-      tail2 = current_plist;
+      Lisp_Object tail2 = current_plist;
       while (! NILP (tail2))
        {
-         register Lisp_Object this;
-         this = XCDR (XCDR (tail2));
+         Lisp_Object this = XCDR (XCDR (tail2));
          if (CONSP (this) && EQ (sym, XCAR (this)))
            {
              if (BUFFERP (object))
@@ -511,7 +506,7 @@ remove_properties (Lisp_Object plist, Lisp_Object list, 
INTERVAL i, Lisp_Object
                                        sym, XCAR (XCDR (this)), object);
 
              Fsetcdr (XCDR (tail2), XCDR (XCDR (this)));
-             changed = 1;
+             changed = true;
            }
          tail2 = this;
        }
@@ -643,7 +638,7 @@ get_char_property_and_overlay (Lisp_Object position, 
register Lisp_Object prop,
       set_buffer_temp (XBUFFER (object));
 
       USE_SAFE_ALLOCA;
-      GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, 0);
+      GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, false);
       noverlays = sort_overlays (overlay_vec, noverlays, w);
 
       set_buffer_temp (obuf);
@@ -824,7 +819,7 @@ past position LIMIT; return LIMIT if nothing is found 
before LIMIT.  */)
            XSETFASTINT (position, ZV);
        }
       else
-       while (1)
+       while (true)
          {
            position = Fnext_char_property_change (position, limit);
            if (XFASTINT (position) >= XFASTINT (limit))
@@ -910,7 +905,7 @@ position LIMIT; return LIMIT if nothing is found before 
reaching LIMIT.  */)
            = Fget_char_property (make_number (XFASTINT (position) - 1),
                                  prop, object);
 
-         while (1)
+         while (true)
            {
              position = Fprevious_char_property_change (position, limit);
 
@@ -1156,9 +1151,9 @@ add_text_properties_1 (Lisp_Object start, Lisp_Object end,
                       enum property_set_type set_type) {
   INTERVAL i, unchanged;
   ptrdiff_t s, len;
-  bool modified = 0;
+  bool modified = false;
   struct gcpro gcpro1;
-  bool first_time = 1;
+  bool first_time = true;
 
   properties = validate_plist (properties);
   if (NILP (properties))
@@ -1218,7 +1213,7 @@ add_text_properties_1 (Lisp_Object start, Lisp_Object end,
       if (TOTAL_LENGTH (i) != prev_total_length
          || i->position != prev_pos)
        {
-         first_time = 0;
+         first_time = false;
          goto retry;
        }
     }
@@ -1521,8 +1516,8 @@ Use `set-text-properties' if you want to remove all text 
properties.  */)
 {
   INTERVAL i, unchanged;
   ptrdiff_t s, len;
-  bool modified = 0;
-  bool first_time = 1;
+  bool modified = false;
+  bool first_time = true;
 
   if (NILP (object))
     XSETBUFFER (object, current_buffer);
@@ -1574,7 +1569,7 @@ Use `set-text-properties' if you want to remove all text 
properties.  */)
       if (TOTAL_LENGTH (i) != prev_total_length
          || i->position != prev_pos)
        {
-         first_time = 0;
+         first_time = false;
          goto retry;
        }
     }
@@ -1633,7 +1628,7 @@ Return t if any property was actually removed, nil 
otherwise.  */)
 {
   INTERVAL i, unchanged;
   ptrdiff_t s, len;
-  bool modified = 0;
+  bool modified = false;
   Lisp_Object properties;
   properties = list_of_properties;
 
@@ -1672,11 +1667,11 @@ Return t if any property was actually removed, nil 
otherwise.  */)
     }
 
   /* We are at the beginning of an interval, with len to scan.
-     The flag `modified' records if changes have been made.
+     The flag MODIFIED records if changes have been made.
      When object is a buffer, we must call modify_text_properties
      before changes are made and signal_after_change when we are done.
-     We call modify_text_properties before calling remove_properties if 
modified == 0,
-     and we call signal_after_change before returning if modified != 0. */
+     Call modify_text_properties before calling remove_properties if !MODIFIED,
+     and call signal_after_change before returning if MODIFIED. */
   for (;;)
     {
       eassert (i != 0);
@@ -1725,7 +1720,7 @@ Return t if any property was actually removed, nil 
otherwise.  */)
          if (!modified && BUFFERP (object))
            modify_text_properties (object, start, end);
          remove_properties (Qnil, properties, i, object);
-         modified = 1;
+         modified = true;
        }
       len -= LENGTH (i);
       i = next_interval (i);
@@ -1902,7 +1897,7 @@ copy_text_properties (Lisp_Object start, Lisp_Object end, 
Lisp_Object src,
   Lisp_Object stuff;
   Lisp_Object plist;
   ptrdiff_t s, e, e2, p, len;
-  bool modified = 0;
+  bool modified = false;
   struct gcpro gcpro1, gcpro2;
 
   i = validate_interval_range (src, &start, &end, soft);
@@ -1969,7 +1964,7 @@ copy_text_properties (Lisp_Object start, Lisp_Object end, 
Lisp_Object src,
       res = Fadd_text_properties (Fcar (res), Fcar (Fcdr (res)),
                                  Fcar (Fcdr (Fcdr (res))), dest);
       if (! NILP (res))
-       modified = 1;
+       modified = true;
       stuff = Fcdr (stuff);
     }
 
diff --git a/src/tparam.c b/src/tparam.c
index 538f26c..02047db 100644
--- a/src/tparam.c
+++ b/src/tparam.c
@@ -79,14 +79,14 @@ tparam1 (const char *string, char *outstring, int len,
   register int tem;
   int *old_argp = argp;                 /* can move */
   int *fixed_argp = argp;               /* never moves */
-  bool explicit_param_p = 0;            /* set by %p */
+  bool explicit_param_p = false;        /* set by %p */
   ptrdiff_t doleft = 0;
   ptrdiff_t doup = 0;
   ptrdiff_t append_len = 0;
 
   outend = outstring + len;
 
-  while (1)
+  while (true)
     {
       /* If the buffer might be too short, make it bigger.  */
       while (outend - op - append_len <= 5)
@@ -115,7 +115,7 @@ tparam1 (const char *string, char *outstring, int len,
        {
          c = *p++;
          if (explicit_param_p)
-           explicit_param_p = 0;
+           explicit_param_p = false;
          else
            tem = *argp;
          switch (c)
@@ -142,7 +142,7 @@ tparam1 (const char *string, char *outstring, int len,
              break;
             case 'p':           /* %pN means use param N for next subst.  */
              tem = fixed_argp[(*p++) - '1'];
-             explicit_param_p = 1;
+             explicit_param_p = true;
              break;
            case 'C':
              /* For c-100: print quotient of value by 96, if nonzero,
diff --git a/src/undo.c b/src/undo.c
index 948dcf9..750bc8a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -212,7 +212,7 @@ record_delete (ptrdiff_t beg, Lisp_Object string, bool 
record_markers)
 void
 record_change (ptrdiff_t beg, ptrdiff_t length)
 {
-  record_delete (beg, make_buffer_string (beg, beg + length, 1), false);
+  record_delete (beg, make_buffer_string (beg, beg + length, true), false);
   record_insert (beg, length);
 }
 
@@ -250,7 +250,7 @@ record_property_change (ptrdiff_t beg, ptrdiff_t length,
 {
   Lisp_Object lbeg, lend, entry;
   struct buffer *obuf = current_buffer, *buf = XBUFFER (buffer);
-  bool boundary = 0;
+  bool boundary = false;
 
   if (EQ (BVAR (buf, undo_list), Qt))
     return;
@@ -260,7 +260,7 @@ record_property_change (ptrdiff_t beg, ptrdiff_t length,
     pending_boundary = Fcons (Qnil, Qnil);
 
   if (buf != last_undo_buffer)
-    boundary = 1;
+    boundary = true;
   last_undo_buffer = buf;
 
   /* Switch temporarily to the buffer that was changed.  */
@@ -519,5 +519,5 @@ so it must make sure not to do a lot of consing.  */);
 
   DEFVAR_BOOL ("undo-inhibit-record-point", undo_inhibit_record_point,
               doc: /* Non-nil means do not record `point' in 
`buffer-undo-list'.  */);
-  undo_inhibit_record_point = 0;
+  undo_inhibit_record_point = false;
 }
diff --git a/src/w32.c b/src/w32.c
index 6f16704..8721ed9 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -9473,6 +9473,26 @@ serial_configure (struct Lisp_Process *p, Lisp_Object 
contact)
   pset_childp (p, childp2);
 }
 
+/* For make-pipe-process */
+void
+register_aux_fd (int infd)
+{
+  child_process *cp;
+
+  cp = new_child ();
+  if (!cp)
+    error ("Could not create child process");
+  cp->fd = infd;
+  cp->status = STATUS_READ_ACKNOWLEDGED;
+
+  if (fd_info[ infd ].cp != NULL)
+    {
+      error ("fd_info[fd = %d] is already in use", infd);
+    }
+  fd_info[ infd ].cp = cp;
+  fd_info[ infd ].hnd = (HANDLE) _get_osfhandle (infd);
+}
+
 #ifdef HAVE_GNUTLS
 
 ssize_t
diff --git a/src/w32.h b/src/w32.h
index 9b3521d..e62b93c 100644
--- a/src/w32.h
+++ b/src/w32.h
@@ -202,6 +202,7 @@ extern int random (void);
 extern int fchmod (int, mode_t);
 extern int sys_rename_replace (char const *, char const *, BOOL);
 extern int pipe2 (int *, int);
+extern void register_aux_fd (int);
 
 extern void set_process_dir (char *);
 extern int sys_spawnve (int, char *, char **, char **);
diff --git a/src/w32proc.c b/src/w32proc.c
index 7d982f8..1f633d8 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -806,7 +806,7 @@ alarm (int seconds)
    etc.
 
    Both these arrays reference each other: there's a member of
-   child_process structure that records the file corresponding
+   child_process structure that records the corresponding file
    descriptor, and there's a member of filedesc structure that holds a
    pointer to the corresponding child_process.
 
@@ -817,13 +817,13 @@ alarm (int seconds)
    thread" that will watch the output of the subprocess/stream and its
    status.  (If no vacant slot can be found, new_child returns a
    failure indication to its caller, and the higher-level Emacs
-   primitive will then fail with EMFILE or EAGAIN.)
+   primitive that called it will then fail with EMFILE or EAGAIN.)
 
    The reader thread started by new_child communicates with the main
    (a.k.a. "Lisp") thread via two event objects and a status, all of
    them recorded by the members of the child_process structure in
    child_procs[].  The event objects serve as semaphores between the
-   reader thread and the 'select' emulation in sys_select, as follows:
+   reader thread and the 'pselect' emulation in sys_select, as follows:
 
      . Initially, the reader thread is waiting for the char_consumed
        event to become signaled by sys_select, which is an indication
@@ -841,8 +841,8 @@ alarm (int seconds)
 
    When the subprocess exits or the network/serial stream is closed,
    the reader thread sets the status accordingly and exits.  It also
-   exits when the main thread sets the ststus to STATUS_READ_ERROR
-   and/or the char_avail and char_consumed event handles are NULL;
+   exits when the main thread sets the status to STATUS_READ_ERROR
+   and/or the char_avail and char_consumed event handles become NULL;
    this is how delete_child, called by Emacs when a subprocess or a
    stream is terminated, terminates the reader thread as part of
    deleting the child_process object.
@@ -863,8 +863,8 @@ alarm (int seconds)
 
    If file descriptor zero (stdin) doesn't have its bit set in the
    'rfds' argument to sys_select, the function always watches for
-   keyboard interrupts, to be able to return when the user presses
-   C-g.
+   keyboard interrupts, to be able to interrupt the wait and return
+   when the user presses C-g.
 
    Having collected the handles to watch, sys_select calls
    WaitForMultipleObjects to wait for any one of them to become
@@ -1613,24 +1613,25 @@ w32_executable_type (char * filename,
 #endif
           if (data_dir)
             {
-              /* Look for cygwin.dll in DLL import list. */
+              /* Look for Cygwin DLL in the DLL import list. */
               IMAGE_DATA_DIRECTORY import_dir =
                 data_dir[IMAGE_DIRECTORY_ENTRY_IMPORT];
-              IMAGE_IMPORT_DESCRIPTOR * imports;
-              IMAGE_SECTION_HEADER * section;
-
-              section = rva_to_section (import_dir.VirtualAddress, nt_header);
-              imports = RVA_TO_PTR (import_dir.VirtualAddress, section,
-                                    executable);
+              IMAGE_IMPORT_DESCRIPTOR * imports =
+               RVA_TO_PTR (import_dir.VirtualAddress,
+                           rva_to_section (import_dir.VirtualAddress,
+                                           nt_header),
+                           executable);
 
               for ( ; imports->Name; imports++)
                 {
+                 IMAGE_SECTION_HEADER * section =
+                   rva_to_section (imports->Name, nt_header);
                   char * dllname = RVA_TO_PTR (imports->Name, section,
                                                executable);
 
-                  /* The exact name of the cygwin dll has changed with
-                     various releases, but hopefully this will be reasonably
-                     future proof.  */
+                  /* The exact name of the Cygwin DLL has changed with
+                     various releases, but hopefully this will be
+                     reasonably future-proof.  */
                   if (strncmp (dllname, "cygwin", 6) == 0)
                     {
                       *is_cygnus_app = TRUE;
diff --git a/src/widget.c b/src/widget.c
index acf559f..0986ba6 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -61,10 +61,7 @@ static void EmacsFrameResize (Widget widget);
 static XtGeometryResult EmacsFrameQueryGeometry (Widget widget, 
XtWidgetGeometry *request, XtWidgetGeometry *result);
 
 
-#undef XtOffset
-#define XtOffset(p_type,field) \
-       ((Cardinal) (((char *) (&(((p_type)0)->field))) - ((char *)0)))
-#define offset(field) XtOffset (EmacsFrame, emacs_frame.field)
+#define offset(field) offsetof (EmacsFrameRec, emacs_frame.field)
 
 static XtResource resources[] = {
   {XtNgeometry, XtCGeometry, XtRString, sizeof (String),
@@ -271,8 +268,8 @@ set_frame_size (EmacsFrame ew)
    */
 
   /* Hairily merged geometry */
-  unsigned int w = FRAME_COLS (ew->emacs_frame.frame);
-  unsigned int h = FRAME_LINES (ew->emacs_frame.frame);
+  int w = FRAME_COLS (ew->emacs_frame.frame);
+  int h = FRAME_LINES (ew->emacs_frame.frame);
 
   Widget wmshell = get_wm_shell ((Widget) ew);
   /* Each Emacs shell is now independent and top-level.  */
@@ -437,7 +434,7 @@ set_frame_size (EmacsFrame ew)
 static void
 update_wm_hints (EmacsFrame ew)
 {
-  Widget wmshell = get_wm_shell ((Widget)ew);
+  Widget wmshell = get_wm_shell ((Widget) ew);
   int cw;
   int ch;
   Dimension rounded_width;
@@ -480,7 +477,7 @@ update_wm_hints (EmacsFrame ew)
 void
 widget_update_wm_size_hints (Widget widget)
 {
-  EmacsFrame ew = (EmacsFrame)widget;
+  EmacsFrame ew = (EmacsFrame) widget;
   update_wm_hints (ew);
 }
 
@@ -519,7 +516,7 @@ update_from_various_frame_slots (EmacsFrame ew)
 static void
 EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2)
 {
-  EmacsFrame ew = (EmacsFrame)new;
+  EmacsFrame ew = (EmacsFrame) new;
 
   if (!ew->emacs_frame.frame)
     {
@@ -545,7 +542,7 @@ resize_cb (Widget widget,
 static void
 EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes 
*attrs)
 {
-  EmacsFrame ew = (EmacsFrame)widget;
+  EmacsFrame ew = (EmacsFrame) widget;
 
   /* This used to contain SubstructureRedirectMask, but this turns out
      to be a problem with XIM on Solaris, and events from that mask
@@ -554,7 +551,7 @@ EmacsFrameRealize (Widget widget, XtValueMask *mask, 
XSetWindowAttributes *attrs
                       | PropertyChangeMask
                       | SubstructureNotifyMask);
   *mask |= CWEventMask;
-  XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask,
+  XtCreateWindow (widget, InputOutput, (Visual *) CopyFromParent, *mask,
                  attrs);
   /* Some ConfigureNotify events does not end up in EmacsFrameResize so
      make sure we get them all.  Seen with xfcwm4 for example.  */
@@ -571,7 +568,7 @@ EmacsFrameDestroy (Widget widget)
 static void
 EmacsFrameResize (Widget widget)
 {
-  EmacsFrame ew = (EmacsFrame)widget;
+  EmacsFrame ew = (EmacsFrame) widget;
   struct frame *f = ew->emacs_frame.frame;
   int width, height;
 
@@ -592,7 +589,7 @@ EmacsFrameResize (Widget widget)
 static XtGeometryResult
 EmacsFrameQueryGeometry (Widget widget, XtWidgetGeometry *request, 
XtWidgetGeometry *result)
 {
-  EmacsFrame ew = (EmacsFrame)widget;
+  EmacsFrame ew = (EmacsFrame) widget;
 
   int mask = request->request_mode;
   Dimension ok_width, ok_height;
diff --git a/src/window.c b/src/window.c
index e1e91c0..c04b435 100644
--- a/src/window.c
+++ b/src/window.c
@@ -48,28 +48,19 @@ along with GNU Emacs.  If not, see 
<http://www.gnu.org/licenses/>.  */
 # include "xwidget.h"
 #endif
 
-static int displayed_window_lines (struct window *);
-static int count_windows (struct window *);
-static int get_leaf_windows (struct window *, struct window **, int);
-static void window_scroll (Lisp_Object, EMACS_INT, bool, int);
-static void window_scroll_pixel_based (Lisp_Object, int, bool, int);
-static void window_scroll_line_based (Lisp_Object, int, bool, int);
-static int add_window_to_list (struct window *, void *);
-static Lisp_Object next_window (Lisp_Object, Lisp_Object,
-                                Lisp_Object, int);
-static void decode_next_window_args (Lisp_Object *, Lisp_Object *,
-                                     Lisp_Object *);
+static ptrdiff_t count_windows (struct window *);
+static ptrdiff_t get_leaf_windows (struct window *, struct window **,
+                                  ptrdiff_t);
+static void window_scroll_pixel_based (Lisp_Object, int, bool, bool);
+static void window_scroll_line_based (Lisp_Object, int, bool, bool);
 static void foreach_window (struct frame *,
-                                int (* fn) (struct window *, void *),
+                           bool (* fn) (struct window *, void *),
                             void *);
-static int foreach_window_1 (struct window *,
-                             int (* fn) (struct window *, void *),
-                             void *);
-static Lisp_Object window_list_1 (Lisp_Object, Lisp_Object, Lisp_Object);
-static int window_resize_check (struct window *, bool);
+static bool foreach_window_1 (struct window *,
+                             bool (* fn) (struct window *, void *),
+                             void *);
+static bool window_resize_check (struct window *, bool);
 static void window_resize_apply (struct window *, bool);
-static void window_resize_apply_total (struct window *, bool);
-static Lisp_Object select_window (Lisp_Object, Lisp_Object, int);
 static void select_window_1 (Lisp_Object, bool);
 
 static struct window *set_window_fringes (struct window *, Lisp_Object,
@@ -77,7 +68,8 @@ static struct window *set_window_fringes (struct window *, 
Lisp_Object,
 static struct window *set_window_margins (struct window *, Lisp_Object,
                                          Lisp_Object);
 static struct window *set_window_scroll_bars (struct window *, Lisp_Object,
-                                             Lisp_Object, Lisp_Object, 
Lisp_Object);
+                                             Lisp_Object, Lisp_Object,
+                                             Lisp_Object);
 static void apply_window_adjustment (struct window *);
 
 /* This is the window in which the terminal's cursor should
@@ -105,7 +97,7 @@ Lisp_Object minibuf_window;
 Lisp_Object minibuf_selected_window;
 
 /* Incremented for each window created.  */
-static int sequence_number;
+static EMACS_INT sequence_number;
 
 /* Used by the function window_scroll_pixel_based.  */
 static int window_scroll_pixel_based_preserve_x;
@@ -219,7 +211,7 @@ wset_combination (struct window *w, bool horflag, 
Lisp_Object val)
     w->horizontal = horflag;
 }
 
-/* Nonzero if leaf window W doesn't reflect the actual state
+/* True if leaf window W doesn't reflect the actual state
    of displayed buffer due to its text or overlays change.  */
 
 bool
@@ -282,7 +274,7 @@ adjust_window_count (struct window *w, int arg)
       b->window_count += arg;
       eassert (b->window_count >= 0);
       /* These should be recalculated by redisplay code.  */
-      w->window_end_valid = 0;
+      w->window_end_valid = false;
       w->base_line_pos = 0;
     }
 }
@@ -463,17 +455,18 @@ selected windows appears and to which many commands 
apply.  */)
   return selected_window;
 }
 
-int window_select_count;
+EMACS_INT window_select_count;
 
-/* If select_window is called with inhibit_point_swap non-zero it will
+/* If select_window is called with inhibit_point_swap true it will
    not store point of the old selected window's buffer back into that
    window's pointm slot.  This is needed by Fset_window_configuration to
    avoid that the display routine is called with selected_window set to
    Qnil causing a subsequent crash.  */
 static Lisp_Object
-select_window (Lisp_Object window, Lisp_Object norecord, int 
inhibit_point_swap)
+select_window (Lisp_Object window, Lisp_Object norecord,
+              bool inhibit_point_swap)
 {
-  register struct window *w;
+  struct window *w;
   struct frame *sf;
 
   CHECK_LIVE_WINDOW (window);
@@ -580,9 +573,9 @@ time a window gets selected put it on 
`buffer-list-update-hook'.
 
 Also note that the main editor command loop sets the current buffer to
 the buffer of the selected window before each command.  */)
-  (register Lisp_Object window, Lisp_Object norecord)
+  (Lisp_Object window, Lisp_Object norecord)
 {
-  return select_window (window, norecord, 0);
+  return select_window (window, norecord, false);
 }
 
 DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0,
@@ -933,11 +926,10 @@ window_body_width (struct window *w, bool pixelwise)
               - WINDOW_RIGHT_DIVIDER_WIDTH (w)
               - (WINDOW_HAS_VERTICAL_SCROLL_BAR (w)
                  ? WINDOW_SCROLL_BAR_AREA_WIDTH (w)
-                 : ((!FRAME_WINDOW_P (f)
-                     && !WINDOW_RIGHTMOST_P (w)
-                     && !WINDOW_RIGHT_DIVIDER_WIDTH (w))
-                    /* A vertical bar is either 1 or 0.  */
-                    ? 1 : 0))
+                 : (/* A vertical bar is either 1 or 0.  */
+                    !FRAME_WINDOW_P (f)
+                    && !WINDOW_RIGHTMOST_P (w)
+                    && !WINDOW_RIGHT_DIVIDER_WIDTH (w)))
                - WINDOW_MARGINS_WIDTH (w)
                - (FRAME_WINDOW_P (f)
                   ? WINDOW_FRINGES_WIDTH (w)
@@ -964,7 +956,7 @@ visible, that line is not counted.  */)
   (Lisp_Object window, Lisp_Object pixelwise)
 {
   return make_number (window_body_height (decode_live_window (window),
-                                         NILP (pixelwise) ? 0 : 1));
+                                         !NILP (pixelwise)));
 }
 
 DEFUN ("window-body-width", Fwindow_body_width, Swindow_body_width, 0, 2, 0,
@@ -984,7 +976,7 @@ continuation glyph.  */)
   (Lisp_Object window, Lisp_Object pixelwise)
 {
   return make_number (window_body_width (decode_live_window (window),
-                                        NILP (pixelwise) ? 0 : 1));
+                                        !NILP (pixelwise)));
 }
 
 DEFUN ("window-mode-line-height", Fwindow_mode_line_height,
@@ -1065,10 +1057,10 @@ set_window_hscroll (struct window *w, EMACS_INT hscroll)
 
   /* Prevent redisplay shortcuts when changing the hscroll.  */
   if (w->hscroll != new_hscroll)
-    XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
+    XBUFFER (w->contents)->prevent_redisplay_optimizations_p = true;
 
   w->hscroll = new_hscroll;
-  w->suspend_auto_hscroll = 1;
+  w->suspend_auto_hscroll = true;
 
   return make_number (new_hscroll);
 }
@@ -1586,7 +1578,7 @@ If they are in the windows's left or right marginal 
areas, `left-margin'\n\
    Check if window W contains coordinates *CW->x and *CW->y.  If it
    does, return W in *CW->window, as Lisp_Object, and return in
    *CW->part the part of the window under coordinates *X,*Y.  Return
-   zero from this function to stop iterating over windows.  */
+   false from this function to stop iterating over windows.  */
 
 struct check_window_data
 {
@@ -1595,22 +1587,19 @@ struct check_window_data
   enum window_part *part;
 };
 
-static int
+static bool
 check_window_containing (struct window *w, void *user_data)
 {
   struct check_window_data *cw = user_data;
-  enum window_part found;
-  int continue_p = 1;
-
-  found = coordinates_in_window (w, cw->x, cw->y);
-  if (found != ON_NOTHING)
+  enum window_part found = coordinates_in_window (w, cw->x, cw->y);
+  if (found == ON_NOTHING)
+    return true;
+  else
     {
       *cw->part = found;
       XSETWINDOW (*cw->window, w);
-      continue_p = 0;
+      return false;
     }
-
-  return continue_p;
 }
 
 
@@ -1621,7 +1610,7 @@ check_window_containing (struct window *w, void 
*user_data)
    set *PART to the id of that element.
 
    If there is no window under X, Y return nil and leave *PART
-   unmodified.  TOOL_BAR_P non-zero means detect tool-bar windows.
+   unmodified.  TOOL_BAR_P means detect tool-bar windows.
 
    This function was previously implemented with a loop cycling over
    windows with Fnext_window, and starting with the frame's selected
@@ -1683,7 +1672,7 @@ column 0.  */)
                                   + FRAME_INTERNAL_BORDER_WIDTH (f)),
                                  (FRAME_PIXEL_Y_FROM_CANON_Y (f, y)
                                   + FRAME_INTERNAL_BORDER_WIDTH (f)),
-                                 0, 0);
+                                 0, false);
 }
 
 DEFUN ("window-point", Fwindow_point, Swindow_point, 0, 1, 0,
@@ -1790,7 +1779,7 @@ if it isn't already recorded.  */)
       if (it.current_y < it.last_visible_y)
        move_it_past_eol (&it);
       value = make_number (IT_CHARPOS (it));
-      bidi_unshelve_cache (itdata, 0);
+      bidi_unshelve_cache (itdata, false);
 
       if (old_buffer)
        set_buffer_internal (old_buffer);
@@ -1848,12 +1837,12 @@ overriding motion of point in order to display at this 
exact start.  */)
 
   set_marker_restricted (w->start, pos, w->contents);
   /* This is not right, but much easier than doing what is right.  */
-  w->start_at_line_beg = 0;
+  w->start_at_line_beg = false;
   if (NILP (noforce))
-    w->force_start = 1;
-  w->update_mode_line = 1;
+    w->force_start = true;
+  w->update_mode_line = true;
   /* Bug#15957.  */
-  w->window_end_valid = 0;
+  w->window_end_valid = false;
   wset_redisplay (w);
 
   return pos;
@@ -1881,12 +1870,13 @@ POS, ROWH is the visible height of that row, and VPOS 
is the row number
 \(zero-based).  */)
   (Lisp_Object pos, Lisp_Object window, Lisp_Object partially)
 {
-  register struct window *w;
-  register EMACS_INT posint;
-  register struct buffer *buf;
+  struct window *w;
+  EMACS_INT posint;
+  struct buffer *buf;
   struct text_pos top;
   Lisp_Object in_window = Qnil;
-  int rtop, rbot, rowh, vpos, fully_p = 1;
+  int rtop, rbot, rowh, vpos;
+  bool fully_p = true;
   int x, y;
 
   w = decode_live_window (window);
@@ -1911,9 +1901,12 @@ POS, ROWH is the visible height of that row, and VPOS is 
the row number
        || (posint >= CHARPOS (top) && posint <= BUF_ZV (buf)))
       && CHARPOS (top) >= BUF_BEGV (buf)
       && CHARPOS (top) <= BUF_ZV (buf)
-      && pos_visible_p (w, posint, &x, &y, &rtop, &rbot, &rowh, &vpos)
-      && (fully_p = !rtop && !rbot, (!NILP (partially) || fully_p)))
-    in_window = Qt;
+      && pos_visible_p (w, posint, &x, &y, &rtop, &rbot, &rowh, &vpos))
+    {
+      fully_p = !rtop && !rbot;
+      if (!NILP (partially) || fully_p)
+       in_window = Qt;
+    }
 
   if (!NILP (in_window) && !NILP (partially))
     {
@@ -2218,7 +2211,7 @@ unshow_buffer (register struct window *w)
 
   eassert (b == XMARKER (w->pointm)->buffer);
 
-#if 0
+#if false
   if (w == XWINDOW (selected_window)
       || ! EQ (buf, XWINDOW (selected_window)->contents))
     /* Do this except when the selected window's buffer
@@ -2257,14 +2250,14 @@ unshow_buffer (register struct window *w)
     bset_last_selected_window (b, Qnil);
 }
 
-/* Put NEW into the window structure in place of OLD.  SETFLAG zero
+/* Put NEW into the window structure in place of OLD.  SETFLAG false
    means change window structure only.  Otherwise store geometry and
    other settings as well.  */
 static void
-replace_window (Lisp_Object old, Lisp_Object new, int setflag)
+replace_window (Lisp_Object old, Lisp_Object new, bool setflag)
 {
-  register Lisp_Object tem;
-  register struct window *o = XWINDOW (old), *n = XWINDOW (new);
+  Lisp_Object tem;
+  struct window *o = XWINDOW (old), *n = XWINDOW (new);
 
   /* If OLD is its frame's root window, then NEW is the new
      root window for that frame.  */
@@ -2294,11 +2287,11 @@ replace_window (Lisp_Object old, Lisp_Object new, int 
setflag)
       n->phys_cursor_type = NO_CURSOR;
       n->phys_cursor_width = -1;
 #endif
-      n->must_be_updated_p = 0;
-      n->pseudo_window_p = 0;
+      n->must_be_updated_p = false;
+      n->pseudo_window_p = false;
       n->window_end_vpos = 0;
       n->window_end_pos = 0;
-      n->window_end_valid = 0;
+      n->window_end_valid = false;
     }
 
   tem = o->next;
@@ -2383,7 +2376,7 @@ recombine_windows (Lisp_Object window)
            }
 
          /* WINDOW can be deleted now.  */
-         wset_combination (w, 0, Qnil);
+         wset_combination (w, false, Qnil);
        }
     }
 }
@@ -2404,14 +2397,14 @@ delete_deletable_window (Lisp_Object window)
    pointer.  This is a callback function for foreach_window, used in
    the window_list function.  */
 
-static int
+static bool
 add_window_to_list (struct window *w, void *user_data)
 {
   Lisp_Object *list = user_data;
   Lisp_Object window;
   XSETWINDOW (window, w);
   *list = Fcons (window, *list);
-  return 1;
+  return true;
 }
 
 
@@ -2444,7 +2437,7 @@ window_list (void)
 }
 
 
-/* Value is non-zero if WINDOW satisfies the constraints given by
+/* Value is true if WINDOW satisfies the constraints given by
    OWINDOW, MINIBUF and ALL_FRAMES.
 
    MINIBUF     t means WINDOW may be minibuffer windows.
@@ -2466,20 +2459,20 @@ candidate_window_p (Lisp_Object window, Lisp_Object 
owindow,
 {
   struct window *w = XWINDOW (window);
   struct frame *f = XFRAME (w->frame);
-  bool candidate_p = 1;
+  bool candidate_p = true;
 
   if (!BUFFERP (w->contents))
-    candidate_p = 0;
+    candidate_p = false;
   else if (MINI_WINDOW_P (w)
            && (EQ (minibuf, Qlambda)
               || (WINDOWP (minibuf) && !EQ (minibuf, window))))
     {
       /* If MINIBUF is `lambda' don't consider any mini-windows.
          If it is a window, consider only that one.  */
-      candidate_p = 0;
+      candidate_p = false;
     }
   else if (EQ (all_frames, Qt))
-    candidate_p = 1;
+    candidate_p = true;
   else if (NILP (all_frames))
     {
       eassert (WINDOWP (owindow));
@@ -2559,12 +2552,13 @@ decode_next_window_args (Lisp_Object *window, 
Lisp_Object *minibuf, Lisp_Object
 
 
 /* Return the next or previous window of WINDOW in cyclic ordering
-   of windows.  NEXT_P non-zero means return the next window.  See the
+   of windows.  NEXT_P means return the next window.  See the
    documentation string of next-window for the meaning of MINIBUF and
    ALL_FRAMES.  */
 
 static Lisp_Object
-next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, 
int next_p)
+next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames,
+            bool next_p)
 {
   decode_next_window_args (&window, &minibuf, &all_frames);
 
@@ -2662,7 +2656,7 @@ windows, eventually ending up back at the window you 
started with.
 `previous-window' traverses the same cycle, in the reverse order.  */)
   (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames)
 {
-  return next_window (window, minibuf, all_frames, 1);
+  return next_window (window, minibuf, all_frames, true);
 }
 
 
@@ -2702,7 +2696,7 @@ started with.  `next-window' traverses the same cycle, in 
the
 reverse order.  */)
   (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames)
 {
-  return next_window (window, minibuf, all_frames, 0);
+  return next_window (window, minibuf, all_frames, false);
 }
 
 
@@ -2800,7 +2794,7 @@ be listed first but no error is signaled.  */)
                 Qnil, look at just the selected frame;
                Qvisible, look at visible frames;
                a frame, just look at windows on that frame.
-   If MINI is non-zero, perform the operation on minibuffer windows too.  */
+   If MINI, perform the operation on minibuffer windows too.  */
 
 enum window_loop
 {
@@ -2812,10 +2806,11 @@ enum window_loop
 };
 
 static Lisp_Object
-window_loop (enum window_loop type, Lisp_Object obj, int mini, Lisp_Object 
frames)
+window_loop (enum window_loop type, Lisp_Object obj, bool mini,
+            Lisp_Object frames)
 {
   Lisp_Object window, windows, best_window, frame_arg;
-  int frame_best_window_flag = 0;
+  bool frame_best_window_flag = false;
   struct frame *f;
   struct gcpro gcpro1;
 
@@ -2875,7 +2870,7 @@ window_loop (enum window_loop type, Lisp_Object obj, int 
mini, Lisp_Object frame
            if (EQ (w->contents, obj)
                /* Don't find any minibuffer window except the one that
                   is currently in use.  */
-               && (MINI_WINDOW_P (w) ? EQ (window, minibuf_window) : 1))
+               && (!MINI_WINDOW_P (w) || EQ (window, minibuf_window)))
              {
                if (EQ (window, selected_window))
                  /* Preferably return the selected window.  */
@@ -2886,7 +2881,7 @@ window_loop (enum window_loop type, Lisp_Object obj, int 
mini, Lisp_Object frame
                     choose another one if we have one already).  */
                  {
                    best_window = window;
-                   frame_best_window_flag = 1;
+                   frame_best_window_flag = true;
                  }
                else if (NILP (best_window))
                  best_window = window;
@@ -2903,7 +2898,7 @@ window_loop (enum window_loop type, Lisp_Object obj, int 
mini, Lisp_Object frame
                /* Make WINDOW show the buffer returned by
                   other_buffer_safely, don't run any hooks.  */
                set_window_buffer
-                 (window, other_buffer_safely (w->contents), 0, 0);
+                 (window, other_buffer_safely (w->contents), false, false);
                /* If WINDOW is the selected window, make its buffer
                   current.  But do so only if the window shows the
                   current buffer (Bug#6454).  */
@@ -2916,9 +2911,9 @@ window_loop (enum window_loop type, Lisp_Object obj, int 
mini, Lisp_Object frame
          case REDISPLAY_BUFFER_WINDOWS:
            if (EQ (w->contents, obj))
              {
-               mark_window_display_accurate (window, 0);
-               w->update_mode_line = 1;
-               XBUFFER (obj)->prevent_redisplay_optimizations_p = 1;
+               mark_window_display_accurate (window, false);
+               w->update_mode_line = true;
+               XBUFFER (obj)->prevent_redisplay_optimizations_p = true;
                update_mode_lines = 27;
                best_window = window;
              }
@@ -2955,7 +2950,7 @@ extern void check_all_windows (void) EXTERNALLY_VISIBLE;
 void
 check_all_windows (void)
 {
-  window_loop (CHECK_ALL_WINDOWS, Qnil, 1, Qt);
+  window_loop (CHECK_ALL_WINDOWS, Qnil, true, Qt);
 }
 
 DEFUN ("get-buffer-window", Fget_buffer_window, Sget_buffer_window, 0, 2, 0,
@@ -2986,7 +2981,7 @@ selected frame and no others.  */)
     buffer = Fget_buffer (buffer_or_name);
 
   if (BUFFERP (buffer))
-    return window_loop (GET_BUFFER_WINDOW, buffer, 1, all_frames);
+    return window_loop (GET_BUFFER_WINDOW, buffer, true, all_frames);
   else
     return Qnil;
 }
@@ -3043,7 +3038,7 @@ window-start value is reasonable when this function is 
called.  */)
   struct frame *f;
   Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta;
   ptrdiff_t startpos IF_LINT (= 0), startbyte IF_LINT (= 0);
-  int top IF_LINT (= 0), new_top, resize_failed;
+  int top IF_LINT (= 0), new_top;
 
   w = decode_valid_window (window);
   XSETWINDOW (window, w);
@@ -3100,7 +3095,7 @@ window-start value is reasonable when this function is 
called.  */)
         parents and comparing each one with WINDOW.  If it isn't we
         need a new selected window for this frame.  */
       swindow = FRAME_SELECTED_WINDOW (f);
-      while (1)
+      while (true)
        {
          pwindow = swindow;
          while (!NILP (pwindow) && !EQ (window, pwindow))
@@ -3132,7 +3127,7 @@ window-start value is reasonable when this function is 
called.  */)
       /* We are going to free the glyph matrices of WINDOW, and with
         that we might lose any information about glyph rows that have
         some of their glyphs highlighted in mouse face.  (These rows
-        are marked with a non-zero mouse_face_p flag.)  If WINDOW
+        are marked with a mouse_face_p flag.)  If WINDOW
         indeed has some glyphs highlighted in mouse face, signal to
         frame's up-to-date hook that mouse highlight was overwritten,
         so that it will arrange for redisplaying the highlight.  */
@@ -3143,8 +3138,8 @@ window-start value is reasonable when this function is 
called.  */)
 
   fset_redisplay (f);
   Vwindow_list = Qnil;
-  FRAME_WINDOW_SIZES_CHANGED (f) = 1;
-  resize_failed = 0;
+  FRAME_WINDOW_SIZES_CHANGED (f) = true;
+  bool resize_failed = false;
 
   if (!WINDOW_LEAF_P (w))
     {
@@ -3153,21 +3148,21 @@ window-start value is reasonable when this function is 
called.  */)
       w->pixel_top = r->pixel_top;
       w->top_line = r->top_line;
       resize_root_window (window, delta, Qnil, Qnil, Qt);
-      if (window_resize_check (w, 0))
+      if (window_resize_check (w, false))
        {
-         window_resize_apply (w, 0);
+         window_resize_apply (w, false);
          window_pixel_to_total (w->frame, Qnil);
        }
       else
        {
          resize_root_window (window, delta, Qnil, Qt, Qt);
-         if (window_resize_check (w, 0))
+         if (window_resize_check (w, false))
            {
-             window_resize_apply (w, 0);
+             window_resize_apply (w, false);
              window_pixel_to_total (w->frame, Qnil);
            }
          else
-           resize_failed = 1;
+           resize_failed = true;
        }
 
       /* Resize child windows horizontally.  */
@@ -3177,21 +3172,21 @@ window-start value is reasonable when this function is 
called.  */)
          w->pixel_left = r->pixel_left;
          XSETINT (delta, r->pixel_width - w->pixel_width);
          resize_root_window (window, delta, Qt, Qnil, Qt);
-         if (window_resize_check (w, 1))
+         if (window_resize_check (w, true))
            {
-             window_resize_apply (w, 1);
+             window_resize_apply (w, true);
              window_pixel_to_total (w->frame, Qt);
            }
          else
            {
              resize_root_window (window, delta, Qt, Qt, Qt);
-             if (window_resize_check (w, 1))
+             if (window_resize_check (w, true))
                {
-                 window_resize_apply (w, 1);
+                 window_resize_apply (w, true);
                  window_pixel_to_total (w->frame, Qt);
                }
              else
-               resize_failed = 1;
+               resize_failed = true;
            }
        }
 
@@ -3227,10 +3222,10 @@ window-start value is reasonable when this function is 
called.  */)
   if (WINDOWP (r->contents))
     {
       delete_all_child_windows (r->contents);
-      wset_combination (r, 0, Qnil);
+      wset_combination (r, false, Qnil);
     }
 
-  replace_window (root, window, 1);
+  replace_window (root, window, true);
 
   /* This must become SWINDOW anyway .......  */
   if (BUFFERP (w->contents) && !resize_failed)
@@ -3254,12 +3249,12 @@ window-start value is reasonable when this function is 
called.  */)
          pos = *vmotion (startpos, startbyte, -top, w);
 
          set_marker_both (w->start, w->contents, pos.bufpos, pos.bytepos);
-         w->window_end_valid = 0;
+         w->window_end_valid = false;
          w->start_at_line_beg = (pos.bytepos == BEGV_BYTE
                                    || FETCH_BYTE (pos.bytepos - 1) == '\n');
          /* We need to do this, so that the window-scroll-functions
             get called.  */
-         w->optional_new_start = 1;
+         w->optional_new_start = true;
 
          set_buffer_internal (obuf);
        }
@@ -3294,7 +3289,7 @@ replace_buffer_in_windows_safely (Lisp_Object buffer)
         considers frames on the current keyboard.  So loop manually over
         frames, and handle each one.  */
       FOR_EACH_FRAME (tail, frame)
-       window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, 1, frame);
+       window_loop (REPLACE_BUFFER_IN_WINDOWS_SAFELY, buffer, true, frame);
     }
 }
 
@@ -3394,9 +3389,9 @@ If WINDOW is omitted or nil, it defaults to the selected 
window.  */)
   return Qnil;
 }
 
-/* Make WINDOW display BUFFER.  RUN_HOOKS_P non-zero means it's allowed
+/* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
    to run hooks.  See make_frame for a case where it's not allowed.
-   KEEP_MARGINS_P non-zero means that the current margins, fringes, and
+   KEEP_MARGINS_P means that the current margins, fringes, and
    scroll-bar settings of the window are not reset from the buffer's
    local settings.  */
 
@@ -3438,15 +3433,15 @@ set_window_buffer (Lisp_Object window, Lisp_Object 
buffer,
         doc-view-mode since it resets the image's position whenever we
         resize the frame.  */
       w->hscroll = w->min_hscroll = w->hscroll_whole = 0;
-      w->suspend_auto_hscroll = 0;
+      w->suspend_auto_hscroll = false;
       w->vscroll = 0;
       set_marker_both (w->pointm, buffer, BUF_PT (b), BUF_PT_BYTE (b));
       set_marker_both (w->old_pointm, buffer, BUF_PT (b), BUF_PT_BYTE (b));
       set_marker_restricted (w->start,
                             make_number (b->last_window_start),
                             buffer);
-      w->start_at_line_beg = 0;
-      w->force_start = 0;
+      w->start_at_line_beg = false;
+      w->force_start = false;
     }
   /* Maybe we could move this into the `if' but it's not obviously safe and
      I doubt it's worth the trouble.  */
@@ -3537,7 +3532,7 @@ This function runs `window-scroll-functions' before 
running
       unshow_buffer (w);
     }
 
-  set_window_buffer (window, buffer, 1, !NILP (keep_margins));
+  set_window_buffer (window, buffer, true, !NILP (keep_margins));
 
   return Qnil;
 }
@@ -3566,10 +3561,10 @@ displaying that buffer.  */)
   if (WINDOWP (object))
     {
       struct window *w = XWINDOW (object);
-      mark_window_display_accurate (object, 0);
-      w->update_mode_line = 1;
+      mark_window_display_accurate (object, false);
+      w->update_mode_line = true;
       if (BUFFERP (w->contents))
-       XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
+       XBUFFER (w->contents)->prevent_redisplay_optimizations_p = true;
       update_mode_lines = 29;
       return Qt;
     }
@@ -3581,7 +3576,7 @@ displaying that buffer.  */)
     {
       /* If buffer is live and shown in at least one window, find
         all windows showing this buffer and force update of them.  */
-      object = window_loop (REDISPLAY_BUFFER_WINDOWS, object, 0, Qvisible);
+      object = window_loop (REDISPLAY_BUFFER_WINDOWS, object, false, Qvisible);
       return NILP (object) ? Qnil : Qt;
     }
 
@@ -3617,7 +3612,7 @@ temp_output_buffer_show (register Lisp_Object buf)
       Vminibuf_scroll_window = window;
       w = XWINDOW (window);
       w->hscroll = w->min_hscroll = w->hscroll_whole = 0;
-      w->suspend_auto_hscroll = 0;
+      w->suspend_auto_hscroll = false;
       set_marker_restricted_both (w->start, buf, BEG, BEG);
       set_marker_restricted_both (w->pointm, buf, BEG, BEG);
       set_marker_restricted_both (w->old_pointm, buf, BEG, BEG);
@@ -3654,7 +3649,7 @@ allocate_window (void)
 }
 
 /* Make new window, have it replace WINDOW in window-tree, and make
-   WINDOW its only vertical child (HORFLAG 1 means make WINDOW its only
+   WINDOW its only vertical child (HORFLAG means make WINDOW its only
    horizontal child).   */
 static void
 make_parent_window (Lisp_Object window, bool horflag)
@@ -3673,7 +3668,7 @@ make_parent_window (Lisp_Object window, bool horflag)
 
   p->sequence_number = ++sequence_number;
 
-  replace_window (window, parent, 1);
+  replace_window (window, parent, true);
 
   wset_next (o, Qnil);
   wset_prev (o, Qnil);
@@ -3802,14 +3797,14 @@ Note: This function does not operate on any child 
windows of WINDOW.  */)
   return size;
 }
 
-/* Return 1 if setting w->pixel_height (w->pixel_width if HORFLAG is
-   non-zero) to w->new_pixel would result in correct heights (widths)
+/* Return true if setting w->pixel_height (w->pixel_width if HORFLAG)
+   to w->new_pixel would result in correct heights (widths)
    for window W and recursively all child windows of W.
 
    Note: This function does not check any of `window-fixed-size-p',
    `window-min-height' or `window-min-width'.  It does check that window
    sizes do not drop below one line (two columns). */
-static int
+static bool
 window_resize_check (struct window *w, bool horflag)
 {
   struct frame *f = XFRAME (w->frame);
@@ -3826,12 +3821,12 @@ window_resize_check (struct window *w, bool horflag)
            {
              if (XINT (c->new_pixel) != XINT (w->new_pixel)
                  || !window_resize_check (c, horflag))
-               return 0;
+               return false;
 
              c = NILP (c->next) ? 0 : XWINDOW (c->next);
            }
 
-         return 1;
+         return true;
        }
       else
        /* The sum of the heights of the child windows of W must equal
@@ -3842,11 +3837,11 @@ window_resize_check (struct window *w, bool horflag)
          while (c)
            {
              if (!window_resize_check (c, horflag))
-               return 0;
+               return false;
 
              remaining_pixels -= XINT (c->new_pixel);
              if (remaining_pixels < 0)
-               return 0;
+               return false;
              c = NILP (c->next) ? 0 : XWINDOW (c->next);
            }
 
@@ -3866,11 +3861,11 @@ window_resize_check (struct window *w, bool horflag)
          while (c)
            {
              if (!window_resize_check (c, horflag))
-               return 0;
+               return false;
 
              remaining_pixels -= XINT (c->new_pixel);
              if (remaining_pixels < 0)
-               return 0;
+               return false;
              c = NILP (c->next) ? 0 : XWINDOW (c->next);
            }
 
@@ -3883,12 +3878,12 @@ window_resize_check (struct window *w, bool horflag)
            {
              if (XINT (c->new_pixel) != XINT (w->new_pixel)
                  || !window_resize_check (c, horflag))
-               return 0;
+               return false;
 
              c = NILP (c->next) ? 0 : XWINDOW (c->next);
            }
 
-         return 1;
+         return true;
        }
     }
   else
@@ -3901,7 +3896,7 @@ window_resize_check (struct window *w, bool horflag)
 }
 
 
-/* Set w->pixel_height (w->pixel_width if HORFLAG is non-zero) to
+/* Set w->pixel_height (w->pixel_width if HORFLAG) to
    w->new_pixel for window W and recursively all child windows of W.
    Also calculate and assign the new vertical (horizontal) pixel start
    positions of each of these windows.
@@ -3987,11 +3982,11 @@ window_resize_apply (struct window *w, bool horflag)
     }
   else
     /* Bug#15957.  */
-    w->window_end_valid = 0;
+    w->window_end_valid = false;
 }
 
 
-/* Set w->total_lines (w->total_cols if HORFLAG is non-zero) to
+/* Set w->total_lines (w->total_cols if HORFLAG) to
    w->new_total for window W and recursively all child windows of W.
    Also calculate and assign the new vertical (horizontal) start
    positions of each of these windows.  */
@@ -4086,7 +4081,7 @@ be applied on the Elisp level.  */)
   window_resize_apply (r, horflag);
 
   fset_redisplay (f);
-  FRAME_WINDOW_SIZES_CHANGED (f) = 1;
+  FRAME_WINDOW_SIZES_CHANGED (f) = true;
 
   adjust_frame_glyphs (f);
   unblock_input ();
@@ -4136,8 +4131,8 @@ values.  */)
 
 
 /* Resize frame F's windows when number of lines of F is set to SIZE.
-   HORFLAG 1 means resize windows when number of columns of F is set to
-   SIZE.  PIXELWISE 1 means to interpret SIZE as pixels.  */
+   HORFLAG means resize windows when number of columns of F is set to
+   SIZE.  PIXELWISE means to interpret SIZE as pixels.  */
 void
 resize_frame_windows (struct frame *f, int size, bool horflag, bool pixelwise)
 {
@@ -4171,12 +4166,9 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
     }
   else
     {
-      new_size = max (horflag
-                     ? size
-                     : (size
-                        - ((FRAME_HAS_MINIBUF_P (f)
-                            && !FRAME_MINIBUF_ONLY_P (f))
-                           ? 1 : 0)),
+      new_size = max (size - (!horflag
+                             && FRAME_HAS_MINIBUF_P (f)
+                             && !FRAME_MINIBUF_ONLY_P (f)),
                      1);
       new_pixel_size = new_size * unit;
     }
@@ -4227,7 +4219,7 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
            {
              window_resize_apply (r, horflag);
              window_pixel_to_total (r->frame, horflag ? Qt : Qnil);
-#if 0 /* Let's try without safe sizes and/or killing other windows.  */
+#if false /* Let's try without safe sizes and/or killing other windows.  */
            }
          else
            {
@@ -4257,7 +4249,7 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
                      XWINDOW (root)->pixel_height = new_pixel_size;
                    }
                }
-#endif /* 0 */
+#endif /* false */
            }
        }
     }
@@ -4287,7 +4279,7 @@ resize_frame_windows (struct frame *f, int size, bool 
horflag, bool pixelwise)
 DEFUN ("split-window-internal", Fsplit_window_internal, 
Ssplit_window_internal, 4, 4, 0,
        doc: /* Split window OLD.
 Second argument PIXEL-SIZE specifies the number of pixels of the
-new window.  In any case TOTAL-SIZE must be a positive integer.
+new window.  It must be a positive integer.
 
 Third argument SIDE nil (or `below') specifies that the new window shall
 be located below WINDOW.  SIDE `above' means the new window shall be
@@ -4314,14 +4306,12 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
      provided OLD is a leaf window, or to the frame's selected window.
      NEW (*n) is the new window created with some parameters taken from
      REFERENCE (*r).  */
-  register Lisp_Object new, frame, reference;
-  register struct window *o, *p, *n, *r, *c;
+  Lisp_Object new, frame, reference;
+  struct window *o, *p, *n, *r, *c;
   struct frame *f;
   bool horflag
-    /* HORFLAG is 1 when we split side-by-side, 0 otherwise.  */
+    /* HORFLAG is true when we split side-by-side, false otherwise.  */
     = EQ (side, Qt) || EQ (side, Qleft) || EQ (side, Qright);
-  int combination_limit = 0, sum = 0;
-  int total_size;
 
   CHECK_WINDOW (old);
   o = XWINDOW (old);
@@ -4329,20 +4319,20 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
   f = XFRAME (frame);
 
   CHECK_NUMBER (pixel_size);
-  total_size
+  EMACS_INT total_size
     = XINT (pixel_size) / (horflag
                           ? FRAME_COLUMN_WIDTH (f)
                           : FRAME_LINE_HEIGHT (f));
 
-  /* Set combination_limit to 1 if we have to make a new parent window.
+  /* Set combination_limit if we have to make a new parent window.
      We do that if either `window-combination-limit' is t, or OLD has no
      parent, or OLD is ortho-combined.  */
-  combination_limit =
-    EQ (Vwindow_combination_limit, Qt)
-    || NILP (o->parent)
-    || (horflag
-       ? WINDOW_VERTICAL_COMBINATION_P (XWINDOW (o->parent))
-       : WINDOW_HORIZONTAL_COMBINATION_P (XWINDOW (o->parent)));
+  bool combination_limit
+    = (EQ (Vwindow_combination_limit, Qt)
+       || NILP (o->parent)
+       || (horflag
+          ? WINDOW_VERTICAL_COMBINATION_P (XWINDOW (o->parent))
+          : WINDOW_HORIZONTAL_COMBINATION_P (XWINDOW (o->parent))));
 
   /* We need a live reference window to initialize some parameters.  */
   if (WINDOW_LIVE_P (old))
@@ -4408,7 +4398,7 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
     p = XWINDOW (o->parent);
 
   fset_redisplay (f);
-  FRAME_WINDOW_SIZES_CHANGED (f) = 1;
+  FRAME_WINDOW_SIZES_CHANGED (f) = true;
   new = make_window ();
   n = XWINDOW (new);
   wset_frame (n, frame);
@@ -4433,7 +4423,7 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
       wset_next (o, new);
     }
 
-  n->window_end_valid = 0;
+  n->window_end_valid = false;
   n->last_cursor_vpos = 0;
 
   /* Get special geometry settings from reference window.  */
@@ -4466,6 +4456,7 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
   /* Iso-coordinates and sizes are assigned by window_resize_apply,
      get them ready here.  */
   wset_new_pixel (n, pixel_size);
+  EMACS_INT sum = 0;
   c = XWINDOW (p->contents);
   while (c)
     {
@@ -4484,7 +4475,7 @@ set correctly.  See the code of `split-window' for how 
this is done.  */)
   adjust_frame_glyphs (f);
   /* Set buffer of NEW to buffer of reference window.  Don't run
      any hooks.  */
-  set_window_buffer (new, r->contents, 0, 1);
+  set_window_buffer (new, r->contents, false, true);
   unblock_input ();
 
   /* Maybe we should run the scroll functions in Elisp (which already
@@ -4501,12 +4492,12 @@ DEFUN ("delete-window-internal", 
Fdelete_window_internal, Sdelete_window_interna
        doc: /* Remove WINDOW from its frame.
 WINDOW defaults to the selected window.  Return nil.
 Signal an error when WINDOW is the only window on its frame.  */)
-     (register Lisp_Object window)
+     (Lisp_Object window)
 {
-  register Lisp_Object parent, sibling, frame, root;
+  Lisp_Object parent, sibling, frame, root;
   struct window *w, *p, *s, *r;
   struct frame *f;
-  bool horflag, before_sibling = 0;
+  bool horflag, before_sibling = false;
 
   w = decode_any_window (window);
   XSETWINDOW (window, w);
@@ -4536,9 +4527,9 @@ Signal an error when WINDOW is the only window on its 
frame.  */)
   if (NILP (w->prev))
     /* Get SIBLING below (on the right of) WINDOW.  */
     {
-      /* before_sibling 1 means WINDOW is the first child of its
+      /* before_sibling means WINDOW is the first child of its
         parent and thus before the sibling.  */
-      before_sibling = 1;
+      before_sibling = true;
       sibling = w->next;
       s = XWINDOW (sibling);
       wset_prev (s, Qnil);
@@ -4578,7 +4569,7 @@ Signal an error when WINDOW is the only window on its 
frame.  */)
 
       fset_redisplay (f);
       Vwindow_list = Qnil;
-      FRAME_WINDOW_SIZES_CHANGED (f) = 1;
+      FRAME_WINDOW_SIZES_CHANGED (f) = true;
 
       wset_next (w, Qnil);  /* Don't delete w->next too.  */
       free_window_matrices (w);
@@ -4586,7 +4577,7 @@ Signal an error when WINDOW is the only window on its 
frame.  */)
       if (WINDOWP (w->contents))
        {
          delete_all_child_windows (w->contents);
-         wset_combination (w, 0, Qnil);
+         wset_combination (w, false, Qnil);
        }
       else
        {
@@ -4602,13 +4593,13 @@ Signal an error when WINDOW is the only window on its 
frame.  */)
             PARENT.  */
        {
          /* Put SIBLING into PARENT's place.  */
-         replace_window (parent, sibling, 0);
+         replace_window (parent, sibling, false);
          /* Have SIBLING inherit the following three slot values from
             PARENT (the combination_limit slot is not inherited).  */
          wset_normal_cols (s, p->normal_cols);
          wset_normal_lines (s, p->normal_lines);
          /* Mark PARENT as deleted.  */
-         wset_combination (p, 0, Qnil);
+         wset_combination (p, false, Qnil);
          /* Try to merge SIBLING into its new parent.  */
          recombine_windows (sibling);
        }
@@ -4693,10 +4684,10 @@ grow_mini_window (struct window *w, int delta, bool 
pixelwise)
       r = XWINDOW (root);
       height = call3 (Qwindow_resize_root_window_vertically,
                      root, make_number (- delta), pixelwise ? Qt : Qnil);
-      if (INTEGERP (height) && window_resize_check (r, 0))
+      if (INTEGERP (height) && window_resize_check (r, false))
        {
          block_input ();
-         window_resize_apply (r, 0);
+         window_resize_apply (r, false);
 
          if (pixelwise)
            {
@@ -4748,10 +4739,10 @@ shrink_mini_window (struct window *w, bool pixelwise)
       delta = call3 (Qwindow_resize_root_window_vertically,
                     root, make_number (height - unit),
                     pixelwise ? Qt : Qnil);
-      if (INTEGERP (delta) && window_resize_check (r, 0))
+      if (INTEGERP (delta) && window_resize_check (r, false))
        {
          block_input ();
-         window_resize_apply (r, 0);
+         window_resize_apply (r, false);
 
          /* Shrink the mini-window.  */
          w->top_line = r->top_line + r->total_lines;
@@ -4790,12 +4781,12 @@ DEFUN ("resize-mini-window-internal", 
Fresize_mini_window_internal, Sresize_mini
 
   r = XWINDOW (FRAME_ROOT_WINDOW (f));
   height = r->pixel_height + w->pixel_height;
-  if (window_resize_check (r, 0)
+  if (window_resize_check (r, false)
       && XINT (w->new_pixel) > 0
       && height == XINT (r->new_pixel) + XINT (w->new_pixel))
     {
       block_input ();
-      window_resize_apply (r, 0);
+      window_resize_apply (r, false);
 
       w->pixel_height = XFASTINT (w->new_pixel);
       w->total_lines = w->pixel_height / FRAME_LINE_HEIGHT (f);
@@ -4803,7 +4794,7 @@ DEFUN ("resize-mini-window-internal", 
Fresize_mini_window_internal, Sresize_mini
       w->top_line = r->top_line + r->total_lines;
 
       fset_redisplay (f);
-      FRAME_WINDOW_SIZES_CHANGED (f) = 1;
+      FRAME_WINDOW_SIZES_CHANGED (f) = true;
       adjust_frame_glyphs (f);
       unblock_input ();
       return Qt;
@@ -4825,7 +4816,7 @@ mark_window_cursors_off (struct window *w)
       if (WINDOWP (w->contents))
        mark_window_cursors_off (XWINDOW (w->contents));
       else
-       w->phys_cursor_on_p = 0;
+       w->phys_cursor_on_p = false;
 
       w = NILP (w->next) ? 0 : XWINDOW (w->next);
     }
@@ -4860,19 +4851,19 @@ window_internal_height (struct window *w)
                           Window Scrolling
  ***********************************************************************/
 
-/* Scroll contents of window WINDOW up.  If WHOLE is non-zero, scroll
+/* Scroll contents of window WINDOW up.  If WHOLE, scroll
    N screen-fulls, which is defined as the height of the window minus
    next_screen_context_lines.  If WHOLE is zero, scroll up N lines
-   instead.  Negative values of N mean scroll down.  NOERROR non-zero
+   instead.  Negative values of N mean scroll down.  NOERROR
    means don't signal an error if we try to move over BEGV or ZV,
    respectively.  */
 
 static void
-window_scroll (Lisp_Object window, EMACS_INT n, bool whole, int noerror)
+window_scroll (Lisp_Object window, EMACS_INT n, bool whole, bool noerror)
 {
   ptrdiff_t count = SPECPDL_INDEX ();
 
-  immediate_quit = 1;
+  immediate_quit = true;
   n = clip_to_bounds (INT_MIN, n, INT_MAX);
 
   wset_redisplay (XWINDOW (window));
@@ -4890,8 +4881,8 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool 
whole, int noerror)
   unbind_to (count, Qnil);
 
   /* Bug#15957.  */
-  XWINDOW (window)->window_end_valid = 0;
-  immediate_quit = 0;
+  XWINDOW (window)->window_end_valid = false;
+  immediate_quit = false;
 }
 
 
@@ -4900,14 +4891,14 @@ window_scroll (Lisp_Object window, EMACS_INT n, bool 
whole, int noerror)
    descriptions.  */
 
 static void
-window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror)
+window_scroll_pixel_based (Lisp_Object window, int n, bool whole, bool noerror)
 {
   struct it it;
   struct window *w = XWINDOW (window);
   struct text_pos start;
   int this_scroll_margin;
   /* True if we fiddled the window vscroll field without really scrolling.  */
-  int vscrolled = 0;
+  bool vscrolled = false;
   int x, y, rtop, rbot, rowh, vpos;
   void *itdata = NULL;
   int window_total_lines;
@@ -4950,7 +4941,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
        }
 
       start = it.current.pos;
-      bidi_unshelve_cache (itdata, 0);
+      bidi_unshelve_cache (itdata, false);
     }
   else if (auto_window_vscroll_p)
     {
@@ -5003,11 +4994,11 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
                    spos = min (XINT (Fline_end_position (Qnil)) + 1, ZV);
                  set_marker_restricted (w->start, make_number (spos),
                                         w->contents);
-                 w->start_at_line_beg = 1;
-                 w->update_mode_line = 1;
+                 w->start_at_line_beg = true;
+                 w->update_mode_line = true;
                  /* Set force_start so that redisplay_window will run the
                     window-scroll-functions.  */
-                 w->force_start = 1;
+                 w->force_start = true;
                  return;
                }
            }
@@ -5101,7 +5092,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
            }
          else
            {
-             bidi_unshelve_cache (itdata, 0);
+             bidi_unshelve_cache (itdata, false);
              if (noerror)
                return;
              else if (n < 0)   /* could happen with empty buffers */
@@ -5118,7 +5109,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
            w->vscroll = 0;
          else
            {
-             bidi_unshelve_cache (itdata, 0);
+             bidi_unshelve_cache (itdata, false);
              if (noerror)
                return;
              else
@@ -5128,10 +5119,10 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
 
       /* If control gets here, then we vscrolled.  */
 
-      XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
+      XBUFFER (w->contents)->prevent_redisplay_optimizations_p = true;
 
       /* Don't try to change the window start below.  */
-      vscrolled = 1;
+      vscrolled = true;
     }
 
   if (! vscrolled)
@@ -5152,10 +5143,10 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
                                  IT_BYTEPOS (it));
       bytepos = marker_byte_position (w->start);
       w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n');
-      w->update_mode_line = 1;
+      w->update_mode_line = true;
       /* Set force_start so that redisplay_window will run the
         window-scroll-functions.  */
-      w->force_start = 1;
+      w->force_start = true;
     }
 
   /* The rest of this function uses current_y in a nonstandard way,
@@ -5188,8 +5179,8 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
             This is necessary because we set it.current_y to 0, above.  */
          move_it_to (&it, -1,
                      window_scroll_pixel_based_preserve_x,
-                     window_scroll_pixel_based_preserve_y
-                     - (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0 ),
+                     (window_scroll_pixel_based_preserve_y
+                      - WINDOW_WANTS_HEADER_LINE_P (w)),
                      -1, MOVE_TO_Y | MOVE_TO_X);
          SET_PT_BOTH (IT_CHARPOS (it), IT_BYTEPOS (it));
        }
@@ -5208,7 +5199,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
   else if (n < 0)
     {
       ptrdiff_t charpos, bytepos;
-      int partial_p;
+      bool partial_p;
 
       /* Save our position, for the
         window_scroll_pixel_based_preserve_y case.  */
@@ -5244,12 +5235,12 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
            {
              charpos = IT_CHARPOS (it);
              bytepos = IT_BYTEPOS (it);
-             bidi_unshelve_cache (it_data, 1);
+             bidi_unshelve_cache (it_data, true);
            }
          else
            {
              it = it2;
-             bidi_unshelve_cache (it_data, 0);
+             bidi_unshelve_cache (it_data, false);
            }
        }
 
@@ -5293,7 +5284,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
            SET_PT_BOTH (charpos, bytepos);
        }
     }
-  bidi_unshelve_cache (itdata, 0);
+  bidi_unshelve_cache (itdata, false);
 
   if (adjust_old_pointm)
     Fset_marker (w->old_pointm,
@@ -5308,9 +5299,9 @@ window_scroll_pixel_based (Lisp_Object window, int n, 
bool whole, int noerror)
    See the comment of window_scroll for parameter descriptions.  */
 
 static void
-window_scroll_line_based (Lisp_Object window, int n, bool whole, int noerror)
+window_scroll_line_based (Lisp_Object window, int n, bool whole, bool noerror)
 {
-  register struct window *w = XWINDOW (window);
+  struct window *w = XWINDOW (window);
   /* Fvertical_motion enters redisplay, which can trigger
      fontification, which in turn can modify buffer text (e.g., if the
      fontification functions replace escape sequences with faces, as
@@ -5340,7 +5331,7 @@ window_scroll_line_based (Lisp_Object window, int n, bool 
whole, int noerror)
          || NILP (Fget (KVAR (current_kboard, Vlast_command), 
Qscroll_command)))
        {
          struct position posit
-           = *compute_motion (startpos, startbyte, 0, 0, 0,
+           = *compute_motion (startpos, startbyte, 0, 0, false,
                               PT, ht, 0, -1, w->hscroll, 0, w);
 
          window_scroll_preserve_vpos = posit.vpos;
@@ -5386,10 +5377,10 @@ window_scroll_line_based (Lisp_Object window, int n, 
bool whole, int noerror)
 
       set_marker_restricted_both (w->start, w->contents, pos, pos_byte);
       w->start_at_line_beg = !NILP (bolp);
-      w->update_mode_line = 1;
+      w->update_mode_line = true;
       /* Set force_start so that redisplay_window will run
         the window-scroll-functions.  */
-      w->force_start = 1;
+      w->force_start = true;
 
       if (!NILP (Vscroll_preserve_screen_position)
          && (whole || !EQ (Vscroll_preserve_screen_position, Qt)))
@@ -5491,13 +5482,13 @@ scroll_command (Lisp_Object n, int direction)
     }
 
   if (NILP (n))
-    window_scroll (selected_window, direction, 1, 0);
+    window_scroll (selected_window, direction, true, false);
   else if (EQ (n, Qminus))
-    window_scroll (selected_window, -direction, 1, 0);
+    window_scroll (selected_window, -direction, true, false);
   else
     {
       n = Fprefix_numeric_value (n);
-      window_scroll (selected_window, XINT (n) * direction, 0, 0);
+      window_scroll (selected_window, XINT (n) * direction, false, false);
     }
 
   unbind_to (count, Qnil);
@@ -5605,15 +5596,15 @@ specifies the window to scroll.  This takes precedence 
over
   SET_PT_BOTH (marker_position (w->old_pointm), marker_byte_position 
(w->old_pointm));
 
   if (NILP (arg))
-    window_scroll (window, 1, 1, 1);
+    window_scroll (window, 1, true, true);
   else if (EQ (arg, Qminus))
-    window_scroll (window, -1, 1, 1);
+    window_scroll (window, -1, true, true);
   else
     {
       if (CONSP (arg))
        arg = XCAR (arg);
       CHECK_NUMBER (arg);
-      window_scroll (window, XINT (arg), 0, 1);
+      window_scroll (window, XINT (arg), false, true);
     }
 
   set_marker_both (w->pointm, Qnil, PT, PT_BYTE);
@@ -5643,7 +5634,7 @@ by this function.  This happens in an interactive call.  
*/)
   if (!NILP (set_minimum))
     w->min_hscroll = w->hscroll;
 
-  w->suspend_auto_hscroll = 1;
+  w->suspend_auto_hscroll = true;
 
   return result;
 }
@@ -5668,7 +5659,7 @@ by this function.  This happens in an interactive call.  
*/)
   if (!NILP (set_minimum))
     w->min_hscroll = w->hscroll;
 
-  w->suspend_auto_hscroll = 1;
+  w->suspend_auto_hscroll = true;
 
   return result;
 }
@@ -5716,7 +5707,7 @@ displayed_window_lines (struct window *w)
   start_display (&it, w, start);
   move_it_vertically (&it, height);
   bottom_y = line_bottom_y (&it);
-  bidi_unshelve_cache (itdata, 0);
+  bidi_unshelve_cache (itdata, false);
 
   /* rms: On a non-window display,
      the value of it.vpos at the bottom of the screen
@@ -5760,7 +5751,7 @@ and redisplay normally--don't erase and redraw the frame. 
 */)
 {
   struct window *w = XWINDOW (selected_window);
   struct buffer *buf = XBUFFER (w->contents);
-  bool center_p = 0;
+  bool center_p = false;
   ptrdiff_t charpos, bytepos;
   EMACS_INT iarg IF_LINT (= 0);
   int this_scroll_margin;
@@ -5789,10 +5780,10 @@ and redisplay normally--don't erase and redraw the 
frame.  */)
          SET_FRAME_GARBAGED (WINDOW_XFRAME (w));
        }
 
-      center_p = 1;
+      center_p = true;
     }
   else if (CONSP (arg)) /* Just C-u.  */
-    center_p = 1;
+    center_p = true;
   else
     {
       arg = Fprefix_numeric_value (arg);
@@ -5805,10 +5796,9 @@ and redisplay normally--don't erase and redraw the 
frame.  */)
   this_scroll_margin
     = max (0, min (scroll_margin, w->total_lines / 4));
 
-  /* Handle centering on a graphical frame specially.  Such frames can
-     have variable-height lines and centering point on the basis of
-     line counts would lead to strange effects.  */
-  if (FRAME_WINDOW_P (XFRAME (w->frame)))
+  /* Don't use redisplay code for initial frames, as the necessary
+     data structures might not be set up yet then.  */
+  if (!FRAME_INITIAL_P (XFRAME (w->frame)))
     {
       if (center_p)
        {
@@ -5821,7 +5811,7 @@ and redisplay normally--don't erase and redraw the frame. 
 */)
          move_it_vertically_backward (&it, window_box_height (w) / 2);
          charpos = IT_CHARPOS (it);
          bytepos = IT_BYTEPOS (it);
-         bidi_unshelve_cache (itdata, 0);
+         bidi_unshelve_cache (itdata, false);
        }
       else if (iarg < 0)
        {
@@ -5830,9 +5820,11 @@ and redisplay normally--don't erase and redraw the 
frame.  */)
          ptrdiff_t nlines = min (PTRDIFF_MAX, -iarg);
          int extra_line_spacing;
          int h = window_box_height (w);
+         int ht = window_internal_height (w);
          void *itdata = bidi_shelve_cache ();
 
-         iarg = - max (-iarg, this_scroll_margin);
+         nlines = clip_to_bounds (this_scroll_margin + 1, nlines,
+                                  ht - this_scroll_margin);
 
          SET_TEXT_POS (pt, PT, PT_BYTE);
          start_display (&it, w, pt);
@@ -5869,7 +5861,7 @@ and redisplay normally--don't erase and redraw the frame. 
 */)
            }
          if (h <= 0)
            {
-             bidi_unshelve_cache (itdata, 0);
+             bidi_unshelve_cache (itdata, false);
              return Qnil;
            }
 
@@ -5892,17 +5884,37 @@ and redisplay normally--don't erase and redraw the 
frame.  */)
          charpos = IT_CHARPOS (it);
          bytepos = IT_BYTEPOS (it);
 
-         bidi_unshelve_cache (itdata, 0);
+         bidi_unshelve_cache (itdata, false);
        }
       else
        {
-         struct position pos;
+         struct it it;
+         struct text_pos pt;
+         ptrdiff_t nlines = min (PTRDIFF_MAX, iarg);
+         int ht = window_internal_height (w);
+         void *itdata = bidi_shelve_cache ();
+
+         nlines = clip_to_bounds (this_scroll_margin, nlines,
+                                  ht - this_scroll_margin - 1);
+
+         SET_TEXT_POS (pt, PT, PT_BYTE);
+         start_display (&it, w, pt);
 
-         iarg = max (iarg, this_scroll_margin);
+         /* Move to the beginning of screen line containing PT.  */
+         move_it_by_lines (&it, 0);
 
-         pos = *vmotion (PT, PT_BYTE, -iarg, w);
-         charpos = pos.bufpos;
-         bytepos = pos.bytepos;
+         /* Move back to find the point which is ARG screen lines above PT.  */
+         if (nlines > 0)
+           {
+             it.current_y = 0;
+             it.vpos = 0;
+             move_it_by_lines (&it, -nlines);
+           }
+
+         charpos = IT_CHARPOS (it);
+         bytepos = IT_BYTEPOS (it);
+
+         bidi_unshelve_cache (itdata, false);
        }
     }
   else
@@ -5926,9 +5938,9 @@ and redisplay normally--don't erase and redraw the frame. 
 */)
 
   /* Set the new window start.  */
   set_marker_both (w->start, w->contents, charpos, bytepos);
-  w->window_end_valid = 0;
+  w->window_end_valid = false;
 
-  w->optional_new_start = 1;
+  w->optional_new_start = true;
 
   w->start_at_line_beg = (bytepos == BEGV_BYTE
                          || FETCH_BYTE (bytepos - 1) == '\n');
@@ -5992,7 +6004,7 @@ zero means top of window, negative means relative to 
bottom of window.  */)
   struct window *w = XWINDOW (selected_window);
   int lines, start;
   Lisp_Object window;
-#if 0
+#if false
   int this_scroll_margin;
 #endif
 
@@ -6009,14 +6021,14 @@ zero means top of window, negative means relative to 
bottom of window.  */)
       Fvertical_motion (make_number (- (height / 2)), window, Qnil);
       set_marker_both (w->start, w->contents, PT, PT_BYTE);
       w->start_at_line_beg = !NILP (Fbolp ());
-      w->force_start = 1;
+      w->force_start = true;
     }
   else
     Fgoto_char (w->start);
 
   lines = displayed_window_lines (w);
 
-#if 0
+#if false
   this_scroll_margin = max (0, min (scroll_margin, lines / 4));
 #endif
 
@@ -6029,11 +6041,11 @@ zero means top of window, negative means relative to 
bottom of window.  */)
       if (iarg < 0)
        iarg = iarg + lines;
 
-#if 0  /* This code would prevent move-to-window-line from moving point
-         to a place inside the scroll margins (which would cause the
-         next redisplay to scroll).  I wrote this code, but then concluded
-         it is probably better not to install it.  However, it is here
-         inside #if 0 so as not to lose it.  -- rms.  */
+#if false /* This code would prevent move-to-window-line from moving point
+            to a place inside the scroll margins (which would cause the
+            next redisplay to scroll).  I wrote this code, but then concluded
+            it is probably better not to install it.  However, it is here
+            inside #if false so as not to lose it.  -- rms.  */
 
       /* Don't let it get into the margin at either top or bottom.  */
       iarg = max (iarg, this_scroll_margin);
@@ -6199,14 +6211,12 @@ the return value is nil.  Otherwise the value is t.  */)
     {
       Lisp_Object window;
       Lisp_Object dead_windows = Qnil;
-      register Lisp_Object tem, par, pers;
-      register struct window *w;
-      register struct saved_window *p;
+      Lisp_Object tem, par, pers;
+      struct window *w;
+      struct saved_window *p;
       struct window *root_window;
       struct window **leaf_windows;
-      int n_leaf_windows;
-      ptrdiff_t k;
-      int i, n;
+      ptrdiff_t i, k, n_leaf_windows;
 
       /* Don't do this within the main loop below: This may call Lisp
         code and is thus potentially unsafe while input is blocked.  */
@@ -6244,14 +6254,14 @@ the return value is nil.  Otherwise the value is t.  */)
        }
 
       fset_redisplay (f);
-      FRAME_WINDOW_SIZES_CHANGED (f) = 1;
+      FRAME_WINDOW_SIZES_CHANGED (f) = true;
 
       /* Problem: Freeing all matrices and later allocating them again
         is a serious redisplay flickering problem.  What we would
         really like to do is to free only those matrices not reused
         below.  */
       root_window = XWINDOW (FRAME_ROOT_WINDOW (f));
-      int nwindows = count_windows (root_window);
+      ptrdiff_t nwindows = count_windows (root_window);
       SAFE_NALLOCA (leaf_windows, 1, nwindows);
       n_leaf_windows = get_leaf_windows (root_window, leaf_windows, 0);
 
@@ -6375,7 +6385,7 @@ the return value is nil.  Otherwise the value is t.  */)
                  (w->old_pointm, w->contents,
                   BUF_PT (XBUFFER (w->contents)),
                   BUF_PT_BYTE (XBUFFER (w->contents)));
-             w->start_at_line_beg = 1;
+             w->start_at_line_beg = true;
            }
          else if (!NILP (w->start))
            /* Leaf window has no live buffer, get one.  */
@@ -6390,7 +6400,7 @@ the return value is nil.  Otherwise the value is t.  */)
              set_marker_restricted_both (w->start, w->contents, 0, 0);
              set_marker_restricted_both (w->pointm, w->contents, 0, 0);
              set_marker_restricted_both (w->old_pointm, w->contents, 0, 0);
-             w->start_at_line_beg = 1;
+             w->start_at_line_beg = true;
              if (!NILP (w->dedicated))
                /* Record this window as dead.  */
                dead_windows = Fcons (window, dead_windows);
@@ -6414,7 +6424,7 @@ the return value is nil.  Otherwise the value is t.  */)
 
         Do not record the buffer here.  We do that in a separate call
         to select_window below.  See also Bug#16207.  */
-      select_window (data->current_window, Qt, 1);
+      select_window (data->current_window, Qt, true);
       BVAR (XBUFFER (XWINDOW (selected_window)->contents),
            last_selected_window)
        = selected_window;
@@ -6425,18 +6435,14 @@ the return value is nil.  Otherwise the value is t.  */)
        Fredirect_frame_focus (frame, data->focus_frame);
 
       /* Now, free glyph matrices in windows that were not reused.  */
-      for (i = n = 0; i < n_leaf_windows; ++i)
-       {
-         if (NILP (leaf_windows[i]->contents))
-           free_window_matrices (leaf_windows[i]);
-         else if (EQ (leaf_windows[i]->contents, new_current_buffer))
-           ++n;
-       }
+      for (i = 0; i < n_leaf_windows; i++)
+       if (NILP (leaf_windows[i]->contents))
+         free_window_matrices (leaf_windows[i]);
 
       /* Allow x_set_window_size again and apply frame size changes if
         needed.  */
       f->can_x_set_window_size = true;
-      adjust_frame_size (f, -1, -1, 1, 0, Qset_window_configuration);
+      adjust_frame_size (f, -1, -1, 1, false, Qset_window_configuration);
 
       adjust_frame_glyphs (f);
       unblock_input ();
@@ -6451,7 +6457,7 @@ the return value is nil.  Otherwise the value is t.  */)
 
       /* Record the selected window's buffer here.  The window should
         already be the selected one from the call above.  */
-      select_window (data->current_window, Qnil, 0);
+      select_window (data->current_window, Qnil, false);
 
       /* Fselect_window will have made f the selected frame, so we
         reselect the proper frame here.  Fhandle_switch_frame will change the
@@ -6506,7 +6512,7 @@ delete_all_child_windows (Lisp_Object window)
   if (WINDOWP (w->contents))
     {
       delete_all_child_windows (w->contents);
-      wset_combination (w, 0, Qnil);
+      wset_combination (w, false, Qnil);
     }
   else if (BUFFERP (w->contents))
     {
@@ -6524,10 +6530,10 @@ delete_all_child_windows (Lisp_Object window)
   Vwindow_list = Qnil;
 }
 
-static int
-count_windows (register struct window *window)
+static ptrdiff_t
+count_windows (struct window *window)
 {
-  register int count = 1;
+  ptrdiff_t count = 1;
   if (!NILP (window->next))
     count += count_windows (XWINDOW (window->next));
   if (WINDOWP (window->contents))
@@ -6538,8 +6544,8 @@ count_windows (register struct window *window)
 
 /* Fill vector FLAT with leaf windows under W, starting at index I.
    Value is last index + 1.  */
-static int
-get_leaf_windows (struct window *w, struct window **flat, int i)
+static ptrdiff_t
+get_leaf_windows (struct window *w, struct window **flat, ptrdiff_t i)
 {
   while (w)
     {
@@ -6593,12 +6599,12 @@ get_phys_cursor_glyph (struct window *w)
 }
 
 
-static int
-save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i)
+static ptrdiff_t
+save_window_save (Lisp_Object window, struct Lisp_Vector *vector, ptrdiff_t i)
 {
-  register struct saved_window *p;
-  register struct window *w;
-  register Lisp_Object tem, pers, par;
+  struct saved_window *p;
+  struct window *w;
+  Lisp_Object tem, pers, par;
 
   for (; !NILP (window); window = w->next)
     {
@@ -6736,10 +6742,9 @@ redirection (see `redirect-frame-focus').  The variable
 saved by this function.  */)
   (Lisp_Object frame)
 {
-  register Lisp_Object tem;
-  register int n_windows;
-  register struct save_window_data *data;
-  register int i;
+  Lisp_Object tem;
+  ptrdiff_t i, n_windows;
+  struct save_window_data *data;
   struct frame *f = decode_live_frame (frame);
 
   n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
@@ -6778,7 +6783,7 @@ apply_window_adjustment (struct window *w)
 {
   eassert (w);
   clear_glyph_matrix (w->current_matrix);
-  w->window_end_valid = 0;
+  w->window_end_valid = false;
   windows_or_buffers_changed = 30;
   wset_redisplay (w);
   adjust_frame_glyphs (XFRAME (WINDOW_FRAME (w)));
@@ -6789,17 +6794,22 @@ apply_window_adjustment (struct window *w)
                            Marginal Areas
  ***********************************************************************/
 
+static int
+extract_dimension (Lisp_Object dimension)
+{
+  if (NILP (dimension))
+    return -1;
+  CHECK_RANGED_INTEGER (dimension, 0, INT_MAX);
+  return XINT (dimension);
+}
+
 static struct window *
 set_window_margins (struct window *w, Lisp_Object left_width,
                    Lisp_Object right_width)
 {
-  int left, right;
   int unit = WINDOW_FRAME_COLUMN_WIDTH (w);
-
-  left = (NILP (left_width) ? 0
-         : (CHECK_NATNUM (left_width), XINT (left_width)));
-  right = (NILP (right_width) ? 0
-          : (CHECK_NATNUM (right_width), XINT (right_width)));
+  int left = NILP (left_width) ? 0 : extract_dimension (left_width);
+  int right = NILP (right_width) ? 0 : extract_dimension (right_width);
 
   if (w->left_margin_cols != left || w->right_margin_cols != right)
     {
@@ -6868,12 +6878,9 @@ static struct window *
 set_window_fringes (struct window *w, Lisp_Object left_width,
                    Lisp_Object right_width, Lisp_Object outside_margins)
 {
-  int left, right, outside = !NILP (outside_margins);
-
-  left = (NILP (left_width) ? -1
-         : (CHECK_NATNUM (left_width), XINT (left_width)));
-  right = (NILP (right_width) ? -1
-          : (CHECK_NATNUM (right_width), XINT (right_width)));
+  bool outside = !NILP (outside_margins);
+  int left = extract_dimension (left_width);
+  int right = extract_dimension (right_width);
 
   /* Do nothing on a tty or if nothing to actually change.  */
   if (FRAME_WINDOW_P (WINDOW_XFRAME (w))
@@ -6953,8 +6960,8 @@ set_window_scroll_bars (struct window *w, Lisp_Object 
width,
                        Lisp_Object vertical_type, Lisp_Object height,
                        Lisp_Object horizontal_type)
 {
-  int iwidth = (NILP (width) ? -1 : (CHECK_NATNUM (width), XINT (width)));
-  bool changed = 0;
+  int iwidth = extract_dimension (width);
+  bool changed = false;
 
   if (iwidth == 0)
     vertical_type = Qnil;
@@ -6977,13 +6984,13 @@ set_window_scroll_bars (struct window *w, Lisp_Object 
width,
        {
          w->scroll_bar_width = iwidth;
          wset_vertical_scroll_bar_type (w, vertical_type);
-         changed = 1;
+         changed = true;
        }
     }
 
 #if USE_HORIZONTAL_SCROLL_BARS
   {
-    int iheight = (NILP (height) ? -1 : (CHECK_NATNUM (height), XINT 
(height)));
+    int iheight = extract_dimension (height);
 
     if (MINI_WINDOW_P (w) || iheight == 0)
       horizontal_type = Qnil;
@@ -7005,7 +7012,7 @@ set_window_scroll_bars (struct window *w, Lisp_Object 
width,
          {
            w->scroll_bar_height = iheight;
            wset_horizontal_scroll_bar_type (w, horizontal_type);
-           changed = 1;
+           changed = true;
          }
       }
   }
@@ -7128,7 +7135,7 @@ If PIXELS-P is non-nil, the return value is VSCROLL.  */)
            adjust_frame_glyphs (f);
 
          /* Prevent redisplay shortcuts.  */
-         XBUFFER (w->contents)->prevent_redisplay_optimizations_p = 1;
+         XBUFFER (w->contents)->prevent_redisplay_optimizations_p = true;
        }
     }
 
@@ -7141,7 +7148,7 @@ If PIXELS-P is non-nil, the return value is VSCROLL.  */)
    additional argument USER_DATA.  Stops when FN returns 0.  */
 
 static void
-foreach_window (struct frame *f, int (*fn) (struct window *, void *),
+foreach_window (struct frame *f, bool (*fn) (struct window *, void *),
                void *user_data)
 {
   /* delete_frame may set FRAME_ROOT_WINDOW (f) to Qnil.  */
@@ -7153,14 +7160,15 @@ foreach_window (struct frame *f, int (*fn) (struct 
window *, void *),
 /* Helper function for foreach_window.  Call FN for all leaf windows
    reachable from W.  FN is called with the first argument being a
    pointer to the leaf window, and with additional argument USER_DATA.
-   Stop when FN returns 0.  Value is 0 if stopped by FN.  */
+   Stop when FN returns false.  Value is false if stopped by FN.  */
 
-static int
-foreach_window_1 (struct window *w, int (*fn) (struct window *, void *), void 
*user_data)
+static bool
+foreach_window_1 (struct window *w, bool (*fn) (struct window *, void *),
+                 void *user_data)
 {
-  int cont;
+  bool cont;
 
-  for (cont = 1; w && cont;)
+  for (cont = true; w && cont;)
     {
       if (WINDOWP (w->contents))
        cont = foreach_window_1 (XWINDOW (w->contents), fn, user_data);
@@ -7177,7 +7185,7 @@ foreach_window_1 (struct window *w, int (*fn) (struct 
window *, void *), void *u
                            Initialization
  ***********************************************************************/
 
-/* Return 1 if window configurations CONFIGURATION1 and CONFIGURATION2
+/* Return true if window configurations CONFIGURATION1 and CONFIGURATION2
    describe the same state of affairs.  This is used by Fequal.
 
    IGNORE_POSITIONS means ignore non-matching scroll positions
@@ -7216,7 +7224,7 @@ compare_window_configurations (Lisp_Object configuration1,
       || !EQ (d1->focus_frame, d2->focus_frame)
       /* Verify that the two configurations have the same number of windows.  
*/
       || sws1->header.size != sws2->header.size)
-    return 0;
+    return false;
 
   for (i = 0; i < sws1->header.size; i++)
     {
@@ -7260,10 +7268,10 @@ compare_window_configurations (Lisp_Object 
configuration1,
          || !EQ (sw1->scroll_bar_height, sw2->scroll_bar_height)
          || !EQ (sw1->vertical_scroll_bar_type, sw2->vertical_scroll_bar_type)
          || !EQ (sw1->horizontal_scroll_bar_type, 
sw2->horizontal_scroll_bar_type))
-       return 0;
+       return false;
     }
 
-  return 1;
+  return true;
 }
 
 DEFUN ("compare-window-configurations", Fcompare_window_configurations,
@@ -7273,7 +7281,7 @@ This function ignores details such as the values of point
 and scrolling positions.  */)
   (Lisp_Object x, Lisp_Object y)
 {
-  if (compare_window_configurations (x, y, 1))
+  if (compare_window_configurations (x, y, true))
     return Qt;
   return Qnil;
 }
diff --git a/src/window.h b/src/window.h
index 2ec28ab..eaff57e 100644
--- a/src/window.h
+++ b/src/window.h
@@ -195,10 +195,10 @@ struct window
     Lisp_Object next_buffers;
 
     /* Number saying how recently window was selected.  */
-    int use_time;
+    EMACS_INT use_time;
 
     /* Unique number of window assigned when it was created.  */
-    int sequence_number;
+    EMACS_INT sequence_number;
 
     /* The upper left corner pixel coordinates of this window, as
        integers relative to upper left corner of frame = 0, 0.  */
@@ -256,7 +256,7 @@ struct window
 
     /* Scaling factor for the glyph_matrix size calculation in this window.
        Used if window contains many small images or uses proportional fonts,
-       as the normal  may yield a matrix which is too small.  */
+       as the normal may yield a matrix which is too small.  */
     int nrows_scale_factor, ncols_scale_factor;
 
     /* Intended cursor position.   This is a position within the
@@ -323,7 +323,7 @@ struct window
     /* True if this window is a minibuffer window.  */
     bool_bf mini : 1;
 
-    /* Meaningful only if contents is a window, non-zero if this
+    /* Meaningful only if contents is a window, true if this
        internal window is used in horizontal combination.  */
     bool_bf horizontal : 1;
 
@@ -921,7 +921,7 @@ wset_next_buffers (struct window *w, Lisp_Object val)
    : 0)
 
 #define WINDOW_MODE_LINE_LINES(W)      \
-  (!! WINDOW_WANTS_MODELINE_P (W))
+  WINDOW_WANTS_MODELINE_P (W)
 
 /* Height in pixels, and in lines, of the header line.
    Zero if W doesn't have a header line.  */
@@ -931,7 +931,7 @@ wset_next_buffers (struct window *w, Lisp_Object val)
    : 0)
 
 #define WINDOW_HEADER_LINE_LINES(W)    \
-  (!! WINDOW_WANTS_HEADER_LINE_P (W))
+  WINDOW_WANTS_HEADER_LINE_P (W)
 
 /* Pixel height of window W without mode line, bottom scroll bar and
    bottom divider.  */
@@ -990,7 +990,7 @@ extern Lisp_Object selected_window;
    recently used window.  Its only users are Fselect_window,
    init_window_once, and make_frame.  */
 
-extern int window_select_count;
+extern EMACS_INT window_select_count;
 
 /* The minibuffer window of the selected frame.
    Note that you cannot test for minibufferness of an arbitrary window
@@ -1015,7 +1015,7 @@ extern int window_relative_x_coord (struct window *, enum 
window_part, int);
 
 void run_window_configuration_change_hook (struct frame *f);
 
-/* Make WINDOW display BUFFER.  RUN_HOOKS_P non-zero means it's allowed
+/* Make WINDOW display BUFFER.  RUN_HOOKS_P means it's allowed
    to run hooks.  See make_frame for a case where it's not allowed.  */
 
 void set_window_buffer (Lisp_Object window, Lisp_Object buffer,
@@ -1067,7 +1067,7 @@ extern void redisplay_other_windows (void);
 
 struct glyph *get_phys_cursor_glyph (struct window *w);
 
-/* Value is non-zero if WINDOW is a valid window.  */
+/* True if WINDOW is a valid window.  */
 #define WINDOW_VALID_P(WINDOW)                                 \
   (WINDOWP (WINDOW) && !NILP (XWINDOW (WINDOW)->contents))     \
 
@@ -1076,7 +1076,7 @@ struct glyph *get_phys_cursor_glyph (struct window *w);
 #define CHECK_VALID_WINDOW(WINDOW)                             \
   CHECK_TYPE (WINDOW_VALID_P (WINDOW), Qwindow_valid_p, WINDOW)
 
-/* Value is non-zero if WINDOW is a live window.  */
+/* True if WINDOW is a live window.  */
 #define WINDOW_LIVE_P(WINDOW)                                  \
   (WINDOWP (WINDOW) && BUFFERP (XWINDOW (WINDOW)->contents))
 
diff --git a/src/xfaces.c b/src/xfaces.c
index b269722..d198c4b 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -1822,7 +1822,7 @@ resolve_face_name (Lisp_Object face_name, bool signal_p)
   Lisp_Object tortoise, hare;
 
   if (STRINGP (face_name))
-    face_name = intern (SSDATA (face_name));
+    face_name = Fintern (face_name, Qnil);
 
   if (NILP (face_name) || !SYMBOLP (face_name))
     return face_name;
diff --git a/src/xselect.c b/src/xselect.c
index 027192d..1570c4f 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -531,6 +531,16 @@ static struct prop_location *property_change_reply_object;
 
 static struct prop_location *property_change_wait_list;
 
+static void
+set_property_change_object (struct prop_location *location)
+{
+  /* Input must be blocked so we don't get the event before we set these.  */
+  if (! input_blocked_p ())
+    emacs_abort ();
+  XSETCAR (property_change_reply, Qnil);
+  property_change_reply_object = location;
+}
+
 
 /* Send the reply to a selection request event EVENT.  */
 
@@ -633,6 +643,11 @@ x_reply_selection_request (struct input_event *event,
       {
        int format_bytes = cs->format / 8;
        bool had_errors_p = x_had_errors_p (display);
+
+        /* Must set this inside block_input ().  unblock_input may read
+           events and setting property_change_reply in
+           wait_for_property_change is then too late.  */
+        set_property_change_object (cs->wait_object);
        unblock_input ();
 
        bytes_remaining = cs->size;
@@ -673,6 +688,8 @@ x_reply_selection_request (struct input_event *event,
                             : format_bytes);
            XFlush (display);
            had_errors_p = x_had_errors_p (display);
+            // See comment above about property_change_reply.
+            set_property_change_object (cs->wait_object);
            unblock_input ();
 
            if (had_errors_p) break;
@@ -1059,14 +1076,11 @@ wait_for_property_change (struct prop_location 
*location)
 {
   ptrdiff_t count = SPECPDL_INDEX ();
 
-  if (property_change_reply_object)
-    emacs_abort ();
-
   /* Make sure to do unexpect_property_change if we quit or err.  */
   record_unwind_protect_ptr (wait_for_property_change_unwind, location);
 
-  XSETCAR (property_change_reply, Qnil);
-  property_change_reply_object = location;
+  /* See comment in x_reply_selection_request about setting
+     property_change_reply.  Do not do it here.  */
 
   /* If the event we are waiting for arrives beyond here, it will set
      property_change_reply, because property_change_reply_object says so.  */
@@ -1381,6 +1395,8 @@ receive_incremental_selection (struct x_display_info 
*dpyinfo,
   wait_object = expect_property_change (display, window, property,
                                        PropertyNewValue);
   XFlush (display);
+  // See comment in x_reply_selection_request about property_change_reply.
+  set_property_change_object (wait_object);
   unblock_input ();
 
   while (true)
@@ -1419,6 +1435,8 @@ receive_incremental_selection (struct x_display_info 
*dpyinfo,
       XDeleteProperty (display, window, property);
       wait_object = expect_property_change (display, window, property,
                                            PropertyNewValue);
+      // See comment in x_reply_selection_request about property_change_reply.
+      set_property_change_object (wait_object);
       XFlush (display);
       unblock_input ();
 
diff --git a/src/xterm.c b/src/xterm.c
index 866c9ff..6e16544 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1381,9 +1381,9 @@ x_alloc_lighter_color_for_widget (Widget widget, Display 
*display, Colormap cmap
 
 static XtConvertArgRec cvt_string_to_pixel_args[] =
   {
-    {XtWidgetBaseOffset, (XtPointer) XtOffset (Widget, core.screen),
+    {XtWidgetBaseOffset, (XtPointer) offsetof (WidgetRec, core.screen),
      sizeof (Screen *)},
-    {XtWidgetBaseOffset, (XtPointer) XtOffset (Widget, core.colormap),
+    {XtWidgetBaseOffset, (XtPointer) offsetof (WidgetRec, core.colormap),
      sizeof (Colormap)}
   };
 
@@ -7019,11 +7019,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
       goto OTHER;
 
     case MapNotify:
-      if (event->xmap.window == tip_window)
-        /* The tooltip has been drawn already.  Avoid
-           the SET_FRAME_GARBAGED below.  */
-        goto OTHER;
-
       /* We use x_top_window_to_frame because map events can
          come for sub-windows and they don't mean that the
          frame is visible.  */
@@ -7553,6 +7548,18 @@ handle_one_xevent (struct x_display_info *dpyinfo,
         {
          x_net_wm_state (f, event->xconfigure.window);
 
+#ifdef USE_X_TOOLKIT
+          /* Tip frames are pure X window, set size for them.  */
+          if (! NILP (tip_frame) && XFRAME (tip_frame) == f)
+            {
+              if (FRAME_PIXEL_HEIGHT (f) != event->xconfigure.height
+                  || FRAME_PIXEL_WIDTH (f) != event->xconfigure.width)
+                SET_FRAME_GARBAGED (f);
+              FRAME_PIXEL_HEIGHT (f) = event->xconfigure.height;
+              FRAME_PIXEL_WIDTH (f) = event->xconfigure.width;
+            }
+#endif
+
 #ifndef USE_X_TOOLKIT
 #ifndef USE_GTK
           int width = FRAME_PIXEL_TO_TEXT_WIDTH (f, event->xconfigure.width);
diff --git a/test/ChangeLog b/test/ChangeLog.1
similarity index 99%
rename from test/ChangeLog
rename to test/ChangeLog.1
index f7bec2e..7f8eecf 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog.1
@@ -1,3 +1,12 @@
+2015-04-06  Fabián Ezequiel Gallina  <address@hidden>
+
+       * automated/python-tests.el (python-info-assignment-statement-p-1)
+       (python-info-assignment-statement-p-2)
+       (python-info-assignment-statement-p-3, python-info-docstring-p-1)
+       (python-info-docstring-p-2, python-info-docstring-p-3)
+       (python-info-docstring-p-4, python-info-docstring-p-5)
+       (python-info-docstring-p-6): New tests.
+
 2015-04-01  Artur Malabarba  <address@hidden>
 
        * automated/package-test.el: Avoid async while testing.
@@ -298,7 +307,7 @@
 
        * indent/shell.sh (bar): Use '[ $# -eq 0 ]', not '[ $# == 0 ]'.
        This is more portable in shell scripts.
-       Fixes: bug#19658
+       (Bug#19658)
 
 2015-01-23  Dmitry Gutov  <address@hidden>
 
diff --git a/test/automated/data/package/package-test-server.py 
b/test/automated/data/package/package-test-server.py
new file mode 100644
index 0000000..35ca820
--- /dev/null
+++ b/test/automated/data/package/package-test-server.py
@@ -0,0 +1,21 @@
+import sys
+import BaseHTTPServer
+from SimpleHTTPServer import SimpleHTTPRequestHandler
+
+
+HandlerClass = SimpleHTTPRequestHandler
+ServerClass  = BaseHTTPServer.HTTPServer
+Protocol     = "HTTP/1.0"
+
+if sys.argv[1:]:
+    port = int(sys.argv[1])
+else:
+    port = 8000
+    server_address = ('127.0.0.1', port)
+
+HandlerClass.protocol_version = Protocol
+httpd = ServerClass(server_address, HandlerClass)
+
+sa = httpd.socket.getsockname()
+print "Serving HTTP on", sa[0], "port", sa[1], "..."
+httpd.serve_forever()
diff --git a/test/automated/eieio-test-methodinvoke.el 
b/test/automated/eieio-test-methodinvoke.el
index 52630134..557f031 100644
--- a/test/automated/eieio-test-methodinvoke.el
+++ b/test/automated/eieio-test-methodinvoke.el
@@ -186,7 +186,7 @@
 
 (cl-defmethod make-instance ((p (subclass C)) &rest args)
   (eieio-test-method-store :STATIC 'C)
-  (call-next-method)
+  (cl-call-next-method)
   )
 
 (ert-deftest eieio-test-method-order-list-6 ()
diff --git a/test/automated/eshell.el b/test/automated/eshell.el
index d51355f..81898db 100644
--- a/test/automated/eshell.el
+++ b/test/automated/eshell.el
@@ -166,6 +166,37 @@ e.g. \"{(+ 1 2)} 3\" => 3"
    (eshell-command-result-p "+ 1 2; + $_ 4"
                              "3\n6\n")))
 
+(ert-deftest eshell-test/escape-nonspecial ()
+  "Test that \"\\c\" and \"c\" are equivalent when \"c\" is not a
+special character."
+  (with-temp-eshell
+   (eshell-command-result-p "echo he\\llo"
+                            "hello\n")))
+
+(ert-deftest eshell-test/escape-nonspecial-unicode ()
+  "Test that \"\\c\" and \"c\" are equivalent when \"c\" is a
+unicode character (unicode characters are nonspecial by
+definition)."
+  (with-temp-eshell
+   (eshell-command-result-p "echo Vid\\éos"
+                            "Vidéos\n")))
+
+(ert-deftest eshell-test/escape-nonspecial-quoted ()
+  "Test that the backslash is preserved for escaped nonspecial
+chars"
+  (with-temp-eshell
+   (eshell-command-result-p "echo \"h\\i\""
+                            ;; Backslashes are doubled for regexp.
+                            "h\\\\i\n")))
+
+(ert-deftest eshell-test/escape-special-quoted ()
+  "Test that the backslash is not preserved for escaped special
+chars"
+  (with-temp-eshell
+   (eshell-command-result-p "echo \"h\\\\i\""
+                            ;; Backslashes are doubled for regexp.
+                            "h\\\\i\n")))
+
 (ert-deftest eshell-test/command-running-p ()
   "Modeline should show no command running"
   (with-temp-eshell
diff --git a/test/automated/message-mode-tests.el 
b/test/automated/message-mode-tests.el
new file mode 100644
index 0000000..397707f
--- /dev/null
+++ b/test/automated/message-mode-tests.el
@@ -0,0 +1,55 @@
+;;; message-mode-tests.el --- Tests for message-mode  -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: João Távora <address@hidden>
+
+;; 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 <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file contains tests for message-mode.
+
+;;; Code:
+(require 'ert)
+(require 'ert-x)
+
+(ert-deftest message-mode-propertize ()
+  (with-temp-buffer
+    (unwind-protect
+        (progn
+          (message-mode)
+          (insert "here's an opener (\n"
+                  "here's a sad face :-(\n"
+                  "> here's citing someone with an opener (\n"
+                  "and here's a closer ")
+          (let ((last-command-event ?\)))
+            (ert-simulate-command '(self-insert-command 1)))
+          ;; Syntax propertization doesn't kick in batch mode
+          (when noninteractive
+            (syntax-propertize (point-max)))
+          (backward-sexp)
+          (should (string= "here's an opener "
+                           (buffer-substring-no-properties
+                            (line-beginning-position)
+                            (point))))
+          (forward-sexp)
+          (should (string= "and here's a closer )"
+                           (buffer-substring-no-properties
+                            (line-beginning-position)
+                            (point)))))
+      (set-buffer-modified-p nil))))
+
+(provide 'message-mode-tests)
+;;; message-mode-tests.el ends here
diff --git a/test/automated/package-test.el b/test/automated/package-test.el
index 359f354..4385ee0 100644
--- a/test/automated/package-test.el
+++ b/test/automated/package-test.el
@@ -103,6 +103,7 @@
 (cl-defmacro with-package-test ((&optional &key file
                                            basedir
                                            install
+                                           location
                                            update-news
                                            upload-base)
                                 &rest body)
@@ -112,8 +113,7 @@
           (process-environment (cons (format "HOME=%s" package-test-user-dir)
                                      process-environment))
           (package-user-dir package-test-user-dir)
-          (package-archives `(("gnu" . ,package-test-data-dir)))
-          (old-yes-no-defn (symbol-function 'yes-or-no-p))
+          (package-archives `(("gnu" . ,(or ,location package-test-data-dir))))
           (default-directory package-test-file-dir)
           abbreviated-home-dir
           package--initialized
@@ -125,28 +125,31 @@
                 '((package-test-archive-upload-base (make-temp-file 
"pkg-archive-base-" t))
                   (package-archive-upload-base 
package-test-archive-upload-base))
               (list (cl-gensym)))) ;; Dummy value so `let' doesn't try to bind 
`nil'
+     (let ((buf (get-buffer "*Packages*")))
+       (when (buffer-live-p buf)
+         (kill-buffer buf)))
      (unwind-protect
          (progn
            ,(if basedir `(cd ,basedir))
-           (setf (symbol-function 'yes-or-no-p) #'(lambda (&rest r) t))
            (unless (file-directory-p package-user-dir)
              (mkdir package-user-dir))
-           ,@(when install
-               `((package-initialize)
-                 (package-refresh-contents)
-                 (mapc 'package-install ,install)))
-           (with-temp-buffer
-             ,(if file
-                  `(insert-file-contents ,file))
-             ,@body))
+           (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&rest r) t))
+                     ((symbol-function 'y-or-n-p)    (lambda (&rest r) t)))
+             ,@(when install
+                 `((package-initialize)
+                   (package-refresh-contents)
+                   (mapc 'package-install ,install)))
+             (with-temp-buffer
+               ,(if file
+                    `(insert-file-contents ,file))
+               ,@body)))
 
        (when (file-directory-p package-test-user-dir)
          (delete-directory package-test-user-dir t))
 
        (when (and (boundp 'package-test-archive-upload-base)
                   (file-directory-p package-test-archive-upload-base))
-         (delete-directory package-test-archive-upload-base t))
-       (setf (symbol-function 'yes-or-no-p) old-yes-no-defn))))
+         (delete-directory package-test-archive-upload-base t)))))
 
 (defmacro with-fake-help-buffer (&rest body)
   "Execute BODY in a temp buffer which is treated as the \"*Help*\" buffer."
@@ -337,6 +340,32 @@ Must called from within a `tar-mode' buffer."
         (package-menu-refresh)
         (should (package-installed-p 'simple-single '(1 4)))))))
 
+(ert-deftest package-test-update-archives-async ()
+  "Test updating package archives asynchronously."
+  (skip-unless (executable-find "python2"))
+  (with-package-test (:basedir
+                      package-test-data-dir
+                      :location "http://0.0.0.0:8000/";)
+    (let* ((package-menu-async t)
+           (process (start-process
+                     "package-server" "package-server-buffer"
+                     (executable-find "python2")
+                     (expand-file-name "package-test-server.py"))))
+      (unwind-protect
+          (progn
+            (list-packages)
+            (should package--downloads-in-progress)
+            (should mode-line-process)
+            (should-not
+             (with-timeout (10 'timeout)
+               (while package--downloads-in-progress
+                 (accept-process-output nil 1))
+               nil))
+            (goto-char (point-min))
+            (should
+             (search-forward-regexp "^ +simple-single" nil t)))
+        (kill-process process)))))
+
 (ert-deftest package-test-describe-package ()
   "Test displaying help for a package."
 
diff --git a/test/automated/process-tests.el b/test/automated/process-tests.el
index dabfbc5..1dab615 100644
--- a/test/automated/process-tests.el
+++ b/test/automated/process-tests.el
@@ -72,4 +72,74 @@
               (should (string= (buffer-string) "arg1 = \"x &y\", arg2 = \n"))))
         (when batfile (delete-file batfile))))))
 
+(ert-deftest process-test-stderr-buffer ()
+  (skip-unless (executable-find "bash"))
+  (let* ((stdout-buffer (generate-new-buffer "*stdout*"))
+        (stderr-buffer (generate-new-buffer "*stderr*"))
+        (proc (make-process :name "test"
+                            :command (list "bash" "-c"
+                                           (concat "echo hello stdout!; "
+                                                   "echo hello stderr! >&2; "
+                                                   "exit 20"))
+                            :buffer stdout-buffer
+                            :stderr stderr-buffer))
+        (sentinel-called nil)
+        (start-time (float-time)))
+    (set-process-sentinel proc (lambda (proc msg)
+                                (setq sentinel-called t)))
+    (while (not (or sentinel-called
+                   (> (- (float-time) start-time)
+                      process-test-sentinel-wait-timeout)))
+      (accept-process-output))
+    (cl-assert (eq (process-status proc) 'exit))
+    (cl-assert (= (process-exit-status proc) 20))
+    (should (with-current-buffer stdout-buffer
+             (goto-char (point-min))
+             (looking-at "hello stdout!")))
+    (should (with-current-buffer stderr-buffer
+             (goto-char (point-min))
+             (looking-at "hello stderr!")))))
+
+(ert-deftest process-test-stderr-filter ()
+  (skip-unless (executable-find "bash"))
+  (let* ((sentinel-called nil)
+        (stderr-sentinel-called nil)
+        (stdout-output nil)
+        (stderr-output nil)
+        (stdout-buffer (generate-new-buffer "*stdout*"))
+        (stderr-buffer (generate-new-buffer "*stderr*"))
+        (stderr-proc (make-pipe-process :name "stderr"
+                                        :buffer stderr-buffer))
+        (proc (make-process :name "test" :buffer stdout-buffer
+                            :command (list "bash" "-c"
+                                           (concat "echo hello stdout!; "
+                                                   "echo hello stderr! >&2; "
+                                                   "exit 20"))
+                            :stderr stderr-proc))
+        (start-time (float-time)))
+    (set-process-filter proc (lambda (proc input)
+                              (push input stdout-output)))
+    (set-process-sentinel proc (lambda (proc msg)
+                                (setq sentinel-called t)))
+    (set-process-filter stderr-proc (lambda (proc input)
+                                     (push input stderr-output)))
+    (set-process-sentinel stderr-proc (lambda (proc input)
+                                       (setq stderr-sentinel-called t)))
+    (while (not (or sentinel-called
+                   (> (- (float-time) start-time)
+                      process-test-sentinel-wait-timeout)))
+      (accept-process-output))
+    (cl-assert (eq (process-status proc) 'exit))
+    (cl-assert (= (process-exit-status proc) 20))
+    (should sentinel-called)
+    (should (equal 1 (with-current-buffer stdout-buffer
+                      (point-max))))
+    (should (equal "hello stdout!\n"
+                  (mapconcat #'identity (nreverse stdout-output) "")))
+    (should stderr-sentinel-called)
+    (should (equal 1 (with-current-buffer stderr-buffer
+                      (point-max))))
+    (should (equal "hello stderr!\n"
+                  (mapconcat #'identity (nreverse stderr-output) "")))))
+
 (provide 'process-tests)
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index b377a26..ae4323b 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -1014,7 +1014,7 @@ lines
 def fn(a, b, c=True):
     '''docstring
     bunch
-    of
+        of
     lines
     '''
 "
@@ -1022,16 +1022,17 @@ def fn(a, b, c=True):
    (should (eq (car (python-indent-context)) :after-block-start))
    (should (= (python-indent-calculate-indentation) 4))
    (python-tests-look-at "bunch")
-   (should (eq (car (python-indent-context)) :inside-string))
+   (should (eq (car (python-indent-context)) :inside-docstring))
    (should (= (python-indent-calculate-indentation) 4))
    (python-tests-look-at "of")
-   (should (eq (car (python-indent-context)) :inside-string))
-   (should (= (python-indent-calculate-indentation) 4))
+   (should (eq (car (python-indent-context)) :inside-docstring))
+   ;; Any indentation deeper than the base-indent must remain unmodified.
+   (should (= (python-indent-calculate-indentation) 8))
    (python-tests-look-at "lines")
-   (should (eq (car (python-indent-context)) :inside-string))
+   (should (eq (car (python-indent-context)) :inside-docstring))
    (should (= (python-indent-calculate-indentation) 4))
    (python-tests-look-at "'''")
-   (should (eq (car (python-indent-context)) :inside-string))
+   (should (eq (car (python-indent-context)) :inside-docstring))
    (should (= (python-indent-calculate-indentation) 4))))
 
 (ert-deftest python-indent-inside-string-3 ()
@@ -1189,21 +1190,33 @@ def f():
                       expected)))))
 
 (ert-deftest python-indent-region-5 ()
-  "Test region indentation leaves strings untouched (start delimiter)."
+  "Test region indentation for docstrings."
   (let ((contents "
 def f():
 '''
 this is
-a multiline
+        a multiline
 string
 '''
+    x = \\
+        '''
+this is an arbitrarily
+    indented multiline
+ string
+'''
 ")
         (expected "
 def f():
     '''
-this is
-a multiline
-string
+    this is
+        a multiline
+    string
+    '''
+    x = \\
+        '''
+this is an arbitrarily
+    indented multiline
+ string
 '''
 "))
     (python-tests-with-temp-buffer
@@ -1985,19 +1998,36 @@ c()
    (should (save-excursion
              (beginning-of-line)
              (looking-at "c()")))
-   ;; Movement next to a paren should do what lisp does and
-   ;; unfortunately It can't change, because otherwise
-   ;; `blink-matching-open' breaks.
+   ;; The default behavior when next to a paren should do what lisp
+   ;; does and, otherwise `blink-matching-open' breaks.
    (python-nav-forward-sexp -1)
    (should (looking-at "()"))
    (should (save-excursion
              (beginning-of-line)
              (looking-at "c()")))
-   (python-nav-forward-sexp -1)
+   (end-of-line)
+   ;; Skipping parens should jump to `bolp'
+   (python-nav-forward-sexp -1 nil t)
    (should (looking-at "c()"))
+   (forward-line -1)
+   (end-of-line)
+   ;; b()
+   (python-nav-forward-sexp -1)
+   (should (looking-at "()"))
    (python-nav-forward-sexp -1)
    (should (looking-at "b()"))
+   (end-of-line)
+   (python-nav-forward-sexp -1 nil t)
+   (should (looking-at "b()"))
+   (forward-line -1)
+   (end-of-line)
+   ;; a()
    (python-nav-forward-sexp -1)
+   (should (looking-at "()"))
+   (python-nav-forward-sexp -1)
+   (should (looking-at "a()"))
+   (end-of-line)
+   (python-nav-forward-sexp -1 nil t)
    (should (looking-at "a()"))))
 
 (ert-deftest python-nav-forward-sexp-2 ()
@@ -4273,6 +4303,49 @@ def foo(a,
    (python-tests-look-at "c):")
    (should (not (python-info-block-continuation-line-p)))))
 
+(ert-deftest python-info-assignment-statement-p-1 ()
+  (python-tests-with-temp-buffer
+   "
+data = foo(), bar() \\\\
+       baz(), 4 \\\\
+       5, 6
+"
+   (python-tests-look-at "data = foo(), bar()")
+   (should (python-info-assignment-statement-p))
+   (should (python-info-assignment-statement-p t))
+   (python-tests-look-at "baz(), 4")
+   (should (python-info-assignment-statement-p))
+   (should (not (python-info-assignment-statement-p t)))
+   (python-tests-look-at "5, 6")
+   (should (python-info-assignment-statement-p))
+   (should (not (python-info-assignment-statement-p t)))))
+
+(ert-deftest python-info-assignment-statement-p-2 ()
+  (python-tests-with-temp-buffer
+   "
+data = (foo(), bar()
+        baz(), 4
+        5, 6)
+"
+   (python-tests-look-at "data = (foo(), bar()")
+   (should (python-info-assignment-statement-p))
+   (should (python-info-assignment-statement-p t))
+   (python-tests-look-at "baz(), 4")
+   (should (python-info-assignment-statement-p))
+   (should (not (python-info-assignment-statement-p t)))
+   (python-tests-look-at "5, 6)")
+   (should (python-info-assignment-statement-p))
+   (should (not (python-info-assignment-statement-p t)))))
+
+(ert-deftest python-info-assignment-statement-p-3 ()
+  (python-tests-with-temp-buffer
+   "
+data '=' 42
+"
+   (python-tests-look-at "data '=' 42")
+   (should (not (python-info-assignment-statement-p)))
+   (should (not (python-info-assignment-statement-p t)))))
+
 (ert-deftest python-info-assignment-continuation-line-p-1 ()
   (python-tests-with-temp-buffer
    "
@@ -4360,6 +4433,136 @@ foo = True  # another comment
    (forward-line 1)
    (should (python-info-current-line-empty-p))))
 
+(ert-deftest python-info-docstring-p-1 ()
+  "Test module docstring detection."
+  (python-tests-with-temp-buffer
+   "# -*- coding: utf-8 -*-
+#!/usr/bin/python
+
+'''
+Module Docstring Django style.
+'''
+u'''Additional module docstring.'''
+'''Not a module docstring.'''
+"
+   (python-tests-look-at "Module Docstring Django style.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "u'''Additional module docstring.'''")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a module docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
+(ert-deftest python-info-docstring-p-2 ()
+  "Test variable docstring detection."
+  (python-tests-with-temp-buffer
+   "
+variable = 42
+U'''Variable docstring.'''
+'''Additional variable docstring.'''
+'''Not a variable docstring.'''
+"
+   (python-tests-look-at "Variable docstring.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "u'''Additional variable docstring.'''")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a variable docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
+(ert-deftest python-info-docstring-p-3 ()
+  "Test function docstring detection."
+  (python-tests-with-temp-buffer
+   "
+def func(a, b):
+    r'''
+    Function docstring.
+
+    onetwo style.
+    '''
+    R'''Additional function docstring.'''
+    '''Not a function docstring.'''
+    return a + b
+"
+   (python-tests-look-at "Function docstring.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "R'''Additional function docstring.'''")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a function docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
+(ert-deftest python-info-docstring-p-4 ()
+  "Test class docstring detection."
+  (python-tests-with-temp-buffer
+   "
+class Class:
+    ur'''
+    Class docstring.
+
+    symmetric style.
+    '''
+    uR'''
+    Additional class docstring.
+    '''
+    '''Not a class docstring.'''
+    pass
+"
+   (python-tests-look-at "Class docstring.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "uR'''")  ;; Additional class docstring
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a class docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
+(ert-deftest python-info-docstring-p-5 ()
+  "Test class attribute docstring detection."
+  (python-tests-with-temp-buffer
+   "
+class Class:
+    attribute = 42
+    Ur'''
+    Class attribute docstring.
+
+    pep-257 style.
+
+    '''
+    UR'''
+    Additional class attribute docstring.
+    '''
+    '''Not a class attribute docstring.'''
+    pass
+"
+   (python-tests-look-at "Class attribute docstring.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "UR'''")  ;; Additional class attr docstring
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a class attribute docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
+(ert-deftest python-info-docstring-p-6 ()
+  "Test class method docstring detection."
+  (python-tests-with-temp-buffer
+   "
+class Class:
+
+    def __init__(self, a, b):
+        self.a = a
+        self.b = b
+
+    def __call__(self):
+        '''Method docstring.
+
+        pep-257-nn style.
+        '''
+        '''Additional method docstring.'''
+        '''Not a method docstring.'''
+        return self.a + self.b
+"
+   (python-tests-look-at "Method docstring.")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Additional method docstring.'''")
+   (should (python-info-docstring-p))
+   (python-tests-look-at "'''Not a method docstring.'''")
+   (should (not (python-info-docstring-p)))))
+
 (ert-deftest python-info-encoding-from-cookie-1 ()
   "Should detect it on first line."
   (python-tests-with-temp-buffer
diff --git a/test/automated/seq-tests.el b/test/automated/seq-tests.el
index d3536b6..7f6e06c 100644
--- a/test/automated/seq-tests.el
+++ b/test/automated/seq-tests.el
@@ -250,5 +250,31 @@ Evaluate BODY for each created sequence.
     (should (same-contents-p list vector))
     (should (vectorp vector))))
 
+(ert-deftest test-seq-intersection ()
+  (let ((v1 [2 3 4 5])
+        (v2 [1 3 5 6 7]))
+    (should (same-contents-p (seq-intersection v1 v2)
+                             '(3 5))))
+  (let ((l1 '(2 3 4 5))
+        (l2 '(1 3 5 6 7)))
+    (should (same-contents-p (seq-intersection l1 l2)
+                             '(3 5))))
+  (let ((v1 [2 4 6])
+        (v2 [1 3 5]))
+    (should (seq-empty-p (seq-intersection v1 v2)))))
+
+(ert-deftest test-seq-difference ()
+  (let ((v1 [2 3 4 5])
+        (v2 [1 3 5 6 7]))
+    (should (same-contents-p (seq-difference v1 v2)
+                             '(2 4))))
+  (let ((l1 '(2 3 4 5))
+        (l2 '(1 3 5 6 7)))
+    (should (same-contents-p (seq-difference l1 l2)
+                             '(2 4))))
+  (let ((v1 [2 4 6])
+        (v2 [2 4 6]))
+    (should (seq-empty-p (seq-difference v1 v2)))))
+
 (provide 'seq-tests)
 ;;; seq-tests.el ends here
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el
index cc2c753..5bb05dc 100644
--- a/test/automated/tramp-tests.el
+++ b/test/automated/tramp-tests.el
@@ -981,9 +981,14 @@ This tests also `file-directory-p' and 
`file-accessible-directory-p'."
 This tests also `file-readable-p' and `file-regular-p'."
   (skip-unless (tramp--test-enabled))
 
-  (let ((tmp-name1 (tramp--test-make-temp-name))
-       (tmp-name2 (tramp--test-make-temp-name))
-       attr)
+  ;; We must use `file-truename' for the temporary directory, because
+  ;; it could be located on a symlinked directory.  This would let the
+  ;; test fail.
+  (let* ((tramp-test-temporary-file-directory
+         (file-truename tramp-test-temporary-file-directory))
+        (tmp-name1 (tramp--test-make-temp-name))
+        (tmp-name2 (tramp--test-make-temp-name))
+        attr)
     (unwind-protect
        (progn
          (write-region "foo" nil tmp-name1)
@@ -1535,9 +1540,14 @@ This requires restrictions of file name syntax."
 
 (defun tramp--test-check-files (&rest files)
   "Run a simple but comprehensive test over every file in FILES."
-  (let ((tmp-name1 (tramp--test-make-temp-name))
-       (tmp-name2 (tramp--test-make-temp-name 'local))
-       (files (delq nil files)))
+  ;; We must use `file-truename' for the temporary directory, because
+  ;; it could be located on a symlinked directory.  This would let the
+  ;; test fail.
+  (let* ((tramp-test-temporary-file-directory
+         (file-truename tramp-test-temporary-file-directory))
+        (tmp-name1 (tramp--test-make-temp-name))
+        (tmp-name2 (tramp--test-make-temp-name 'local))
+        (files (delq nil files)))
     (unwind-protect
        (progn
          (make-directory tmp-name1)
diff --git a/test/indent/css-mode.css b/test/indent/css-mode.css
index 564ac16..faf9153 100644
--- a/test/indent/css-mode.css
+++ b/test/indent/css-mode.css
@@ -8,6 +8,21 @@ article[role="main"] {
     width: 60%;
 }
 
+a, b:hover, c {
+    color: black;
+}
+
+a, b:hover {                    /* bug:20282 */
+    c {
+        color: black;
+    }
+    color: black;
+}
+
+a.b:c,d.e:f,g[h]:i,j[k]:l,.m.n:o,.p.q:r,.s[t]:u,.v[w]:x { /* bug:20282 */
+    background-color: white;
+}
+
 /* asdfasdf */
 @foo x2 {
     bla:toto;
diff --git a/test/indent/js.js b/test/indent/js.js
index ad7cb56..2120233 100644
--- a/test/indent/js.js
+++ b/test/indent/js.js
@@ -64,6 +64,11 @@ b +=
 baz(`http://foo.bar/${tee}`)
   .qux();
 
+`multiline string
+       contents
+  are kept
+        unchanged!`
+
 // Local Variables:
 // indent-tabs-mode: nil
 // js-indent-level: 2
diff --git a/test/indent/perl.perl b/test/indent/perl.perl
index 00ef312..ea48754 100755
--- a/test/indent/perl.perl
+++ b/test/indent/perl.perl
@@ -5,6 +5,15 @@ sub add_funds($) {
     return 0;
 }
 
+my $hash = {
+    foo => 'bar',
+    format => 'some',
+};
+
+sub some_code {
+    print "will not indent :(";
+};
+
 use v5.14;
 
 my $str= <<END;



reply via email to

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