emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.or


From: Kenichi Handa
Subject: [Emacs-diffs] master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Date: Mon, 05 Oct 2015 14:00:17 +0000

branch: master
commit 94ed5167557112fb00eeca05e62589db744206de
Merge: 33f2e00 10e7f7d
Author: K. Handa <address@hidden>
Commit: K. Handa <address@hidden>

    Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
---
 ChangeLog.2                              |  634 +++++++++++++++++++++++++++++-
 admin/unidata/unidata-gen.el             |    2 +-
 doc/emacs/building.texi                  |    2 +-
 doc/emacs/custom.texi                    |    2 +-
 doc/emacs/emacs.texi                     |   20 +-
 doc/emacs/files.texi                     |    2 +-
 doc/emacs/help.texi                      |    2 +-
 doc/emacs/package.texi                   |    2 +-
 doc/emacs/picture-xtra.texi              |    2 +-
 doc/emacs/programs.texi                  |    1 -
 doc/emacs/search.texi                    |    4 +-
 doc/emacs/text.texi                      |    4 +-
 doc/emacs/trouble.texi                   |    8 +-
 doc/lispintro/emacs-lisp-intro.texi      |   38 +-
 doc/lispref/anti.texi                    |    4 +-
 doc/lispref/buffers.texi                 |    2 +-
 doc/lispref/control.texi                 |    2 +-
 doc/lispref/display.texi                 |    8 +-
 doc/lispref/elisp.texi                   |   14 +-
 doc/lispref/eval.texi                    |    2 +-
 doc/lispref/files.texi                   |    4 +-
 doc/lispref/frames.texi                  |    2 +-
 doc/lispref/functions.texi               |    4 +-
 doc/lispref/help.texi                    |    8 +-
 doc/lispref/loading.texi                 |    2 +-
 doc/lispref/markers.texi                 |    4 +-
 doc/lispref/modes.texi                   |   14 +-
 doc/lispref/os.texi                      |   29 +--
 doc/lispref/package.texi                 |    6 +-
 doc/lispref/processes.texi               |    4 +-
 doc/lispref/sequences.texi               |   25 +-
 doc/lispref/strings.texi                 |   30 +-
 doc/lispref/text.texi                    |    4 +-
 doc/lispref/tips.texi                    |    8 +-
 doc/lispref/variables.texi               |    2 +-
 doc/misc/ede.texi                        |    6 +-
 doc/misc/efaq.texi                       |    2 +-
 doc/misc/eieio.texi                      |    2 +-
 doc/misc/ert.texi                        |    2 +-
 doc/misc/gnus-faq.texi                   |   24 +-
 doc/misc/gnus.texi                       |   11 +-
 doc/misc/rcirc.texi                      |    2 +-
 doc/misc/tramp.texi                      |   18 +
 doc/misc/viper.texi                      |    2 +-
 etc/NEWS                                 |   32 +-
 lisp/abbrev.el                           |    2 +-
 lisp/align.el                            |    2 +-
 lisp/allout-widgets.el                   |   10 +-
 lisp/allout.el                           |   24 +-
 lisp/apropos.el                          |    2 +-
 lisp/bookmark.el                         |    4 +-
 lisp/bs.el                               |    2 +-
 lisp/button.el                           |    6 +-
 lisp/calc/calc-aent.el                   |   10 +-
 lisp/calc/calc-embed.el                  |    2 +-
 lisp/calc/calc-ext.el                    |    2 +-
 lisp/calc/calc-graph.el                  |    2 +-
 lisp/calc/calc-help.el                   |   16 +-
 lisp/calc/calc-lang.el                   |   42 +-
 lisp/calc/calc-misc.el                   |    4 +-
 lisp/calc/calc-mode.el                   |   12 +-
 lisp/calc/calc-prog.el                   |   14 +-
 lisp/calc/calc-store.el                  |    2 +-
 lisp/calc/calc-units.el                  |    6 +-
 lisp/calc/calc-vec.el                    |    4 +-
 lisp/calc/calc-yank.el                   |    4 +-
 lisp/calc/calc.el                        |   12 +-
 lisp/calculator.el                       |    2 +-
 lisp/calendar/appt.el                    |    2 +-
 lisp/calendar/cal-bahai.el               |   74 ++--
 lisp/calendar/cal-hebrew.el              |    2 +-
 lisp/calendar/cal-menu.el                |    4 +-
 lisp/calendar/cal-tex.el                 |    2 +-
 lisp/calendar/calendar.el                |   22 +-
 lisp/calendar/diary-lib.el               |   18 +-
 lisp/calendar/holidays.el                |   18 +-
 lisp/calendar/icalendar.el               |   14 +-
 lisp/calendar/time-date.el               |    4 +-
 lisp/calendar/timeclock.el               |   10 +-
 lisp/calendar/todo-mode.el               |   22 +-
 lisp/cedet/cedet-global.el               |    2 +-
 lisp/cedet/ede.el                        |    2 +-
 lisp/cedet/ede/auto.el                   |    6 +-
 lisp/cedet/ede/pmake.el                  |    2 +-
 lisp/cedet/inversion.el                  |    4 +-
 lisp/cedet/mode-local.el                 |   12 +-
 lisp/cedet/semantic/analyze.el           |    6 +-
 lisp/cedet/semantic/analyze/complete.el  |    6 +-
 lisp/cedet/semantic/bovine/gcc.el        |    6 +-
 lisp/cedet/semantic/complete.el          |    4 +-
 lisp/cedet/semantic/db-find.el           |    2 +-
 lisp/cedet/semantic/decorate/include.el  |    2 +-
 lisp/cedet/semantic/fw.el                |    8 +-
 lisp/cedet/semantic/java.el              |    2 +-
 lisp/cedet/semantic/tag-ls.el            |   10 +-
 lisp/cedet/semantic/wisent/javascript.el |   12 +-
 lisp/cedet/srecode/insert.el             |    6 +-
 lisp/cedet/srecode/srt-mode.el           |    4 +-
 lisp/comint.el                           |    2 +-
 lisp/cus-edit.el                         |    2 +-
 lisp/cus-start.el                        |    2 +-
 lisp/cus-theme.el                        |    4 +-
 lisp/custom.el                           |   12 +-
 lisp/descr-text.el                       |   32 +-
 lisp/dired-x.el                          |    8 +-
 lisp/dired.el                            |    6 +-
 lisp/electric.el                         |   12 +-
 lisp/emacs-lisp/advice.el                |   42 +-
 lisp/emacs-lisp/byte-opt.el              |   24 +-
 lisp/emacs-lisp/byte-run.el              |    4 +-
 lisp/emacs-lisp/bytecomp.el              |   88 +++--
 lisp/emacs-lisp/cconv.el                 |    6 +-
 lisp/emacs-lisp/chart.el                 |    2 +-
 lisp/emacs-lisp/check-declare.el         |   10 +-
 lisp/emacs-lisp/checkdoc.el              |   29 +-
 lisp/emacs-lisp/cl-extra.el              |   22 +-
 lisp/emacs-lisp/cl-generic.el            |   10 +-
 lisp/emacs-lisp/cl-macs.el               |   36 +-
 lisp/emacs-lisp/cl.el                    |    8 +-
 lisp/emacs-lisp/copyright.el             |    4 +-
 lisp/emacs-lisp/disass.el                |   63 ++--
 lisp/emacs-lisp/edebug.el                |    2 +-
 lisp/emacs-lisp/eieio-base.el            |    2 +-
 lisp/emacs-lisp/eieio-core.el            |   19 +-
 lisp/emacs-lisp/eieio-opt.el             |    4 +-
 lisp/emacs-lisp/eieio-speedbar.el        |    4 +-
 lisp/emacs-lisp/eieio.el                 |   17 +-
 lisp/emacs-lisp/elint.el                 |   16 +-
 lisp/emacs-lisp/ert.el                   |   23 +-
 lisp/emacs-lisp/find-func.el             |    6 +-
 lisp/emacs-lisp/generator.el             |    2 +-
 lisp/emacs-lisp/gv.el                    |    2 +-
 lisp/emacs-lisp/lisp-mnt.el              |   14 +-
 lisp/emacs-lisp/macroexp.el              |    4 +-
 lisp/emacs-lisp/map-ynp.el               |    6 +-
 lisp/emacs-lisp/map.el                   |   13 +-
 lisp/emacs-lisp/nadvice.el               |    6 +-
 lisp/emacs-lisp/package-x.el             |    2 +-
 lisp/emacs-lisp/package.el               |  186 +++++----
 lisp/emacs-lisp/pcase.el                 |   10 +-
 lisp/emacs-lisp/re-builder.el            |    2 +-
 lisp/emacs-lisp/regexp-opt.el            |    2 +-
 lisp/emacs-lisp/ring.el                  |    4 +-
 lisp/emacs-lisp/rx.el                    |   38 +-
 lisp/emacs-lisp/seq.el                   |   32 +-
 lisp/emacs-lisp/smie.el                  |    6 +-
 lisp/emacs-lisp/subr-x.el                |    2 +-
 lisp/emacs-lisp/tabulated-list.el        |    2 +-
 lisp/emacs-lisp/testcover.el             |    2 +-
 lisp/emacs-lisp/timer.el                 |    2 +-
 lisp/emulation/viper-cmd.el              |   10 +-
 lisp/emulation/viper-init.el             |    2 +-
 lisp/emulation/viper-keym.el             |    2 +-
 lisp/emulation/viper-macs.el             |    8 +-
 lisp/env.el                              |    4 +-
 lisp/erc/erc-backend.el                  |   14 +-
 lisp/erc/erc-button.el                   |    2 +-
 lisp/erc/erc-dcc.el                      |    2 +-
 lisp/erc/erc.el                          |   18 +-
 lisp/eshell/em-dirs.el                   |    4 +-
 lisp/eshell/em-glob.el                   |    6 +-
 lisp/eshell/em-pred.el                   |   22 +-
 lisp/eshell/em-script.el                 |    4 +-
 lisp/eshell/esh-opt.el                   |    2 +-
 lisp/eshell/esh-util.el                  |    2 +-
 lisp/eshell/esh-var.el                   |    2 +-
 lisp/facemenu.el                         |   10 +-
 lisp/faces.el                            |   32 +-
 lisp/ffap.el                             |    6 +-
 lisp/filenotify.el                       |  114 +++---
 lisp/files-x.el                          |    2 +-
 lisp/files.el                            |   38 +-
 lisp/filesets.el                         |   34 +-
 lisp/find-cmd.el                         |    4 +-
 lisp/finder.el                           |    2 +-
 lisp/font-lock.el                        |    9 +-
 lisp/format.el                           |    6 +-
 lisp/frame.el                            |    4 +-
 lisp/fringe.el                           |    2 +-
 lisp/gnus/gmm-utils.el                   |    2 +-
 lisp/gnus/gnus-art.el                    |   22 +-
 lisp/gnus/gnus-registry.el               |    6 +-
 lisp/gnus/gnus-start.el                  |    3 +-
 lisp/gnus/gnus-sum.el                    |    2 +-
 lisp/gnus/gnus-uu.el                     |    2 +-
 lisp/gnus/gnus.el                        |    4 +-
 lisp/gnus/mail-source.el                 |   11 +-
 lisp/gnus/message.el                     |    2 +-
 lisp/gnus/nnimap.el                      |    6 +-
 lisp/gnus/nnir.el                        |   20 +-
 lisp/gnus/nnmail.el                      |    4 +-
 lisp/gnus/nnmairix.el                    |    4 +-
 lisp/gnus/nntp.el                        |    2 +-
 lisp/help-fns.el                         |   72 ++--
 lisp/help.el                             |   10 +-
 lisp/hi-lock.el                          |    2 +-
 lisp/htmlfontify.el                      |   10 +-
 lisp/ibuffer.el                          |    2 +-
 lisp/ido.el                              |    4 +-
 lisp/image.el                            |    4 +-
 lisp/info.el                             |    6 +-
 lisp/international/ccl.el                |    3 +-
 lisp/international/fontset.el            |    2 +-
 lisp/international/mule-cmds.el          |   30 +-
 lisp/international/mule-conf.el          |    8 +-
 lisp/international/mule-diag.el          |   14 +-
 lisp/international/ogonek.el             |   26 +-
 lisp/json.el                             |    2 +-
 lisp/kermit.el                           |    2 +-
 lisp/leim/quail/cyrillic.el              |    6 +-
 lisp/leim/quail/hebrew.el                |   16 +-
 lisp/leim/quail/latin-ltx.el             |    8 +-
 lisp/leim/quail/thai.el                  |    6 +-
 lisp/leim/quail/tibetan.el               |   12 +-
 lisp/ls-lisp.el                          |    2 +-
 lisp/mail/feedmail.el                    |   16 +-
 lisp/mail/mailalias.el                   |    6 +-
 lisp/mail/rfc2368.el                     |    8 +-
 lisp/mail/sendmail.el                    |   28 +-
 lisp/man.el                              |    2 +-
 lisp/mh-e/mh-comp.el                     |    2 +-
 lisp/mh-e/mh-compat.el                   |    2 +-
 lisp/mh-e/mh-e.el                        |    6 +-
 lisp/mh-e/mh-seq.el                      |    4 +-
 lisp/mh-e/mh-utils.el                    |   10 +-
 lisp/mouse-copy.el                       |    2 +-
 lisp/mouse-drag.el                       |    4 +-
 lisp/mouse.el                            |    2 +-
 lisp/mpc.el                              |   12 +-
 lisp/msb.el                              |    2 +-
 lisp/net/ange-ftp.el                     |    4 +-
 lisp/net/browse-url.el                   |    2 +-
 lisp/net/imap.el                         |    4 +-
 lisp/net/mairix.el                       |    4 +-
 lisp/net/newst-backend.el                |    4 +-
 lisp/net/newst-treeview.el               |    4 +-
 lisp/net/ntlm.el                         |  159 ++++++--
 lisp/net/rcirc.el                        |    2 +-
 lisp/net/rlogin.el                       |    2 +-
 lisp/net/soap-client.el                  |    2 +-
 lisp/net/tls.el                          |    2 +-
 lisp/net/tramp.el                        |    6 +-
 lisp/obsolete/fast-lock.el               |    4 +-
 lisp/obsolete/iswitchb.el                |    2 +-
 lisp/obsolete/landmark.el                |    2 +-
 lisp/obsolete/lazy-lock.el               |    2 +-
 lisp/obsolete/otodo-mode.el              |    2 +-
 lisp/obsolete/pgg-gpg.el                 |    2 +-
 lisp/obsolete/pgg-pgp.el                 |    2 +-
 lisp/obsolete/pgg-pgp5.el                |    2 +-
 lisp/obsolete/sym-comp.el                |    6 +-
 lisp/obsolete/tpu-edt.el                 |    4 +-
 lisp/obsolete/vi.el                      |    2 +-
 lisp/org/ob-core.el                      |    6 +-
 lisp/org/ob-fortran.el                   |    2 +-
 lisp/org/ob-python.el                    |    2 +-
 lisp/org/ob-ref.el                       |    2 +-
 lisp/org/ob-scheme.el                    |    2 +-
 lisp/org/org-agenda.el                   |   18 +-
 lisp/org/org-bibtex.el                   |    8 +-
 lisp/org/org-capture.el                  |    4 +-
 lisp/org/org-clock.el                    |    4 +-
 lisp/org/org-ctags.el                    |    2 +-
 lisp/org/org-feed.el                     |    2 +-
 lisp/org/org-habit.el                    |    2 +-
 lisp/org/org-irc.el                      |    2 +-
 lisp/org/org-mouse.el                    |    8 +-
 lisp/org/org-plot.el                     |    2 +-
 lisp/org/org-protocol.el                 |   18 +-
 lisp/org/org-src.el                      |    6 +-
 lisp/org/org-table.el                    |    6 +-
 lisp/org/org.el                          |   20 +-
 lisp/org/ox.el                           |   12 +-
 lisp/pcmpl-cvs.el                        |    4 +-
 lisp/play/bubbles.el                     |   10 +-
 lisp/play/gomoku.el                      |    2 +-
 lisp/proced.el                           |    2 +-
 lisp/progmodes/ada-mode.el               |   28 +-
 lisp/progmodes/ada-prj.el                |    6 +-
 lisp/progmodes/ada-xref.el               |    2 +-
 lisp/progmodes/cc-engine.el              |   18 +-
 lisp/progmodes/cc-langs.el               |   12 +-
 lisp/progmodes/cc-vars.el                |    2 +-
 lisp/progmodes/cperl-mode.el             |    2 +-
 lisp/progmodes/ebrowse.el                |    2 +-
 lisp/progmodes/elisp-mode.el             |    2 +-
 lisp/progmodes/etags.el                  |    4 +-
 lisp/progmodes/f90.el                    |    2 +-
 lisp/progmodes/flymake.el                |    6 +-
 lisp/progmodes/fortran.el                |    8 +-
 lisp/progmodes/gdb-mi.el                 |   18 +-
 lisp/progmodes/idlw-shell.el             |   22 +-
 lisp/progmodes/idlwave.el                |   22 +-
 lisp/progmodes/make-mode.el              |    2 +-
 lisp/progmodes/prolog.el                 |   12 +-
 lisp/progmodes/python.el                 |    6 +-
 lisp/progmodes/sql.el                    |    2 +-
 lisp/progmodes/verilog-mode.el           |   22 +-
 lisp/progmodes/vhdl-mode.el              |   20 +-
 lisp/progmodes/xref.el                   |    4 +-
 lisp/recentf.el                          |    2 +-
 lisp/replace.el                          |    8 +-
 lisp/scroll-bar.el                       |    2 +-
 lisp/server.el                           |    2 +-
 lisp/simple.el                           |   36 +-
 lisp/speedbar.el                         |    8 +-
 lisp/startup.el                          |   58 ++--
 lisp/subr.el                             |   14 +-
 lisp/term/common-win.el                  |    6 +-
 lisp/term/x-win.el                       |    4 +-
 lisp/textmodes/ispell.el                 |    4 +-
 lisp/textmodes/reftex-ref.el             |    2 +-
 lisp/textmodes/reftex-toc.el             |    2 +-
 lisp/textmodes/reftex-vars.el            |    6 +-
 lisp/textmodes/reftex.el                 |    4 +-
 lisp/textmodes/rst.el                    |    6 +-
 lisp/textmodes/sgml-mode.el              |    2 +-
 lisp/textmodes/table.el                  |   24 +-
 lisp/textmodes/tex-mode.el               |    2 +
 lisp/textmodes/texnfo-upd.el             |    2 +-
 lisp/textmodes/tildify.el                |    2 +-
 lisp/textmodes/two-column.el             |    2 +-
 lisp/thingatpt.el                        |    4 +-
 lisp/thumbs.el                           |    2 +-
 lisp/tree-widget.el                      |    6 +-
 lisp/tutorial.el                         |   10 +-
 lisp/type-break.el                       |    2 +-
 lisp/url/url-util.el                     |    2 +-
 lisp/url/url-vars.el                     |    6 +-
 lisp/vc/ediff-mult.el                    |    5 +-
 lisp/vc/ediff-ptch.el                    |    2 +-
 lisp/vc/vc-git.el                        |    4 +-
 lisp/vc/vc-hooks.el                      |   28 +-
 lisp/wdired.el                           |    8 +-
 lisp/whitespace.el                       |    8 +-
 lisp/widget.el                           |    2 +-
 lisp/window.el                           |    2 +-
 lisp/woman.el                            |   12 +-
 src/dispextern.h                         |    1 +
 src/doc.c                                |   14 +-
 src/editfns.c                            |    4 +-
 src/keyboard.c                           |   46 ++-
 src/keyboard.h                           |    5 +-
 src/process.c                            |   12 +-
 src/w32.c                                |   33 ++-
 src/xdisp.c                              |   22 +-
 src/xfaces.c                             |    2 +
 test/automated/Makefile.in               |    8 +-
 test/automated/flymake-tests.el          |    1 +
 test/automated/map-tests.el              |   44 +--
 test/automated/python-tests.el           |   21 +-
 test/automated/seq-tests.el              |   21 +-
 test/automated/textprop-tests.el         |    2 +-
 test/automated/tildify-tests.el          |    3 +
 354 files changed, 2575 insertions(+), 1704 deletions(-)

diff --git a/ChangeLog.2 b/ChangeLog.2
index 856cb58..c4912f7 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -1,3 +1,635 @@
+2015-09-05  Paul Eggert  <address@hidden>
+
+       Spelling fix (Bug#21420)
+
+2015-09-05  Nicolas Petton  <address@hidden>
+
+       Improve the semantic of map-some
+       Update map-some to return the returned by the predicate, similar to
+       seq-some.
+       * lisp/emacs-lisp/map.el (map-some): Update the function to return the
+         return value of the predicate.
+       * test/automated/map-tests.el (test-map-some): Update the test to check
+         for non-nil values only.
+
+       Rename map-contains-key-p and map-some-p
+       Remove the "-p" suffix from both function names.
+       * lisp/emacs-lisp/map.el (map-contains-key, map-some): Rename the 
functions.
+       * test/automated/map-tests.el (test-map-contains-key, test-map-some):
+         Update both test functions.
+
+       Improve the semantic of seq-some
+       Update seq-some to return non-nil if the predicate returns non-nil for
+       any element of the seq, in which case the returned value is the one
+       returned by the predicate.
+       * lisp/emacs-lisp/seq.el (seq-some): Update the function and its
+         docstring.
+       * test/automated/seq-tests.el (test-seq-some): Add a regression test.
+       * doc/lispref/sequences.texi (Sequence Functions): Update the
+         documentation for seq-some.
+
+       Rename seq-some-p to seq-some and seq-contains-p to seq-contains
+       * lisp/emacs-lisp/seq.el (seq-some, seq-contains): Rename the functions
+         without the "-p" prefix.
+       * test/automated/seq-tests.el (test-seq-some, test-seq-contains): Update
+         the tests accordingly.
+       * doc/lispref/sequences.texi (Sequence Functions): Update the
+         documentation for seq.el.
+
+2015-09-05  Paul Eggert  <address@hidden>
+
+       text-quoting-style for usage of fn names with ‘’
+       * lisp/help.el (help--docstring-quote): Don’t assume
+       text-quoting-style is ‘curve’ when generating usage strings for
+       functions whose names contain curved quotes.
+
+2015-09-05  Paul Eggert  <address@hidden>
+
+       Fix fix for describe-function keybinding confusion
+       This fixes a bug introduced by the previous patch.
+       * lisp/help-fns.el (help-fns--signature):
+       Last arg of help-fns--signature is now a buffer, or nil if a
+       raw signature is wanted.  All callers changed.
+       (describe-function-1): Use this to do the right thing with signatures.
+
+2015-09-05  Johan Bockgård  <address@hidden>
+
+       * doc/lispref/frames.texi (Mouse Tracking): Fix typo.
+
+       Use PAT rather than UPAT in pcase macros
+       * lisp/emacs-lisp/cl-macs.el (cl-struct) <pcase-defmacro>:
+       * lisp/emacs-lisp/eieio.el (eieio) <pcase-defmacro>: Use PAT rather
+         than UPAT.
+
+2015-09-05  Paul Eggert  <address@hidden>
+
+       Fix describe-function keybinding confusion
+       * lisp/help-fns.el (describe-function-1): Compute signature
+       in the original buffer, not in standard-output, so that
+       substitute-command-keys uses the proper keybindings.
+       This fixes Bug#21412, introduced in commit
+       2015-06-11T10:23:address@hidden
+
+2015-09-05  Xue Fuqiao  <address@hidden>
+
+       * doc/emacs/programs.texi (Program Modes): Remove an index entry.
+
+2015-09-05  Robert Pluim  <address@hidden>  (tiny change)
+
+       Avoid read error messages from 'inotify'
+       * src/process.c (wait_reading_process_output): Add a
+       'tls_available' set and manipulate it instead of 'Available' when
+       checking TLS inputs.  Assign the value to 'Available' only if we
+       find any TLS data waiting to be read.  This avoids error messages
+       from 'inotify' that tries to read data it shouldn't.  (Bug#21337)
+
+2015-09-05  Eli Zaretskii  <address@hidden>
+
+       Avoid errors in thing-at-point with 2nd argument non-nil
+       * lisp/thingatpt.el (thing-at-point): Only call 'length' on
+       sequences.  (Bug#21391)
+
+2015-09-05  Philip  <address@hidden>  (tiny change)
+
+       Fix segfaults due to using a stale face ID
+       * src/xdisp.c (forget_escape_and_glyphless_faces): New function.
+       (display_echo_area_1, redisplay_internal): Call it to avoid
+       reusing stale face IDs for 'escape-glyph' and 'glyphless-char'
+       faces, which could case a segfault if the frame's face cache was
+       freed since the last redisplay.  (Bug#21394)
+       * src/xfaces.c (free_realized_faces): Call 
forget_escape_and_glyphless_faces.
+       * src/dispextern.h (forget_escape_and_glyphless_faces): Add prototype.
+
+2015-09-04  Paul Eggert  <address@hidden>
+
+       Fix minor problems with " in manual
+
+2015-09-04  Michael Albinus  <address@hidden>
+
+       * doc/misc/tramp.texi (Frequently Asked Questions): New item for ad-hoc
+       multi-hop files.
+
+2015-09-04  Paul Eggert  <address@hidden>
+
+       Support automated ‘make check’ in non-C locale
+       This lets the builder optionally test Emacs behavior in other locales.
+       The C locale is still the default for tests.
+       * test/automated/Makefile.in (TEST_LOCALE): New macro.
+       (emacs): Use it.
+       * test/automated/flymake-tests.el (flymake-tests--current-face):
+       Use C locale for subprocesses so that tests behave as expected.
+       * test/automated/python-tests.el:
+       (python-shell-prompt-validate-regexps-1)
+       (python-shell-prompt-validate-regexps-2)
+       (python-shell-prompt-validate-regexps-3)
+       (python-shell-prompt-validate-regexps-4)
+       (python-shell-prompt-validate-regexps-5)
+       (python-shell-prompt-validate-regexps-6)
+       (python-shell-prompt-set-calculated-regexps-1):
+       Adjust expected output to match locale.
+       * test/automated/tildify-tests.el (tildify-test--test)
+       (tildify-space-test--test, tildify-space-undo-test--test):
+       This test assumes UTF-8 encoding.
+
+2015-09-03  Paul Eggert  <address@hidden>
+
+       Fix some more docstring etc. quoting problems
+       Mostly these fixes prevent the transliteration of apostrophes
+       that should stay apostrophes.  Also, prefer curved quotes in
+       Bahá’í proper names, as that’s the preferred Bahá’í style and
+       these names are chock-full of non-ASCII characters anyway.
+       * lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
+       (eieio-defclass-internal):
+       * lisp/emacs-lisp/eieio.el (defclass):
+       * lisp/hi-lock.el (hi-lock-mode):
+       Don’t transliterate Lisp apostrophes when generating a
+       doc string or diagnostic.
+       * lisp/international/mule-diag.el (list-coding-systems-1):
+       * lisp/international/ogonek.el (ogonek-jak, ogonek-how):
+       * lisp/mail/sendmail.el (sendmail-query-user-about-smtp):
+       * lisp/vc/ediff-mult.el (ediff-redraw-registry-buffer):
+       * lisp/vc/ediff-ptch.el (ediff-fixup-patch-map):
+       Substitute quotes before putting them in the help buffer.
+
+2015-09-03  Stefan Monnier  <address@hidden>
+
+       Re-add the notion of echo_prompt lost in the translation
+       * src/keyboard.h (struct kboard): Replace echo_after_prompt with new
+       echo_prompt which contains the actual string.  Update all uses.
+       * src/keyboard.c (kset_echo_prompt): New function.
+       (echo_update): Add echo_prompt at the very beginning.
+       (read_char): Remove workaround for bug#19875, not needed any more.
+       (read_key_sequence): Set echo_prompt rather than echo_string 
(bug#21403).
+       (mark_kboards): Mark echo_prompt.
+
+       Fix disassembly of non-compiled lexical functions (bug#21377)
+       * lisp/emacs-lisp/bytecomp.el (byte-compile): Handle `closure' arg.
+       * lisp/emacs-lisp/disass.el: Use lexical-binding.
+       (disassemble): Recognize `closure's as well.
+       (disassemble-internal): Use indirect-function and
+       help-function-arglist, and accept `closure's.
+       (disassemble-internal): Use interactive-form.
+       (disassemble-1): Use functionp.
+
+       (tex--prettify-symbols-compose-p): Don't compose in verbatim blocks!
+       * lisp/textmodes/tex-mode.el (tex--prettify-symbols-compose-p):
+       Don't compose inside verbatim blocks!
+
+2015-09-03  Mark Oteiza  <address@hidden>
+
+       * lisp/thingatpt.el (thing-at-point-uri-schemes): Add "man:"
+       (bug#19441)
+
+       * lisp/mpc.el (mpc--proc-connect): Handle unix sockets (bug#19394)
+
+2015-09-03  Dmitry Gutov  <address@hidden>
+
+       vc-git-mode-line-string: Explicitly re-apply the face
+       * lisp/vc/vc-git.el (vc-git-mode-line-string): Explicitly re-apply
+       the face (bug#21404).
+
+2015-09-02  Paul Eggert  <address@hidden>
+
+       Treat initial-scratch-message as a doc string
+       * doc/emacs/building.texi (Lisp Interaction):
+       * doc/lispref/os.texi (Startup Summary):
+       * etc/NEWS: Document this.
+       * lisp/startup.el (initial-scratch-message):
+       Look up find-file’s key rather than hardcoding it.
+       (command-line-1): Substitute the doc string.
+       This also substitutes the quotes, which will help test display
+       quoting at startup.
+
+       Fix describe-char bug with glyphs on terminals
+       * lisp/descr-text.el (describe-char): Terminals can have glyphs in
+       buffers too, so don’t treat them differently from graphic displays.
+       Without this fix, describe-char would throw an error on a terminal
+       if given a glyph with a non-default face.
+
+       Follow text-quoting-style in display table init
+       This attempts to fix a problem reported by Alan Mackenzie in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-09/msg00112.html
+       * doc/lispref/display.texi (Active Display Table):
+       Mention how text-quoting-style affects it.
+       * doc/lispref/help.texi (Keys in Documentation):
+       Say how to set text-quoting-style in ~/.emacs.
+       * etc/NEWS: Document the change.
+       * lisp/startup.el (startup--setup-quote-display):
+       Follow user preference if text-quoting-style is set.
+       (command-line): Setup quote display again if user expresses
+       a preference in .emacs.
+
+2015-09-02  K. Handa  <address@hidden>
+
+       Fix typo
+       * ftfont.c (ftfont_drive_otf): otf_positioning_type_components_mask -> 
OTF_positioning_type_components_mask.
+
+       fix previous change
+       * ftfont.c (ftfont_drive_otf): Remember some bits of
+       OTF_Glyph->positioning_type in MFLTGlyphFT->libotf_positioning_type.
+
+2015-09-01  David Caldwell  <address@hidden>  (tiny change)
+
+       * lisp/vc/vc-hooks.el (vc-refresh-state): New command
+       (vc-refresh-state): Rename from vc-find-file-hook and make interactive.
+       (vc-find-file-hook): Redefine as obsolete alias.
+
+2015-09-01  Paul Eggert  <address@hidden>
+
+       Escape ` and ' in doc
+       Escape apostrophes and grave accents in docstrings if they are
+       are supposed to stand for themselves and are not quotes.  Remove
+       apostrophes from docstring examples like ‘'(calendar-nth-named-day
+       -1 0 10 year)’ that confuse source code with data.  Do some other
+       minor docstring fixups as well, e.g., insert a missing close
+       quote.
+
+2015-09-01  Stefan Monnier  <address@hidden>
+
+       Generalize the prefix-command machinery of C-u
+       * lisp/simple.el (prefix-command-echo-keystrokes-functions)
+       (prefix-command-preserve-state-hook): New hooks.
+       (internal-echo-keystrokes-prefix): New function.
+       (prefix-command--needs-update, prefix-command--last-echo): New vars.
+       (prefix-command-update, prefix-command-preserve): New functions.
+       (reset-this-command-lengths): New compatibility definition.
+       (universal-argument--mode): Call prefix-command-update.
+       (universal-argument, universal-argument-more, negative-argument)
+       (digit-argument): Call prefix-command-preserve-state.
+       * src/keyboard.c: Call internal-echo-keystrokes-prefix to build
+       the "prefix argument" to echo.
+       (this_command_key_count_reset, before_command_key_count)
+       (before_command_echo_length): Delete variables.
+       (echo_add_key): Always add a space.
+       (echo_char): Remove.
+       (echo_dash): Don't give up when this_command_key_count is 0, since that
+       is now the case after a prefix command.
+       (echo_update): New function, extracted from echo_now.
+       (echo_now): Use it.
+       (add_command_key, read_char, record_menu_key): Remove old disabled code.
+       (command_loop_1): Don't refrain from pushing an undo boundary when
+       prefix-arg is set.  Remove other prefix-arg special case, now handled
+       directly in the prefix commands instead.  But call echo_now if there's
+       a prefix state to echo.
+       (read_char, record_menu_key): Use echo_update instead of echo_char.
+       (read_key_sequence): Use echo_now rather than echo_dash/echo_char.
+       (Freset_this_command_lengths): Delete function.
+       (syms_of_keyboard): Define Qinternal_echo_keystrokes_prefix.
+       (syms_of_keyboard): Don't defsubr Sreset_this_command_lengths.
+       * lisp/simple.el: Use those new hooks for C-u.
+       (universal-argument--description): New function.
+       (prefix-command-echo-keystrokes-functions): Use it.
+       (universal-argument--preserve): New function.
+       (prefix-command-preserve-state-hook): Use it.
+       (command-execute): Call prefix-command-update if needed.
+       * lisp/kmacro.el (kmacro-step-edit-prefix-commands)
+       (kmacro-step-edit-prefix-index): Delete variables.
+       (kmacro-step-edit-query, kmacro-step-edit-insert): Remove ad-hoc
+       support for prefix arg commands.
+       (kmacro-step-edit-macro): Don't bind kmacro-step-edit-prefix-index.
+       * lisp/emulation/cua-base.el (cua--prefix-override-replay)
+       (cua--shift-control-prefix): Use prefix-command-preserve-state.
+       Remove now unused arg `arg'.
+       (cua--prefix-override-handler, cua--prefix-repeat-handler)
+       (cua--shift-control-c-prefix, cua--shift-control-x-prefix):
+       Update accordingly.
+       (cua--prefix-override-timeout): Don't call reset-this-command-lengths
+       any more.
+       (cua--keep-active, cua-exchange-point-and-mark): Don't set mark-active
+       if the mark is not set.
+
+2015-09-01  Paul Eggert  <address@hidden>
+
+       Rework quoting in tutorial
+       * doc/lispintro/emacs-lisp-intro.texi (Sample let Expression)
+       (if in more detail, type-of-animal in detail, else): Rework the
+       early example to use " rather than ' so that we don’t burden
+       complete novices with the low-priority detail of text quoting style.
+       (Complete zap-to-char, kill-region, Complete copy-region-as-kill)
+       (kill-new function, kill-ring-yank-pointer)
+       (Complete forward-sentence, Loading Files)
+       (Code for current-kill, Code for current-kill, yank):
+       Resurrect the Emacs 22 versions of the code, which uses grave
+       quoting style in doc strings.
+       (Complete zap-to-char): Mention how quoting works in doc strings.
+
+       Setup quote display only if interactive
+       * lisp/startup.el (command-line):
+       Skip call to startup--setup-quote-display if noninteractive.
+       Without this change, python-shell-prompt-validate-regexps-1
+       fails in test/automated/python-tests.el when run in an
+       en_US.utf8 locale on Fedora.
+
+2015-09-01  Katsumi Yamaoka  <address@hidden>
+
+       Use defalias at the top level
+       * lisp/gnus/gnus-util.el (gnus-format-message):
+       * lisp/net/tls.el (tls-format-message): Use defalias at the top level
+       so as to make eval-and-compile unnecessary.  Thanks to Stefan Monnier.
+
+2015-09-01  Paul Eggert  <address@hidden>
+
+       terminal-init-w32console mimicks command-line
+       Problem reported by Eli Zaretskii.
+       * lisp/startup.el (startup--setup-quote-display):
+       New function, refactored from a part of ‘command-line’.
+       (command-line): Use it.
+       * lisp/term/w32console.el (terminal-init-w32console):
+       Use it, so that this function stays consistent with ‘command-line’.
+
+       Display replacement quotes with shadow glyphs
+       * lisp/startup.el (command-line): When displaying ASCII
+       replacements for curved quotes, use a shadow glyph instead of a
+       regular one, to avoid ambiguity.
+
+2015-09-01  Michael Albinus  <address@hidden>
+
+       * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Mask "Password:".
+
+2015-09-01  Paul Eggert  <address@hidden>
+
+       Docstring fixes re quotes in C code
+       Fix some docstring quoting problems, mostly by escaping apostrophe.
+
+2015-09-01  Michael Albinus  <address@hidden>
+
+       Some Tramp password fixes
+       * lisp/net/tramp.el (tramp-clear-passwd): Clear also the passwords
+       of the hops.
+       * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Move "-p" "Password:"
+       at the beginning of the command.  Otherwise, it could be
+       interpreted as password prompt if the remote host echoes the
+       command.
+       (tramp-remote-coding-commands): Add "openssl enc -base64".
+
+2015-09-01  Dmitry Gutov  <address@hidden>
+
+       Make vc-git-working-revision always return the commit hash
+       * lisp/vc/vc-git.el (vc-git-working-revision):
+       Return the commit hash (bug#21383).
+       (vc-git--symbolic-ref): New function, extracted from above.
+       (vc-git-mode-line-string): Use it.
+
+2015-09-01  K. Handa  <address@hidden>
+
+       Use the new type MFLTGlyphFT for MFLTGlyphString.glyphs.
+       * ftfont.c (MFLTGlyphFT): New type.
+       (ftfont_get_glyph_id, ftfont_get_metrics, ftfont_drive_otf)
+       (ftfont_shape_by_flt): Make MFLTGlyphFT the actual type of
+       elements in the array MFLTGlyphString.glyphs.
+
+2015-09-01  Stephen Leake  <address@hidden>
+
+       Improve comments in elisp-mode.el, elisp-mode-tests.el
+       * lisp/progmodes/elisp-mode.el: Clean up FIXMEs, comments.
+
+       Delete Emacs 25 test in mode-local.el
+       * lisp/cedet/mode-local.el (describe-mode-local-overload): Fix missed an
+       edit in previous commit.
+
+       Show all known mode-local overrides in *Help*
+       * lisp/cedet/mode-local.el (describe-mode-local-overload): Assume Emacs
+       25. Add all known mode-local overrides.
+
+2015-09-01  Katsumi Yamaoka  <address@hidden>
+
+       * lisp/gnus/gnus-sum.el (gnus-summary-search-article):
+       Ensure that the article where the search word is found is displayed
+       and pointed to in the summary buffer.
+
+2015-08-31  Zachary Kanfer  <address@hidden>  (tiny change)
+
+       * lisp/newcomment.el (comment-dwim): Use `use-region-p'
+       When the region is active, but is empty (length 0), act as though
+       the region was not active; that is, put a comment at the end of
+       the line.  (Bug#21119)
+
+2015-08-31  Katsumi Yamaoka  <address@hidden>
+
+       Port tls.el to older Emacs
+       * lisp/net/tls.el (tls-format-message):
+       Alias to format-message, or format if not available.
+       (open-tls-stream): Use it.
+
+2015-08-31  Rüdiger Sonderfeld  <address@hidden>
+
+       hideif.el: Recognize .h++ as C++ header.
+       * lisp/progmodes/hideif.el (hide-ifdef-header-regexp): Add .h++.
+
+       isearch: Document character folding mode.
+       * isearch.el (isearch-forward): Mention `isearch-toggle-character-fold'
+       in docstring.
+
+2015-08-31  Paul Eggert  <address@hidden>
+
+       Quoting fixes in ERC and Eshell
+       * lisp/erc/erc-autoaway.el (erc-autoaway-set-away):
+       * lisp/erc/erc-backend.el (define-erc-response-handler):
+       * lisp/erc/erc-fill.el (erc-fill-static-center):
+       * lisp/eshell/em-dirs.el (eshell-save-some-last-dir):
+       * lisp/eshell/em-glob.el (eshell-glob-entries):
+       * lisp/eshell/em-hist.el (eshell-save-some-history):
+       * lisp/eshell/em-unix.el (eshell-remove-entries, eshell/rm)
+       (eshell-shuffle-files):
+       * lisp/eshell/esh-cmd.el (eshell-do-eval):
+       * lisp/eshell/esh-proc.el (eshell-process-interact)
+       (eshell-query-kill-processes):
+       Respect ‘text-quoting-style’ in diagnostics and doc strings.
+
+       Quoting fixes in Gnus
+       * lisp/gnus/gnus-agent.el:
+       (gnus-agent-possibly-synchronize-flags-server):
+       * lisp/gnus/gnus-art.el (gnus-article-browse-delete-temp-files):
+       * lisp/gnus/gnus-eform.el (gnus-edit-form):
+       * lisp/gnus/gnus-group.el (gnus-group-edit-group)
+       (gnus-group-nnimap-edit-acl):
+       * lisp/gnus/gnus-topic.el (gnus-topic-edit-parameters):
+       * lisp/gnus/mail-source.el (mail-source-delete-old-incoming):
+       * lisp/gnus/message.el (message-strip-subject-encoded-words)
+       (message-check-recipients, message-send-form-letter):
+       * lisp/gnus/mm-decode.el (mm-display-part):
+       * lisp/gnus/mm-uu.el (mm-uu-pgp-signed-extract-1):
+       * lisp/gnus/mml-smime.el (mml-smime-get-dns-cert)
+       (mml-smime-get-ldap-cert):
+       * lisp/gnus/spam-report.el (spam-report-process-queue):
+       Respect ‘text-quoting-style’ in diagnostics.
+       * lisp/gnus/gnus-art.el (article-display-face)
+       * lisp/gnus/gnus-fun.el (gnus-display-x-face-in-from):
+       Use straight quoting in email.
+       * lisp/gnus/rfc2231.el (rfc2231-decode-encoded-string):
+       Escape apostrophes in doc strings.
+
+       Quoting fixes in lisp mail, mh-e, net, url
+       * lisp/mail/emacsbug.el (report-emacs-bug)
+       (report-emacs-bug-hook): Use straight quotes in outgoing email,
+       * lisp/mail/feedmail.el (feedmail-message-action-help-blat):
+       * lisp/mail/rmail.el (rmail-unknown-mail-followup-to):
+       * lisp/mail/rmailout.el (rmail-output-read-file-name):
+       * lisp/net/imap.el (imap-interactive-login):
+       * lisp/net/tls.el (open-tls-stream):
+       * lisp/url/url-auth.el (url-register-auth-scheme):
+       Respect ‘text-quoting-style’ in diagnostics.
+       * lisp/mh-e/mh-e.el (mh-sortm-args):
+       Quote docstring example using text quotes, not as a Lisp quote.
+
+2015-08-31  Stephen Leake  <address@hidden>
+
+       Fix some byte-compiler warnings in EDE
+       This fixes a bug that caused ede-generic-new-autoloader to overwrite the
+       existing autoloader list, rather than add to it.
+       * lisp/cedet/ede/auto.el (ede-project-class-files): Delete obsolete name
+       argument to eieio class constructor.
+       (ede-show-supported-projects): New.
+       (ede-add-project-autoload): Replace obsolete `eieio-object-name-string'
+       with (oref ... name).
+       (ede-auto-load-project): Use slot name, not initarg key.
+       * lisp/cedet/ede/generic.el (ede-generic-load,
+       ede-generic-find-matching-target): Use slot name, not initarg key.
+       (ede-find-target): Use oref-default on class name.
+       (ede-generic-new-autoloader): Delete obsolete name argument to eieio
+       class constructor.
+       (ede-enable-generic-projects): Make project type names unique.
+
+2015-08-31  Eli Zaretskii  <address@hidden>
+
+       Fix directory accessibility tests for w32 network volumes
+       * src/w32.c (faccessat): Don't fail with network volumes without a
+       share.
+       (w32_accessible_directory_p): Handle network volumes without a
+       share.
+
+       Fix handling long file names in readdir on MS-Windows
+       * src/w32.c (sys_readdir): Append "\*" to the directory after
+       converting it to UTF-16/ANSI, not before, to avoid overflowing the
+       260-character limit on file names in filename_to_utf16/ansi.
+
+       Make file-accessible-directory-p reliable on MS-Windows
+       * src/w32.c (w32_accessible_directory_p): New function.
+       * src/w32.h (w32_accessible_directory_p): Add prototype.
+       * src/fileio.c (file_accessible_directory_p) [WINDOWSNT]: Call
+       w32_accessible_directory_p to test a directory for accessibility
+       by the current user.  (Bug#21346)
+       (Ffile_accessible_directory_p): Remove the w32 specific caveat
+       from the doc string.
+
+2015-08-31  Martin Rudalics  <address@hidden>
+
+       Don't call do_pending_window_change in signal handlers (Bug#21380)
+       * src/gtkutil.c (xg_frame_resized):
+       * src/xterm.c (x_set_window_size):
+       * src/w32term.c (x_set_window_size): Don't call
+       do_pending_window_change.
+
+2015-08-31  Paul Eggert  <address@hidden>
+
+       Quoting fixes in lisp/org
+       * lisp/org/org-agenda.el (org-search-view, org-todo-list)
+       (org-tags-view):
+       * lisp/org/org-capture.el (org-capture-mode)
+       * lisp/org/org-ctags.el (org-ctags-visit-buffer-or-file)
+       (org-ctags-ask-append-topic):
+       * lisp/org/org.el (org-time-string-to-time)
+       (org-time-string-to-absolute):
+       * lisp/org/org-ctags.el (org-ctags-visit-buffer-or-file)
+       (org-ctags-ask-append-topic):
+       * lisp/org/org.el (org-time-string-to-time)
+       (org-time-string-to-absolute):
+       Respect ‘text-quoting-style’ in diagnostics.
+       * lisp/org/org-agenda.el (org-agenda-custom-commands)
+       (org-agenda-dim-blocked-tasks): Plural of TODO is TODOs, not TODO’s.
+       * lisp/org/org-capture.el (org-capture-fill-template):
+       Avoid contraction in output file that might be ASCII.
+       * lisp/org/org-compat.el (format-message):
+       Define if not already defined, for backward compatibility.
+       * lisp/org/org-src.el (org-edit-src-save):
+       * lisp/org/org.el (org-cycle, org-ctrl-c-ctrl-c):
+       Escape apostrophes in diagnostics.
+
+       Treat “instead” strings as docstrings
+       * lisp/emacs-lisp/bytecomp.el (byte-compile-form):
+       * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
+       Substitute quotes in instead strings.
+
+2015-08-31  Nicolas Petton  <address@hidden>
+
+       Better documentation of seq-let
+       * doc/lispref/sequences.texi (Sequence Functions): Rephrase the
+       documentation of seq-let.
+
+2015-08-31  Paul Eggert  <address@hidden>
+
+       * lisp/international/ccl.el: Fix quoting.
+
+       Quoting fixes in lisp/international and lisp/leim
+       * lisp/international/ccl.el (ccl-dump, ccl-dump-call):
+       * lisp/international/ja-dic-utl.el (skkdic-lookup-key):
+       * lisp/international/mule-cmds.el:
+       (select-safe-coding-system-interactively, leim-list-file-name):
+       * lisp/international/quail.el (quail-use-package, quail-help):
+       * lisp/international/titdic-cnv.el (tit-process-header)
+       (miscdic-convert):
+       Respect text quoting style in doc strings and diagnostics.
+       * lisp/international/quail.el (lisp/international/quail.el):
+       * lisp/leim/quail/ethiopic.el ("ethiopic"):
+       Escape apostrophes in doc strings.
+
+       Make ‘text-quoting-style’ a plain defvar
+       It doesn’t need customization, as it’s likely useful only by experts.
+       Suggested by Stefan Monnier in:
+       http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg01020.html
+       * lisp/cus-start.el: Remove doc.c section for builtin customized vars.
+
+       Quoting fixes in lisp/textmodes
+       * lisp/textmodes/bibtex.el (bibtex-validate)
+       (bibtex-validate-globally, bibtex-search-entries):
+       * lisp/textmodes/ispell.el (ispell-command-loop):
+       * lisp/textmodes/page-ext.el (search-pages, pages-directory):
+       * lisp/textmodes/texinfmt.el (texinfmt-version)
+       (texinfo-format-region, texinfo-format-buffer-1):
+       * lisp/textmodes/two-column.el (2C-split):
+       Respect text quoting style in doc strings and diagnostics.
+       * lisp/textmodes/conf-mode.el (conf-mode-map, conf-quote-normal):
+       * lisp/textmodes/sgml-mode.el (sgml-specials, sgml-mode):
+       Escape apostrophes in doc strings.
+
+       Documentation fixes re quotes
+       Prefer curved quotes in examples if users will typically see
+       curved quotes when the examples run.
+       Mention format-message when appropriate.
+       Don’t use @code in examples.
+       Quote an apostrophe with @kbd.
+
+       Quoting fixes in lisp/progmodes
+       * lisp/progmodes/cc-engine.el (c-bos-report-error):
+       * lisp/progmodes/cpp.el (cpp-edit-reset):
+       * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
+       * lisp/progmodes/etags.el (etags-tags-apropos-additional)
+       (etags-tags-apropos, list-tags, tags-apropos):
+       * lisp/progmodes/executable.el (executable-set-magic):
+       * lisp/progmodes/octave.el (octave-sync-function-file-names)
+       (octave-help, octave-find-definition-default-filename)
+       (octave-find-definition):
+       Respect text quoting style in doc strings and diagnostics.
+       * lisp/progmodes/cc-langs.el (c-populate-syntax-table):
+       * lisp/progmodes/verilog-mode.el (verilog-auto-reset-widths):
+       * lisp/progmodes/vhdl-mode.el (vhdl-electric-quote):
+       Escape apostrophes in doc strings.
+       * lisp/progmodes/cmacexp.el (c-macro-expansion):
+       Use straight quoting in ASCII comment.
+       * lisp/progmodes/idlwave.el (idlwave-auto-fill-split-string)
+       (idlwave-pad-keyword):
+       * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate)
+       (vhdl-electric-open-bracket, vhdl-electric-close-bracket):
+       (vhdl-electric-semicolon, vhdl-electric-comma)
+       (vhdl-electric-period, vhdl-electric-equal):
+       Use directed quotes in diagnostics and doc strings.
+
+2015-08-30  Xue Fuqiao  <address@hidden>
+
+       Minor documentation and NEWS tweak
+       * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add an index
+       entry.
+
 2015-08-30  Michael Albinus  <address@hidden>
 
        * lisp/net/tramp-sh.el (tramp-convert-file-attributes):
@@ -11395,7 +12027,7 @@
 
 This file records repository revisions from
 commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to
-commit cc90c25a50e536669ac327f7e05ec9194d1650d0 (inclusive).
+commit 88b9a8000da6cf2d4aede86e9eae4f00016d0d6b (inclusive).
 See ChangeLog.1 for earlier changes.
 
 ;; Local Variables:
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index 8d3f5b7..9e39fd0 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -445,7 +445,7 @@ Property value is a symbol `o' (Open), `c' (Close), or `n' 
(None)."
        ;; (4) possibly update the switch cases in
        ;;     bidi.c:bidi_get_type and bidi.c:bidi_get_category.
        (bidi-warning "\
-** Found new bidi-class ‘%s’, please update bidi.c and dispextern.h")
+** Found new bidi-class `%s', please update bidi.c and dispextern.h")
        tail elt range val val-code idx slot
        prev-range-data)
     (setq val-list (cons nil (copy-sequence val-list)))
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi
index b4a99a1..1d40a2d 100644
--- a/doc/emacs/building.texi
+++ b/doc/emacs/building.texi
@@ -1549,7 +1549,7 @@ mode are the same as in Emacs Lisp mode.
   At startup, the @file{*scratch*} buffer contains a short message, in
 the form of a Lisp comment, that explains what it is for.  This
 message is controlled by the variable @code{initial-scratch-message},
-which should be either a string, or @code{nil} (which means to
+which should be either a documentation string, or @code{nil} (which means to
 suppress the message).
 
 @findex ielm
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index a2bea24..43c61d7 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -28,7 +28,7 @@ Reference Manual}.
                           to decide what to do; by setting variables,
                           you can control their functioning.
 * Key Bindings::        The keymaps say what command each key runs.
-                          By changing them, you can "redefine keys".
+                          By changing them, you can ``redefine keys''.
 * Init File::           How to write common customizations in the
                           initialization file.
 @end menu
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 5f53f9b..ec82a07 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -160,7 +160,7 @@ Fundamental Editing Commands
 * Help::                Commands for asking Emacs about its commands.
 
 Important Text-Changing Commands
-* Mark::                The mark: how to delimit a "region" of text.
+* Mark::                The mark: how to delimit a ``region'' of text.
 * Killing::             Killing (cutting) and yanking (copying) text.
 * Registers::           Saving a text string or a location in the buffer.
 * Display::             Controlling what text is displayed.
@@ -172,7 +172,7 @@ Major Structures of Emacs
 * Files::               All about handling files.
 * Buffers::             Multiple buffers; editing several files at once.
 * Windows::             Viewing multiple pieces of text in one frame.
-* Frames::              Using multiple "windows" on your display.
+* Frames::              Using multiple ``windows'' on your display.
 * International::       Using address@hidden character sets.
 
 Advanced Features
@@ -200,7 +200,7 @@ Advanced Features
 @end ifnottex
 * Editing Binary Files::  Editing binary files with Hexl mode.
 * Saving Emacs Sessions:: Saving Emacs state from one session to the next.
-* Recursive Edit::      Performing edits while "within another command".
+* Recursive Edit::      Performing edits while ``within another command''.
 * Hyperlinking::        Following links in buffers.
 * Amusements::          Various games and hacks.
 * Packages::            Installing additional features.
@@ -301,7 +301,7 @@ Help
 * Language Help::       Help relating to international language support.
 * Misc Help::           Other help commands.
 * Help Files::          Commands to display auxiliary help files.
-* Help Echo::           Help on active text and tooltips ("balloon help").
+* Help Echo::           Help on active text and tooltips (``balloon help'').
 
 The Mark and the Region
 
@@ -337,7 +337,7 @@ Yanking
 * Earlier Kills::       Yanking something killed some time ago.
 * Appending Kills::     Several kills in a row all yank together.
 
-"Cut and Paste" Operations on Graphical Displays
+``Cut and Paste'' Operations on Graphical Displays
 
 * Clipboard::           How Emacs uses the system clipboard.
 * Primary Selection::   The temporarily selected text selection.
@@ -464,7 +464,7 @@ Saving Files
 * Customize Save::      Customizing the saving of files.
 * Interlocking::        How Emacs protects against simultaneous editing
                           of one file by two users.
-* File Shadowing::      Copying files to "shadows" automatically.
+* File Shadowing::      Copying files to ``shadows'' automatically.
 * Time Stamps::         Emacs can update time stamps on saved files.
 
 Backup Files
@@ -597,7 +597,7 @@ Commands for Human Languages
 * TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
 * Nroff Mode::          Editing input to the nroff formatter.
-* Enriched Text::       Editing text "enriched" with fonts, colors, etc.
+* Enriched Text::       Editing text ``enriched'' with fonts, colors, etc.
 * Text Based Tables::   Commands for editing text-based tables.
 * Two-Column::          Splitting text columns into separate windows.
 
@@ -638,7 +638,7 @@ Enriched Text
 * Enriched Indentation::    Changing the left and right margins.
 * Enriched Justification::  Centering, setting text flush with the
                               left or right margin, etc.
-* Enriched Properties::     The "special" text properties submenu.
+* Enriched Properties::     The ``special'' text properties submenu.
 
 @c The automatic texinfo menu update inserts some duplicate items here
 @c (faces, colors, indentation, justification, properties), because
@@ -895,7 +895,7 @@ Editing Pictures
 
 * Basic Picture::         Basic concepts and simple commands of Picture Mode.
 * Insert in Picture::     Controlling direction of cursor motion
-                            after "self-inserting" characters.
+                            after ``self-inserting'' characters.
 * Tabs in Picture::       Various features for tab stops and indentation.
 * Rectangles in Picture:: Clearing and superimposing rectangles.
 @end ifnottex
@@ -1092,7 +1092,7 @@ Customization
                           to decide what to do; by setting variables,
                           you can control their functioning.
 * Key Bindings::        The keymaps say what command each key runs.
-                          By changing them, you can "redefine" keys.
+                          By changing them, you can ``redefine'' keys.
 * Init File::           How to write common customizations in the
                           initialization file.
 
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 6ff59b4..5985d8b 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -340,7 +340,7 @@ that was visited in the buffer.
 * Customize Save::      Customizing the saving of files.
 * Interlocking::        How Emacs protects against simultaneous editing
                           of one file by two users.
-* Shadowing: File Shadowing.  Copying files to "shadows" automatically.
+* Shadowing: File Shadowing.  Copying files to ``shadows'' automatically.
 * Time Stamps::         Emacs can update time stamps on saved files.
 @end menu
 
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 5129c1c..6984250 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -72,7 +72,7 @@ inputs, but they all support @key{F1}.)
 * Language Help::       Help relating to international language support.
 * Misc Help::           Other help commands.
 * Help Files::          Commands to display auxiliary help files.
-* Help Echo::           Help on active text and tooltips ("balloon help").
+* Help Echo::           Help on active text and tooltips (``balloon help'').
 @end menu
 
 @iftex
diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi
index 68913d8..19d861a 100644
--- a/doc/emacs/package.texi
+++ b/doc/emacs/package.texi
@@ -232,7 +232,7 @@ in your init file depends on a package).  In that case, 
your init file
 should call the function @code{package-initialize}.  It is up to you
 to ensure that relevant user options, such as @code{package-load-list}
 (see below), are set up prior to the @code{package-initialize} call.
-You should also set @code{package-enable-at-startup} to @code{nil}, to
+This will automatically set @code{package-enable-at-startup} to @code{nil}, to
 avoid loading the packages again after processing the init file.
 Alternatively, you may choose to completely inhibit package loading at
 startup, and invoke the command @kbd{M-x package-initialize} to load
diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi
index 6be84bd..a9ad2d5 100644
--- a/doc/emacs/picture-xtra.texi
+++ b/doc/emacs/picture-xtra.texi
@@ -53,7 +53,7 @@ Additional extensions to Picture mode can be found in
 @menu
 * Basic Picture::         Basic concepts and simple commands of Picture Mode.
 * Insert in Picture::     Controlling direction of cursor motion
-                            after "self-inserting" characters.
+                            after ``self-inserting'' characters.
 * Tabs in Picture::       Various features for tab stops and indentation.
 * Rectangles in Picture:: Clearing and superimposing rectangles.
 @end menu
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 8f78a1a..ea8f82f 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -97,7 +97,6 @@ your favorite language, the mode might be implemented in a 
package not
 distributed with Emacs (@pxref{Packages}); or you can contribute one.
 
 @kindex DEL @r{(programming modes)}
address@hidden c-electric-backspace
 @findex backward-delete-char-untabify
   In most programming languages, indentation should vary from line to
 line to illustrate the structure of the program.  Therefore, in most
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 34d4e8f..a0dfe22 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1342,13 +1342,13 @@ to replace all remaining occurrences without asking 
again.
 to replace all remaining occurrences in all remaining buffers in
 multi-buffer replacements (like the Dired @key{Q} command that performs
 query replace on selected files).  It answers this question and all
-subsequent questions in the series with "yes", without further
+subsequent questions in the series with ``yes'', without further
 user interaction.
 
 @item N @r{(Upper-case)}
 to skip to the next buffer in multi-buffer replacements without
 replacing remaining occurrences in the current buffer.  It answers
-this question "no", gives up on the questions for the current buffer,
+this question ``no'', gives up on the questions for the current buffer,
 and continues to the next buffer in the sequence.
 
 @item ^
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index 31760b7..389ef5e 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -78,7 +78,7 @@ for editing such pictures.
 * TeX Mode::            Editing TeX and LaTeX files.
 * HTML Mode::           Editing HTML and SGML files.
 * Nroff Mode::          Editing input to the nroff formatter.
-* Enriched Text::       Editing text "enriched" with fonts, colors, etc.
+* Enriched Text::       Editing text ``enriched'' with fonts, colors, etc.
 * Text Based Tables::   Commands for editing text-based tables.
 * Two-Column::          Splitting text columns into separate windows.
 @end menu
@@ -2072,7 +2072,7 @@ serves as an example of the features of Enriched mode.
 * Enriched Indentation::    Changing the left and right margins.
 * Enriched Justification::  Centering, setting text flush with the
                               left or right margin, etc.
-* Enriched Properties::     The "special" text properties submenu.
+* Enriched Properties::     The ``special'' text properties submenu.
 @end menu
 
 @node Enriched Mode
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index fc01a97..2233376 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -1345,16 +1345,16 @@ Emacs has additional style and coding conventions:
 @item
 @ifset WWW_GNU_ORG
 @ifhtml
-the "Tips" Appendix in the Emacs Lisp Reference
+the ``Tips'' Appendix in the Emacs Lisp Reference
 @url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
 @end ifhtml
 @ifnothtml
address@hidden, "Tips" Appendix in the Emacs Lisp Reference, Tips
address@hidden, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
 Appendix, elisp, Emacs Lisp Reference}.
 @end ifnothtml
 @end ifset
 @ifclear WWW_GNU_ORG
address@hidden, "Tips" Appendix in the Emacs Lisp Reference, Tips
address@hidden, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
 Appendix, elisp, Emacs Lisp Reference}.
 @end ifclear
 
@@ -1398,7 +1398,7 @@ See gnu-misc-discuss instead.)
 
 A copyright disclaimer is also a possibility, but we prefer an assignment.
 Note that the disclaimer, like an assignment, involves you sending
-signed paperwork to the FSF (simply saying "this is in the public domain"
+signed paperwork to the FSF (simply saying ``this is in the public domain''
 is not enough).  Also, a disclaimer cannot be applied to future work, it
 has to be repeated each time you want to send something new.
 
diff --git a/doc/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index 3ac2418..d353241 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -9268,7 +9268,7 @@ documentation string.  For example:
 @smallexample
 @group
 (defvar shell-command-default-error-buffer nil
-  "*Buffer name for ‘shell-command’ @dots{} error output.
+  "*Buffer name for `shell-command' @dots{} error output.
 @dots{} ")
 @end group
 @end smallexample
@@ -11107,7 +11107,7 @@ up the number of pebbles in a triangle.
 @smallexample
 @group
 (defun triangle-using-dotimes (number-of-rows)
-  "Using ‘dotimes’, add up the number of pebbles in a triangle."
+  "Using `dotimes', add up the number of pebbles in a triangle."
 (let ((total 0))  ; otherwise a total is a void variable
   (dotimes (number number-of-rows total)
     (setq total (+ total (1+ number))))))
@@ -13514,8 +13514,8 @@ For example:
 @smallexample
 @group
 (let* ((foo 7)
-      (bar (* 3 foo)))
-  (message "‘bar’ is %d." bar))
+       (bar (* 3 foo)))
+  (message "`bar' is %d." bar))
      @result{} ‘bar’ is 21.
 @end group
 @end smallexample
@@ -13758,7 +13758,7 @@ All this leads to the following function definition:
   "Print number of words in the region.
 Words are defined as at least one word-constituent
 character followed by at least one character that
-is not a word-constituent.  The buffer’s syntax
+is not a word-constituent.  The buffer's syntax
 table determines which characters these are."
   (interactive "r")
   (message "Counting words in region ... ")
@@ -13825,7 +13825,7 @@ parenthesis and type @kbd{C-x C-e} to install it.
 (defun @value{COUNT-WORDS} (beginning end)
   "Print number of words in the region.
 Words are defined as at least one word-constituent character followed
-by at least one character that is not a word-constituent.  The buffer’s
+by at least one character that is not a word-constituent.  The buffer's
 syntax table determines which characters these are."
 @end group
 @group
@@ -13947,7 +13947,7 @@ What happens is this: the search is limited to the 
region, and fails
 as you expect because there are no word-constituent characters in the
 region.  Since it fails, we receive an error message.  But we do not
 want to receive an error message in this case; we want to receive the
-message that "The region does NOT have any words."
+message ``The region does NOT have any words.''
 
 The solution to this problem is to provide @code{re-search-forward}
 with a third argument of @code{t}, which causes the function to return
@@ -14987,13 +14987,13 @@ beginning of the file.  The function definition looks 
like this:
 @smallexample
 @group
 (defun lengths-list-file (filename)
-  "Return list of definitions’ lengths within FILE.
+  "Return list of definitions' lengths within FILE.
 The returned list is a list of numbers.
 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))
@@ -15759,7 +15759,7 @@ simpler to write a list manually.  Here it is:
   160 170 180 190 200
   210 220 230 240 250
   260 270 280 290 300)
- "List specifying ranges for ‘defuns-per-range’.")
+ "List specifying ranges for `defuns-per-range'.")
 @end group
 @end smallexample
 
@@ -19943,7 +19943,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
@@ -20044,7 +20044,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)))
@@ -21169,7 +21169,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
@@ -21269,7 +21269,7 @@ Here are all the graphing definitions in their final 
form:
   110 120 130 140 150
   160 170 180 190 200
   210 220 230 240 250)
- "List specifying ranges for ‘defuns-per-range’.")
+ "List specifying ranges for `defuns-per-range'.")
 @end group
 
 @group
@@ -21330,14 +21330,14 @@ as graph-symbol.")
 @smallexample
 @group
 (defun lengths-list-file (filename)
-  "Return list of definitions’ lengths within FILE.
+  "Return list of definitions' lengths within FILE.
 The returned list is a list of numbers.
 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))
@@ -21467,7 +21467,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
@@ -21497,7 +21497,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))
@@ -21662,7 +21662,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
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index c1773aa..2784fd9 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -56,8 +56,8 @@ there is no need to worry about the insertion of 
right-to-left text
 messing up how lines and paragraphs are displayed, the function
 @code{bidi-string-mark-left-to-right} has been removed; so have many
 other functions and variables related to bidirectional display.
-Unicode directionality characters like @code{U+200E} ("left-to-right
-mark") have no special effect on display.
+Unicode directionality characters like @code{U+200E} LEFT-TO-RIGHT
+MARK have no special effect on display.
 
 @item
 Emacs windows now have most of their internal state hidden from Lisp.
diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi
index 49bfe82..71261e0 100644
--- a/doc/lispref/buffers.texi
+++ b/doc/lispref/buffers.texi
@@ -23,7 +23,7 @@ not be displayed in any windows.
 * Buffer File Name::    The buffer file name indicates which file is visited.
 * Buffer Modification:: A buffer is @dfn{modified} if it needs to be saved.
 * Modification Time::   Determining whether the visited file was changed
-                         "behind Emacs's back".
+                         ``behind Emacs's back''.
 * Read Only Buffers::   Modifying text is not allowed in a read-only buffer.
 * Buffer List::         How to look at all the existing buffers.
 * Creating Buffers::    Functions that create buffers.
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index 29d1bd5..421f5cc 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -315,7 +315,7 @@ between a few different constant values:
 @example
 (pcase (get-return-code x)
   (`success       (message "Done!"))
-  (`would-block   (message "Sorry, can’t do it now"))
+  (`would-block   (message "Sorry, can't do it now"))
   (`read-only     (message "The shmliblick is read-only"))
   (`access-denied (message "You do not have the needed rights"))
   (code           (message "Unknown return code %S" code)))
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 9d82edc..14e2cd3 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -6531,8 +6531,12 @@ no buffer display table.
 The value of this variable is the standard display table, which is
 used when Emacs is displaying a buffer in a window with neither a
 window display table nor a buffer display table defined, or when Emacs
-is outputting text to the standard output or error streams.  Its
-default is @code{nil}.
+is outputting text to the standard output or error streams.  Although its
+default is typically @code{nil}, in an interactive session if the
+locale cannot display curved quotes, or if the initial value of
address@hidden specifies a preference for ASCII, its
+default maps curved quotes to ASCII approximations.  @xref{Keys in
+Documentation}.
 @end defvar
 
 The @file{disp-table} library defines several functions for changing
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 9044fba..7b2b68a 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -453,7 +453,7 @@ Kinds of Forms
                               we find the real function via the symbol.
 * Function Forms::          Forms that call functions.
 * Macro Forms::             Forms that call macros.
-* Special Forms::           "Special forms" are idiosyncratic primitives,
+* Special Forms::           ``Special forms'' are idiosyncratic primitives,
                               most of them extremely important.
 * Autoloading::             Functions set up to load files
                               containing their real definitions.
@@ -485,7 +485,7 @@ Errors
 Variables
 
 * Global Variables::        Variable values that exist permanently, everywhere.
-* Constant Variables::      Certain "variables" have values that never change.
+* Constant Variables::      Certain ``variables'' have values that never 
change.
 * Local Variables::         Variable values that exist only temporarily.
 * Void Variables::          Symbols that lack values.
 * Defining Variables::      A definition says a symbol is used as a variable.
@@ -599,7 +599,7 @@ Loading
 * Repeated Loading::        Precautions about loading a file twice.
 * Named Features::          Loading a library if it isn't already loaded.
 * Where Defined::           Finding which file defined a certain symbol.
-* Unloading::               How to "unload" a library that was loaded.
+* Unloading::               How to ``unload'' a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
 
@@ -990,7 +990,7 @@ Buffers
                               is visited.
 * Buffer Modification::     A buffer is @dfn{modified} if it needs to be saved.
 * Modification Time::       Determining whether the visited file was changed
-                              "behind Emacs's back".
+                              ``behind Emacs's back''.
 * Read Only Buffers::       Modifying text is not allowed in a
                               read-only buffer.
 * Buffer List::             How to look at all the existing buffers.
@@ -1117,8 +1117,8 @@ Markers
 * Marker Insertion Types::  Two ways a marker can relocate when you
                               insert where it points.
 * Moving Markers::          Moving the marker to a new buffer or position.
-* The Mark::                How "the mark" is implemented with a marker.
-* The Region::              How to access "the region".
+* The Mark::                How ``the mark'' is implemented with a marker.
+* The Region::              How to access ``the region''.
 
 Text
 
@@ -1152,7 +1152,7 @@ Text
 * Base 64::                 Conversion to or from base 64 encoding.
 * Checksum/Hash::           Computing cryptographic hashes.
 * Parsing HTML/XML::        Parsing HTML and XML.
-* Atomic Changes::          Installing several buffer changes "atomically".
+* Atomic Changes::          Installing several buffer changes ``atomically''.
 * Change Hooks::            Supplying functions to be run when text is changed.
 
 The Kill Ring
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index a185da7..f253e70 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -116,7 +116,7 @@ with the ``all other types'' which are self-evaluating 
forms.
                               we find the real function via the symbol.
 * Function Forms::          Forms that call functions.
 * Macro Forms::             Forms that call macros.
-* Special Forms::           "Special forms" are idiosyncratic primitives,
+* Special Forms::           ``Special forms'' are idiosyncratic primitives,
                               most of them extremely important.
 * Autoloading::             Functions set up to load files
                               containing their real definitions.
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index f4c9abd..91b0c96 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -1291,10 +1291,10 @@ has only one name (the name @file{files.texi} in the 
current default
 directory).
 
 @item "lh"
-is owned by the user with name "lh".
+is owned by the user with name @samp{lh}.
 
 @item "users"
-is in the group with name "users".
+is in the group with name @samp{users}.
 
 @item (20614 64019 50040 152000)
 was last accessed on October 23, 2012, at 20:12:03.050040152 UTC.
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 65eeec6..16fc495 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2256,7 +2256,7 @@ indicates the release of the button, or whatever kind of 
event means
 it is time to stop tracking.
 
 The @code{track-mouse} form causes Emacs to generate mouse motion
-events by binding the variable @code{mouse-tracking} to a
+events by binding the variable @code{track-mouse} to a
 address@hidden value.  If that variable has the special value
 @code{dragging}, it additionally instructs the display engine to
 refrain from changing the shape of the mouse pointer.  This is
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 20eaf5d..a853d2f 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1561,7 +1561,7 @@ Around advice such as:
 
 @example
 (defadvice foo (around foo-around)
-  "Ignore case in ‘foo’."
+  "Ignore case in `foo'."
   (let ((case-fold-search t))
     ad-do-it))
 (ad-activate 'foo)
@@ -1571,7 +1571,7 @@ could translate into:
 
 @example
 (defun foo--foo-around (orig-fun &rest args)
-  "Ignore case in ‘foo’."
+  "Ignore case in `foo'."
   (let ((case-fold-search t))
     (apply orig-fun args)))
 (advice-add 'foo :around #'foo--foo-around)
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 44c09a2..b3042d7 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -345,7 +345,9 @@ quotes.  If the variable's value is @code{curve}, the style 
is
 apostrophes.  If the value is @code{grave}, the style is @t{`like
 this'} with grave accent and apostrophe.  The default value @code{nil}
 acts like @code{curve} if curved single quotes are displayable, and
-like @code{grave} otherwise.
+like @code{grave} otherwise.  To use the traditional @code{grave}
+style, put the line @code{(setq text-quoting-style 'grave)} into your
address@hidden/.emacs} file.
 @end defvar
 
 @defun substitute-command-keys string
@@ -375,7 +377,7 @@ specifies a key binding that the command does not actually 
have.
 @smallexample
 @group
 (substitute-command-keys
-   "To abort recursive edit, type ‘\\[abort-recursive-edit]’.")
+   "To abort recursive edit, type `\\[abort-recursive-edit]'.")
 @result{} "To abort recursive edit, type ‘C-]’."
 @end group
 
@@ -396,7 +398,7 @@ C-g             abort-recursive-edit
 
 @group
 (substitute-command-keys
-   "To abort a recursive edit from the minibuffer, type\
+   "To abort a recursive edit from the minibuffer, type \
 `\\<minibuffer-local-must-match-map>\\[abort-recursive-edit]'.")
 @result{} "To abort a recursive edit from the minibuffer, type ‘C-g’."
 @end group
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi
index fc1def6..91dc9a9 100644
--- a/doc/lispref/loading.texi
+++ b/doc/lispref/loading.texi
@@ -40,7 +40,7 @@ For on-demand loading of external libraries, @pxref{Dynamic 
Libraries}.
 * Repeated Loading::        Precautions about loading a file twice.
 * Named Features::          Loading a library if it isn't already loaded.
 * Where Defined::           Finding which file defined a certain symbol.
-* Unloading::               How to "unload" a library that was loaded.
+* Unloading::               How to ``unload'' a library that was loaded.
 * Hooks for Loading::       Providing code to be run when
                               particular libraries are loaded.
 @end menu
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi
index 109e935..4f25b91 100644
--- a/doc/lispref/markers.texi
+++ b/doc/lispref/markers.texi
@@ -20,8 +20,8 @@ deleted, so that it stays with the two characters on either 
side of it.
 * Marker Insertion Types::   Two ways a marker can relocate when you
                                insert where it points.
 * Moving Markers::           Moving the marker to a new buffer or position.
-* The Mark::                 How "the mark" is implemented with a marker.
-* The Region::               How to access "the region".
+* The Mark::                 How ``the mark'' is implemented with a marker.
+* The Region::               How to access ``the region''.
 @end menu
 
 @node Overview of Markers
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index f00e481..a8b6bb1 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1155,9 +1155,9 @@ Many other modes, such as `mail-mode', `outline-mode' and
   "Major mode for editing text written for humans to read.
 In this mode, paragraphs are delimited only by blank or white lines.
 You can thus get the full benefit of adaptive filling
- (see the variable ‘adaptive-fill-mode’).
+ (see the variable `adaptive-fill-mode').
 address@hidden@}
-Turning on Text mode runs the normal hook ‘text-mode-hook’."
+Turning on Text mode runs the normal hook `text-mode-hook'."
 @end group
 @group
   (set (make-local-variable 'text-mode-variant) t)
@@ -1252,7 +1252,7 @@ And here is the code to set up the keymap for Lisp mode:
     @dots{}
     map)
   "Keymap for ordinary Lisp mode.
-All commands in ‘lisp-mode-shared-map’ are inherited by this map.")
+All commands in `lisp-mode-shared-map' are inherited by this map.")
 @end group
 @end smallexample
 
@@ -1268,12 +1268,12 @@ Delete converts tabs to spaces as it moves back.
 Blank lines separate paragraphs.  Semicolons start comments.
 
 address@hidden@}
-Note that ‘run-lisp’ may be used either to start an inferior Lisp job
+Note that `run-lisp' may be used either to start an inferior Lisp job
 or to switch back to an existing one.
 @end group
 
 @group
-Entry to this mode calls the value of ‘lisp-mode-hook’
+Entry to this mode calls the value of `lisp-mode-hook'
 if that value is non-nil."
   (lisp-mode-variables nil t)
   (set (make-local-variable 'find-tag-default-function)
@@ -1447,7 +1447,7 @@ will load the library that defines the mode.  For example:
 (defcustom msb-mode nil
   "Toggle msb-mode.
 Setting this variable directly does not take effect;
-use either \\[customize] or the function ‘msb-mode’."
+use either \\[customize] or the function `msb-mode'."
   :set 'custom-set-minor-mode
   :initialize 'custom-initialize-default
   :version "20.4"
@@ -1605,7 +1605,7 @@ for this macro.
 Interactively with no argument, this command toggles the mode.
 A positive prefix argument enables the mode, any other prefix
 argument disables it.  From Lisp, argument omitted or nil enables
-the mode, ‘toggle’ toggles the state.
+the mode, `toggle' toggles the state.
 
 When Hungry mode is enabled, the control delete key
 gobbles all preceding whitespace except the last.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 64ebb45..6ef87df 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -195,7 +195,7 @@ It now exits if the option @code{--batch} was specified.
 
 @item
 If the @file{*scratch*} buffer exists and is empty, it inserts
address@hidden into that buffer.
address@hidden(substitute-command-keys initial-scratch-message)} into that 
buffer.
 
 @item
 If @code{initial-buffer-choice} is a string, it visits the file (or
@@ -314,6 +314,7 @@ file will not inhibit the message for someone else.
 
 @defopt initial-scratch-message
 This variable, if address@hidden, should be a string, which is
+treated as documentation to be
 inserted into the @file{*scratch*} buffer when Emacs starts up.  If it
 is @code{nil}, the @file{*scratch*} buffer is empty.
 @end defopt
@@ -1927,7 +1928,7 @@ idleness.  Here's an example:
 
 @example
 (defvar my-resume-timer nil
-  "Timer for ‘my-timer-function’ to reschedule itself, or nil.")
+  "Timer for `my-timer-function' to reschedule itself, or nil.")
 
 (defun my-timer-function ()
   ;; @r{If the user types a command while @code{my-resume-timer}}
@@ -2479,7 +2480,7 @@ argument of another @code{notifications-notify} call.  
For example:
 @end group
 
 @group
-A message window opens on the desktop.  Press "I agree"
+A message window opens on the desktop.  Press ``I agree''.
      @result{} Message 22, key "Confirm" pressed
         Message 22, closed due to "dismissed"
 @end group
@@ -2674,32 +2675,14 @@ being reported.  For example:
 @end example
 
 Whether the action @code{renamed} is returned, depends on the used
-watch library.  It can be expected, when a directory is watched, and
-both @var{file} and @var{file1} belong to this directory.  Otherwise,
-the actions @code{deleted} and @code{created} could be returned in a
-random order.
+watch library.  Otherwise, the actions @code{deleted} and
address@hidden could be returned in a random order.
 
 @example
 @group
 (rename-file "/tmp/foo" "/tmp/bla")
      @result{} Event (35025468 renamed "/tmp/foo" "/tmp/bla")
 @end group
-
address@hidden
-(file-notify-add-watch
-  "/var/tmp" '(change attribute-change) 'my-notify-callback)
-     @result{} 35025504
address@hidden group
-
address@hidden
-(rename-file "/tmp/bla" "/var/tmp/bla")
-     @result{} ;; gfilenotify
-        Event (35025468 renamed "/tmp/bla" "/var/tmp/bla")
-
-     @result{} ;; inotify
-        Event (35025504 created "/var/tmp/bla")
-        Event (35025468 deleted "/tmp/bla")
address@hidden group
 @end example
 @end defun
 
diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi
index f8eba2a..7136286 100644
--- a/doc/lispref/package.texi
+++ b/doc/lispref/package.texi
@@ -113,8 +113,10 @@ package loading is disabled if the user option
 This function initializes Emacs' internal record of which packages are
 installed, and loads them.  The user option @code{package-load-list}
 specifies which packages to load; by default, all installed packages
-are loaded.  @xref{Package Installation,,, emacs, The GNU Emacs
-Manual}.
+are loaded.  If called during startup, this function also sets
address@hidden to @code{nil}, to avoid accidentally
+loading the packages twice.  @xref{Package Installation,,, emacs, The
+GNU Emacs Manual}.
 
 The optional argument @var{no-activate}, if address@hidden, causes
 Emacs to update its record of installed packages without actually
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 98b3dfb..c9509b0 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -1720,13 +1720,13 @@ sentinel, the eventual call to the sentinel will use 
the new one.
 @group
 (defun msg-me (process event)
    (princ
-     (format "Process: %s had the event ‘%s’" process event)))
+     (format "Process: %s had the event '%s'" process event)))
 (set-process-sentinel (get-process "shell") 'msg-me)
      @result{} msg-me
 @end group
 @group
 (kill-process (get-process "shell"))
-     @print{} Process: #<process shell> had the event ‘killed’
+     @print{} Process: #<process shell> had the event 'killed'
      @result{} #<process shell>
 @end group
 @end smallexample
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 12ed881..f73779b 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -557,19 +557,24 @@ calling @var{function}.
 @end example
 @end defun
 
address@hidden seq-some-p predicate sequence
-  This function returns the first member of sequence for which @var{predicate}
-returns address@hidden
address@hidden seq-some predicate sequence
+  This function returns address@hidden if @var{predicate} returns
address@hidden for any element of @var{sequence}.  If so, the returned
+value is the value returned by @var{predicate}.
 
 @example
 @group
-(seq-some-p #'numberp ["abc" 1 nil])
address@hidden 1
+(seq-some #'numberp ["abc" 1 nil])
address@hidden t
 @end group
 @group
-(seq-some-p #'numberp ["abc" "def"])
+(seq-some #'numberp ["abc" "def"])
 @result{} nil
 @end group
address@hidden
+(seq-some #'null ["abc" 1 nil])
address@hidden t
address@hidden group
 @end example
 @end defun
 
@@ -583,7 +588,7 @@ to every element of @var{sequence} returns address@hidden
 @result{} t
 @end group
 @group
-(seq-some-p #'numberp [2 4 "6"])
+(seq-some #'numberp [2 4 "6"])
 @result{} nil
 @end group
 @end example
@@ -621,18 +626,18 @@ according to @var{function}, a function of two arguments 
that returns
 address@hidden if the first argument should sort before the second.
 @end defun
 
address@hidden seq-contains-p sequence elt &optional function
address@hidden seq-contains sequence elt &optional function
   This function returns the first element in @var{sequence} that is equal to
 @var{elt}.  If the optional argument @var{function} is address@hidden,
 it is a function of two arguments to use instead of the default @code{equal}.
 
 @example
 @group
-(seq-contains-p '(symbol1 symbol2) 'symbol1)
+(seq-contains '(symbol1 symbol2) 'symbol1)
 @result{} symbol1
 @end group
 @group
-(seq-contains-p '(symbol1 symbol2) 'symbol3)
+(seq-contains '(symbol1 symbol2) 'symbol3)
 @result{} nil
 @end group
 @end example
diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi
index d882be4..f422507 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -486,8 +486,8 @@ accent Unicode characters:
 
 The optional argument @var{locale}, a string, overrides the setting of
 your current locale identifier for collation.  The value is system
-dependent; a @var{locale} "en_US.UTF-8" is applicable on POSIX
-systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
+dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
+systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
 systems.
 
 If @var{ignore-case} is address@hidden, characters are converted to lower-case
@@ -495,7 +495,7 @@ before comparing them.
 
 To emulate Unicode-compliant collation on MS-Windows systems,
 bind @code{w32-collate-ignore-punctuation} to a address@hidden value, since
-the codeset part of the locale cannot be "UTF-8" on MS-Windows.
+the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
 
 If your system does not support a locale environment, this function
 behaves like @code{string-equal}.
@@ -596,9 +596,9 @@ less significant for @ref{Sorting,,sorting}.
 
 The optional argument @var{locale}, a string, overrides the setting of
 your current locale identifier for collation.  The value is system
-dependent; a @var{locale} "en_US.UTF-8" is applicable on POSIX
-systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
-systems.  The @var{locale} "POSIX" lets @code{string-collate-lessp}
+dependent; a @var{locale} @code{"en_US.UTF-8"} is applicable on POSIX
+systems, while it would be, e.g., @code{"enu_USA.1252"} on MS-Windows
+systems.  The @var{locale} @code{"POSIX"} lets @code{string-collate-lessp}
 behave like @code{string-lessp}:
 
 @example
@@ -614,7 +614,7 @@ before comparing them.
 
 To emulate Unicode-compliant collation on MS-Windows systems,
 bind @code{w32-collate-ignore-punctuation} to a address@hidden value, since
-the codeset part of the locale cannot be "UTF-8" on MS-Windows.
+the codeset part of the locale cannot be @code{"UTF-8"} on MS-Windows.
 
 If your system does not support a locale environment, this function
 behaves like @code{string-lessp}.
@@ -969,12 +969,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
 
@@ -1013,12 +1013,12 @@ ignored.
 (format "%06d is padded on the left with zeros" 123)
      @result{} "000123 is padded on the left with zeros"
 
-(format "‘%-6d’ is padded on the right" 123)
-     @result{} "‘123   ’ is padded on the right"
+(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/text.texi b/doc/lispref/text.texi
index 245825a..55e550a 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -58,7 +58,7 @@ the character after point.
 * Base 64::          Conversion to or from base 64 encoding.
 * Checksum/Hash::    Computing cryptographic hashes.
 * Parsing HTML/XML:: Parsing HTML and XML.
-* Atomic Changes::   Installing several buffer changes "atomically".
+* Atomic Changes::   Installing several buffer changes ``atomically''.
 * Change Hooks::     Supplying functions to be run when text is changed.
 @end menu
 
@@ -1960,7 +1960,7 @@ Called from a program, there are three arguments:
 @group
 REVERSE (non-nil means reverse order),\
  BEG and END (region to sort).
-The variable ‘sort-fold-case’ determines\
+The variable `sort-fold-case' determines\
  whether alphabetic case affects
 the sort order."
 @end group
diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi
index 7107bb4..3bde0a8 100644
--- a/doc/lispref/tips.texi
+++ b/doc/lispref/tips.texi
@@ -689,7 +689,7 @@ immediately before the symbol name.  (Case makes no 
difference in
 recognizing these indicator words.)  For example, if you write
 
 @example
-This function sets the variable ‘buffer-file-name’.
+This function sets the variable `buffer-file-name'.
 @end example
 
 @noindent
@@ -702,7 +702,7 @@ you can write the words @samp{symbol} or @samp{program} 
before the
 symbol name to prevent making any hyperlink.  For example,
 
 @example
-If the argument KIND-OF-RESULT is the symbol ‘list’,
+If the argument KIND-OF-RESULT is the symbol `list',
 this function returns a list of all the objects
 that satisfy the criterion.
 @end example
@@ -727,7 +727,7 @@ name of the Info node (or anchor), preceded by
 anchor}.  The Info file name defaults to @samp{emacs}.  For example,
 
 @smallexample
-See Info node ‘Font Lock’ and Info node ‘(elisp)Font Lock Basics’.
+See Info node `Font Lock' and Info node `(elisp)Font Lock Basics'.
 @end smallexample
 
 Finally, to create a hyperlink to URLs, write the single-quoted URL,
@@ -735,7 +735,7 @@ preceded by @samp{URL}.  For example,
 
 @smallexample
 The home page for the GNU project has more information (see URL
-‘http://www.gnu.org/’).
+`http://www.gnu.org/').
 @end smallexample
 
 @item
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 15491e5..369e8dd 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -25,7 +25,7 @@ representing the variable.
 
 @menu
 * Global Variables::            Variable values that exist permanently, 
everywhere.
-* Constant Variables::          Certain "variables" have values that never 
change.
+* Constant Variables::          Certain ``variables'' have values that never 
change.
 * Local Variables::             Variable values that exist only temporarily.
 * Void Variables::              Symbols that lack values.
 * Defining Variables::          A definition says a symbol is used as a 
variable.
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 565abb5..7a824ac 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -867,14 +867,14 @@ It would look like this:
   )
 
 (defun MY-ROOT-FCN ()
-  "Return the root fcn for ‘default-directory’"
+  "Return the root fcn for `default-directory'"
   ;; You might be able to use 'ede-cpp-root-project-root'
   ;; and not write this at all.
   )
 
 (defun MY-LOAD (dir)
-  "Load a project of type ‘cpp-root’ for the directory DIR.
-Return nil if there isn’t one."
+  "Load a project of type `cpp-root' for the directory DIR.
+Return nil if there isn't one."
   ;; Use your preferred construction method here.
   (ede-cpp-root-project "NAME" :file (expand-file-name "FILE" dir)
                                :locate-fcn 'MYFCN)
diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi
index 75df1d4..3e9109d 100644
--- a/doc/misc/efaq.texi
+++ b/doc/misc/efaq.texi
@@ -4336,7 +4336,7 @@ best fix I've been able to come up with:
 
 @lisp
 (defun rmail-reply-t ()
-  "Reply only to the sender of the current message. (See ‘rmail-reply’.)"
+  "Reply only to the sender of the current message. (See rmail-reply.)"
   (interactive)
   (rmail-reply t))
 
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 7cee5c3..fb4e147 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -1529,7 +1529,7 @@ Currently, the default superclass is defined as follows:
   nil
   "Default parent class for classes with no specified parent class.
 Its slots are automatically adopted by classes with no specified
-parents.  This class is not stored in the ‘parent’ slot of a class vector."
+parents.  This class is not stored in the `parent' slot of a class vector."
   :abstract t)
 @end example
 
diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi
index 3192e4b..35d315c 100644
--- a/doc/misc/ert.texi
+++ b/doc/misc/ert.texi
@@ -861,7 +861,7 @@ The most common use of this is to run just the tests for one
 particular module.  Since symbol prefixes are the usual way of
 separating module namespaces in Emacs Lisp, test selectors already
 solve this by allowing regexp matching on test names; e.g., the
-selector "^ert-" selects ERT's self-tests.
+selector @code{"^ert-"} selects ERT's self-tests.
 
 Other uses include grouping tests by their expected execution time,
 e.g., to run quick tests during interactive development and slow tests less
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 0b856c7..19c78bf 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -892,11 +892,11 @@ more readable?
 
 @subsubheading Answer
 
-Gnus offers you several functions to "wash" incoming mail, you can
+Gnus offers you several functions to ``wash'' incoming mail, you can
 find them if you browse through the menu, item
-Article->Washing. The most interesting ones are probably "Wrap
-long lines" (@samp{W w}), "Decode ROT13"
-(@samp{W r}) and "Outlook Deuglify" which repairs
+Article->Washing. The most interesting ones are probably ``Wrap
+long lines'' (@samp{W w}), ``Decode ROT13''
+(@samp{W r}) and ``Outlook Deuglify'' which repairs
 the dumb quoting used by many users of Microsoft products
 (@samp{W Y f} gives you full deuglify.
 See @samp{W Y C-h} or have a look at the menus for
@@ -1016,8 +1016,8 @@ mail groups. Is this a bug?
 
 No, that's a matter of design of Gnus, fixing this would
 mean reimplementation of major parts of Gnus'
-back ends. Gnus thinks "highest-article-number @minus{}
-lowest-article-number = total-number-of-articles". This
+back ends. Gnus thinks ``highest-article-number @minus{}
+lowest-article-number = total-number-of-articles''. This
 works OK for Usenet groups, but if you delete and move
 many messages in mail groups, this fails. To cure the
 symptom, enter the group via @samp{C-u RET}
@@ -1085,8 +1085,8 @@ You've got to play around with the variable
 gnus-summary-line-format. Its value is a string of
 symbols which stand for things like author, date, subject
 etc. A list of the available specifiers can be found in the
-manual node "Summary Buffer Lines" and the often forgotten
-node "Formatting Variables" and its sub-nodes. There
+manual node ``Summary Buffer Lines'' and the often forgotten
+node ``Formatting Variables'' and its sub-nodes. There
 you'll find useful things like positioning the cursor and
 tabulators which allow you a summary in table form, but
 sadly hard tabulators are broken in 5.8.8.
@@ -1671,7 +1671,7 @@ instead (works for newer versions as well):
          (setq message-user-fqdn fqdn)
        (gnus-message 1 "Redefining `message-make-fqdn'.")
        (defun message-make-fqdn ()
-         "Return user’s fully qualified domain name."
+         "Return user's fully qualified domain name."
          fqdn))))
 @end example
 @noindent
@@ -1765,9 +1765,9 @@ snippet by Frank Haun <pille3003@@fhaun.de> in
 
 @example
 (defun my-archive-article (&optional n)
-  "Copies one or more article(s) to a corresponding ‘nnml:’ group, e.g.,
-‘gnus.ding’ goes to ‘nnml:1.gnus.ding’. And ‘nnml:List-gnus.ding’ goes
-to ‘nnml:1.List-gnus-ding’.
+  "Copies one or more article(s) to a corresponding `nnml:' group, e.g.,
+`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes
+to `nnml:1.List-gnus-ding'.
 
 Use process marks or mark a region in the summary buffer to archive
 more then one article."
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 23a43f4..9093fa2 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -12565,7 +12565,7 @@ Gnus provides a few different methods for storing the 
mail and news you
 send.  The default method is to use the @dfn{archive virtual server} to
 store the messages.  If you want to disable this completely, the
 @code{gnus-message-archive-group} variable should be @code{nil}.  The
-default is "sent.%Y-%m", which gives you one archive group per month.
+default is @code{"sent.%Y-%m"}, which gives you one archive group per month.
 
 For archiving interesting messages in a group you read, see the
 @kbd{B c} (@code{gnus-summary-copy-article}) command (@pxref{Mail
@@ -15018,7 +15018,8 @@ corresponding keywords.
 
 @item :mailbox
 The name of the mailbox to get mail from.  The default is @samp{INBOX}
-which normally is the mailbox which receives incoming mail.
+which normally is the mailbox which receives incoming mail. Instead of
+a single mailbox, this can be a list of mailboxes to fetch mail from.
 
 @item :predicate
 The predicate used to find articles to fetch.  The default, @samp{UNSEEN
@@ -21033,8 +21034,8 @@ function:
 
 @lisp
 (defun gnus-decay-score (score)
-  "Decay SCORE according to ‘gnus-score-decay-constant’
-and ‘gnus-score-decay-scale’."
+  "Decay SCORE according to `gnus-score-decay-constant'
+and `gnus-score-decay-scale'."
   (let ((n (- score
               (* (if (< score 0) -1 1)
                  (min (abs score)
@@ -24080,7 +24081,7 @@ spam.  And here is the nifty function:
 
 @lisp
 (defun my-gnus-raze-spam ()
-  "Submit SPAM to Vipul’s Razor, then mark it as expirable."
+  "Submit SPAM to Vipul's Razor, then mark it as expirable."
   (interactive)
   (gnus-summary-save-in-pipe "razor-report -f -d" t)
   (gnus-summary-mark-as-expirable 1))
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index a0d74b4..a707ba5 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -909,7 +909,7 @@ The real answer, therefore, is a @code{/reconnect} command:
      "Reconnect the server process."
      (interactive "i")
      (unless process
-       (error "There’s no process for this target"))
+       (error "There's no process for this target"))
      (let* ((server (car (process-contact process)))
             (port (process-contact process :service))
             (nick (rcirc-nick process))
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 012c586..87c7c80 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -3691,6 +3691,24 @@ I would like to thank all @value{tramp} users who have 
contributed to
 the different recipes!
 
 
address@hidden I have saved @value{tramp} file names as indicated.  But it
+doesn't work in a new @value{emacsname} session!
+
+If you have saved an ad-hoc multi-hop @value{tramp} file name
+(@pxref{Ad-hoc multi-hops}) via bookmarks, recent files,
address@hidden emacs
+filecache, bbdb,
address@hidden ifset
+or another package, you must use the full ad-hoc file name including
+all hops, like @address@hidden, bird,
+bastion|address@hidden, /opt/news/etc}}.
+
+Alternatively, if you save only the abbreviated multi-hop file name
address@hidden@trampfn{ssh, news, news.my.domain, /opt/news/etc}}, the
+customer option @code{tramp-save-ad-hoc-proxies} must be set to a to a
address@hidden value.
+
+
 @ifset emacs
 @item
 How can I use @value{tramp} to connect to a remote @value{emacsname}
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index f449e3b..8f57e8c 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -1961,7 +1961,7 @@ can include a line like this in your Viper customization 
file:
 
 Viper lets you define hot keys, i.e., you can associate keyboard keys
 such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
-exist or that you will write).  Each key has a "preferred form" in
+exist or that you will write).  Each key has a ``preferred form'' in
 Emacs.  For instance, the Up key's preferred form is [up], the Help key's
 preferred form is [help], and the Undo key has the preferred form [f14].
 You can find out the preferred form of a key by typing @kbd{M-x
diff --git a/etc/NEWS b/etc/NEWS
index c664e02..8a08a06 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -91,6 +91,10 @@ so if you want to use it, you can always take a copy from an 
older Emacs.
 and *Buffer List*.  This makes Emacs convenient to use from the
 command line when `initial-buffer-choice' is non-nil.
 
++++
+** The value of ‘initial-scratch-message’ is now treated as a doc string
+and can contain escape sequences for command keys, quotes, and the like.
+
 
 * Changes in Emacs 25.1
 
@@ -828,14 +832,6 @@ notifications, if Emacs is compiled with file notification 
support.
 
 *** landmark.el (moved to elpa.gnu.org)
 
-+++
-** 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
 
@@ -860,6 +856,13 @@ a typographically-correct documents.
 
 * Incompatible Lisp Changes in Emacs 25.1
 
++++
+** `package-initialize' now sets `package-enable-at-startup' to nil if
+called during startup.  Users who call this function in their init
+file and still expect it to be run after startup should set
+`package-enable-at-startup' to t after the call to
+`package-initialize'.
+
 ** `:global' minor mode use `setq-default' rather than `setq'.
 This means that you can't use `make-local-variable' and expect them to
 "magically" become buffer-local.
@@ -951,6 +954,14 @@ If you want the old behavior where they matched any 
character with
 word syntax, use `\sw' instead.
 
 +++
+** 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.
+
++++
 ** The `diff' command uses the unified format now.  To restore the old
 behavior, set `diff-switches' to `-c'.
 
@@ -1113,8 +1124,9 @@ integers.
 ** New function `set-binary-mode' allows to switch a standard stream
 of the Emacs process to binary I/O mode.
 
-** In locales that cannot display curved quotes, ASCII approximations
-are installed in standard-display-table.
+** ASCII approximations to curved quotes are put in standard-display-table
+if the locale cannot display curved quotes, or if text-quoting-style
+initially specifies a preference for ASCII.
 
 ** Standard output and error streams now transliterate characters via
 standard-display-table, and encode output using locale-coding-system.
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 0ba21da..f372a28 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -399,7 +399,7 @@ A prefix argument means don't query; expand all abbrevs."
                   (buffer-substring-no-properties
                    (save-excursion (forward-word -1) (point))
                    pnt)))
-           (if (or noquery (y-or-n-p (format-message "Expand ‘%s’? " string)))
+           (if (or noquery (y-or-n-p (format-message "Expand `%s'? " string)))
                (expand-abbrev)))))))
 
 ;;; Abbrev properties.
diff --git a/lisp/align.el b/lisp/align.el
index 3020b6a..9eb04ef 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -1348,7 +1348,7 @@ aligner would have dealt with are."
              (if real-beg
                  (goto-char beg)
                (if (or (not thissep) (eq thissep 'entire))
-                   (error "Cannot determine alignment region for ‘%s’"
+                   (error "Cannot determine alignment region for `%s'"
                           (symbol-name (cdr (assq 'title rule)))))
                (beginning-of-line)
                (while (and (not (eobp))
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index f0a1cab..f31c3d8 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -384,9 +384,9 @@ The structure includes the guides lines, bullet, and bullet 
cue.")
 
 Entries on the list are lists whose first element is a symbol indicating
 the change type and subsequent elements are data specific to that change
-type.  Specifically:
+type.  For example:
 
- 'exposure `allout-exposure-from' `allout-exposure-to' `allout-exposure-flag'
+  (exposure ALLOUT-EXPOSURE-FROM ALLOUT-EXPOSURE-TO ALLOUT-EXPOSURE-FLAG)
 
 The changes are recorded in reverse order, with new values pushed
 onto the front.")
@@ -481,9 +481,9 @@ text in allout item bodies.")
 
 \(That space is used to convey selected cues indicating body qualities,
 including things like:
- - encryption ‘~’
- - numbering ‘#’
- - indirect reference address@hidden
+ - encryption `~'
+ - numbering `#'
+ - indirect reference `@'
  - distinctive bullets - see `allout-distinctive-bullets-string'.)")
 ;;;_    = allout-span-to-category
 (defvar allout-span-to-category
diff --git a/lisp/allout.el b/lisp/allout.el
index 3ba440f..f705573 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -229,7 +229,7 @@ See `allout-unprefixed-keybindings' for the list of 
keybindings
 that are not prefixed.
 
 Use vector format for the keys:
-  - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+  - put literal keys after a `?' question mark, eg: `?a', `?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
     of the modifiers, eg: [(control ?a)]
@@ -257,7 +257,7 @@ This is in contrast to the majority of allout-mode bindings 
on
 preceding command key.
 
 Use vector format for the keys:
-  - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+  - put literal keys after a `?' question mark, eg: `?a', `?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
     of the modifiers, eg: [(control ?a)]
@@ -1012,9 +1012,9 @@ determination of aberrance is according to the mistaken 
item
 being followed by a legitimate item of excessively greater depth.
 
 The classic example of a mistaken item, for a standard allout
-outline configuration, is a body line that begins with an ‘...’
+outline configuration, is a body line that begins with an `...'
 ellipsis.  This happens to contain a legitimate depth-2 header
-prefix, constituted by two ‘..’ dots at the beginning of the
+prefix, constituted by two `..' dots at the beginning of the
 line.  The only thing that can distinguish it *in principle* from
 a legitimate one is if the following real header is at a depth
 that is discontinuous from the depth of 2 implied by the
@@ -2081,20 +2081,20 @@ OPEN:   A TOPIC that is not CLOSED, though its 
OFFSPRING or BODY may be."
                  (and (not (string= allout-auto-activation "activate"))
                       (if (string= allout-auto-activation "ask")
                           (if (y-or-n-p (format-message
-                                         "Expose %s with layout ‘%s’? "
+                                         "Expose %s with layout `%s'? "
                                          (buffer-name) use-layout))
                               t
                             (message "Skipped %s layout." (buffer-name))
                             nil)
                         t)))
         (save-excursion
-          (message "Adjusting ‘%s’ exposure..." (buffer-name))
+          (message "Adjusting `%s' exposure..." (buffer-name))
           (goto-char 0)
           (allout-this-or-next-heading)
           (condition-case err
               (progn
                 (apply 'allout-expose-topic (list use-layout))
-                (message "Adjusting ‘%s’ exposure... done."
+                (message "Adjusting `%s' exposure... done."
                          (buffer-name)))
             ;; Problem applying exposure -- notify user, but don't
             ;; interrupt, eg, file visit:
@@ -3484,7 +3484,7 @@ Offer one suitable for current depth DEPTH as default."
       (goto-char (allout-current-bullet-pos))
       (setq choice (solicit-char-in-string
                     (format-message
-                     "Select bullet: %s (‘%s’ default): "
+                     "Select bullet: %s (`%s' default): "
                      sans-escapes
                      (allout-substring-no-properties default-bullet))
                     sans-escapes
@@ -5879,7 +5879,7 @@ With repeat count, copy the exposed portions of entire 
buffer."
 (defun allout-toggle-current-subtree-encryption (&optional keymode-cue)
   "Encrypt clear or decrypt encoded topic text.
 
-Allout uses Emacs ‘epg’ library to perform encryption.  Symmetric
+Allout uses Emacs `epg' library to perform encryption.  Symmetric
 and keypair encryption are supported.  All encryption is ascii
 armored.
 
@@ -5941,7 +5941,7 @@ associated with it.  This can be used to dissociate any
 recipients with the file, by selecting no recipients in the
 dialog.
 
-Encryption and decryption uses the Emacs ‘epg’ library.
+Encryption and decryption uses the Emacs `epg' library.
 
 Encrypted text will be ascii-armored.
 
@@ -6381,7 +6381,7 @@ for details on preparing Emacs for automatic allout 
activation."
       (allout-open-topic 2)
       (insert (substitute-command-keys
                (concat "Dummy outline topic header -- see"
-                       " ‘allout-mode’ docstring: ‘\\[describe-mode]’.")))
+                       " `allout-mode' docstring: `\\[describe-mode]'.")))
       (allout-adjust-file-variable
        "allout-layout" (or allout-layout '(-1 : 0))))))
 ;;;_   > allout-file-vars-section-data ()
@@ -6546,7 +6546,7 @@ Optional arg DO-DEFAULTING indicates to accept empty 
input (CR)."
 (defun regexp-sans-escapes (regexp &optional successive-backslashes)
   "Return a copy of REGEXP with all character escapes stripped out.
 
-Representations of actual backslashes -- ‘\\\\\\\\’ -- are left as a
+Representations of actual backslashes -- `\\\\\\\\' -- are left as a
 single backslash.
 
 Optional arg SUCCESSIVE-BACKSLASHES is used internally for recursion."
diff --git a/lisp/apropos.el b/lisp/apropos.el
index ec21296..6d7dc8a 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -682,7 +682,7 @@ the output includes key-bindings of commands."
        symbols apropos-do-all
        (concat
         (format-message
-                "Library ‘%s’ provides: %s\nand requires: %s"
+                "Library `%s' provides: %s\nand requires: %s"
                 file
                 (mapconcat 'apropos-library-button
                            (or provides '(nil)) " and ")
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 308d1ca..0351481 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -843,10 +843,10 @@ whose annotation is being edited.")
 The default annotation text is simply some text explaining how to use
 annotations."
   (concat (format-message
-           "#  Type the annotation for bookmark ‘%s’ here.\n"
+           "#  Type the annotation for bookmark `%s' here.\n"
            bookmark-name)
          (format-message
-           "#  All lines which start with a ‘#’ will be deleted.\n")
+           "#  All lines which start with a `#' will be deleted.\n")
          "#  Type C-c C-c when done.\n#\n"
          "#  Author: " (user-full-name) " <" (user-login-name) "@"
          (system-name) ">\n"
diff --git a/lisp/bs.el b/lisp/bs.el
index 6314bbb..1735c17 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -1314,7 +1314,7 @@ ALL-BUFFERS is the list of buffers appearing in Buffer 
Selection Menu."
   (format-mode-line mode-name nil nil start-buffer))
 
 (defun bs--get-file-name (_start-buffer _all-buffers)
-  "Return string for column ‘File’ in Buffer Selection Menu.
+  "Return string for column `File' in Buffer Selection Menu.
 This is the variable `buffer-file-name' of current buffer.
 If not visiting a file, `list-buffers-directory' is returned instead.
 START-BUFFER is the buffer where we started buffer selection.
diff --git a/lisp/button.el b/lisp/button.el
index 5fe5bf0..e7602dd 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -114,7 +114,7 @@ Mode-specific keymaps may want to use this as their parent 
keymap.")
   "Return the symbol used by button-type TYPE to store properties.
 Buttons inherit them by setting their `category' property to that symbol."
   (or (get type 'button-category-symbol)
-      (error "Unknown button type ‘%s’" type)))
+      (error "Unknown button type `%s'" type)))
 
 (defun define-button-type (name &rest properties)
   "Define a `button type' called NAME (a symbol).
@@ -208,7 +208,7 @@ changes to a supertype are not reflected in its subtypes)."
         (setq val (button-category-symbol val)))
        ((eq prop 'category)
         ;; Disallow updating the `category' property directly.
-        (error "Button ‘category’ property may not be set directly")))
+        (error "Button `category' property may not be set directly")))
   ;; Add the property.
   (cond ((overlayp button)
         (overlay-put button prop val))
@@ -333,7 +333,7 @@ Also see `insert-text-button'."
       (setq object beg beg 0 end (length object)))
     ;; Disallow setting the `category' property directly.
     (when (plist-get properties 'category)
-      (error "Button ‘category’ property may not be set directly"))
+      (error "Button `category' property may not be set directly"))
     (if (null type-entry)
        ;; The user didn't specify a `type' property, use the default.
        (setq properties (cons 'category (cons 'default-button properties)))
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 2c588c1..2319c48 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -1034,7 +1034,7 @@ in Calc algebraic input.")
 
 (defun math-restore-placeholders (x)
   "Replace placeholders by the proper characters in the symbol x.
-This includes ‘#’ for ‘_’ and ‘'’ for ‘%’.
+This includes `#' for `_' and `'' for `%'.
 If the current Calc language does not use placeholders, return nil."
   (if (or (memq calc-language calc-lang-allow-underscores)
           (memq calc-language calc-lang-allow-percentsigns))
@@ -1057,7 +1057,7 @@ If the current Calc language does not use placeholders, 
return nil."
 (defun math-read-if (cond op)
   (let ((then (math-read-expr-level 0)))
     (or (equal math-expr-data ":")
-       (throw 'syntax "Expected ‘:’"))
+       (throw 'syntax "Expected `:'"))
     (math-read-token)
     (list 'calcFunc-if cond then (math-read-expr-level (nth 3 op)))))
 
@@ -1121,7 +1121,7 @@ If the current Calc language does not use placeholders, 
return nil."
                                   (math-read-expr-list))))
                       (if (not (or (equal math-expr-data calc-function-close)
                                    (eq math-exp-token 'end)))
-                          (throw 'syntax "Expected ‘)’"))
+                          (throw 'syntax "Expected `)'"))
                       (math-read-token)
                       (if (and (memq calc-language
                                       calc-lang-parens-are-subscripts)
@@ -1177,7 +1177,7 @@ If the current Calc language does not use placeholders, 
return nil."
                          (setq el (cdr el))))
                     (if (equal math-expr-data "]")
                         (math-read-token)
-                      (throw 'syntax "Expected ‘]’")))
+                      (throw 'syntax "Expected `]'")))
                   val)))))
          ((eq math-exp-token 'dollar)
           (let ((abs (if (> math-expr-data 0) math-expr-data (- 
math-expr-data))))
@@ -1246,7 +1246,7 @@ If the current Calc language does not use placeholders, 
return nil."
             (if (not (or (equal math-expr-data ")")
                          (and (equal math-expr-data "]") (eq (car-safe exp) 
'intv))
                          (eq math-exp-token 'end)))
-                (throw 'syntax "Expected ‘)’"))
+                (throw 'syntax "Expected `)'"))
             (math-read-token)
             exp))
          ((eq math-exp-token 'string)
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index 3f6e83e..d0efe53 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -333,7 +333,7 @@
          (message (concat
                     "Embedded Calc mode enabled; "
                     (if calc-embedded-quiet
-                        "Type ‘C-x * x’"
+                        "Type `C-x * x'"
                       "Give this command again")
                     " to return to normal")))))
   (scroll-down 0))    ; fix a bug which occurs when truncate-lines is changed.
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 2442f02..cb6ab6f 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1957,7 +1957,7 @@ calc-kill calc-kill-region calc-yank))))
                  (desc
                   (if (symbolp func)
                       (if (= (logand kind 3) 0)
-                          (format-message "‘%c’ = %s" key name)
+                          (format-message "`%c' = %s" key name)
                         (if pos
                             (format "%s%c%s"
                                     (downcase (substring name 0 pos))
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index 8378b23..20b0249 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -958,7 +958,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
          (define-key calc-dumb-map "\C-c\C-c" 'exit-recursive-edit)))
     (use-local-map calc-dumb-map)
     (setq truncate-lines t)
-    (message "Type ‘q’ or ‘C-c C-c’ to return to Calc")
+    (message "Type `q' or `C-c C-c' to return to Calc")
     (recursive-edit)
     (bury-buffer "*Gnuplot Trail*")))
 
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 395b12d..444bb5e 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -240,7 +240,7 @@ C-w  Describe how there is no warranty for Calc."
                  (if (string-match "\\` +" prompts)
                      (setq prompts (substring prompts (match-end 0))))
                  (setq msg (format-message
-                            "%s:  %s%s‘%s’%s%s %s%s"
+                            "%s:  %s%s`%s'%s%s %s%s"
                             (if (string-match
                                  "\\`\\(calc-[-a-zA-Z0-9]+\\) *\\(.*\\)\\'"
                                  cmd)
@@ -345,7 +345,7 @@ C-w  Describe how there is no warranty for Calc."
   (calc-describe-thing var "Variable Index"))
 
 (defun calc-describe-thing (thing where &optional target not-quoted)
-  (message "Looking for ‘%s’ in %s..." thing where)
+  (message "Looking for `%s' in %s..." thing where)
   (let ((savewin (current-window-configuration)))
     (calc-info-goto-node where)
     (or (let ((case-fold-search nil))
@@ -361,7 +361,7 @@ C-w  Describe how there is no warranty for Calc."
           (if Info-history
               (Info-last))
          (set-window-configuration savewin)
-         (error "Can't find ‘%s’ in %s" thing where)))
+         (error "Can't find `%s' in %s" thing where)))
     (let (Info-history)
       (Info-goto-node (buffer-substring (match-beginning 1) (match-end 1))))
     (let* ((string-target (or target thing))
@@ -380,7 +380,7 @@ C-w  Describe how there is no warranty for Calc."
                 (re-search-forward quoted nil t)
                 (search-forward string-target nil t)))))
     (beginning-of-line)
-    (message "Found ‘%s’ in %s" thing where)))
+    (message "Found `%s' in %s" thing where)))
 
 (defun calc-view-news ()
   (interactive)
@@ -400,9 +400,9 @@ C-w  Describe how there is no warranty for Calc."
     (princ "GNU Emacs Calculator.\n")
     (princ "  By Dave Gillespie.\n")
     (princ (format "  %s\n\n" emacs-copyright))
-    (princ (format-message "Type ‘h s’ for a more detailed summary.\n"))
+    (princ (format-message "Type `h s' for a more detailed summary.\n"))
     (princ (format-message
-            "Or type ‘h i’ to read the full Calc manual on-line.\n\n"))
+            "Or type `h i' to read the full Calc manual on-line.\n\n"))
     (princ "Basic keys:\n")
     (let* ((calc-full-help-flag t))
       (mapc (function (lambda (x) (princ (format
@@ -417,10 +417,10 @@ C-w  Describe how there is no warranty for Calc."
                              (princ
                               (if (eq (nth 2 msgs) ?v)
                                    (format-message
-                                    "\n‘v’ or ‘V’ prefix (vector/matrix) keys: 
\n")
+                                    "\n`v' or `V' prefix (vector/matrix) keys: 
\n")
                                 (if (nth 2 msgs)
                                     (format-message
-                                     "\n‘%c’ prefix (%s) keys:\n"
+                                     "\n`%c' prefix (%s) keys:\n"
                                      (nth 2 msgs)
                                      (or (cdr (assq (nth 2 msgs)
                                                     calc-help-long-names))
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index 70a9ff8..6b3b949 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -94,7 +94,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'c)
-   (message "‘C’ language mode")))
+   (message "C language mode")))
 
 (put 'c 'math-oper-table
   '( ( "u!"    calcFunc-lnot -1 1000 )
@@ -387,7 +387,7 @@
              math-exp-token 'end
              math-expr-data "\000")
        x)
-    (throw 'syntax "Unmatched closing ‘/’")))
+    (throw 'syntax "Unmatched closing `/'")))
 
 (defun math-parse-fortran-subscr (sym args)
   (setq sym (math-build-var-name sym))
@@ -695,7 +695,7 @@
 
 (defun math-parse-tex-sum (f val)
   (let (low high save)
-    (or (equal math-expr-data "_") (throw 'syntax "Expected ‘_’"))
+    (or (equal math-expr-data "_") (throw 'syntax "Expected `_'"))
     (math-read-token)
     (setq save math-exp-old-pos)
     (setq low (math-read-factor))
@@ -703,7 +703,7 @@
        (progn
          (setq math-exp-old-pos (1+ save))
          (throw 'syntax "Expected equation")))
-    (or (equal math-expr-data "^") (throw 'syntax "Expected ‘^’"))
+    (or (equal math-expr-data "^") (throw 'syntax "Expected `^'"))
     (math-read-token)
     (setq high (math-read-factor))
     (list (nth 2 f) (math-read-factor) (nth 1 low) (nth 2 low) high)))
@@ -1165,14 +1165,14 @@
     (while (assoc math-expr-data '(("ccol") ("lcol") ("rcol")))
       (math-read-token)
       (or (equal math-expr-data calc-function-open)
-         (throw 'syntax "Expected ‘{’"))
+         (throw 'syntax "Expected `{'"))
       (math-read-token)
       (setq vec (cons (cons 'vec (math-read-expr-list)) vec))
       (or (equal math-expr-data calc-function-close)
-         (throw 'syntax "Expected ‘}’"))
+         (throw 'syntax "Expected `}'"))
       (math-read-token))
     (or (equal math-expr-data calc-function-close)
-       (throw 'syntax "Expected ‘}’"))
+       (throw 'syntax "Expected `}'"))
     (math-read-token)
     (math-transpose (cons 'vec (nreverse vec)))))
 
@@ -1187,7 +1187,7 @@
                          (math-read-expr-list))))
              (if (not (or (equal math-expr-data calc-function-close)
                           (eq math-exp-token 'end)))
-                 (throw 'syntax "Expected ‘)’"))
+                 (throw 'syntax "Expected `)'"))
              (math-read-token)
              (cons (intern (format "calcFunc-%s'" (nth 1 x))) args)))
        (list 'var
@@ -1211,7 +1211,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'yacas)
-   (message "‘Yacas’ language mode")))
+   (message "Yacas language mode")))
 
 (put 'yacas 'math-vector-brackets "{}")
 
@@ -1427,7 +1427,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'maxima)
-   (message "‘Maxima’ language mode")))
+   (message "Maxima language mode")))
 
 (put 'maxima 'math-oper-table
      '(("+"    +               100  100)
@@ -1625,7 +1625,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'giac)
-   (message "‘Giac’ language mode")))
+   (message "Giac language mode")))
 
 (put 'giac 'math-oper-table
   '( ( "["    (math-read-giac-subscr) 250 -1 )
@@ -1817,7 +1817,7 @@ order to Calc's."
 (defun math-read-giac-subscr (x op)
   (let ((idx (math-read-expr-level 0)))
     (or (equal math-expr-data "]")
-       (throw 'syntax "Expected ‘]’"))
+       (throw 'syntax "Expected `]'"))
     (math-read-token)
     (list 'calcFunc-subscr x (calc-normalize (list '+ idx 1)))))
 
@@ -1954,7 +1954,7 @@ order to Calc's."
             (progn
               (math-read-token)
               (equal math-expr-data "]")))
-       (throw 'syntax "Expected ‘]]’"))
+       (throw 'syntax "Expected `]]'"))
     (math-read-token)
     (list 'calcFunc-subscr x idx)))
 
@@ -2237,7 +2237,7 @@ order to Calc's."
               (if (= sep ?\.)
                   (setq h (1+ h)))
               (if (= sep ?\])
-                  (math-read-big-error (1- h) v "Expected ‘)’"))
+                  (math-read-big-error (1- h) v "Expected `)'"))
               (if (= sep ?\))
                   (setq p (math-read-big-rec
                             (1+ math-rb-h1) math-rb-v1 (1- h) math-rb-v2 v))
@@ -2252,7 +2252,7 @@ order to Calc's."
                                                      0 1)
                                                  p))))
                       ((= (math-read-big-char (1- h) v) ?\])
-                       (math-read-big-error (1- h) v "Expected ‘)’"))
+                       (math-read-big-error (1- h) v "Expected `)'"))
                       ((= sep ?\,)
                        (or (and (math-realp (car p)) (math-realp (nth 1 p)))
                            (math-read-big-error
@@ -2280,7 +2280,7 @@ order to Calc's."
                        (setq h (math-read-big-balance (1+ hleft) v "["))
                        (if hright
                            (or (= h hright)
-                               (math-read-big-error hright v "Expected ‘]’"))
+                               (math-read-big-error hright v "Expected `]'"))
                          (setq hright h))
                        (setq p (cons (math-read-big-rec
                                       hleft v h (1+ v)) p))
@@ -2293,7 +2293,7 @@ order to Calc's."
                         (setq h (1+ h)))
                     (and (= (math-read-big-char h v) ?\])
                          (setq h (1+ h))))
-                  (math-read-big-error (1- h) v "Expected ‘]’"))
+                  (math-read-big-error (1- h) v "Expected `]'"))
               (if (= (math-read-big-char h vtop) ?\,)
                   (setq h (1+ h)))
               (math-read-big-emptyp math-rb-h1 (1+ v) (1- h) math-rb-v2 nil t)
@@ -2317,7 +2317,7 @@ order to Calc's."
             (setq widest (math-read-big-char (1- h) v))
             (if (or (memq widest '(?\; ?\)))
                     (and (eq widest ?\.) (cdr p)))
-                (math-read-big-error (1- h) v "Expected ‘]’"))
+                (math-read-big-error (1- h) v "Expected `]'"))
             (if (= widest ?\.)
                 (setq h (1+ h)
                       widest (math-read-big-balance h v "[")
@@ -2369,7 +2369,7 @@ order to Calc's."
                                  h widest)
                            (= (math-read-big-char (1- h) v) ?\,)))
                   (or (= (math-read-big-char (1- h) v) ?\))
-                      (math-read-big-error (1- h) v "Expected ‘)’"))
+                      (math-read-big-error (1- h) v "Expected `)'"))
                   (setq p (cons line (nreverse p))))
               (setq p (list 'var
                             (intern (math-remove-dashes p))
@@ -2433,7 +2433,7 @@ order to Calc's."
                                            math-rb-v2 baseline nil t)))
                 (or (= (math-read-big-char math-read-big-h2 baseline) ?\:)
                     (math-read-big-error math-read-big-h2 baseline
-                                          "Expected ‘:’"))
+                                          "Expected `:'"))
                 (setq p (list (nth 1 widest) p y
                               (math-read-big-rec
                                 (1+ math-read-big-h2) math-rb-v1 math-rb-h2 
math-rb-v2
@@ -2509,7 +2509,7 @@ order to Calc's."
       (if (>= h len)
          (if what
              (math-read-big-error nil v (format-message
-                                          "Unmatched ‘%s’" what))
+                                          "Unmatched `%s'" what))
            (setq count 0))
        (if (memq (aref line h) '(?\( ?\[))
            (setq count (1+ count))
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index e141589..aa0ccb7 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -217,7 +217,7 @@ Calc user interface as before (either C-x * C or C-x * K; 
initially C-x * C).
 (defun calc-help ()
   (interactive)
   (let ((msgs
-        '("Press ‘h’ for complete help; press ‘?’ repeatedly for a summary"
+        '("Press `h' for complete help; press `?' repeatedly for a summary"
           "Letter keys: Negate; Precision; Yank; Why; Xtended cmd; Quit"
           "Letter keys: SHIFT + Undo, reDo; Inverse, Hyperbolic, Option"
           "Letter keys: SHIFT + sQrt; Sin, Cos, Tan; Exp, Ln, logB"
@@ -953,7 +953,7 @@ Prompts for bug subject.  Leaves you in a mail buffer."
                                nil nil nil
                                "Please describe exactly what actions triggered 
the bug and the
 precise symptoms of the bug.  If possible, include a backtrace by
-doing ‘\\[toggle-debug-on-error]’, then reproducing the bug.
+doing `\\[toggle-debug-on-error]', then reproducing the bug.
 " )))
 ;;;###autoload
 (defalias 'calc-report-bug 'report-calc-bug)
diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el
index b5eef7f..3ed9612 100644
--- a/lisp/calc/calc-mode.el
+++ b/lisp/calc/calc-mode.el
@@ -110,11 +110,11 @@
      (setq n (and (not (eq calc-auto-why t)) (if calc-auto-why t 1))))
    (calc-change-mode 'calc-auto-why n nil)
    (cond ((null n)
-         (message "User must press ‘w’ to explain unsimplified results"))
+         (message "User must press `w' to explain unsimplified results"))
         ((eq n t)
-         (message "Automatically doing ‘w’ to explain unsimplified results"))
+         (message "Automatically doing `w' to explain unsimplified results"))
         (t
-         (message "Automatically doing ‘w’ only for unusual messages")))))
+         (message "Automatically doing `w' only for unusual messages")))))
 
 (defun calc-group-digits (n)
   (interactive "P")
@@ -272,7 +272,7 @@
         (vals (mapcar (function (lambda (v) (symbol-value (car v))))
                       calc-mode-var-list)))
      (unless calc-settings-file
-       (error "No ‘calc-settings-file’ specified"))
+       (error "No `calc-settings-file' specified"))
      (set-buffer (find-file-noselect (substitute-in-file-name
                                      calc-settings-file)))
      (goto-char (point-min))
@@ -572,8 +572,8 @@
    (calc-change-mode 'calc-auto-recompute arg nil t)
    (calc-refresh-evaltos)
    (message (if calc-auto-recompute
-               "Automatically recomputing ‘=>’ forms when necessary"
-             "Not recomputing ‘=>’ forms automatically"))))
+               "Automatically recomputing `=>' forms when necessary"
+             "Not recomputing `=>' forms automatically"))))
 
 (defun calc-working (n)
   (interactive "P")
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index 58d2b5c..57af0d2 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -597,9 +597,9 @@
         ",")
        ((equal name "#")
         (search-backward "#")
-        (error "Token ‘#’ is reserved"))
+        (error "Token `#' is reserved"))
        ((and unquoted (string-match "#" name))
-        (error "Tokens containing ‘#’ must be quoted"))
+        (error "Tokens containing `#' must be quoted"))
        ((not (string-match "[^ ]" name))
         (search-backward "\"" nil t)
         (error "Blank tokens are not allowed"))
@@ -610,7 +610,7 @@
        (quoted nil))
     (while (progn
             (skip-chars-forward "\n\t ")
-            (if (eobp) (error "Expected ‘%s’" eterm))
+            (if (eobp) (error "Expected `%s'" eterm))
             (not (looking-at term)))
       (cond ((looking-at "%%")
             (end-of-line))
@@ -618,7 +618,7 @@
             (forward-char 2)
             (let ((p (calc-read-parse-table-part "}" "}")))
               (or (looking-at "[+*?]")
-                  (error "Expected ‘+’, ‘*’, or ‘?’"))
+                  (error "Expected `+', `*', or `?'"))
               (let ((sym (intern (buffer-substring (point) (1+ (point))))))
                 (forward-char 1)
                 (looking-at "[^\n\t ]*")
@@ -650,7 +650,7 @@
                                              (match-end 1)))))))
             (goto-char (match-end 0)))
            ((looking-at ":=[\n\t ]")
-            (error "Misplaced ‘:=’"))
+            (error "Misplaced `:='"))
            (t
             (looking-at "[^\n\t ]*")
             (let ((end (match-end 0)))
@@ -673,7 +673,7 @@
   (or last-kbd-macro
       (error "No keyboard macro defined"))
   (setq calc-invocation-macro last-kbd-macro)
-  (message "Use ‘C-x * Z’ to invoke this macro"))
+  (message "Use `C-x * Z' to invoke this macro"))
 
 (defun calc-user-define-edit ()
   (interactive)  ; but no calc-wrapper!
@@ -1899,7 +1899,7 @@ Redefine the corresponding command."
                          `((and
                             (,chk ,var)
                             (math-reject-arg ,var ',qual)))))
-             (error "Unknown qualifier ‘%s’" qual-name))))))))
+             (error "Unknown qualifier `%s'" qual-name))))))))
 
 (defun math-do-arg-list-check (args is-opt is-rest)
   (cond ((null args) nil)
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 4cf5b8c..3d8c865 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -443,7 +443,7 @@
         (calc-edit-mode (list 'calc-finish-stack-edit (list 'quote var))
                         t
                         (format-message
-                          "Editing variable ‘%s’" (calc-var-name var)))
+                          "Editing variable `%s'" (calc-var-name var)))
         (and value
              (insert (math-format-nice-expr value (frame-width)) "\n")))))
   (calc-show-edit-buffer))
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index d56c0b2..4373e52 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -1625,10 +1625,10 @@ If COMP or STD is non-nil, put that in the units table 
instead."
              (format-message
               (concat
                "(**) When in TeX or LaTeX display mode, the TeX specific 
unit\n"
-               "names will not use the ‘tex’ prefix; the unit name for a\n"
-               "TeX point will be ‘pt’ instead of ‘texpt’, for example.\n"
+               "names will not use the `tex' prefix; the unit name for a\n"
+               "TeX point will be `pt' instead of `texpt', for example.\n"
                "To avoid conflicts, the unit names for pint and parsec will\n"
-               "be ‘pint’ and ‘parsec’ instead of ‘pt’ and ‘pc’."))))
+               "be `pint' and `parsec' instead of `pt' and `pc'."))))
          (view-mode)
          (message "Formatting units table...done"))
        (setq math-units-table-buffer-valid t)
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index c7a3e716..cd15770 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -1618,13 +1618,13 @@ of two matrices is a matrix."
            (if (not (or (equal math-expr-data math-rb-close)
                         (equal math-expr-data ")")
                         (eq math-exp-token 'end)))
-               (throw 'syntax "Expected ‘]’")))
+               (throw 'syntax "Expected `]'")))
        (if (equal math-expr-data ";")
            (let ((math-exp-keep-spaces space-sep))
              (setq vals (cons 'vec (math-read-matrix (list vals))))))
        (if (not (or (equal math-expr-data math-rb-close)
                     (eq math-exp-token 'end)))
-           (throw 'syntax "Expected ‘]’")))
+           (throw 'syntax "Expected `]'")))
       (or (eq math-exp-token 'end)
          (math-read-token))
       vals)))
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index cce0470..5694a4e 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -603,9 +603,9 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
     (insert (propertize
              (concat
               (or title title "Calc Edit Mode. ")
-              (format-message "Press ‘C-c C-c’")
+              (format-message "Press `C-c C-c'")
               (if allow-ret "" " or RET")
-              (format-message " to finish, ‘C-x k RET’ to cancel.\n\n"))
+              (format-message " to finish, `C-x k RET' to cancel.\n\n"))
              'font-lock-face 'italic 'read-only t 'rear-nonsticky t 
'front-sticky t))
     (make-local-variable 'calc-edit-top)
     (setq calc-edit-top (point))))
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index ea20986..b4b0ad8 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -989,11 +989,11 @@ Used by `calc-user-invocation'.")
 (defvar calc-last-kill nil
   "The last number killed in calc-mode.")
 (defvar calc-dollar-values nil
-  "Values to be used for ‘$’.")
+  "Values to be used for `$'.")
 (defvar calc-dollar-used nil
-  "The highest order of ‘$’ that occurred.")
+  "The highest order of `$' that occurred.")
 (defvar calc-hashes-used nil
-  "The highest order of ‘#’ that occurred.")
+  "The highest order of `#' that occurred.")
 (defvar calc-quick-prev-results nil
   "Previous results from Quick Calc.")
 (defvar calc-said-hello nil
@@ -1474,7 +1474,7 @@ commands given here will actually operate on the 
*Calculator* stack."
          (and calc-display-trail
               (= (window-width) (frame-width))
               (calc-trail-display 1 t)))
-       (message "Welcome to the GNU Emacs Calculator!  Press ‘?’ or ‘h’ for 
help, ‘q’ to quit")
+       (message "Welcome to the GNU Emacs Calculator!  Press `?' or `h' for 
help, `q' to quit")
        (run-hooks 'calc-start-hook)
        (and (windowp full-display)
             (window-point full-display)
@@ -1622,7 +1622,7 @@ See calc-keypad for details."
                    (stringp (nth 1 err))
                    (string-match "max-specpdl-size\\|max-lisp-eval-depth"
                                  (nth 1 err)))
-              (error "Computation got stuck or ran too long.  Type ‘M’ to 
increase the limit")
+              (error "Computation got stuck or ran too long.  Type `M' to 
increase the limit")
             (setq calc-aborted-prefix nil)
             (signal (car err) (cdr err)))))
       (when calc-aborted-prefix
@@ -3856,7 +3856,7 @@ Also looks for the equivalent TeX words, \\gets and 
\\evalto."
 (defun calc-user-invocation ()
   (interactive)
   (unless calc-invocation-macro
-    (error "Use ‘Z I’ inside Calc to define a ‘C-x * Z’ keyboard macro"))
+    (error "Use `Z I' inside Calc to define a `C-x * Z' keyboard macro"))
   (execute-kbd-macro calc-invocation-macro nil))
 
 ;;; User-programmability.
diff --git a/lisp/calculator.el b/lisp/calculator.el
index 49d47a0..80b7c07 100644
--- a/lisp/calculator.el
+++ b/lisp/calculator.el
@@ -1551,7 +1551,7 @@ Used by `calculator-paste' and `get-register'."
   + - * / \\(div) %(rem) _(-X,postfix) ;(1/X,postfix) ^(exp) L(og)
   Q(sqrt) !(fact) S(in) C(os) T(an) |(or) #(xor) &(and) ~(not)
 * >/< repeats last binary operation with its 2nd (1st) arg as postfix op
-* I inverses next trig function        * '/\"/{} - display/display args
+* I inverses next trig function        * \\='/\"/{} - display/display args
 * D         - switch to all-decimal, or toggle deg/rad mode
 * B/O/H/X   - binary/octal/hex mode for i/o (X is a shortcut for H)
 * i/o       - prefix for d/b/o/x - set only input/output modes
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 426bb28..d5d8a40 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -239,7 +239,7 @@ also calls `beep' for an audible reminder."
              (wrong-type-argument
               (if (not (listp mins))
                   (signal (car err) (cdr err))
-                (message "Argtype error in ‘appt-disp-window-function’ - \
+                (message "Argtype error in `appt-disp-window-function' - \
 update it for multiple appts?")
                 ;; Fallback to just displaying the first appt, as we used to.
                 (funcall appt-disp-window-function
diff --git a/lisp/calendar/cal-bahai.el b/lisp/calendar/cal-bahai.el
index b68ba8a..998dc6c 100644
--- a/lisp/calendar/cal-bahai.el
+++ b/lisp/calendar/cal-bahai.el
@@ -1,10 +1,10 @@
-;;; cal-bahai.el --- calendar functions for the Bahá'í calendar.
+;;; cal-bahai.el --- calendar functions for the Bahá’í calendar.
 
 ;; Copyright (C) 2001-2015 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <address@hidden>
 ;; Keywords: calendar
-;; Human-Keywords: Bahá'í calendar, Bahá'í, Baha'i, Bahai, calendar, diary
+;; Human-Keywords: Bahá’í calendar, Bahá’í, Baha'i, Bahai, calendar, diary
 ;; Package: calendar
 
 ;; This file is part of GNU Emacs.
@@ -25,9 +25,9 @@
 ;;; Commentary:
 
 ;; This collection of functions implements the features of calendar.el
-;; and diary-lib.el that deal with the Bahá'í calendar.
+;; and diary-lib.el that deal with the Bahá’í calendar.
 
-;; The Bahá'í (http://www.bahai.org) calendar system is based on a
+;; The Bahá’í (http://www.bahai.org) calendar system is based on a
 ;; solar cycle of 19 months with 19 days each.  The four remaining
 ;; "intercalary" days are called the Ayyám-i-Há (days of Há), and are
 ;; placed between the 18th and 19th months.  They are meant as a time
@@ -59,13 +59,13 @@
   ["Bahá" "Jalál" "Jamál" "‘Aẓamat" "Núr" "Raḥmat" "Kalimát" "Kamál"
    "Asmá’" "‘Izzat" "Mashíyyat" "‘Ilm" "Qudrat" "Qawl" "Masá’il"
    "Sharaf" "Sulṭán" "Mulk" "‘Alá’"]
-  "Array of the month names in the Bahá'í calendar.")
+  "Array of the month names in the Bahá’í calendar.")
 
 (defconst calendar-bahai-epoch (calendar-absolute-from-gregorian '(3 21 1844))
-  "Absolute date of start of Bahá'í calendar = March 21, 1844 AD.")
+  "Absolute date of start of Bahá’í calendar = March 21, 1844 AD.")
 
 (defun calendar-bahai-leap-year-p (year)
-  "True if Bahá'í YEAR is a leap year in the Bahá'í calendar."
+  "True if Bahá’í YEAR is a leap year in the Bahá’í calendar."
   (calendar-leap-year-p (+ year 1844)))
 
 (defconst calendar-bahai-leap-base
@@ -74,7 +74,7 @@
 Used by `calendar-bahai-to-absolute'.")
 
 (defun calendar-bahai-to-absolute (date)
-  "Compute absolute date from Bahá'í date DATE.
+  "Compute absolute date from Bahá’í date DATE.
 The absolute date is the number of days elapsed since the (imaginary)
 Gregorian date Sunday, December 31, 1 BC."
   (let* ((month (calendar-extract-month date))
@@ -95,9 +95,9 @@ Gregorian date Sunday, December 31, 1 BC."
        day)))                           ; days so far this month
 
 (defun calendar-bahai-from-absolute (date)
-  "Bahá'í date (month day year) corresponding to the absolute DATE."
+  "Bahá’í date (month day year) corresponding to the absolute DATE."
   (if (< date calendar-bahai-epoch)
-      (list 0 0 0)                      ; pre-Bahá'í date
+      (list 0 0 0)                      ; pre-Bahá’í date
     (let* ((greg (calendar-gregorian-from-absolute date))
            (gmonth (calendar-extract-month greg))
            (year (+ (- (calendar-extract-year greg) 1844)
@@ -116,7 +116,7 @@ Gregorian date Sunday, December 31, 1 BC."
 
 ;;;###cal-autoload
 (defun calendar-bahai-date-string (&optional date)
-  "String of Bahá'í date of Gregorian DATE.
+  "String of Bahá’í date of Gregorian DATE.
 Defaults to today's date if DATE is not given."
   (let* ((bahai-date (calendar-bahai-from-absolute
                       (calendar-absolute-from-gregorian
@@ -142,19 +142,19 @@ Defaults to today's date if DATE is not given."
 
 ;;;###cal-autoload
 (defun calendar-bahai-print-date ()
-  "Show the Bahá'í calendar equivalent of the selected date."
+  "Show the Bahá’í calendar equivalent of the selected date."
   (interactive)
   (let ((s (calendar-bahai-date-string (calendar-cursor-to-date t))))
    (if (string-equal s "")
-       (message "Date is pre-Bahá'í")
-     (message "Bahá'í date: %s" s))))
+       (message "Date is pre-Bahá’í")
+     (message "Bahá’í date: %s" s))))
 
 (defun calendar-bahai-read-date ()
- "Interactively read the arguments for a Bahá'í date command.
+ "Interactively read the arguments for a Bahá’í date command.
 Reads a year, month and day."
   (let* ((today (calendar-current-date))
          (year (calendar-read
-                "Bahá'í calendar year (not 0): "
+                "Bahá’í calendar year (not 0): "
                 (lambda (x) (not (zerop x)))
                 (number-to-string
                  (calendar-extract-year
@@ -163,19 +163,19 @@ Reads a year, month and day."
          (completion-ignore-case t)
          (month (cdr (assoc
                       (completing-read
-                       "Bahá'í calendar month name: "
+                       "Bahá’í calendar month name: "
                        (mapcar 'list
                                (append calendar-bahai-month-name-array nil))
                        nil t)
                       (calendar-make-alist calendar-bahai-month-name-array
                                            1))))
-         (day (calendar-read "Bahá'í calendar day (1-19): "
+         (day (calendar-read "Bahá’í calendar day (1-19): "
                              (lambda (x) (and (< 0 x) (<= x 19))))))
     (list (list month day year))))
 
 ;;;###cal-autoload
 (defun calendar-bahai-goto-date (date &optional noecho)
-  "Move cursor to Bahá'í date DATE; echo Bahá'í date unless NOECHO is non-nil."
+  "Move cursor to Bahá’í date DATE; echo Bahá’í date unless NOECHO is non-nil."
   (interactive (calendar-bahai-read-date))
   (calendar-goto-date (calendar-gregorian-from-absolute
                        (calendar-bahai-to-absolute date)))
@@ -186,8 +186,8 @@ Reads a year, month and day."
 
 ;;;###holiday-autoload
 (defun holiday-bahai (month day string)
-  "Holiday on MONTH, DAY (Bahá'í) called STRING.
-If MONTH, DAY (Bahá'í) is visible in the current calendar window,
+  "Holiday on MONTH, DAY (Bahá’í) called STRING.
+If MONTH, DAY (Bahá’í) is visible in the current calendar window,
 returns the corresponding Gregorian date in the form of the
 list (((month day year) STRING)).  Otherwise, returns nil."
   ;; Since the calendar window shows 3 months at a time, there are
@@ -199,7 +199,7 @@ list (((month day year) STRING)).  Otherwise, returns nil."
          (m (calendar-extract-month bahai-date))
          (y (calendar-extract-year bahai-date))
          date)
-    (unless (< m 1)                    ; Bahá'í calendar doesn't apply
+    (unless (< m 1)                    ; Bahá’í calendar doesn't apply
       ;; Cf holiday-fixed, holiday-islamic.
       ;; With a +- 3 month calendar window, and 19 months per year,
       ;; month 16 is special.  When m16 is central is when the
@@ -209,7 +209,7 @@ list (((month day year) STRING)).  Otherwise, returns nil."
       ;; To see if other months are visible we can shift the range
       ;; accordingly.
       (calendar-increment-month m y (- 16 month) 19)
-      (and (> m 12)                     ; Bahá'í date might be visible
+      (and (> m 12)                     ; Bahá’í date might be visible
            (calendar-date-is-visible-p
             (setq date (calendar-gregorian-from-absolute
                         (calendar-bahai-to-absolute (list month day y)))))
@@ -219,9 +219,9 @@ list (((month day year) STRING)).  Otherwise, returns nil."
 
 ;;;###holiday-autoload
 (defun holiday-bahai-new-year ()
-  "Holiday entry for the Bahá'í New Year, if visible in the calendar window."
+  "Holiday entry for the Bahá’í New Year, if visible in the calendar window."
   (holiday-fixed 3 21
-                 (format "Bahá'í New Year (Naw-Ruz) %d"
+                 (format "Bahá’í New Year (Naw-Ruz) %d"
                          (- displayed-year (1- 1844)))))
 
 ;;;###holiday-autoload
@@ -246,12 +246,12 @@ Only considers the first, ninth, and twelfth days, unless 
ALL or
 
 ;;;###diary-autoload
 (defun diary-bahai-list-entries ()
-  "Add any Bahá'í date entries from the diary file to `diary-entries-list'.
-Bahá'í date diary entries must be prefaced by `diary-bahai-entry-symbol'
+  "Add any Bahá’í date entries from the diary file to `diary-entries-list'.
+Bahá’í date diary entries must be prefaced by `diary-bahai-entry-symbol'
 \(normally a `B').  The same diary date forms govern the style of the
-Bahá'í calendar entries, except that the Bahá'í month names cannot be
-abbreviated.  The Bahá'í months are numbered from 1 to 19 with Bahá being
-1 and 19 being `Alá.  If a Bahá'í date diary entry begins with
+Bahá’í calendar entries, except that the Bahá’í month names cannot be
+abbreviated.  The Bahá’í months are numbered from 1 to 19 with Bahá being
+1 and 19 being `Alá.  If a Bahá’í date diary entry begins with
 `diary-nonmarking-symbol', the entry will appear in the diary listing, but
 will not be marked in the calendar.  This function is provided for use with
 `diary-nongregorian-listing-hook'."
@@ -263,7 +263,7 @@ will not be marked in the calendar.  This function is 
provided for use with
 
 ;;;###diary-autoload
 (defun calendar-bahai-mark-date-pattern (month day year &optional color)
-  "Mark dates in calendar window that conform to Bahá'í date MONTH/DAY/YEAR.
+  "Mark dates in calendar window that conform to Bahá’í date MONTH/DAY/YEAR.
 A value of 0 in any position is a wildcard.  Optional argument COLOR is
 passed to `calendar-mark-visible-date' as MARK."
   (calendar-mark-1 month day year 'calendar-bahai-from-absolute
@@ -273,7 +273,7 @@ passed to `calendar-mark-visible-date' as MARK."
 
 ;;;###diary-autoload
 (defun diary-bahai-mark-entries ()
-  "Mark days in the calendar window that have Bahá'í date diary entries.
+  "Mark days in the calendar window that have Bahá’í date diary entries.
 Marks each entry in `diary-file' (or included files) visible in the calendar
 window.  See `diary-bahai-list-entries' for more information."
   (diary-mark-entries-1 'calendar-bahai-mark-date-pattern
@@ -286,7 +286,7 @@ window.  See `diary-bahai-list-entries' for more 
information."
 ;;;###cal-autoload
 (defun diary-bahai-insert-entry (arg)
   "Insert a diary entry.
-For the Bahá'í date corresponding to the date indicated by point.
+For the Bahá’í date corresponding to the date indicated by point.
 Prefix argument ARG makes the entry nonmarking."
   (interactive "P")
   (diary-insert-entry-1 nil arg calendar-bahai-month-name-array
@@ -296,7 +296,7 @@ Prefix argument ARG makes the entry nonmarking."
 ;;;###cal-autoload
 (defun diary-bahai-insert-monthly-entry (arg)
   "Insert a monthly diary entry.
-For the day of the Bahá'í month corresponding to the date indicated by point.
+For the day of the Bahá’í month corresponding to the date indicated by point.
 Prefix argument ARG makes the entry nonmarking."
   (interactive "P")
   (diary-insert-entry-1 'monthly arg calendar-bahai-month-name-array
@@ -306,7 +306,7 @@ Prefix argument ARG makes the entry nonmarking."
 ;;;###cal-autoload
 (defun diary-bahai-insert-yearly-entry (arg)
   "Insert an annual diary entry.
-For the day of the Bahá'í year corresponding to the date indicated by point.
+For the day of the Bahá’í year corresponding to the date indicated by point.
 Prefix argument ARG will make the entry nonmarking."
   (interactive "P")
   (diary-insert-entry-1 'yearly arg calendar-bahai-month-name-array
@@ -318,8 +318,8 @@ Prefix argument ARG will make the entry nonmarking."
 ;; To be called from diary-list-sexp-entries, where DATE is bound.
 ;;;###diary-autoload
 (defun diary-bahai-date ()
-  "Bahá'í calendar equivalent of date diary entry."
-  (format "Bahá'í date: %s" (calendar-bahai-date-string date)))
+  "Bahá’í calendar equivalent of date diary entry."
+  (format "Bahá’í date: %s" (calendar-bahai-date-string date)))
 
 
 (provide 'cal-bahai)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index 8a975d8..8bb1b88 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -611,7 +611,7 @@ is provided for use with `diary-nongregorian-listing-hook'."
   "Mark dates in calendar window that conform to Hebrew date MONTH/DAY/YEAR.
 A value of 0 in any position is a wildcard.  Optional argument COLOR is
 passed to `calendar-mark-visible-date' as MARK."
-  ;; FIXME not the same as the Bahai and Islamic cases, so can't use
+  ;; FIXME not the same as the Bahá’í and Islamic cases, so can't use
   ;; calendar-mark-1.
   (with-current-buffer calendar-buffer
     (if (and (not (zerop month)) (not (zerop day)))
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 7462df8..251d811 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -52,7 +52,7 @@
     ["Insert Anniversary" diary-insert-anniversary-entry]
     ["Insert Block" diary-insert-block-entry]
     ["Insert Cyclic" diary-insert-cyclic-entry]
-    ("Insert Bahá'í"
+    ("Insert Bahá’í"
      ["One time" diary-bahai-insert-entry]
      ["Monthly" diary-bahai-insert-monthly-entry]
      ["Yearly" diary-bahai-insert-yearly-entry])
@@ -132,7 +132,7 @@
     ["Astronomical Date" calendar-astro-goto-day-number]
     ["Hebrew Date" calendar-hebrew-goto-date]
     ["Persian Date" calendar-persian-goto-date]
-    ["Bahá'í Date" calendar-bahai-goto-date]
+    ["Bahá’í Date" calendar-bahai-goto-date]
     ["Islamic Date" calendar-islamic-goto-date]
     ["Julian Date" calendar-julian-goto-date]
     ["Chinese Date" calendar-chinese-goto-date]
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index e2e9182..e512fae 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -1602,7 +1602,7 @@ informative header, and run HOOK."
         (goto-char (point-min))
         (when (search-forward "documentclass" nil t)
           (forward-line 1)
-          ;; Eg for some Bahai holidays.
+          ;; E.g., for some Bahá’í holidays.
           ;; FIXME latin1 might not always be right.
           (insert "\\usepackage[latin1]{inputenc}\n"))))
   (latex-mode)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 07977af..86e5477 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -42,7 +42,7 @@
 ;; can be translated from the (usual) Gregorian calendar to the day of
 ;; the year/days remaining in year, to the ISO commercial calendar, to
 ;; the Julian (old style) calendar, to the Hebrew calendar, to the
-;; Islamic calendar, to the Bahá'í calendar, to the French
+;; Islamic calendar, to the Bahá’í calendar, to the French
 ;; Revolutionary calendar, to the Mayan calendar, to the Chinese
 ;; calendar, to the Coptic calendar, to the Ethiopic calendar, and to
 ;; the astronomical (Julian) day number.  Times of sunrise/sunset can
@@ -53,7 +53,7 @@
 ;; The following files are part of the calendar/diary code:
 
 ;;    appt.el                    Appointment notification
-;;    cal-bahai.el               Bahá'í calendar
+;;    cal-bahai.el               Bahá’í calendar
 ;;    cal-china.el               Chinese calendar
 ;;    cal-coptic.el              Coptic/Ethiopic calendars
 ;;    cal-dst.el                 Daylight saving time rules
@@ -375,7 +375,7 @@ When this expression is evaluated, DAY, MONTH, and YEAR are
 integers appropriate to the relevant date.  For example, to
 display the ISO date:
 
-  (setq calendar-date-echo-text '(format \"ISO date: %s\"
+  (setq calendar-date-echo-text \\='(format \"ISO date: %s\"
                                          (calendar-iso-date-string
                                           (list month day year))))
 Changing this variable without using customize has no effect on
@@ -655,7 +655,7 @@ causes the diary entry \"Vacation\" to appear from November 
1 through
 November 10, 1990.  See the documentation for the function
 `diary-list-sexp-entries' for more details.
 
-Diary entries based on the Hebrew, the Islamic and/or the Bahá'í
+Diary entries based on the Hebrew, the Islamic and/or the Bahá’í
 calendar are also possible, but because these are somewhat slow, they
 are ignored unless you set the `diary-nongregorian-listing-hook' and
 the `diary-nongregorian-marking-hook' appropriately.  See the
@@ -690,7 +690,7 @@ details, see the documentation for the variable 
`diary-list-entries-hook'."
   :group 'diary)
 
 (defcustom diary-bahai-entry-symbol "B"
-  "Symbol indicating a diary entry according to the Bahá'í calendar."
+  "Symbol indicating a diary entry according to the Bahá’í calendar."
   :type 'string
   :group 'diary)
 
@@ -1013,9 +1013,9 @@ calendar."
   :group 'holidays)
 
 (defcustom calendar-bahai-all-holidays-flag nil
-  "If nil, show only major holidays from the Bahá'í calendar.
+  "If nil, show only major holidays from the Bahá’í calendar.
 These are the days on which work and school must be suspended.
-Otherwise, show all the holidays that would appear in a complete Bahá'í
+Otherwise, show all the holidays that would appear in a complete Bahá’í
 calendar."
   :type 'boolean
   :group 'holidays)
@@ -1708,13 +1708,13 @@ remaining in the year, and the ISO week/year numbers:
 
   (list
    \"\"
-   '(calendar-hebrew-date-string date)
-   '(let* ((year (calendar-extract-year date))
+   \\='(calendar-hebrew-date-string date)
+   \\='(let* ((year (calendar-extract-year date))
            (d (calendar-day-number date))
            (days-remaining
             (- (calendar-day-number (list 12 31 year)) d)))
       (format \"%d/%d\" d days-remaining))
-   '(let* ((d (calendar-absolute-from-gregorian date))
+   \\='(let* ((d (calendar-absolute-from-gregorian date))
            (iso-date (calendar-iso-from-absolute d)))
       (format \"ISO week %d of %d\"
         (calendar-extract-month iso-date)
@@ -2571,7 +2571,7 @@ DATE is (month day year).  Calendars that do not apply 
are omitted."
            (unless (string-equal
                     (setq odate (calendar-bahai-date-string date))
                     "")
-             (format "Bahá'í date: %s" odate))
+             (format "Bahá’í date: %s" odate))
            (format "Chinese date: %s"
                    (calendar-chinese-date-string date))
            (unless (string-equal
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index b21fc68..a1370bb 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -300,7 +300,7 @@ expressions that can involve the keywords `days' (a 
number), `date'
 
 (defcustom diary-abbreviated-year-flag t
   "Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
-This applies to the Gregorian, Hebrew, Islamic, and Bahá'í calendars.
+This applies to the Gregorian, Hebrew, Islamic, and Bahá’í calendars.
 When the current century is added to a two-digit year, if the result
 is more than 50 years in the future, the previous century is assumed.
 If the result is more than 50 years in the past, the next century is assumed.
@@ -484,8 +484,8 @@ If so, return the expanded file name, otherwise signal an 
error."
   (if (and diary-file (file-exists-p diary-file))
       (if (file-readable-p diary-file)
           diary-file
-        (error "Diary file ‘%s’ is not readable" diary-file))
-    (error "Diary file ‘%s’ does not exist" diary-file)))
+        (error "Diary file `%s' is not readable" diary-file))
+    (error "Diary file `%s' does not exist" diary-file)))
 
 ;;;###autoload
 (defun diary (&optional arg)
@@ -1199,7 +1199,7 @@ ensure that all relevant variables are set.
 "
   (interactive "P")
   (if (string-equal diary-mail-addr "")
-      (user-error "You must set ‘diary-mail-addr’ to use this command")
+      (user-error "You must set `diary-mail-addr' to use this command")
     (let ((diary-display-function 'diary-fancy-display))
       (diary-list-entries (calendar-current-date) (or ndays diary-mail-days)))
     (compose-mail diary-mail-addr
@@ -1531,7 +1531,7 @@ passed to `calendar-mark-visible-date' as MARK."
         (calendar-mark-month m y month day year color)
         (calendar-increment-month m y 1)))))
 
-;; Bahai, Hebrew, Islamic.
+;; Bahá’í, Hebrew, Islamic.
 (defun calendar-mark-complex (month day year fromabs &optional color)
   "Mark dates in the calendar conforming to MONTH DAY YEAR of some system.
 The function FROMABS converts absolute dates to the appropriate date system.
@@ -1561,7 +1561,7 @@ Optional argument COLOR is passed to 
`calendar-mark-visible-date' as MARK."
            (calendar-mark-visible-date
             (calendar-gregorian-from-absolute date) color)))))
 
-;; Bahai, Islamic.
+;; Bahá’í, Islamic.
 (defun calendar-mark-1 (month day year fromabs toabs &optional color)
   "Mark dates in the calendar conforming to MONTH DAY YEAR of some system.
 The function FROMABS converts absolute dates to the appropriate date system.
@@ -1659,8 +1659,8 @@ on a weekend:
       &%%(let ((dayname (calendar-day-of-week date))
                (day (calendar-extract-day date)))
            (or
-             (and (= day 21) (memq dayname '(1 2 3 4 5)))
-             (and (memq day '(19 20)) (= dayname 5)))
+             (and (= day 21) (memq dayname \\='(1 2 3 4 5)))
+             (and (memq day \\='(19 20)) (= dayname 5)))
          ) UIUC pay checks deposited
 
 A number of built-in functions are available for this type of
@@ -2529,7 +2529,7 @@ entry is found the user is asked to confirm its addition."
                 #'diary-from-outlook-rmail)
                ((memq major-mode '(gnus-summary-mode gnus-article-mode))
                 #'diary-from-outlook-gnus)
-               (t (error "Don't know how to snarf in ‘%s’" major-mode)))))
+               (t (error "Don't know how to snarf in `%s'" major-mode)))))
     (funcall func noconfirm)))
 
 (provide 'diary-lib)
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index d282d74..bd3a558 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -173,15 +173,15 @@ See the documentation for `calendar-holidays' for 
details."
   '((holiday-bahai-new-year)
     (holiday-bahai-ridvan)      ; respects calendar-bahai-all-holidays-flag
     (holiday-fixed  5 23 "Declaration of the Báb")
-    (holiday-fixed  5 29 "Ascension of Bahá'u'lláh")
+    (holiday-fixed  5 29 "Ascension of Bahá’u’lláh")
     (holiday-fixed  7  9 "Martyrdom of the Báb")
     (holiday-fixed 10 20 "Birth of the Báb")
-    (holiday-fixed 11 12 "Birth of Bahá'u'lláh")
+    (holiday-fixed 11 12 "Birth of Bahá’u’lláh")
     (if calendar-bahai-all-holidays-flag
         (append
          (holiday-fixed 11 26 "Day of the Covenant")
-         (holiday-fixed 11 28 "Ascension of `Abdu'l-Bahá")))))
-  "Bahá'í holidays.
+         (holiday-fixed 11 28 "Ascension of `Abdu’l-Bahá")))))
+  "Bahá’í holidays.
 See the documentation for `calendar-holidays' for details."
   :type 'sexp
   :group 'holidays)
@@ -254,7 +254,7 @@ Several basic functions are provided for this purpose:
                                K>0, and MONTH's last day otherwise.
     (holiday-hebrew MONTH DAY STRING)  a fixed date on the Hebrew calendar
     (holiday-islamic MONTH DAY STRING) a fixed date on the Islamic calendar
-    (holiday-bahai MONTH DAY STRING)   a fixed date on the Bahá'í calendar
+    (holiday-bahai MONTH DAY STRING)   a fixed date on the Bahá’í calendar
     (holiday-julian MONTH DAY STRING)  a fixed date on the Julian calendar
     (holiday-sexp SEXP STRING) SEXP is a Gregorian-date-valued expression
                                in the variable `year'; if it evaluates to
@@ -282,11 +282,11 @@ To add the Islamic feast celebrating Mohammed's birthday, 
use
      (holiday-islamic 3 12 \"Mohammed's Birthday\")
 
 since the Islamic months are numbered from 1 starting with Muharram.
-To add an entry for the Bahá'í festival of Ridvan, use
+To add an entry for the Bahá’í festival of Ridvan, use
 
      (holiday-bahai 2 13 \"Festival of Ridvan\")
 
-since the Bahá'í months are numbered from 1 starting with Bahá.
+since the Bahá’í months are numbered from 1 starting with Bahá.
 To add Thomas Jefferson's birthday, April 2, 1743 (Julian), use
 
      (holiday-julian 4 2 \"Jefferson's Birthday\")
@@ -296,7 +296,7 @@ example, to include American presidential elections, which 
occur on the first
 Tuesday after the first Monday in November of years divisible by 4, add
 
      (holiday-sexp
-       '(if (zerop (% year 4))
+       \\='(if (zerop (% year 4))
            (calendar-gregorian-from-absolute
              (1+ (calendar-dayname-on-or-before
                    1 (+ 6 (calendar-absolute-from-gregorian
@@ -460,7 +460,7 @@ The optional LABEL is used to label the buffer created."
             (if holiday-islamic-holidays
                 (cons "Islamic" holiday-islamic-holidays))
             (if holiday-bahai-holidays
-                (cons "Bahá'í" holiday-bahai-holidays))
+                (cons "Bahá’í" holiday-bahai-holidays))
             (if holiday-oriental-holidays
                 (cons "Oriental" holiday-oriental-holidays))
             (if holiday-solar-holidays
diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el
index b75e442..4b71530 100644
--- a/lisp/calendar/icalendar.el
+++ b/lisp/calendar/icalendar.el
@@ -482,7 +482,7 @@ children."
     result))
 
 (defun icalendar--split-value (value-string)
-  "Split VALUE-STRING at ‘;=’."
+  "Split VALUE-STRING at `;='."
   (let ((result '())
         param-name param-value)
     (when value-string
@@ -1118,7 +1118,7 @@ FExport diary data into iCalendar file: ")
            (setq found-error t)
            (save-current-buffer
              (set-buffer (get-buffer-create "*icalendar-errors*"))
-             (insert (format-message "Error in line %d -- %s: ‘%s’\n"
+             (insert (format-message "Error in line %d -- %s: `%s'\n"
                                      (count-lines (point-min) (point))
                                      error-val
                                      entry-main))))))
@@ -1741,7 +1741,7 @@ entries.  ENTRY-MAIN is the first line of the diary 
entry."
           (when day
             (progn
               (icalendar--dmsg "diary-float %s" entry-main)
-              (error "Don't know if or how to implement day in 
‘diary-float’")))
+              (error "Don't know if or how to implement day in 
`diary-float'")))
 
           (cons (concat
                  ;;Start today (yes this is an arbitrary choice):
@@ -1788,7 +1788,7 @@ entries.  ENTRY-MAIN is the first line of the diary 
entry."
                     entry-main)
       (progn
         (icalendar--dmsg "diary-date %s" entry-main)
-        (error "‘diary-date’ is not supported yet"))
+        (error "`diary-date' is not supported yet"))
     ;; no match
     nil))
 
@@ -2104,7 +2104,7 @@ written into the buffer `*icalendar-errors*'."
                  (rrule (icalendar--get-event-property e 'RRULE))
                  (rdate (icalendar--get-event-property e 'RDATE))
                  (duration (icalendar--get-event-property e 'DURATION)))
-            (icalendar--dmsg "%s: ‘%s’" start-d summary)
+            (icalendar--dmsg "%s: `%s'" start-d summary)
             ;; check whether start-time is missing
             (if  (and dtstart
                       (string=
@@ -2282,7 +2282,7 @@ END-T is the event's end time in diary format."
                                                    interval))))
                  )
                 (t
-                 (message "Cannot handle COUNT attribute for ‘%s’ events."
+                 (message "Cannot handle COUNT attribute for `%s' events."
                           frequency)))
           (setq until-conv (icalendar--datetime-to-diary-date until))
           (setq until-1-conv (icalendar--datetime-to-diary-date until-1))
@@ -2473,7 +2473,7 @@ SUMMARY is not nil it must be a string that gives the 
summary of the
 entry.  In this case the user will be asked whether he wants to insert
 the entry."
   (when (or (not summary)
-            (y-or-n-p (format-message "Add appointment for ‘%s’ to diary? "
+            (y-or-n-p (format-message "Add appointment for `%s' to diary? "
                                       summary)))
     (when summary
       (setq non-marking
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index c13ef97..bb7e97e 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -377,9 +377,9 @@ This function does not work for SECONDS greater than 
`most-positive-fixnum'."
             spec (match-string 1 string))
       (unless (string-equal spec "%")
         (or (setq match (assoc (downcase spec) units))
-            (error "Bad format specifier: ‘%s’" spec))
+            (error "Bad format specifier: `%s'" spec))
         (if (assoc (downcase spec) usedunits)
-            (error "Multiple instances of specifier: ‘%s’" spec))
+            (error "Multiple instances of specifier: `%s'" spec))
         (if (string-equal (car match) "z")
             (setq zeroflag t)
           (unless larger
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el
index 797f217..67fc4c5 100644
--- a/lisp/calendar/timeclock.el
+++ b/lisp/calendar/timeclock.el
@@ -305,8 +305,8 @@ display (non-nil means on)."
               ;; on calling this function.
               (if display-time-mode
                   (timeclock-update-mode-line)
-                (message "Activate ‘display-time-mode’ or turn off \
-‘timeclock-use-display-time’ to see timeclock information"))
+                (message "Activate `display-time-mode' or turn off \
+`timeclock-use-display-time' to see timeclock information"))
               (add-hook 'display-time-hook 'timeclock-update-mode-line))
           (setq timeclock-update-timer
                 (run-at-time nil 60 'timeclock-update-mode-line))))
@@ -575,7 +575,7 @@ relative only to the time worked today, and not to past 
time."
 OLD-DEFAULT hours are set for every day that has no number indicated."
   (interactive "P")
   (if old-default (setq old-default (prefix-numeric-value old-default))
-    (error "‘timelog-make-hours-explicit’ requires an explicit argument"))
+    (error "`timelog-make-hours-explicit' requires an explicit argument"))
   (let ((extant-timelog (find-buffer-visiting timeclock-file))
        current-date)
     (with-current-buffer (find-file-noselect timeclock-file t)
@@ -589,7 +589,7 @@ OLD-DEFAULT hours are set for every day that has no number 
indicated."
                (unless (looking-at
                         (concat "^\\([bhioO]\\) \\([0-9]+/[0-9]+/[0-9]+\\) "
                                 "\\([0-9]+:[0-9]+:[0-9]+\\)"))
-                 (error "Can't parse ‘%s’" timeclock-file))
+                 (error "Can't parse `%s'" timeclock-file))
                (let ((this-date (match-string 2)))
                  (unless (or (and current-date
                                   (string= this-date current-date))
@@ -919,7 +919,7 @@ following format:
   (DEBT ENTRIES-BY-DAY ENTRIES-BY-PROJECT)
 
 DEBT is a floating point number representing the number of seconds
-“owed” before any work was done.  For a new file (one without a ‘b’
+“owed” before any work was done.  For a new file (one without a `b'
 entry), this is always zero.
 
 The two entries lists have similar formats.  They are both alists,
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 83f2fed..a04bf82 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -238,7 +238,7 @@ The final element is \"*\", indicating an unspecified 
month.")
                     (widget-put
                      widget :error
                      (format-message
-                      "Invalid value: must be distinct from ‘todo-item-mark’"))
+                      "Invalid value: must be distinct from `todo-item-mark'"))
                     widget)))
   :initialize 'custom-initialize-default
   :set 'todo-reset-prefix
@@ -1343,12 +1343,13 @@ todo or done items."
                            "deleting it will also delete the file.\n"
                            "Do you want to proceed? ")))
                  ((> archived 0)
-                  (todo-y-or-n-p (concat "This category has archived items; "
+                  (todo-y-or-n-p (format-message
+                                  (concat "This category has archived items; "
                                     "the archived category will remain\n"
                                     "after deleting the todo category.  "
                                     "Do you still want to delete it\n"
-                                    "(see ‘todo-skip-archived-categories’ "
-                                    "for another option)? ")))
+                                    "(see `todo-skip-archived-categories' "
+                                    "for another option)? "))))
                  (t
                   (todo-y-or-n-p (concat "Permanently remove category \"" cat
                                     "\"" (and arg " and all its entries")
@@ -1696,7 +1697,7 @@ only when no items are marked."
                     (widget-put
                      widget :error
                      (format-message
-                      "Invalid value: must be distinct from ‘todo-prefix’"))
+                      "Invalid value: must be distinct from `todo-prefix'"))
                     widget)))
   :set (lambda (symbol value)
         (custom-set-default symbol (propertize value 'face 'todo-mark)))
@@ -5036,7 +5037,7 @@ but the categories sexp differs from the current value of
        ;; Warn user if categories sexp has changed.
        (unless (string= ssexp cats)
          (message (concat "The sexp at the beginning of the file differs "
-                          "from the value of ‘todo-categories’.\n"
+                          "from the value of `todo-categories'.\n"
                           "If the sexp is wrong, you can fix it with "
                           "M-x todo-repair-categories-sexp,\n"
                           "but note this reverts any changes you have "
@@ -5533,7 +5534,7 @@ already entered and those still available."
                         (todo-insert-item--this-key)
                         todo-insert-item--argsleft)))))))))
       (setq todo-insert-item--argsleft todo-insert-item--newargsleft))
-    (when prompt (message "Press a key (so far ‘%s’): %s"
+    (when prompt (message "Press a key (so far `%s'): %s"
                          todo-insert-item--keys-so-far prompt))
     (set-transient-map map)
     (setq todo-insert-item--argsleft argsleft)))
@@ -5576,7 +5577,8 @@ already entered and those still available."
                                                        '(add/edit delete))
                                              " comment"))))
                          params " "))
-        (this-key (let ((key (read-key (concat todo-edit-item--prompt p->k))))
+        (key-prompt (substitute-command-keys todo-edit-item--prompt))
+        (this-key (let ((key (read-key (concat key-prompt p->k))))
                     (and (characterp key) (char-to-string key))))
         (this-param (car (rassoc this-key params))))
     (pcase this-param
@@ -5587,7 +5589,7 @@ already entered and those still available."
       (`delete (todo-edit-item--text 'comment-delete))
       (`diary (todo-edit-item--diary-inclusion))
       (`nonmarking (todo-edit-item--diary-inclusion 'nonmarking))
-      (`date (let ((todo-edit-item--prompt "Press a key (so far ‘e d’): "))
+      (`date (let ((todo-edit-item--prompt "Press a key (so far `e d'): "))
               (todo-edit-item--next-key
                todo-edit-item--date-param-key-alist arg)))
       (`full (progn (todo-edit-item--header 'date)
@@ -6602,7 +6604,7 @@ Added to `window-configuration-change-hook' in Todo mode."
   (if (called-interactively-p 'any)
       (message "%s"
                (substitute-command-keys
-                "Type ‘\\[todo-show]’ to enter Todo mode"))
+                "Type `\\[todo-show]' to enter Todo mode"))
     (todo-modes-set-1)
     (todo-modes-set-2)
     (todo-modes-set-3)
diff --git a/lisp/cedet/cedet-global.el b/lisp/cedet/cedet-global.el
index 9e31177..3773ba0 100644
--- a/lisp/cedet/cedet-global.el
+++ b/lisp/cedet/cedet-global.el
@@ -36,7 +36,7 @@
 
 (defcustom cedet-global-gtags-command "gtags"
   "Command name for the GNU Global gtags executable.
-GTAGS is used to create the tags table queried by the ‘global’ command."
+GTAGS is used to create the tags table queried by the `global' command."
   :type 'string
   :group 'cedet)
 
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 7d99b17..27d7abe 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -764,7 +764,7 @@ Optional argument NAME is the name to give this project."
                               (if cs
                                   (error "No valid interactive sub project 
types for %s"
                                          cs)
-                                (error "EDE error: Can't fin project types to 
create")))
+                                (error "EDE error: Can't find project types to 
create")))
                             r)
                           )
                          nil t)))
diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el
index 51459fa..b4fea42 100644
--- a/lisp/cedet/ede/auto.el
+++ b/lisp/cedet/ede/auto.el
@@ -239,9 +239,9 @@ type is required and the load function used.")
   "Add PROJAUTO, an EDE autoload definition to `ede-project-class-files'.
 Optional argument FLAG indicates how this autoload should be
 added.  Possible values are:
-  'generic - A generic project type.  Keep this at the very end.
-  'unique - A unique project type for a specific project.  Keep at the very
-            front of the list so more generic projects don't get priority."
+  `generic' - A generic project type.  Keep this at the very end.
+  `unique' - A unique project type for a specific project.  Keep at the very
+             front of the list so more generic projects don't get priority."
   ;; First, can we identify PROJAUTO as already in the list?  If so, replace.
   (let ((projlist ede-project-class-files)
        (projname (oref projauto name)))
diff --git a/lisp/cedet/ede/pmake.el b/lisp/cedet/ede/pmake.el
index 1318fde..b494e27 100644
--- a/lisp/cedet/ede/pmake.el
+++ b/lisp/cedet/ede/pmake.el
@@ -599,7 +599,7 @@ Argument THIS is the target that should insert stuff."
            "It needs to be regenerated by EDE.\n"
            "address@hidden If you have not modified Project.ede, you can"
            (format-message
-             " use ‘touch’ to update the Makefile time stamp.\n")
+             " use `touch' to update the Makefile time stamp.\n")
            "address@hidden"
            "\n\n# End of Makefile\n")))
 
diff --git a/lisp/cedet/inversion.el b/lisp/cedet/inversion.el
index 8409b73..9d07b67 100644
--- a/lisp/cedet/inversion.el
+++ b/lisp/cedet/inversion.el
@@ -230,8 +230,8 @@ string.      INCOMPATIBLE-VERSION can be nil.
 RESERVED arguments are kept for a later use.
 Return:
 - nil if everything is ok.
-- 'outdated if VERSION is less than MINIMUM.
-- 'incompatible if VERSION is not backward compatible with MINIMUM.
+- `outdated' if VERSION is less than MINIMUM.
+- `incompatible' if VERSION is not backward compatible with MINIMUM.
 - t if the check failed."
   (let ((code (if (stringp version)
                  (inversion-decode-version version)
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 72512c6..64c1f08 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -50,7 +50,7 @@
 
 (require 'find-func)
 ;; For find-function-regexp-alist. It is tempting to replace this
-;; ‘require‘ by (defvar find-function-regexp-alist) and
+;; ‘require’ by (defvar find-function-regexp-alist) and
 ;; with-eval-after-load, but model-local.el is typically loaded when a
 ;; semantic autoload is invoked, and something in semantic loads
 ;; find-func.el before mode-local.el, so the eval-after-load is lost.
@@ -658,7 +658,7 @@ SYMBOL is a function that can be overridden."
               (override (fetch-overload symbol)))
 
          (when override
-           (insert (format-message "\noverride in mode ‘%s’: ’%s’\n"
+           (insert (format-message "\noverride in mode `%s': `%s'\n"
                                    major-mode override))
             )))
       )))
@@ -760,9 +760,9 @@ META-NAME is a cons (OVERLOADABLE-SYMBOL . MAJOR-MODE)."
 (defun mode-local-print-binding (symbol)
   "Print the SYMBOL binding."
   (let ((value (symbol-value symbol)))
-    (princ (format-message "\n     ‘%s’ value is\n       " symbol))
+    (princ (format-message "\n     `%s' value is\n       " symbol))
     (if (and value (symbolp value))
-        (princ (format-message "‘%s’" value))
+        (princ (format-message "`%s'" value))
       (let ((pt (point)))
         (pp value)
         (save-excursion
@@ -820,7 +820,7 @@ META-NAME is a cons (OVERLOADABLE-SYMBOL . MAJOR-MODE)."
       )
      ((symbolp buffer-or-mode)
       (setq mode buffer-or-mode)
-      (princ (format-message "‘%s’\n" buffer-or-mode))
+      (princ (format-message "`%s'\n" buffer-or-mode))
       )
      ((signal 'wrong-type-argument
               (list 'buffer-or-mode buffer-or-mode))))
@@ -830,7 +830,7 @@ META-NAME is a cons (OVERLOADABLE-SYMBOL . MAJOR-MODE)."
     (while mode
       (setq table (get mode 'mode-local-symbol-table))
       (when table
-        (princ (format-message "\n- From ‘%s’\n" mode))
+        (princ (format-message "\n- From `%s'\n" mode))
         (mode-local-print-bindings table))
       (setq mode (get-mode-local-parent mode)))))
 
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 7ff6977..fe888f5 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -251,7 +251,7 @@ are found in SEQUENCE.
 Optional argument THROWSYM specifies a symbol the throw on non-recoverable 
error.
 Remaining arguments FLAGS are additional flags to apply when searching.
 This function knows of flags:
-  'mustbeclassvariable"
+  `mustbeclassvariable'"
   (let ((s sequence)                   ; copy of the sequence
        (tmp nil)                       ; tmp find variable
        (tag nil)                       ; tag return list
@@ -263,7 +263,7 @@ This function knows of flags:
        )
     ;; First order check.  Is this wholly contained in the typecache?
     (setq tmp (semanticdb-typecache-find sequence))
-  
+
     (when tmp
       (if (or (not tagclass) (semantic-tag-of-class-p tmp tagclass))
          ;; We are effectively done...
@@ -709,7 +709,7 @@ Returns nil if no alias was found."
   (when (eq (semantic-tag-get-attribute (car taglist) :kind) 'alias)
     (let ((tagname
           (semantic-analyze-split-name
-           (semantic-tag-name 
+           (semantic-tag-name
             (car (semantic-tag-get-attribute (car taglist) :members))))))
       (append (if (listp tagname)
                  tagname
diff --git a/lisp/cedet/semantic/analyze/complete.el 
b/lisp/cedet/semantic/analyze/complete.el
index c47b573..680a0ae 100644
--- a/lisp/cedet/semantic/analyze/complete.el
+++ b/lisp/cedet/semantic/analyze/complete.el
@@ -112,9 +112,9 @@ in a buffer."
 Argument CONTEXT is an object specifying the locally derived context.
 The optional argument FLAGS changes which return options are returned.
 FLAGS can be any number of:
-  'no-tc         - do not apply data-type constraint.
-  'no-longprefix - ignore long multi-symbol prefixes.
-  'no-unique     - do not apply unique by name filtering."
+  `no-tc'         - do not apply data-type constraint.
+  `no-longprefix' - ignore long multi-symbol prefixes.
+  `no-unique'     - do not apply unique by name filtering."
   (let* ((a context)
         (desired-type (semantic-analyze-type-constraint a))
         (desired-class (oref a prefixclass))
diff --git a/lisp/cedet/semantic/bovine/gcc.el 
b/lisp/cedet/semantic/bovine/gcc.el
index fe7a144..1d3f773 100644
--- a/lisp/cedet/semantic/bovine/gcc.el
+++ b/lisp/cedet/semantic/bovine/gcc.el
@@ -137,9 +137,9 @@ to give to the program."
   "The GCC setup data.
 This is setup by `semantic-gcc-setup'.
 This is an alist, and should include keys of:
-  'version  - the version of gcc
-  '--host   - the host symbol (used in include directories)
-  '--prefix - where GCC was installed.
+  `version'  - the version of gcc
+  `--host'   - the host symbol (used in include directories)
+  `--prefix' - where GCC was installed.
 It should also include other symbols GCC was compiled with.")
 
 ;;;###autoload
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 9c32388..d32b2c4 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1665,7 +1665,7 @@ Display mechanism using tooltip for a list of possible 
completions.")
        (when (>= (oref obj typing-count) 5)
          (oset obj mode 'standard)
          (setq mode 'standard)
-         (message "Resetting inline-mode to ‘standard’."))
+         (message "Resetting inline-mode to `standard'."))
        (when (and (> numcompl max-tags)
                   (< (oref obj typing-count) 2))
          ;; Discretely hint at completion availability.
@@ -1684,7 +1684,7 @@ Display mechanism using tooltip for a list of possible 
completions.")
              (setq msg-tail (concat "\n[<TAB> " (number-to-string (- numcompl 
max-tags)) " more]"))
            (setq msg-tail (concat "\n[<n/a> " (number-to-string (- numcompl 
max-tags)) " more]"))
            (when (>= (oref obj typing-count) 2)
-             (message "Refine search to display results beyond the ‘%s’ limit"
+             (message "Refine search to display results beyond the `%s' limit"
                       (symbol-name 
'semantic-complete-inline-max-tags-extended)))))
         ((= numcompl 1)
          ;; two possible cases
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index ff3431a..293f535 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -297,7 +297,7 @@ refreshed when things change.  See `semanticdb-ref-test'.
 Note for overloading:  If you opt to overload this function for your
 major mode, and your routine takes a long time, be sure to call
 
- (semantic-throw-on-input 'your-symbol-here)
+ (semantic-throw-on-input \\='your-symbol-here)
 
 so that it can be called from the idle work handler."
   )
diff --git a/lisp/cedet/semantic/decorate/include.el 
b/lisp/cedet/semantic/decorate/include.el
index 962dc49..1974e0a 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -540,7 +540,7 @@ For C/C++ includes located within a project, you can use a 
special
 EDE project that will wrap an existing build system.  You can do that
 like this in your .emacs file:
 
-  (ede-cpp-root-project \"NAME\" :file \"FILENAME\" :locate-fcn 'MYFCN)
+  (ede-cpp-root-project \"NAME\" :file \"FILENAME\" :locate-fcn \\='MYFCN)
 
 See the CEDET manual, the EDE manual, or the commentary in
 ede/cpp-root.el for more.
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 0e81b2c..d8ba6f2 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -173,10 +173,10 @@ recover the cached data with `semantic-get-cache-data'.
 LIFESPAN indicates how long the data cache will be remembered.
 The default LIFESPAN is 'end-of-command.
 Possible Lifespans are:
-  'end-of-command - Remove the cache at the end of the currently
-                    executing command.
-  'exit-cache-zone - Remove when point leaves the overlay at the
-                    end of the currently executing command."
+  `end-of-command' - Remove the cache at the end of the currently
+                     executing command.
+  `exit-cache-zone' - Remove when point leaves the overlay at the
+                      end of the currently executing command."
   ;; Check if LIFESPAN is valid before to create any overlay
   (or lifespan (setq lifespan 'end-of-command))
   (or (memq lifespan '(end-of-command exit-cache-zone))
diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el
index fc02d03..829eafa 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -369,7 +369,7 @@ That is @NAME."
 
 (defsubst semantic-java-doc-tag-name (tag)
   "Return name of the doc TAG symbol.
-That is TAG `symbol-name' without the leading address@hidden"
+That is TAG `symbol-name' without the leading `@'."
   (substring (symbol-name tag) 1))
 
 (defun semantic-java-doc-keyword-before-p (k1 k2)
diff --git a/lisp/cedet/semantic/tag-ls.el b/lisp/cedet/semantic/tag-ls.el
index 40eafd9..fe4440b 100644
--- a/lisp/cedet/semantic/tag-ls.el
+++ b/lisp/cedet/semantic/tag-ls.el
@@ -271,11 +271,11 @@ search locally, then semanticdb for that tag (when 
enabled.)")
 (define-overloadable-function semantic-tag-protection (tag &optional parent)
   "Return protection information about TAG with optional PARENT.
 This function returns on of the following symbols:
-   nil        - No special protection.  Language dependent.
-   'public    - Anyone can access this TAG.
-   'private   - Only methods in the local scope can access TAG.
-   'protected - Like private for outside scopes, like public for child
-                classes.
+   nil         - No special protection.  Language dependent.
+   `public'    - Anyone can access this TAG.
+   `private'   - Only methods in the local scope can access TAG.
+   `protected' - Like private for outside scopes, like public for child
+                 classes.
 Some languages may choose to provide additional return symbols specific
 to themselves.  Use of this function should allow for this.
 
diff --git a/lisp/cedet/semantic/wisent/javascript.el 
b/lisp/cedet/semantic/wisent/javascript.el
index b2a18fb..a676a8b 100644
--- a/lisp/cedet/semantic/wisent/javascript.el
+++ b/lisp/cedet/semantic/wisent/javascript.el
@@ -73,11 +73,11 @@ This function overrides `get-local-variables'."
 (define-mode-local-override semantic-tag-protection javascript-mode (tag 
&optional parent)
   "Return protection information about TAG with optional PARENT.
 This function returns on of the following symbols:
-   nil        - No special protection.  Language dependent.
-   'public    - Anyone can access this TAG.
-   'private   - Only methods in the local scope can access TAG.
-   'protected - Like private for outside scopes, like public for child
-                classes.
+   nil         - No special protection.  Language dependent.
+   `public'    - Anyone can access this TAG.
+   `private'   - Only methods in the local scope can access TAG.
+   `protected' - Like private for outside scopes, like public for child
+                 classes.
 Some languages may choose to provide additional return symbols specific
 to themselves.  Use of this function should allow for this.
 
@@ -114,7 +114,7 @@ This is currently needed for the mozrepl omniscient 
database."
            (setq symlist (list (match-string 1 tmp)
                                (substring tmp (1+ (match-end 1)) (length 
tmp))))
            (setq symlist (list tmp))))))))
-         
+
 ;;; Setup Function
 ;;
 ;; Since javascript-mode is an alias for js-mode, let it inherit all
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index d1b0015..2ff3060 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -45,9 +45,9 @@
 Only the ASK style inserter will query the user for a value.
 Dictionary value references that ask begin with the ? character.
 Possible values are:
-  'ask   - Prompt in the minibuffer as the value is inserted.
-  'field - Use the dictionary macro name as the inserted value,
-           and place a field there.  Matched fields change together.
+  `ask'   - Prompt in the minibuffer as the value is inserted.
+  `field' - Use the dictionary macro name as the inserted value,
+            and place a field there.  Matched fields change together.
 
 NOTE: The field feature does not yet work with XEmacs."
   :group 'srecode
diff --git a/lisp/cedet/srecode/srt-mode.el b/lisp/cedet/srecode/srt-mode.el
index 48f0555..7fc3541 100644
--- a/lisp/cedet/srecode/srt-mode.el
+++ b/lisp/cedet/srecode/srt-mode.el
@@ -258,9 +258,9 @@ we can tell font lock about them.")
            (when (class-abstract-p C)
              (throw 'skip nil))
 
-           (princ (substitute-command-keys "‘"))
+           (princ (substitute-command-keys "`"))
            (princ name)
-           (princ (substitute-command-keys "’"))
+           (princ (substitute-command-keys "'"))
            (when (slot-exists-p C 'key)
              (when key
                (princ " - Character Key: ")
diff --git a/lisp/comint.el b/lisp/comint.el
index b840a22..ead2757 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -2850,7 +2850,7 @@ then the filename reader will only accept a file that 
exists.
 
 A typical use:
  (interactive (comint-get-source \"Compile file: \" prev-lisp-dir/file
-                                 '(lisp-mode) t))"
+                                 \\='(lisp-mode) t))"
   (let* ((def (comint-source-default prev-dir/file source-modes))
         (stringfile (comint-extract-string))
         (sfile-p (and stringfile
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 08c1acd..aa26ac3 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -477,7 +477,7 @@
 (defun custom-split-regexp-maybe (regexp)
   "If REGEXP is a string, split it to a list at `\\|'.
 You can get the original back from the result with:
-  (mapconcat 'identity result \"\\|\")
+  (mapconcat \\='identity result \"\\|\")
 
 IF REGEXP is not a string, return it unchanged."
   (if (stringp regexp)
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 7e25119..dc40ca9 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -626,7 +626,7 @@ since it could result in memory overflow and make Emacs 
crash."
     (if (not (boundp symbol))
        ;; If variables are removed from C code, give an error here!
        (and native-p
-            (message "Note, built-in variable ‘%S’ not bound" symbol))
+            (message "Note, built-in variable `%S' not bound" symbol))
       ;; Save the standard value, unless we already did.
       (or (get symbol 'standard-value)
          (put symbol 'standard-value (list standard)))
diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el
index 7693c70..3ec0811 100644
--- a/lisp/cus-theme.el
+++ b/lisp/cus-theme.el
@@ -492,10 +492,10 @@ It includes all faces in list FACES."
                         '("" "c")))
        doc)
     (when fn
-      (princ (substitute-command-keys " in ‘"))
+      (princ (substitute-command-keys " in `"))
       (help-insert-xref-button (file-name-nondirectory fn)
                               'help-theme-def fn)
-      (princ (substitute-command-keys "’")))
+      (princ (substitute-command-keys "'")))
     (princ ".\n")
     (if (custom-theme-p theme)
        (progn
diff --git a/lisp/custom.el b/lisp/custom.el
index f2b5d52..ea5ab7a 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -548,13 +548,13 @@ VALUE should be a list of symbols.  For each symbol in 
that list,
 this specifies that SYMBOL should be set after the specified symbol,
 if both appear in constructs like `custom-set-variables'."
   (unless (listp value)
-    (error "Invalid custom dependency ‘%s’" value))
+    (error "Invalid custom dependency `%s'" value))
   (let* ((deps (get symbol 'custom-dependencies))
         (new-deps deps))
     (while value
       (let ((dep (car value)))
        (unless (symbolp dep)
-         (error "Invalid custom dependency ‘%s’" dep))
+         (error "Invalid custom dependency `%s'" dep))
        (unless (memq dep new-deps)
          (setq new-deps (cons dep new-deps)))
        (setq value (cdr value))))
@@ -830,7 +830,7 @@ to the front of this list.")
 (defsubst custom-check-theme (theme)
   "Check whether THEME is valid, and signal an error if it is not."
   (unless (custom-theme-p theme)
-    (error "Unknown theme ‘%s’" theme)))
+    (error "Unknown theme `%s'" theme)))
 
 (defun custom-push-theme (prop symbol theme mode &optional value)
   "Record VALUE for face or variable SYMBOL in custom theme THEME.
@@ -1043,7 +1043,7 @@ list, in which A occurs before B if B was defined with a
     (when elt
       (cond
        ((eq (car elt) 'dependant)
-       (error "Circular custom dependency on ‘%s’" sym))
+       (error "Circular custom dependency on `%s'" sym))
        ((car elt)
        (setcar elt 'dependant)
        (dolist (dep (get sym 'custom-dependencies))
@@ -1201,7 +1201,7 @@ Return t if THEME was successfully loaded, nil otherwise."
                                     (custom-available-themes))))
     nil nil))
   (unless (custom-theme-name-valid-p theme)
-    (error "Invalid theme name ‘%s’" theme))
+    (error "Invalid theme name `%s'" theme))
   ;; If THEME is already enabled, re-enable it after loading, even if
   ;; NO-ENABLE is t.
   (if no-enable
@@ -1217,7 +1217,7 @@ Return t if THEME was successfully loaded, nil otherwise."
                         '("" "c")))
        hash)
     (unless fn
-      (error "Unable to find theme file for ‘%s’" theme))
+      (error "Unable to find theme file for `%s'" theme))
     (with-temp-buffer
       (insert-file-contents fn)
       (setq hash (secure-hash 'sha256 (current-buffer)))
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 237cc00..be69a0b 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -161,7 +161,7 @@ otherwise."
       ;; Buttons
       (when (and button (not (widgetp wid-button)))
        (newline)
-       (insert (format-message "Here is a ‘%S’ button labeled ‘%s’.\n\n"
+       (insert (format-message "Here is a `%S' button labeled `%s'.\n\n"
                                 button-type button-label)))
       ;; Overlays
       (when overlays
@@ -724,25 +724,17 @@ relevant to POS."
           (when disp-vector
             (insert
              "\nThe display table entry is displayed by ")
-            (if (display-graphic-p (selected-frame))
-                (progn
-                  (insert "these fonts (glyph codes):\n")
-                  (dotimes (i (length disp-vector))
-                    (insert (glyph-char (car (aref disp-vector i))) ?:
-                            (propertize " " 'display '(space :align-to 5))
-                            (or (cdr (aref disp-vector i)) "-- no font --")
-                            "\n")
-                    (let ((face (glyph-face (car (aref disp-vector i)))))
-                      (when face
-                        (insert (propertize " " 'display '(space :align-to 5))
-                                "face: ")
-                        (insert (format-message "‘%s’\n" face))))))
-              (insert "these terminal codes:\n")
-              (dotimes (i (length disp-vector))
-                (insert (car (aref disp-vector i))
-                        (propertize " " 'display '(space :align-to 5))
-                        (or (cdr (aref disp-vector i)) "-- not encodable --")
-                        "\n"))))
+            (insert "these fonts (glyph codes):\n")
+            (dotimes (i (length disp-vector))
+              (insert (glyph-char (car (aref disp-vector i))) ?:
+                      (propertize " " 'display '(space :align-to 5))
+                      (or (cdr (aref disp-vector i)) "-- no font --")
+                      "\n")
+              (let ((face (glyph-face (car (aref disp-vector i)))))
+                (when face
+                  (insert (propertize " " 'display '(space :align-to 5))
+                          "face: ")
+                  (insert (format-message "`%s'\n" face))))))
 
           (when composition
             (insert "\nComposed")
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 4903b15..1b69091 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -687,8 +687,8 @@ to put saved Dired buffers automatically into Virtual Dired 
mode.
 
 Also useful for `auto-mode-alist' like this:
 
-  (add-to-list 'auto-mode-alist
-               '(\"[^/]\\\\.dired\\\\'\" . dired-virtual-mode))"
+  (add-to-list \\='auto-mode-alist
+               \\='(\"[^/]\\\\.dired\\\\\\='\" . dired-virtual-mode))"
   (interactive)
   (dired-virtual (dired-virtual-guess-dir)))
 
@@ -1354,11 +1354,11 @@ otherwise."
   (let ((file (dired-get-filename t)))
     (if dired-bind-vm
        (if (y-or-n-p (format-message
-                      "Visit ‘%s’ as a mail folder with VM?" file))
+                      "Visit `%s' as a mail folder with VM?" file))
            (dired-vm))
       ;; Read mail folder using rmail.
       (if (y-or-n-p (format-message
-                    "Visit ‘%s’ as a mailbox with RMAIL?" file))
+                    "Visit `%s' as a mailbox with RMAIL?" file))
          (dired-rmail)))))
 
 
diff --git a/lisp/dired.el b/lisp/dired.el
index 206de37..b78b632 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -91,7 +91,7 @@ spaces.  You might want to install ls from GNU Coreutils, 
which does
 support this option.  Alternatively, you might want to use Emacs's
 own emulation of \"ls\", by using:
   (setq ls-lisp-use-insert-directory-program nil)
-  (require 'ls-lisp)
+  (require \\='ls-lisp)
 This is used by default on MS Windows, which does not have an \"ls\" program.
 Note that `ls-lisp' does not support as many options as GNU ls, though.
 For more details, see Info node `(emacs)ls in Lisp'."
@@ -3567,7 +3567,7 @@ Thus, use \\[backward-page] to find the beginning of a 
group of errors."
               (unless (bolp)
                 (insert "\n"))
               (insert (current-time-string)
-                      (format-message "\tBuffer ‘%s’\n" (buffer-name obuf)))
+                      (format-message "\tBuffer `%s'\n" (buffer-name obuf)))
               (goto-char (point-max))
               (insert "\f\n")))))))
 
@@ -4399,7 +4399,7 @@ instead.
 
 ;;;***
 
-;;;### (autoloads nil "dired-x" "dired-x.el" 
"c1a6289ba8504b605595321436a9c04d")
+;;;### (autoloads nil "dired-x" "dired-x.el" 
"63be23901985afd2a9aadc64f2aacf37")
 ;;; Generated autoloads from dired-x.el
 
 (autoload 'dired-jump "dired-x" "\
diff --git a/lisp/electric.el b/lisp/electric.el
index bef5bb9..47cb020 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -434,12 +434,12 @@ The variable `electric-layout-rules' says when and how to 
insert newlines."
                                       nil string))))
 
 (defun electric-quote-post-self-insert-function ()
-  "Function that ‘electric-quote-mode’ adds to ‘post-self-insert-hook’.
+  "Function that `electric-quote-mode' adds to `post-self-insert-hook'.
 This requotes when a quoting key is typed."
   (when (and electric-quote-mode
              (memq last-command-event '(?\' ?\`)))
     (let ((start
-           (if comment-start
+           (if (and comment-start comment-use-syntax)
                (when (or electric-quote-comment electric-quote-string)
                  (let ((syntax (syntax-ppss)))
                    (and (or (and electric-quote-comment (nth 4 syntax))
@@ -486,11 +486,11 @@ enable the mode if ARG is omitted or nil.
 When enabled, as you type this replaces \\=` with \\=‘, \\=' with \\=’,
 \\=`\\=` with “, and \\='\\=' with ”.  This occurs only in comments, strings,
 and text paragraphs, and these are selectively controlled with
-‘electric-quote-comment’, ‘electric-quote-string’, and
-‘electric-quote-paragraph’.
+`electric-quote-comment', `electric-quote-string', and
+`electric-quote-paragraph'.
 
 This is a global minor mode.  To toggle the mode in a single buffer,
-use ‘electric-quote-local-mode’."
+use `electric-quote-local-mode'."
   :global t :group 'electricity
   :initialize 'custom-initialize-delay
   :init-value nil
@@ -507,7 +507,7 @@ use ‘electric-quote-local-mode’."
 
 ;;;###autoload
 (define-minor-mode electric-quote-local-mode
-  "Toggle ‘electric-quote-mode’ only in this buffer."
+  "Toggle `electric-quote-mode' only in this buffer."
   :variable (buffer-local-value 'electric-quote-mode (current-buffer))
   (cond
    ((eq electric-quote-mode (default-value 'electric-quote-mode))
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index bbff34d..62330fc 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1870,7 +1870,7 @@ function at point for which PREDICATE returns non-nil)."
     (if (equal function "")
        (if (ad-is-advised default)
            default
-         (error "ad-read-advised-function: ‘%s’ is not advised" default))
+         (error "ad-read-advised-function: `%s' is not advised" default))
       (intern function))))
 
 (defvar ad-advice-class-completion-table
@@ -1887,7 +1887,7 @@ class of FUNCTION)."
            (cl-dolist (class ad-advice-classes)
              (if (ad-get-advice-info-field function class)
                  (cl-return class)))
-           (error "ad-read-advice-class: ‘%s’ has no advices" function)))
+           (error "ad-read-advice-class: `%s' has no advices" function)))
   (let ((class (completing-read
                (format "%s (default %s): " (or prompt "Class") default)
                ad-advice-class-completion-table nil t)))
@@ -1904,7 +1904,7 @@ An optional PROMPT is used to prompt for the name."
                  (ad-get-advice-info-field function class)))
         (default
           (if (null name-completion-table)
-              (error "ad-read-advice-name: ‘%s’ has no %s advice"
+              (error "ad-read-advice-name: `%s' has no %s advice"
                      function class)
             (car (car name-completion-table))))
         (prompt (format "%s (default %s): " (or prompt "Name") default))
@@ -1995,9 +1995,9 @@ FUNCTION was not advised)."
   (interactive (ad-read-advice-specification "Enable advice of"))
   (if (ad-is-advised function)
       (if (eq (ad-enable-advice-internal function class name t) 0)
-         (error "ad-enable-advice: ‘%s’ has no %s advice matching ‘%s’"
+         (error "ad-enable-advice: `%s' has no %s advice matching `%s'"
                 function class name))
-    (error "ad-enable-advice: ‘%s’ is not advised" function)))
+    (error "ad-enable-advice: `%s' is not advised" function)))
 
 ;;;###autoload
 (defun ad-disable-advice (function class name)
@@ -2005,9 +2005,9 @@ FUNCTION was not advised)."
   (interactive (ad-read-advice-specification "Disable advice of"))
   (if (ad-is-advised function)
       (if (eq (ad-enable-advice-internal function class name nil) 0)
-         (error "ad-disable-advice: ‘%s’ has no %s advice matching ‘%s’"
+         (error "ad-disable-advice: `%s' has no %s advice matching `%s'"
                 function class name))
-    (error "ad-disable-advice: ‘%s’ is not advised" function)))
+    (error "ad-disable-advice: `%s' is not advised" function)))
 
 (defun ad-enable-regexp-internal (regexp class flag)
   "Set enable FLAGs of all CLASS advices whose name contains a REGEXP match.
@@ -2053,9 +2053,9 @@ in that CLASS."
            (ad-set-advice-info-field
             function class
             (delq advice-to-remove (ad-get-advice-info-field function class)))
-         (error "ad-remove-advice: ‘%s’ has no %s advice ‘%s’"
+         (error "ad-remove-advice: `%s' has no %s advice `%s'"
                 function class name)))
-    (error "ad-remove-advice: ‘%s’ is not advised" function)))
+    (error "ad-remove-advice: `%s' is not advised" function)))
 
 ;;;###autoload
 (defun ad-add-advice (function advice class position)
@@ -2319,7 +2319,7 @@ INDEX counts from zero."
              ,value-form))
          (argument-access
           `(setq ,argument-access ,value-form))
-         (t (error "ad-set-argument: No argument at position %d of ‘%s’"
+         (t (error "ad-set-argument: No argument at position %d of `%s'"
                    index arglist)))))
 
 (defun ad-get-arguments (arglist index)
@@ -2361,7 +2361,7 @@ The assignment starts at position INDEX."
       (setq index (1+ index))
       (setq values-index (1+ values-index)))
     (if (null set-forms)
-       (error "ad-set-arguments: No argument at position %d of ‘%s’"
+       (error "ad-set-arguments: No argument at position %d of `%s'"
               index arglist)
         (if (= (length set-forms) 1)
             ;; For exactly one set-form we can use values-form directly,...
@@ -2412,14 +2412,14 @@ The assignment starts at position INDEX."
 ;; The mapping should work for any two argument lists.
 
 (defun ad-map-arglists (source-arglist target-arglist)
-  "Make ‘funcall/apply’ form to map SOURCE-ARGLIST to TARGET-ARGLIST.
+  "Make `funcall/apply' form to map SOURCE-ARGLIST to TARGET-ARGLIST.
 The arguments supplied to TARGET-ARGLIST will be taken from SOURCE-ARGLIST just
 as if they had been supplied to a function with TARGET-ARGLIST directly.
 Excess source arguments will be neglected, missing source arguments will be
-supplied as nil.  Returns a ‘funcall’ or ‘apply’ form with the second element
-being ‘function’ which has to be replaced by an actual function argument.
-Example: ‘(ad-map-arglists '(a &rest args) '(w x y z))’ will return
-         ‘(funcall ad--addoit-function a (car args) (car (cdr args)) (nth 2 
args))’."
+supplied as nil.  Returns a `funcall' or `apply' form with the second element
+being `function' which has to be replaced by an actual function argument.
+Example: (ad-map-arglists '(a &rest args) '(w x y z)) will return
+         (funcall ad--addoit-function a (car args) (car (cdr args)) (nth 2 
args))."
   (let* ((parsed-source-arglist (ad-parse-arglist source-arglist))
         (source-reqopt-args (append (nth 0 parsed-source-arglist)
                                     (nth 1 parsed-source-arglist)))
@@ -2911,14 +2911,14 @@ the value of `ad-redefinition-action' and de/activate 
again."
            (if (not (eq current-definition original-definition))
                ;; We have a redefinition:
                (if (not (memq ad-redefinition-action '(accept discard warn)))
-                   (error "ad-redefinition-action: ‘%s’ %s"
+                   (error "ad-redefinition-action: `%s' %s"
                           function "invalidly redefined")
                  (if (eq ad-redefinition-action 'discard)
                      nil ;; Just drop it!
                    (funcall (or fsetfun #'fset) function newdef)
                     (ad-activate-internal function)
                    (if (eq ad-redefinition-action 'warn)
-                       (message "ad-handle-definition: ‘%s’ got redefined"
+                       (message "ad-handle-definition: `%s' got redefined"
                                 function))))
              ;; either advised def or correct original is in place:
              nil)
@@ -2953,7 +2953,7 @@ definition will always be cached for later usage."
         current-prefix-arg))
   (cond
    ((not (ad-is-advised function))
-    (error "ad-activate: ‘%s’ is not advised" function))
+    (error "ad-activate: `%s' is not advised" function))
    ;; Just return for forward advised and not yet defined functions:
    ((not (ad-get-orig-definition function)) nil)
    ((not (ad-has-any-advice function)) (ad-unadvise function))
@@ -2977,10 +2977,10 @@ a call to `ad-activate'."
   (interactive
    (list (ad-read-advised-function "Deactivate advice of" 'ad-is-active)))
   (if (not (ad-is-advised function))
-      (error "ad-deactivate: ‘%s’ is not advised" function)
+      (error "ad-deactivate: `%s' is not advised" function)
     (cond ((ad-is-active function)
           (if (not (ad-get-orig-definition function))
-              (error "ad-deactivate: ‘%s’ has no original definition"
+              (error "ad-deactivate: `%s' has no original definition"
                      function)
              (ad-clear-advicefunname-definition function)
             (ad-set-advice-info-field function 'active nil)
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 716e1c6..c3c61d6 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -255,11 +255,11 @@
                    (cdr (assq name byte-compile-function-environment)))))
     (pcase fn
       (`nil
-       (byte-compile-warn "attempt to inline ‘%s’ before it was defined"
+       (byte-compile-warn "attempt to inline `%s' before it was defined"
                           name)
        form)
       (`(autoload . ,_)
-       (error "File ‘%s’ didn't define ‘%s’" (nth 1 fn) name))
+       (error "File `%s' didn't define `%s'" (nth 1 fn) name))
       ((and (pred symbolp) (guard (not (eq fn t)))) ;A function alias.
        (byte-compile-inline-expand (cons fn (cdr form))))
       ((pred byte-code-function-p)
@@ -336,7 +336,7 @@
                                   bindings)
                    values nil))
             ((and (not optionalp) (null values))
-             (byte-compile-warn "attempt to open-code ‘%s’ with too few 
arguments" name)
+             (byte-compile-warn "attempt to open-code `%s' with too few 
arguments" name)
              (setq arglist nil values 'too-few))
             (t
              (setq bindings (cons (list (car arglist) (car values))
@@ -347,7 +347,7 @@
         (progn
           (or (eq values 'too-few)
               (byte-compile-warn
-               "attempt to open-code ‘%s’ with too many arguments" name))
+               "attempt to open-code `%s' with too many arguments" name))
           form)
 
                                        ;; The following leads to infinite 
recursion when loading a
@@ -383,7 +383,7 @@
             form))
          ((eq fn 'quote)
           (if (cdr (cdr form))
-              (byte-compile-warn "malformed quote form: ‘%s’"
+              (byte-compile-warn "malformed quote form: `%s'"
                                  (prin1-to-string form)))
           ;; map (quote nil) to nil to simplify optimizer logic.
           ;; map quoted constants to nil if for-effect (just because).
@@ -407,7 +407,7 @@
                         (if (symbolp binding)
                             binding
                           (if (cdr (cdr binding))
-                              (byte-compile-warn "malformed let binding: ‘%s’"
+                              (byte-compile-warn "malformed let binding: `%s'"
                                                  (prin1-to-string binding)))
                           (list (car binding)
                                 (byte-optimize-form (nth 1 binding) nil))))
@@ -420,7 +420,7 @@
                                (cons
                                 (byte-optimize-form (car clause) nil)
                                 (byte-optimize-body (cdr clause) for-effect))
-                             (byte-compile-warn "malformed cond form: ‘%s’"
+                             (byte-compile-warn "malformed cond form: `%s'"
                                                 (prin1-to-string clause))
                              clause))
                         (cdr form))))
@@ -457,7 +457,7 @@
 
          ((eq fn 'if)
           (when (< (length form) 3)
-            (byte-compile-warn "too few arguments for ‘if’"))
+            (byte-compile-warn "too few arguments for `if'"))
           (cons fn
             (cons (byte-optimize-form (nth 1 form) nil)
               (cons
@@ -485,7 +485,7 @@
             (cons fn (mapcar 'byte-optimize-form (cdr form)))))
 
          ((eq fn 'interactive)
-          (byte-compile-warn "misplaced interactive spec: ‘%s’"
+          (byte-compile-warn "misplaced interactive spec: `%s'"
                              (prin1-to-string form))
           nil)
 
@@ -539,7 +539,7 @@
            (cons fn (mapcar #'byte-optimize-form (cdr form))))
 
          ((not (symbolp fn))
-          (byte-compile-warn "‘%s’ is a malformed function"
+          (byte-compile-warn "`%s' is a malformed function"
                              (prin1-to-string fn))
           form)
 
@@ -1054,7 +1054,7 @@
 
 (defun byte-optimize-while (form)
   (when (< (length form) 2)
-    (byte-compile-warn "too few arguments for ‘while’"))
+    (byte-compile-warn "too few arguments for `while'"))
   (if (nth 1 form)
       form))
 
@@ -1090,7 +1090,7 @@
                  (nconc (list 'funcall fn) butlast
                         (mapcar (lambda (x) (list 'quote x)) (nth 1 last))))
              (byte-compile-warn
-              "last arg to apply can't be a literal atom: ‘%s’"
+              "last arg to apply can't be a literal atom: `%s'"
               (prin1-to-string last))
              nil))
        form)))
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 3c561db..73c2977 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -267,7 +267,7 @@ The return value is undefined.
                                 (cdr body)
                               body)))
                     nil)
-                   (t (message "Warning: Unknown defun property ‘%S’ in %S"
+                   (t (message "Warning: Unknown defun property `%S' in %S"
                                (car x) name)))))
                    decls))
           (def (list 'defalias
@@ -317,7 +317,7 @@ The return value is undefined.
   (declare (debug defun) (doc-string 3))
   (or (memq (get name 'byte-optimizer)
            '(nil byte-compile-inline-expand))
-      (error "‘%s’ is a primitive" name))
+      (error "`%s' is a primitive" name))
   `(prog1
        (defun ,name ,arglist ,@body)
      (eval-and-compile
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 7182c0b..279ffa3 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -814,7 +814,7 @@ CONST2 may be evaluated multiple times."
            off (cdr lap-entry))
       (cond
        ((not (symbolp op))
-        (error "Non-symbolic opcode ‘%s’" op))
+        (error "Non-symbolic opcode `%s'" op))
        ((eq op 'TAG)
         (setcar off pc))
        (t
@@ -1120,7 +1120,7 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
                pt)
           (when dir
             (unless was-same
-              (insert (format-message "Leaving directory ‘%s’\n"
+              (insert (format-message "Leaving directory `%s'\n"
                                        default-directory))))
           (unless (bolp)
             (insert "\n"))
@@ -1136,7 +1136,7 @@ Each function's symbol gets added to 
`byte-compile-noruntime-functions'."
           (when dir
             (setq default-directory dir)
             (unless was-same
-              (insert (format-message "Entering directory ‘%s’\n"
+              (insert (format-message "Entering directory `%s'\n"
                                        default-directory))))
           (setq byte-compile-last-logged-file byte-compile-current-file
                 byte-compile-last-warned-form nil)
@@ -1339,7 +1339,7 @@ extra args."
          (nargs (- (length form) 2)))
       (unless (= nargs nfields)
        (byte-compile-warn
-        "‘%s’ called with %d args to fill %d format field(s)" (car form)
+        "`%s' called with %d args to fill %d format field(s)" (car form)
         nargs nfields)))))
 
 (dolist (elt '(format message error))
@@ -1359,7 +1359,7 @@ extra args."
           (plist-get keyword-args :group)
           (not (and (consp name) (eq (car name) 'quote)))
           (byte-compile-warn
-           "%s for ‘%s’ fails to specify containing group"
+           "%s for `%s' fails to specify containing group"
            (cdr (assq (car form)
                       '((custom-declare-group . defgroup)
                         (custom-declare-face . defface)
@@ -1378,7 +1378,7 @@ extra args."
   (let ((calls (assq name byte-compile-unresolved-functions))
         nums sig min max)
     (when (and calls macrop)
-      (byte-compile-warn "macro ‘%s’ defined too late" name))
+      (byte-compile-warn "macro `%s' defined too late" name))
     (setq byte-compile-unresolved-functions
           (delq calls byte-compile-unresolved-functions))
     (setq calls (delq t calls))      ;Ignore higher-order uses of the function.
@@ -1386,7 +1386,7 @@ extra args."
       (when (and (symbolp name)
                  (eq (function-get name 'byte-optimizer)
                      'byte-compile-inline-expand))
-        (byte-compile-warn "defsubst ‘%s’ was used before it was defined"
+        (byte-compile-warn "defsubst `%s' was used before it was defined"
                            name))
       (setq sig (byte-compile-arglist-signature arglist)
             nums (sort (copy-sequence (cdr calls)) (function <))
@@ -1465,7 +1465,7 @@ extra args."
                          ;; so don't warn about them.
                          macroexpand
                          cl--compiling-file))))
-       (byte-compile-warn "function ‘%s’ from cl package called at runtime"
+       (byte-compile-warn "function `%s' from cl package called at runtime"
                           func)))
   form)
 
@@ -1507,12 +1507,12 @@ extra args."
        (if (fboundp f) (push f noruntime) (push f unresolved)))
       ;; Complain about the no-run-time functions
       (byte-compile-print-syms
-       "the function ‘%s’ might not be defined at runtime."
+       "the function `%s' might not be defined at runtime."
        "the following functions might not be defined at runtime:"
        noruntime)
       ;; Complain about the unresolved functions
       (byte-compile-print-syms
-       "the function ‘%s’ is not known to be defined."
+       "the function `%s' is not known to be defined."
        "the following functions are not known to be defined:"
        unresolved)))
   nil)
@@ -1818,7 +1818,7 @@ 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’"
+           (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)))
@@ -2301,12 +2301,12 @@ list that represents a doc string reference.
   (when (and (symbolp sym)
              (not (string-match "[-*/:$]" (symbol-name sym)))
              (byte-compile-warning-enabled-p 'lexical))
-    (byte-compile-warn "global/dynamic var ‘%s’ lacks a prefix"
+    (byte-compile-warn "global/dynamic var `%s' lacks a prefix"
                        sym))
   (when (memq sym byte-compile-lexical-variables)
     (setq byte-compile-lexical-variables
           (delq sym byte-compile-lexical-variables))
-    (byte-compile-warn "Variable ‘%S’ declared after its first use" sym))
+    (byte-compile-warn "Variable `%S' declared after its first use" sym))
   (push sym byte-compile-bound-variables))
 
 (defun byte-compile-file-form-defvar (form)
@@ -2423,7 +2423,7 @@ not to take responsibility for the actual compilation of 
the code."
                     ;; Don't warn when compiling the stubs in byte-run...
                     (not (assq name byte-compile-initial-macro-environment)))
                (byte-compile-warn
-                "‘%s’ defined multiple times, as both function and macro"
+                "`%s' defined multiple times, as both function and macro"
                 name))
            (setcdr that-one nil))
           (this-one
@@ -2431,13 +2431,13 @@ not to take responsibility for the actual compilation 
of the code."
                       ;; Hack: Don't warn when compiling the magic internal
                       ;; byte-compiler macros in byte-run.el...
                       (not (assq name byte-compile-initial-macro-environment)))
-             (byte-compile-warn "%s ‘%s’ defined multiple times in this file"
+             (byte-compile-warn "%s `%s' defined multiple times in this file"
                                 (if macro "macro" "function")
                                 name)))
           ((eq (car-safe (symbol-function name))
                (if macro 'lambda 'macro))
            (when (byte-compile-warning-enabled-p 'redefine)
-             (byte-compile-warn "%s ‘%s’ being redefined as a %s"
+             (byte-compile-warn "%s `%s' being redefined as a %s"
                                 (if macro "function" "macro")
                                 name
                                 (if macro "macro" "function")))
@@ -2454,7 +2454,7 @@ not to take responsibility for the actual compilation of 
the code."
                (stringp (car-safe (cdr-safe (cdr-safe body)))))
       ;; FIXME: We've done that already just above, so this looks wrong!
       ;;(byte-compile-set-symbol-position name)
-      (byte-compile-warn "probable ‘\"’ without ‘\\’ in doc string of %s"
+      (byte-compile-warn "probable `\"' without `\\' in doc string of %s"
                          name))
 
     (if (not (listp body))
@@ -2585,7 +2585,9 @@ If FORM is a lambda or a macro, byte-compile it as a 
function."
                  (if (symbolp form) form "provided"))
         fun)
        (t
-        (when (symbolp form)
+        (when (or (symbolp form) (eq (car-safe fun) 'closure))
+          ;; `fun' is a function *value*, so try to recover its corresponding
+          ;; source code.
           (setq lexical-binding (eq (car fun) 'closure))
           (setq fun (byte-compile--reify-function fun)))
         ;; Expand macros.
@@ -2980,13 +2982,13 @@ for symbols generated by the byte compiler itself."
             (`(',var . ,_)
              (when (assq var byte-compile-lexical-variables)
                (byte-compile-log-warning
-                (format-message "%s cannot use lexical var ‘%s’" fn var)
+                (format-message "%s cannot use lexical var `%s'" fn var)
                 nil :error)))))
         (when (macroexp--const-symbol-p fn)
-          (byte-compile-warn "‘%s’ called as a function" fn))
+          (byte-compile-warn "`%s' called as a function" fn))
        (when (and (byte-compile-warning-enabled-p 'interactive-only)
                   interactive-only)
-         (byte-compile-warn "‘%s’ is for interactive use only%s"
+         (byte-compile-warn "`%s' is for interactive use only%s"
                             fn
                             (cond ((stringp interactive-only)
                                    (format "; %s"
@@ -2994,7 +2996,7 @@ for symbols generated by the byte compiler itself."
                                             interactive-only)))
                                   ((and (symbolp 'interactive-only)
                                         (not (eq interactive-only t)))
-                                   (format-message "; use ‘%s’ instead."
+                                   (format-message "; use `%s' instead."
                                                     interactive-only))
                                   (t "."))))
         (if (eq (car-safe (symbol-function (car form))) 'macro)
@@ -3039,7 +3041,7 @@ for symbols generated by the byte compiler itself."
              (byte-compile-warning-enabled-p 'mapcar))
     (byte-compile-set-symbol-position 'mapcar)
     (byte-compile-warn
-     "‘mapcar’ called for effect; use ‘mapc’ or ‘dolist’ instead"))
+     "`mapcar' called for effect; use `mapc' or `dolist' instead"))
   (byte-compile-push-constant (car form))
   (mapc 'byte-compile-form (cdr form)) ; wasteful, but faster.
   (byte-compile-out 'byte-call (length (cdr form))))
@@ -3127,8 +3129,8 @@ for symbols generated by the byte compiler itself."
   (cond ((or (not (symbolp var)) (macroexp--const-symbol-p var))
         (when (byte-compile-warning-enabled-p 'constants)
           (byte-compile-warn (if (eq access-type 'let-bind)
-                                 "attempt to let-bind %s ‘%s’"
-                               "variable reference to %s ‘%s’")
+                                 "attempt to let-bind %s `%s'"
+                               "variable reference to %s `%s'")
                              (if (symbolp var) "constant" "nonvariable")
                              (prin1-to-string var))))
        ((let ((od (get var 'byte-obsolete-variable)))
@@ -3166,7 +3168,7 @@ for symbols generated by the byte compiler itself."
                  (boundp var)
                  (memq var byte-compile-bound-variables)
                  (memq var byte-compile-free-references))
-       (byte-compile-warn "reference to free variable ‘%S’" var)
+       (byte-compile-warn "reference to free variable `%S'" var)
        (push var byte-compile-free-references))
       (byte-compile-dynamic-variable-op 'byte-varref var))))
 
@@ -3182,7 +3184,7 @@ for symbols generated by the byte compiler itself."
                  (boundp var)
                  (memq var byte-compile-bound-variables)
                  (memq var byte-compile-free-assignments))
-       (byte-compile-warn "assignment to free variable ‘%s’" var)
+       (byte-compile-warn "assignment to free variable `%s'" var)
        (push var byte-compile-free-assignments))
       (byte-compile-dynamic-variable-op 'byte-varset var))))
 
@@ -3363,7 +3365,7 @@ If it is nil, then the handler is 
\"byte-compile-SYMBOL.\""
 
 (defun byte-compile-subr-wrong-args (form n)
   (byte-compile-set-symbol-position (car form))
-  (byte-compile-warn "‘%s’ called with %d arg%s, but requires %s"
+  (byte-compile-warn "`%s' called with %d arg%s, but requires %s"
                     (car form) (length (cdr form))
                     (if (= 1 (length (cdr form))) "" "s") n)
   ;; Get run-time wrong-number-of-args error.
@@ -3731,7 +3733,7 @@ discarding."
                 (macroexp--const-symbol-p var t))
             (byte-compile-warning-enabled-p 'constants)
             (byte-compile-warn
-             "variable assignment to %s ‘%s’"
+             "variable assignment to %s `%s'"
              (if (symbolp var) "constant" "nonvariable")
              (prin1-to-string var)))
        (byte-compile-normal-call `(set-default ',var ,@(cdr form)))))))
@@ -4105,7 +4107,7 @@ binding slots have been popped."
   (list 'not
     (cons (or (get (car form) 'byte-compile-negated-op)
              (error
-              "Compiler error: ‘%s’ has no ‘byte-compile-negated-op’ property"
+              "Compiler error: `%s' has no `byte-compile-negated-op' property"
               (car form)))
          (cdr form))))
 
@@ -4168,7 +4170,7 @@ binding slots have been popped."
     (byte-compile-set-symbol-position 'condition-case)
     (unless (symbolp var)
       (byte-compile-warn
-       "‘%s’ is not a variable-name or nil (in condition-case)" var))
+       "`%s' is not a variable-name or nil (in condition-case)" var))
     (if fun-bodies (setq var (make-symbol "err")))
     (byte-compile-push-constant var)
     (if fun-bodies
@@ -4187,7 +4189,7 @@ binding slots have been popped."
                                              (setq ok nil)))
                                        ok))))
                        (byte-compile-warn
-                        "‘%S’ is not a condition name or list of such (in 
condition-case)"
+                        "`%S' is not a condition name or list of such (in 
condition-case)"
                         condition))
                       ;; (not (or (eq condition 't)
                       ;;         (and (stringp (get condition 'error-message))
@@ -4220,7 +4222,7 @@ binding slots have been popped."
     (byte-compile-set-symbol-position 'condition-case)
     (unless (symbolp var)
       (byte-compile-warn
-       "‘%s’ is not a variable-name or nil (in condition-case)" var))
+       "`%s' is not a variable-name or nil (in condition-case)" var))
 
     (dolist (clause (reverse clauses))
       (let ((condition (nth 1 clause)))
@@ -4228,7 +4230,7 @@ binding slots have been popped."
         (dolist (c condition)
           (unless (and c (symbolp c))
             (byte-compile-warn
-             "‘%S’ is not a condition name (in condition-case)" c))
+             "`%S' is not a condition name (in condition-case)" c))
           ;; In reality, the `error-conditions' property is only required
           ;; for the argument to `signal', not to `condition-case'.
           ;;(unless (consp (get c 'error-conditions))
@@ -4270,7 +4272,7 @@ binding slots have been popped."
   (if (and (eq 'set-buffer (car-safe (car-safe (cdr form))))
            (byte-compile-warning-enabled-p 'suspicious))
       (byte-compile-warn
-       "Use ‘with-current-buffer’ rather than save-excursion+set-buffer"))
+       "Use `with-current-buffer' rather than save-excursion+set-buffer"))
   (byte-compile-out 'byte-save-excursion 0)
   (byte-compile-body-do-effect (cdr form))
   (byte-compile-out 'byte-unbind 1))
@@ -4310,7 +4312,7 @@ binding slots have been popped."
   (when (and (symbolp (nth 1 form))
              (not (string-match "[-*/:$]" (symbol-name (nth 1 form))))
              (byte-compile-warning-enabled-p 'lexical))
-    (byte-compile-warn "global/dynamic var ‘%s’ lacks a prefix"
+    (byte-compile-warn "global/dynamic var `%s' lacks a prefix"
                        (nth 1 form)))
   (let ((fun (nth 0 form))
        (var (nth 1 form))
@@ -4321,7 +4323,7 @@ binding slots have been popped."
              (and (eq fun 'defconst) (null (cddr form))))
       (let ((ncall (length (cdr form))))
        (byte-compile-warn
-        "‘%s’ called with %d argument%s, but %s %s"
+        "`%s' called with %d argument%s, but %s %s"
         fun ncall
         (if (= 1 ncall) "" "s")
         (if (< ncall 2) "requires" "accepts only")
@@ -4330,7 +4332,7 @@ binding slots have been popped."
     (if (eq fun 'defconst)
        (push var byte-compile-const-variables))
     (when (and string (not (stringp string)))
-      (byte-compile-warn "third arg to ‘%s %s’ is not a string: %s"
+      (byte-compile-warn "third arg to `%s %s' is not a string: %s"
                          fun var string))
     (byte-compile-form-do-effect
      (if (cddr form)  ; `value' provided
@@ -4353,7 +4355,7 @@ binding slots have been popped."
        (not (fboundp (eval (nth 1 form))))
        (byte-compile-warn
        "The compiler ignores `autoload' except at top level.  You should
-     probably put the autoload of the macro ‘%s’ at top-level."
+     probably put the autoload of the macro `%s' at top-level."
        (eval (nth 1 form))))
   (byte-compile-normal-call form))
 
@@ -4361,7 +4363,7 @@ binding slots have been popped."
 ;; The ones that remain are errors.
 (defun byte-compile-lambda-form (_form)
   (byte-compile-set-symbol-position 'lambda)
-  (error "‘lambda’ used as function name is invalid"))
+  (error "`lambda' used as function name is invalid"))
 
 ;; Compile normally, but deal with warnings for the function being defined.
 (put 'defalias 'byte-hunk-handler 'byte-compile-file-form-defalias)
@@ -4433,7 +4435,7 @@ binding slots have been popped."
   (if (and (eq (car-safe (car-safe (cdr-safe form))) 'quote)
            (byte-compile-warning-enabled-p 'make-local))
       (byte-compile-warn
-       "‘make-variable-buffer-local’ not called at toplevel"))
+       "`make-variable-buffer-local' not called at toplevel"))
   (byte-compile-normal-call form))
 (put 'make-variable-buffer-local
      'byte-hunk-handler 'byte-compile-form-make-variable-buffer-local)
@@ -4565,7 +4567,7 @@ invoked interactively."
                                       (length (nth 2 y))))))
                       (`name
                        (lambda (x y) (string< (car x) (car y))))
-                      (_ (error "‘byte-compile-call-tree-sort’: ‘%s’ - unknown 
sort mode"
+                      (_ (error "`byte-compile-call-tree-sort': `%s' - unknown 
sort mode"
                                 byte-compile-call-tree-sort))))))
     (message "Generating call tree...")
     (let ((rest byte-compile-call-tree)
@@ -4678,7 +4680,7 @@ already up-to-date."
   ;; startup.el.
   (defvar command-line-args-left)      ;Avoid 'free variable' warning
   (if (not noninteractive)
-      (error "‘batch-byte-compile’ is to be used only with -batch"))
+      (error "`batch-byte-compile' is to be used only with -batch"))
   (let ((error nil))
     (while command-line-args-left
       (if (file-directory-p (expand-file-name (car command-line-args-left)))
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index a20e201..205ae6d 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -300,7 +300,7 @@ places where they originally did not directly appear."
                         (prog1 binder (setq binder (list binder)))
                        (when (cddr binder)
                          (byte-compile-log-warning
-                          (format-message "Malformed ‘%S’ binding: %S"
+                          (format-message "Malformed `%S' binding: %S"
                                           letsym binder)))
                       (setq value (cadr binder))
                       (car binder)))
@@ -546,7 +546,7 @@ FORM is the parent form that binds this var."
     (`((,(and var (guard (eq ?_ (aref (symbol-name var) 0)))) . ,_)
        ,_ ,_ ,_ ,_)
      (byte-compile-log-warning
-      (format-message "%s ‘%S’ not left unused" varkind var))))
+      (format-message "%s `%S' not left unused" varkind var))))
   (pcase vardata
     (`((,var . ,_) nil ,_ ,_ nil)
      ;; FIXME: This gives warnings in the wrong order, with imprecise line
@@ -558,7 +558,7 @@ FORM is the parent form that binds this var."
               (eq ?_ (aref (symbol-name var) 0))
              ;; As a special exception, ignore "ignore".
              (eq var 'ignored))
-       (byte-compile-log-warning (format-message "Unused lexical %s ‘%S’"
+       (byte-compile-log-warning (format-message "Unused lexical %s `%S'"
                                                  varkind var))))
     ;; If it's unused, there's no point converting it into a cons-cell, even if
     ;; it's captured and mutated.
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index d972879..0660125 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -652,7 +652,7 @@ SORT-PRED if desired."
     (set-buffer b)
     (erase-buffer)
     (insert "cd " d ";du -sk * \n")
-    (message "Running ‘cd %s;du -sk *’..." d)
+    (message "Running `cd %s;du -sk *'..." d)
     (call-process-region (point-min) (point-max) shell-file-name t
                         (current-buffer) nil)
     (goto-char (point-min))
diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el
index bdcb4ec..3b69e95 100644
--- a/lisp/emacs-lisp/check-declare.el
+++ b/lisp/emacs-lisp/check-declare.el
@@ -106,7 +106,7 @@ don't know how to recognize (e.g. some macros)."
                  (symbolp (setq fileonly (nth 4 form))))
             (setq alist (cons (list fnfile fn arglist fileonly) alist))
           ;; FIXME make this more noticeable.
-          (if form (message "Malformed declaration for ‘%s’" (cadr form))))))
+          (if form (message "Malformed declaration for `%s'" (cadr form))))))
     (message "%sdone" m)
     alist))
 
@@ -279,7 +279,7 @@ TYPE is a string giving the nature of the error.  Warning 
is displayed in
            entry))
         (warning-fill-prefix "    "))
     (display-warning 'check-declare
-                     (format-message "said ‘%s’ was defined in %s: %s"
+                     (format-message "said `%s' was defined in %s: %s"
                                      fn (file-name-nondirectory fnfile) type)
                      nil check-declare-warning-buffer)))
 
@@ -318,7 +318,7 @@ Return a list of any errors found."
 See `check-declare-directory' for more information."
   (interactive "fFile to check: ")
   (or (file-exists-p file)
-      (error "File ‘%s’ not found" file))
+      (error "File `%s' not found" file))
   (let ((m (format "Checking %s..." file))
         errlist)
     (message "%s" m)
@@ -332,8 +332,8 @@ See `check-declare-directory' for more information."
 Returns non-nil if any false statements are found."
   (interactive "DDirectory to check: ")
   (or (file-directory-p (setq root (expand-file-name root)))
-      (error "Directory ‘%s’ not found" root))
-  (let ((m "Checking ‘declare-function’ statements...")
+      (error "Directory `%s' not found" root))
+  (let ((m "Checking `declare-function' statements...")
         (m2 "Finding files with declarations...")
         errlist files)
     (message "%s" m)
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index b2c8119..4a9e16a 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1419,7 +1419,7 @@ regexp short cuts work.  FP is the function defun 
information."
        (when (re-search-forward "^(" e t)
         (if (checkdoc-autofix-ask-replace (match-beginning 0)
                                           (match-end 0)
-                                          "Escape this ‘(’? "
+                                          (format-message "Escape this `('? ")
                                           "\\(")
             nil
           (checkdoc-create-error
@@ -1715,7 +1715,7 @@ function,command,variable,option or symbol." ms1))))))
                             (if (checkdoc-autofix-ask-replace
                                  (match-beginning 1) (match-end 1)
                                  (format-message
-                                  "If this is the argument ‘%s’, it should 
appear as %s.  Fix? "
+                                  "If this is the argument `%s', it should 
appear as %s.  Fix? "
                                   (car args) (upcase (car args)))
                                  (upcase (car args)) t)
                                 (setq found (match-beginning 1))))))
@@ -1741,7 +1741,7 @@ function,command,variable,option or symbol." ms1))))))
                         nil)
                     (checkdoc-create-error
                      (format-message
-                      "Argument ‘%s’ should appear (as %s) in the doc string"
+                      "Argument `%s' should appear (as %s) in the doc string"
                       (car args) (upcase (car args)))
                      s (marker-position e)))
                 (if (or (and order (eq order 'yes))
@@ -1825,15 +1825,15 @@ Replace with \"%s\"? " original replace)
                    (or (boundp found) (fboundp found)))
               (progn
                 (setq msg (format-message
-                            "Add quotes around Lisp symbol ‘%s’? " ms))
+                            "Add quotes around Lisp symbol `%s'? " ms))
                 (if (checkdoc-autofix-ask-replace
                      (match-beginning 1) (+ (match-beginning 1)
                                             (length ms))
-                     msg (concat "‘" ms "’") t)
+                     msg (format-message "`%s'" ms) t)
                     (setq msg nil)
                   (setq msg
                         (format-message
-                          "Lisp symbol ‘%s’ should appear in quotes" ms))))))
+                          "Lisp symbol `%s' should appear in quotes" ms))))))
         (if msg
             (checkdoc-create-error msg (match-beginning 1)
                                    (+ (match-beginning 1)
@@ -1849,7 +1849,7 @@ Replace with \"%s\"? " original replace)
                (match-string 2) t)
               nil
             (checkdoc-create-error
-             "Symbols t and nil should not appear in ‘...’ quotes"
+             "Symbols t and nil should not appear in single quotes"
              (match-beginning 1) (match-end 1)))))
      ;; Here is some basic sentence formatting
      (checkdoc-sentencespace-region-engine (point) e)
@@ -2487,22 +2487,24 @@ Argument TYPE specifies the type of question, such as 
`error' or `y-or-n-p'."
               ;; If we see a ?, then replace with "? ".
               (if (checkdoc-autofix-ask-replace
                    (match-beginning 0) (match-end 0)
-                   "‘y-or-n-p’ argument should end with \"? \".  Fix? "
+                    (format-message
+                     "`y-or-n-p' argument should end with \"? \".  Fix? ")
                    "? " t)
                   nil
                 (checkdoc-create-error
-                 "‘y-or-n-p’ argument should end with \"? \""
+                 "`y-or-n-p' argument should end with \"? \""
                  (match-beginning 0) (match-end 0)))
             (if (save-excursion (forward-sexp 1)
                                 (forward-char -2)
                                 (looking-at " "))
                 (if (checkdoc-autofix-ask-replace
                      (match-beginning 0) (match-end 0)
-                     "‘y-or-n-p’ argument should end with \"? \".  Fix? "
+                      (format-message
+                       "`y-or-n-p' argument should end with \"? \".  Fix? ")
                      "? " t)
                     nil
                   (checkdoc-create-error
-                   "‘y-or-n-p’ argument should end with \"? \""
+                   "`y-or-n-p' argument should end with \"? \""
                    (match-beginning 0) (match-end 0)))
               (if (and ;; if this isn't true, we have a problem.
                    (save-excursion (forward-sexp 1)
@@ -2510,11 +2512,12 @@ Argument TYPE specifies the type of question, such as 
`error' or `y-or-n-p'."
                                    (looking-at "\""))
                    (checkdoc-autofix-ask-replace
                     (match-beginning 0) (match-end 0)
-                    "‘y-or-n-p’ argument should end with \"? \".  Fix? "
+                     (format-message
+                      "`y-or-n-p' argument should end with \"? \".  Fix? ")
                     "? \"" t))
                   nil
                 (checkdoc-create-error
-                 "‘y-or-n-p’ argument should end with \"? \""
+                 "`y-or-n-p' argument should end with \"? \""
                  (match-beginning 0) (match-end 0)))))))
      ;; Now, let's just run the spell checker on this guy.
      (checkdoc-ispell-docstring-engine (save-excursion (forward-sexp 1)
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 7a7712a..dddfca7 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -415,7 +415,7 @@ as an integer unless JUNK-ALLOWED is non-nil."
        (cond ((and junk-allowed (null sum)) sum)
              (junk-allowed (* sign sum))
              ((or (/= start end) (null sum))
-              (error "Not an integer string: ‘%s’" string))
+              (error "Not an integer string: `%s'" string))
              (t (* sign sum)))))))
 
 
@@ -774,16 +774,16 @@ including `cl-block' and `cl-eval-when'."
         ;; FIXME: Add a `cl-class-of' or `cl-typeof' or somesuch.
         (metatype (cl--class-name (symbol-value (aref class 0)))))
     (insert (symbol-name type)
-            (substitute-command-keys " is a type (of kind ‘"))
+            (substitute-command-keys " is a type (of kind `"))
     (help-insert-xref-button (symbol-name metatype)
                              'cl-help-type metatype)
-    (insert (substitute-command-keys "’)"))
+    (insert (substitute-command-keys "')"))
     (when location
-      (insert (substitute-command-keys " in ‘"))
+      (insert (substitute-command-keys " in `"))
       (help-insert-xref-button
        (help-fns-short-filename location)
        'cl-type-definition type location 'define-type)
-      (insert (substitute-command-keys "’")))
+      (insert (substitute-command-keys "'")))
     (insert ".\n")
 
     ;; Parents.
@@ -793,10 +793,10 @@ including `cl-block' and `cl-eval-when'."
         (insert " Inherits from ")
         (while (setq cur (pop pl))
           (setq cur (cl--class-name cur))
-          (insert (substitute-command-keys "‘"))
+          (insert (substitute-command-keys "`"))
           (help-insert-xref-button (symbol-name cur)
                                    'cl-help-type cur)
-          (insert (substitute-command-keys (if pl "’, " "’"))))
+          (insert (substitute-command-keys (if pl "', " "'"))))
         (insert ".\n")))
 
     ;; Children, if available.  ¡For EIEIO!
@@ -807,10 +807,10 @@ including `cl-block' and `cl-eval-when'."
       (when ch
         (insert " Children ")
         (while (setq cur (pop ch))
-          (insert (substitute-command-keys "‘"))
+          (insert (substitute-command-keys "`"))
           (help-insert-xref-button (symbol-name cur)
                                    'cl-help-type cur)
-          (insert (substitute-command-keys (if ch "’, " "’"))))
+          (insert (substitute-command-keys (if ch "', " "'"))))
         (insert ".\n")))
 
     ;; Type's documentation.
@@ -826,10 +826,10 @@ including `cl-block' and `cl-eval-when'."
       (when generics
         (insert (propertize "Specialized Methods:\n\n" 'face 'bold))
         (dolist (generic generics)
-          (insert (substitute-command-keys "‘"))
+          (insert (substitute-command-keys "`"))
           (help-insert-xref-button (symbol-name generic)
                                    'help-function generic)
-          (insert (substitute-command-keys "’"))
+          (insert (substitute-command-keys "'"))
           (pcase-dolist (`(,qualifiers ,args ,doc)
                          (cl--generic-method-documentation generic type))
             (insert (format " %s%S\n" qualifiers args)
diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 5d52761..c012a30 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -192,7 +192,7 @@ BODY, if present, is used as the body of a default method.
          (when doc (error "Multiple doc strings for %S" name))
          (setq doc (cadr (pop options-and-methods))))
         (`declare
-         (when declarations (error "Multiple ‘declare’ for %S" name))
+         (when declarations (error "Multiple `declare' for %S" name))
          (setq declarations (pop options-and-methods)))
         (`:method (push (cdr (pop options-and-methods)) methods))
         (_ (push (pop options-and-methods) options))))
@@ -208,7 +208,7 @@ BODY, if present, is used as the body of a default method.
                                        defun-declarations-alist))))
                      (cond
                       (f (apply (car f) name args (cdr declaration)))
-                      (t (message "Warning: Unknown defun property ‘%S’ in %S"
+                      (t (message "Warning: Unknown defun property `%S' in %S"
                                   (car declaration) name)
                          nil))))
                  (cdr declarations))
@@ -864,11 +864,11 @@ MET-NAME is a cons (SYMBOL . SPECIALIZERS)."
                                    (cl--generic-method-specializers method)))
                    (file (find-lisp-object-file-name met-name 'cl-defmethod)))
               (when file
-                (insert (substitute-command-keys " in ‘"))
+                (insert (substitute-command-keys " in `"))
                 (help-insert-xref-button (help-fns-short-filename file)
                                          'help-function-def met-name file
                                          'cl-defmethod)
-                (insert (substitute-command-keys "’.\n"))))
+                (insert (substitute-command-keys "'.\n"))))
             (insert "\n" (or (nth 2 info) "Undocumented") "\n\n")))))))
 
 (defun cl--generic-specializers-apply-to-type-p (specializers type)
@@ -1070,7 +1070,7 @@ The value returned is a list of elements of the form
    (and (assq type cl--generic-typeof-types)
         (progn
           (if (memq type '(vector array sequence))
-              (message "‘%S’ also matches CL structs and EIEIO classes" type))
+              (message "`%S' also matches CL structs and EIEIO classes" type))
           (list cl--generic-typeof-generalizer)))
    (cl-call-next-method)))
 
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 06e75b3..d5d8ef0 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1132,7 +1132,7 @@ For more details, see Info node `(cl)Loop Facility'.
     (cond
 
      ((null cl--loop-args)
-      (error "Malformed ‘cl-loop’ macro"))
+      (error "Malformed `cl-loop' macro"))
 
      ((eq word 'named)
       (setq cl--loop-name (pop cl--loop-args)))
@@ -1140,7 +1140,7 @@ For more details, see Info node `(cl)Loop Facility'.
      ((eq word 'initially)
       (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
       (or (consp (car cl--loop-args))
-          (error "Syntax error on ‘initially’ clause"))
+          (error "Syntax error on `initially' clause"))
       (while (consp (car cl--loop-args))
        (push (pop cl--loop-args) cl--loop-initially)))
 
@@ -1150,7 +1150,7 @@ For more details, see Info node `(cl)Loop Facility'.
                 (or (cl--pop2 cl--loop-args) '(quote nil)))
        (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
        (or (consp (car cl--loop-args))
-            (error "Syntax error on ‘finally’ clause"))
+            (error "Syntax error on `finally' clause"))
        (if (and (eq (caar cl--loop-args) 'return) (null cl--loop-name))
            (setq cl--loop-result-explicit
                   (or (nth 1 (pop cl--loop-args)) '(quote nil)))
@@ -1177,7 +1177,7 @@ For more details, see Info node `(cl)Loop Facility'.
                             above below by))
                (push word cl--loop-args)
                (if (memq (car cl--loop-args) '(downto above))
-                   (error "Must specify ‘from’ value for downward cl-loop"))
+                   (error "Must specify `from' value for downward cl-loop"))
                (let* ((down (or (eq (car cl--loop-args) 'downfrom)
                                 (memq (nth 2 cl--loop-args)
                                        '(downto above))))
@@ -1197,7 +1197,7 @@ For more details, see Info node `(cl)Loop Facility'.
                       (step-var (and (not (macroexp-const-p step))
                                      (make-symbol "--cl-var--"))))
                  (and step (numberp step) (<= step 0)
-                      (error "Loop ‘by’ value is not positive: %s" step))
+                      (error "Loop `by' value is not positive: %s" step))
                  (push (list var (or start 0)) loop-for-bindings)
                  (if end-var (push (list end-var end) loop-for-bindings))
                  (if step-var (push (list step-var step)
@@ -1276,7 +1276,7 @@ For more details, see Info node `(cl)Loop Facility'.
               ((memq word '(element elements))
                (let ((ref (or (memq (car cl--loop-args) '(in-ref of-ref))
                               (and (not (memq (car cl--loop-args) '(in of)))
-                                   (error "Expected ‘of’"))))
+                                   (error "Expected `of'"))))
                      (seq (cl--pop2 cl--loop-args))
                      (temp-seq (make-symbol "--cl-seq--"))
                      (temp-idx
@@ -1284,7 +1284,7 @@ For more details, see Info node `(cl)Loop Facility'.
                            (if (and (= (length (cadr cl--loop-args)) 2)
                                     (eq (cl-caadr cl--loop-args) 'index))
                                (cadr (cl--pop2 cl--loop-args))
-                             (error "Bad ‘using’ clause"))
+                             (error "Bad `using' clause"))
                          (make-symbol "--cl-idx--"))))
                  (push (list temp-seq seq) loop-for-bindings)
                  (push (list temp-idx 0) loop-for-bindings)
@@ -1309,7 +1309,7 @@ For more details, see Info node `(cl)Loop Facility'.
 
               ((memq word hash-types)
                (or (memq (car cl--loop-args) '(in of))
-                    (error "Expected ‘of’"))
+                    (error "Expected `of'"))
                (let* ((table (cl--pop2 cl--loop-args))
                       (other
                         (if (eq (car cl--loop-args) 'using)
@@ -1317,7 +1317,7 @@ For more details, see Info node `(cl)Loop Facility'.
                                      (memq (cl-caadr cl--loop-args) hash-types)
                                      (not (eq (cl-caadr cl--loop-args) word)))
                                 (cadr (cl--pop2 cl--loop-args))
-                              (error "Bad ‘using’ clause"))
+                              (error "Bad `using' clause"))
                           (make-symbol "--cl-var--"))))
                  (if (memq word '(hash-value hash-values))
                      (setq var (prog1 other (setq other var))))
@@ -1372,7 +1372,7 @@ For more details, see Info node `(cl)Loop Facility'.
 
               ((memq word key-types)
                (or (memq (car cl--loop-args) '(in of))
-                    (error "Expected ‘of’"))
+                    (error "Expected `of'"))
                (let ((cl-map (cl--pop2 cl--loop-args))
                      (other
                        (if (eq (car cl--loop-args) 'using)
@@ -1380,7 +1380,7 @@ For more details, see Info node `(cl)Loop Facility'.
                                     (memq (cl-caadr cl--loop-args) key-types)
                                     (not (eq (cl-caadr cl--loop-args) word)))
                                (cadr (cl--pop2 cl--loop-args))
-                             (error "Bad ‘using’ clause"))
+                             (error "Bad `using' clause"))
                          (make-symbol "--cl-var--"))))
                  (if (memq word '(key-binding key-bindings))
                      (setq var (prog1 other (setq other var))))
@@ -1430,7 +1430,7 @@ For more details, see Info node `(cl)Loop Facility'.
                                    (get word 'cl-loop-for-handler))))
                  (if handler
                      (funcall handler var)
-                   (error "Expected a ‘for’ preposition, found %s" word)))))
+                   (error "Expected a `for' preposition, found %s" word)))))
              (eq (car cl--loop-args) 'and))
          (setq ands t)
          (pop cl--loop-args))
@@ -1569,7 +1569,7 @@ For more details, see Info node `(cl)Loop Facility'.
 
      ((memq word '(do doing))
       (let ((body nil))
-       (or (consp (car cl--loop-args)) (error "Syntax error on ‘do’ clause"))
+       (or (consp (car cl--loop-args)) (error "Syntax error on `do' clause"))
        (while (consp (car cl--loop-args)) (push (pop cl--loop-args) body))
        (push (cons 'progn (nreverse (cons t body))) cl--loop-body)))
 
@@ -1802,7 +1802,7 @@ Labels have lexical scope and dynamic extent."
        `((go . ,(lambda (label)
                   (let ((catch-tag (cdr (assq label cl--tagbody-alist))))
                     (unless catch-tag
-                      (error "Unknown cl-tagbody go label ‘%S’" label))
+                      (error "Unknown cl-tagbody go label `%S'" label))
                     `(throw ',catch-tag ',label))))
          ,@macroexpand-all-environment)))))
 
@@ -2101,7 +2101,7 @@ by EXPANSION, and (setq NAME ...) will act like (setf 
EXPANSION ...).
                                           macroexpand-all-environment))))
               (if (or (null (cdar bindings)) (cl-cddar bindings))
                   (macroexp--warn-and-return
-                   (format-message "Malformed ‘cl-symbol-macrolet’ binding: %S"
+                   (format-message "Malformed `cl-symbol-macrolet' binding: %S"
                                    (car bindings))
                    expansion)
                 expansion)))
@@ -2777,10 +2777,10 @@ non-nil value, that slot cannot be set via `setf'.
 ;;;###autoload
 (pcase-defmacro cl-struct (type &rest fields)
   "Pcase patterns to match cl-structs.
-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
+Elements of FIELDS can be of the form (NAME PAT) in which case the contents of
+field NAME is matched against PAT, or they can be of the form NAME which
 is a shorthand for (NAME NAME)."
-  (declare (debug (sexp &rest [&or (sexp pcase-UPAT) sexp])))
+  (declare (debug (sexp &rest [&or (sexp pcase-PAT) 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 ba50680..46472cc 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -86,7 +86,7 @@
 
 (defun cl-unload-function ()
   "Stop unloading of the Common Lisp extensions."
-  (message "Cannot unload the feature ‘cl’")
+  (message "Cannot unload the feature `cl'")
   ;; Stop standard unloading!
   t)
 
@@ -459,15 +459,15 @@ definitions, or lack thereof).
              (if (or (and (fboundp (car x))
                           (eq (car-safe (symbol-function (car x))) 'macro))
                      (cdr (assq (car x) macroexpand-all-environment)))
-                 (error "Use ‘labels’, not ‘flet’, to rebind macro names"))
+                 (error "Use `labels', not `flet', to rebind macro names"))
              (let ((func `(cl-function
                            (lambda ,(cadr x)
                              (cl-block ,(car x) ,@(cddr x))))))
                (when (cl--compiling-file)
                  ;; Bug#411.  It would be nice to fix this.
                  (and (get (car x) 'byte-compile)
-                      (error "Byte-compiling a redefinition of ‘%s’ \
-will not work - use ‘labels’ instead" (symbol-name (car x))))
+                      (error "Byte-compiling a redefinition of `%s' \
+will not work - use `labels' instead" (symbol-name (car x))))
                  ;; FIXME This affects the rest of the file, when it
                  ;; should be restricted to the flet body.
                  (and (boundp 'byte-compile-function-environment)
diff --git a/lisp/emacs-lisp/copyright.el b/lisp/emacs-lisp/copyright.el
index ece6883..1317d69 100644
--- a/lisp/emacs-lisp/copyright.el
+++ b/lisp/emacs-lisp/copyright.el
@@ -350,7 +350,7 @@ independently replaces consecutive years with a range."
   (or (getenv "ORGANIZATION")
       str)
   '(if (copyright-offset-too-large-p)
-       (message "Copyright extends beyond ‘copyright-limit’ and won't be 
updated automatically."))
+       (message "Copyright extends beyond `copyright-limit' and won't be 
updated automatically."))
   comment-end \n)
 
 ;; TODO: recurse, exclude COPYING etc.
@@ -361,7 +361,7 @@ If FIX is non-nil, run `copyright-fix-years' instead."
   (interactive "DDirectory: \nMFilenames matching (regexp): ")
   (dolist (file (directory-files directory t match nil))
     (unless (file-directory-p file)
-      (message "Updating file ‘%s’" file)
+      (message "Updating file `%s'" file)
       ;; FIXME we should not use find-file+save+kill.
       (let ((enable-local-variables :safe)
            (enable-local-eval nil))
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index 15489fc..12cf605 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -1,4 +1,4 @@
-;;; disass.el --- disassembler for compiled Emacs Lisp code
+;;; disass.el --- disassembler for compiled Emacs Lisp code  -*- 
lexical-binding:t -*-
 
 ;; Copyright (C) 1986, 1991, 2002-2015 Free Software Foundation, Inc.
 
@@ -37,9 +37,9 @@
 
 (require 'macroexp)
 
-;;; The variable byte-code-vector is defined by the new bytecomp.el.
-;;; The function byte-decompile-lapcode is defined in byte-opt.el.
-;;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
+;; The variable byte-code-vector is defined by the new bytecomp.el.
+;; The function byte-decompile-lapcode is defined in byte-opt.el.
+;; Since we don't use byte-decompile-lapcode, let's try not loading byte-opt.
 (require 'byte-compile "bytecomp")
 
 (defvar disassemble-column-1-indent 8 "*")
@@ -57,8 +57,8 @@ redefine OBJECT if it is a symbol."
   (interactive (list (intern (completing-read "Disassemble function: "
                                              obarray 'fboundp t))
                     nil 0 t))
-  (if (and (consp object) (not (eq (car object) 'lambda)))
-      (setq object (list 'lambda () object)))
+  (if (and (consp object) (not (functionp object)))
+      (setq object `(lambda () ,object)))
   (or indent (setq indent 0))          ;Default indent to zero
   (save-excursion
     (if (or interactive-p (null buffer))
@@ -72,37 +72,34 @@ redefine OBJECT if it is a symbol."
 
 (defun disassemble-internal (obj indent interactive-p)
   (let ((macro 'nil)
-       (name 'nil)
-       (doc 'nil)
+       (name (when (symbolp obj)
+                (prog1 obj
+                  (setq obj (indirect-function obj)))))
        args)
-    (while (symbolp obj)
-      (setq name obj
-           obj (symbol-function obj)))
+    (setq obj (autoload-do-load obj name))
     (if (subrp obj)
        (error "Can't disassemble #<subr %s>" name))
-    (setq obj (autoload-do-load obj name))
     (if (eq (car-safe obj) 'macro)     ;Handle macros.
        (setq macro t
              obj (cdr obj)))
-    (if (and (listp obj) (eq (car obj) 'byte-code))
-       (setq obj (list 'lambda nil obj)))
-    (if (and (listp obj) (not (eq (car obj) 'lambda)))
-       (error "not a function"))
-    (if (consp obj)
-       (if (assq 'byte-code obj)
-           nil
-         (if interactive-p (message (if name
-                                        "Compiling %s's definition..."
-                                      "Compiling definition...")
-                                    name))
-         (setq obj (byte-compile obj))
-         (if interactive-p (message "Done compiling.  Disassembling..."))))
+    (if (eq (car-safe obj) 'byte-code)
+       (setq obj `(lambda () ,obj)))
+    (when (consp obj)
+      (unless (functionp obj) (error "not a function"))
+      (if (assq 'byte-code obj)
+          nil
+        (if interactive-p (message (if name
+                                       "Compiling %s's definition..."
+                                     "Compiling definition...")
+                                   name))
+        (setq obj (byte-compile obj))
+        (if interactive-p (message "Done compiling.  Disassembling..."))))
     (cond ((consp obj)
+          (setq args (help-function-arglist obj))      ;save arg list
           (setq obj (cdr obj))         ;throw lambda away
-          (setq args (car obj))        ;save arg list
           (setq obj (cdr obj)))
          ((byte-code-function-p obj)
-          (setq args (aref obj 0)))
+          (setq args (help-function-arglist obj)))
           (t (error "Compilation failed")))
     (if (zerop indent) ; not a nested function
        (progn
@@ -127,10 +124,7 @@ redefine OBJECT if it is a symbol."
     (insert "  args: ")
     (prin1 args (current-buffer))
     (insert "\n")
-    (let ((interactive (cond ((consp obj)
-                             (assq 'interactive obj))
-                            ((> (length obj) 5)
-                             (list 'interactive (aref obj 5))))))
+    (let ((interactive (interactive-form obj)))
       (if interactive
          (progn
            (setq interactive (nth 1 interactive))
@@ -226,15 +220,16 @@ OBJ should be a call to BYTE-CODE generated by the byte 
compiler."
                 ;; but if the value of the constant is compiled code, then
                 ;; recursively disassemble it.
                 (cond ((or (byte-code-function-p arg)
-                           (and (eq (car-safe arg) 'lambda)
+                           (and (consp arg) (functionp arg)
                                 (assq 'byte-code arg))
                            (and (eq (car-safe arg) 'macro)
                                 (or (byte-code-function-p (cdr arg))
-                                    (and (eq (car-safe (cdr arg)) 'lambda)
+                                    (and (consp (cdr arg))
+                                          (functionp (cdr arg))
                                          (assq 'byte-code (cdr arg))))))
                        (cond ((byte-code-function-p arg)
                               (insert "<compiled-function>\n"))
-                             ((eq (car-safe arg) 'lambda)
+                             ((functionp arg)
                               (insert "<compiled lambda>"))
                              (t (insert "<compiled macro>\n")))
                        (disassemble-internal
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 3ad496a..0162a9a 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -880,7 +880,7 @@ Maybe clear the markers and delete the symbol's edebug 
property?"
              (setq dotted-form (edebug-read-storing-offsets stream))
                    elements (nconc elements dotted-form)
              (if (not (eq (edebug-next-token-class) 'rparen))
-                 (edebug-syntax-error "Expected ‘)’"))
+                 (edebug-syntax-error "Expected `)'"))
              (setq edebug-read-dotted-list (listp dotted-form))
              ))
        elements)
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index e1051b2..400bdb9 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -218,7 +218,7 @@ for CLASS.  Optional ALLOW-SUBCLASS says that it is ok for
 `eieio-persistent-read' to load in subclasses of class instead of
 being pedantic."
   (unless class
-    (message "Unsafe call to ‘eieio-persistent-read’."))
+    (message "Unsafe call to `eieio-persistent-read'."))
   (when class (cl-check-type class class))
   (let ((ret nil)
        (buffstr nil))
diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 3b07c5d..a2f5f8a 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -219,7 +219,8 @@ It creates an autoload function for CNAME's constructor."
       ;; turn this into a usable self-pointing symbol
       (when eieio-backward-compatibility
         (set cname cname)
-        (make-obsolete-variable cname (format "use '%s instead" cname) "25.1"))
+        (make-obsolete-variable cname (format "use \\='%s instead" cname)
+                                "25.1"))
 
       ;; Store the new class vector definition into the symbol.  We need to
       ;; do this first so that we can call defmethod for the accessor.
@@ -338,7 +339,8 @@ See `defclass' for more information."
     ;; turn this into a usable self-pointing symbol;  FIXME: Why?
     (when eieio-backward-compatibility
       (set cname cname)
-      (make-obsolete-variable cname (format "use '%s instead" cname) "25.1"))
+      (make-obsolete-variable cname (format "use \\='%s instead" cname)
+                              "25.1"))
 
     ;; Create a handy list of the class test too
     (when eieio-backward-compatibility
@@ -357,8 +359,9 @@ See `defclass' for more information."
                                       (object-of-class-p (car obj) ,cname)))
                        (setq obj (cdr obj)))
                      ans))))
-        (make-obsolete csym (format "use (cl-typep ... '(list-of %s)) instead"
-                                    cname)
+        (make-obsolete csym (format
+                             "use (cl-typep ... \\='(list-of %s)) instead"
+                             cname)
                        "25.1")))
 
     ;; Before adding new slots, let's add all the methods and classes
@@ -407,7 +410,7 @@ See `defclass' for more information."
                  (progn
                    (set initarg initarg)
                    (make-obsolete-variable
-                    initarg (format "use '%s instead" initarg) "25.1"))))
+                    initarg (format "use \\='%s instead" initarg) "25.1"))))
 
        ;; The customgroup should be a list of symbols.
        (cond ((and (null customg) custom)
@@ -544,7 +547,7 @@ If SKIPNIL is non-nil, then if default value is nil return 
t instead."
     (if (not (eq type t))
         (if (not (equal type tp))
             (error
-             "Child slot type ‘%s’ does not match inherited type ‘%s’ for ‘%s’"
+             "Child slot type `%s' does not match inherited type `%s' for `%s'"
              type tp a))
       (setf (cl--slot-descriptor-type new) tp))
     ;; If we have a repeat, only update the initarg...
@@ -564,7 +567,7 @@ If SKIPNIL is non-nil, then if default value is nil return 
t instead."
     (let ((super-prot (alist-get :protection oprops))
           (prot (alist-get :protection nprops)))
       (if (not (eq prot super-prot))
-          (error "Child slot protection ‘%s’ does not match inherited 
protection ‘%s’ for ‘%s’"
+          (error "Child slot protection `%s' does not match inherited 
protection `%s' for `%s'"
                  prot super-prot a)))
     ;; End original PLN
 
@@ -733,7 +736,7 @@ Argument FN is the function calling this verifier."
                 ((and (or `',name (and name (pred keywordp)))
                       (guard (not (memq name eieio--known-slot-names))))
                  (macroexp--warn-and-return
-                  (format-message "Unknown slot ‘%S’" name) exp 'compile-only))
+                  (format-message "Unknown slot `%S'" name) exp 'compile-only))
                 (_ exp)))))
   (cl-check-type slot symbol)
   (cl-check-type obj (or eieio-object class))
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 0b00336..a5d8b6f 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -141,11 +141,11 @@ are not abstract."
        (setq location
              (find-lisp-object-file-name ctr def)))
       (when location
-       (insert (substitute-command-keys " in ‘"))
+       (insert (substitute-command-keys " in `"))
        (help-insert-xref-button
         (help-fns-short-filename location)
         'cl-type-definition ctr location 'define-type)
-       (insert (substitute-command-keys "’")))
+       (insert (substitute-command-keys "'")))
       (insert ".\nCreates an object of class " (symbol-name ctr) ".")
       (goto-char (point-max))
       (if (autoloadp def)
diff --git a/lisp/emacs-lisp/eieio-speedbar.el 
b/lisp/emacs-lisp/eieio-speedbar.el
index ac8124a..a1eabcf 100644
--- a/lisp/emacs-lisp/eieio-speedbar.el
+++ b/lisp/emacs-lisp/eieio-speedbar.el
@@ -323,7 +323,7 @@ Argument DEPTH is the depth at which the tag line is 
inserted."
 
 (cl-defmethod eieio-speedbar-child-make-tag-lines ((object eieio-speedbar) 
_depth)
   "Base method for creating tag lines for non-object children."
-  (error "You must implement ‘eieio-speedbar-child-make-tag-lines’ for %s"
+  (error "You must implement `eieio-speedbar-child-make-tag-lines' for %s"
         (eieio-object-name object)))
 
 (cl-defmethod eieio-speedbar-expand ((object eieio-speedbar) depth)
@@ -364,7 +364,7 @@ TOKEN is the object.  INDENT is the current indentation 
level."
 
 (cl-defmethod eieio-speedbar-child-description ((obj eieio-speedbar))
   "Return a description for a child of OBJ which is not an object."
-  (error "You must implement ‘eieio-speedbar-child-description’ for %s"
+  (error "You must implement `eieio-speedbar-child-description' for %s"
         (eieio-object-name obj)))
 
 (defun eieio-speedbar-item-info ()
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index ad178c3..790e8bc 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -114,10 +114,10 @@ and reference them using the function `class-option'."
 
   (cond ((and (stringp (car options-and-doc))
               (/= 1 (% (length options-and-doc) 2)))
-         (error "Too many arguments to ‘defclass’"))
+         (error "Too many arguments to `defclass'"))
         ((and (symbolp (car options-and-doc))
               (/= 0 (% (length options-and-doc) 2)))
-         (error "Too many arguments to ‘defclass’")))
+         (error "Too many arguments to `defclass'")))
 
   (if (stringp (car options-and-doc))
       (setq options-and-doc
@@ -235,7 +235,8 @@ This method is obsolete."
            (let ((f (intern (format "%s-child-p" name))))
              `((defalias ',f ',testsym2)
                (make-obsolete
-                ',f ,(format "use (cl-typep ... '%s) instead" name) "25.1"))))
+                ',f ,(format "use (cl-typep ... \\='%s) instead" name)
+                "25.1"))))
 
        ;; When using typep, (typep OBJ 'myclass) returns t for objects which
        ;; are subclasses of myclass.  For our predicates, however, it is
@@ -348,10 +349,10 @@ variable name of the same name as the slot."
 
 (pcase-defmacro eieio (&rest fields)
   "Pcase patterns to match EIEIO objects.
-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
+Elements of FIELDS can be of the form (NAME PAT) in which case the contents of
+field NAME is matched against PAT, or they can be of the form NAME which
 is a shorthand for (NAME NAME)."
-  (declare (debug (&rest [&or (sexp pcase-UPAT) sexp])))
+  (declare (debug (&rest [&or (sexp pcase-PAT) 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
@@ -941,7 +942,7 @@ this object."
   "Change the class of OBJ to type CLASS.
 This may create or delete slots, but does not affect the return value
 of `eq'."
-  (error "EIEIO: ‘change-class’ is unimplemented"))
+  (error "EIEIO: `change-class' is unimplemented"))
 
 ;; Hook ourselves into help system for describing classes and methods.
 ;; FIXME: This is not actually needed any more since we can click on the
@@ -983,7 +984,7 @@ Optional argument GROUP is the sub-group of slots to 
display.
 
 ;;;***
 
-;;;### (autoloads nil "eieio-opt" "eieio-opt.el" 
"694d44fcd869546592d35f3321f62667")
+;;;### (autoloads nil "eieio-opt" "eieio-opt.el" 
"d00419c898056fadf2f8e491f864aa1e")
 ;;; Generated autoloads from eieio-opt.el
 
 (autoload 'eieio-browse "eieio-opt" "\
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index 15eeb49..86ac33c 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -249,9 +249,9 @@ This environment can be passed to `macroexpand'."
     (elint-set-mode-line t)
     (with-current-buffer elint-log-buffer
       (unless (string-equal default-directory dir)
-       (elint-log-message (format-message "\nLeaving directory ‘%s’"
+       (elint-log-message (format-message "\nLeaving directory `%s'"
                                            default-directory) t)
-       (elint-log-message (format-message "Entering directory ‘%s’" dir) t)
+       (elint-log-message (format-message "Entering directory `%s'" dir) t)
        (setq default-directory dir))))
   (let ((str (format "Linting file %s" file)))
     (message "%s..." str)
@@ -374,7 +374,7 @@ Returns the forms."
          ;; quoted check cannot be elsewhere, since quotes skipped.
          (if (looking-back "'" (1- (point)))
              ;; Eg cust-print.el uses ' as a comment syntax.
-             (elint-warning "Skipping quoted form ‘'%.20s...’"
+             (elint-warning "Skipping quoted form `%c%.20s...'" ?\'
                           (read (current-buffer)))
            (condition-case nil
                (setq tops (cons
@@ -383,7 +383,7 @@ Returns the forms."
                            tops))
              (end-of-file
               (goto-char elint-current-pos)
-              (error "Missing ‘)’ in top form: %s"
+              (error "Missing `)' in top form: %s"
                      (buffer-substring elint-current-pos
                                        (line-end-position))))))))
       (nreverse tops))))
@@ -401,7 +401,7 @@ Return nil if there are no more forms, t otherwise."
   (cond
    ;; Eg nnmaildir seems to use [] as a form of comment syntax.
    ((not (listp form))
-    (elint-warning "Skipping non-list form ‘%s’" form))
+    (elint-warning "Skipping non-list form `%s'" form))
    ;; Add defined variable
    ((memq (car form) '(defvar defconst defcustom))
     (setq elint-env (elint-env-add-var elint-env (cadr form))))
@@ -432,7 +432,7 @@ Return nil if there are no more forms, t otherwise."
               (if (or (< (length form) 4)
                       (eq (nth 3 form) t)
                       (unless (stringp (nth 2 form))
-                        (elint-error "Malformed declaration for ‘%s’"
+                        (elint-error "Malformed declaration for `%s'"
                                      (cadr form))
                         t))
                   'unknown
@@ -758,7 +758,7 @@ CODE can be a lambda expression, a macro, or byte-compiled 
code."
     (and (eq (car-safe alias) 'quote)
         (eq (car-safe target) 'quote)
         (eq (elint-get-args (cadr target) env) 'undefined)
-        (elint-warning "Alias ‘%s’ has unknown target ‘%s’"
+        (elint-warning "Alias `%s' has unknown target `%s'"
                        (cadr alias) (cadr target))))
   (elint-form form env t))
 
@@ -796,7 +796,7 @@ CODE can be a lambda expression, a macro, or byte-compiled 
code."
                  (setq newenv
                        (elint-env-add-var newenv (car s))))
                 (t (elint-error
-                    "Malformed ‘let’ declaration: %s" s))))
+                    "Malformed `let' declaration: %s" s))))
              varlist)
 
        ;; Lint the body forms
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 91fc157..d47e5d9 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -121,7 +121,7 @@ Emacs bug 6581 at URL 
`http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6581'."
 
 (defun ert-get-test (symbol)
   "If SYMBOL names a test, return that.  Signal an error otherwise."
-  (unless (ert-test-boundp symbol) (error "No test named ‘%S’" symbol))
+  (unless (ert-test-boundp symbol) (error "No test named `%S'" symbol))
   (get symbol 'ert--test))
 
 (defun ert-set-test (symbol definition)
@@ -2065,7 +2065,7 @@ and how to display message."
     "--"
     ["Show backtrace" ert-results-pop-to-backtrace-for-test-at-point]
     ["Show messages" ert-results-pop-to-messages-for-test-at-point]
-    ["Show ‘should’ forms" ert-results-pop-to-should-forms-for-test-at-point]
+    ["Show `should' forms" ert-results-pop-to-should-forms-for-test-at-point]
     ["Describe test" ert-results-describe-test-at-point]
     "--"
     ["Delete test" ert-delete-test]
@@ -2377,9 +2377,9 @@ To be used in the ERT results buffer."
            (ert--print-backtrace backtrace)
            (debugger-make-xrefs)
            (goto-char (point-min))
-           (insert "Backtrace for test ‘")
+           (insert (substitute-command-keys "Backtrace for test `"))
            (ert-insert-test-name-button (ert-test-name test))
-           (insert "’:\n")))))))
+           (insert (substitute-command-keys "':\n"))))))))
 
 (defun ert-results-pop-to-messages-for-test-at-point ()
   "Display the part of the *Messages* buffer generated during the test at 
point.
@@ -2398,9 +2398,9 @@ To be used in the ERT results buffer."
         (ert-simple-view-mode)
         (insert (ert-test-result-messages result))
         (goto-char (point-min))
-        (insert "Messages for test ‘")
+        (insert (substitute-command-keys "Messages for test `"))
         (ert-insert-test-name-button (ert-test-name test))
-        (insert "’:\n")))))
+        (insert (substitute-command-keys "':\n"))))))
 
 (defun ert-results-pop-to-should-forms-for-test-at-point ()
   "Display the list of `should' forms executed during the test at point.
@@ -2428,9 +2428,10 @@ To be used in the ERT results buffer."
                      (ert--pp-with-indentation-and-newline form-description)
                      (ert--make-xrefs-region begin (point)))))
         (goto-char (point-min))
-        (insert "‘should’ forms executed during test ‘")
+        (insert (substitute-command-keys
+                 "`should' forms executed during test `"))
         (ert-insert-test-name-button (ert-test-name test))
-        (insert "’:\n")
+        (insert (substitute-command-keys "':\n"))
         (insert "\n")
         (insert (concat "(Values are shallow copies and may have "
                         "looked different during the test if they\n"
@@ -2507,9 +2508,11 @@ To be used in the ERT results buffer."
           (let ((file-name (and test-name
                                 (symbol-file test-name 'ert-deftest))))
             (when file-name
-              (insert " defined in ‘" (file-name-nondirectory file-name) "’")
+              (insert (format-message " defined in `%s'"
+                                      (file-name-nondirectory file-name)))
               (save-excursion
-                (re-search-backward "‘\\([^‘’]+\\)’" nil t)
+                (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
+                                    nil t)
                 (help-xref-button 1 'help-function-def test-name file-name)))
             (insert ".")
             (fill-region-as-paragraph (point-min) (point))
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 86a1f28..026a4a7 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -296,7 +296,7 @@ Otherwise, TYPE specifies the kind of definition,
 and it is interpreted via `find-function-regexp-alist'.
 The search is done in the source for library LIBRARY."
   (if (null library)
-      (error "Don't know where ‘%s’ is defined" symbol))
+      (error "Don't know where `%s' is defined" symbol))
   ;; Some functions are defined as part of the construct
   ;; that defines something else.
   (while (and (symbolp symbol) (get symbol 'definition-name))
@@ -368,9 +368,9 @@ message about the whole chain of aliases."
           (setq aliases (if aliases
                             (concat aliases
                                     (format-message
-                                     ", which is an alias for ‘%s’"
+                                     ", which is an alias for `%s'"
                                      (symbol-name def)))
-                          (format-message "‘%s’ is an alias for ‘%s’"
+                          (format-message "`%s' is an alias for `%s'"
                                           function (symbol-name def)))))
       (setq function (find-function-advised-original function)
             def (find-function-advised-original function)))
diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el
index 79e760d..123f64b 100644
--- a/lisp/emacs-lisp/generator.el
+++ b/lisp/emacs-lisp/generator.el
@@ -661,7 +661,7 @@ The caller of `iter-next' receives VALUE, and the next call 
to
 `iter-next' resumes execution at the previous
 `iter-yield' point."
   (identity value)
-  (error "‘iter-yield’ used outside a generator"))
+  (error "`iter-yield' used outside a generator"))
 
 (defmacro iter-yield-from (value)
   "When used inside a generator function, delegate to a sub-iterator.
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 6760982..bbe6b36 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -239,7 +239,7 @@ instead the assignment is turned into something equivalent 
to
 so as to preserve the semantics of `setf'."
   (declare (debug (sexp (&or symbolp lambda-expr) &optional sexp)))
   (when (eq 'lambda (car-safe setter))
-    (message "Use ‘gv-define-setter’ or name %s's setter function" name))
+    (message "Use `gv-define-setter' or name %s's setter function" name))
   `(gv-define-setter ,name (val &rest args)
      ,(if fix-return
           `(macroexp-let2 nil v val
diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el
index 6fdd348..393f0dd 100644
--- a/lisp/emacs-lisp/lisp-mnt.el
+++ b/lisp/emacs-lisp/lisp-mnt.el
@@ -542,21 +542,21 @@ copyright notice is allowed."
               ((null name)
                "Can't find package name")
               ((not (lm-authors))
-               "‘Author:’ tag missing")
+               "`Author:' tag missing")
               ((not (lm-maintainer))
-               "‘Maintainer:’ tag missing")
+               "`Maintainer:' tag missing")
               ((not (lm-summary))
                "Can't find the one-line summary description")
               ((not (lm-keywords))
-               "‘Keywords:’ tag missing")
+               "`Keywords:' tag missing")
               ((not (lm-keywords-finder-p))
-               "‘Keywords:’ has no valid finder keywords (see 
‘finder-known-keywords’)")
+               "`Keywords:' has no valid finder keywords (see 
`finder-known-keywords')")
               ((not (lm-commentary-mark))
-               "Can't find a ‘Commentary’ section marker")
+               "Can't find a `Commentary' section marker")
               ((not (lm-history-mark))
-               "Can't find a ‘History’ section marker")
+               "Can't find a `History' section marker")
               ((not (lm-code-mark))
-               "Can't find a ‘Code’ section marker")
+               "Can't find a `Code' section marker")
               ((progn
                  (goto-char (point-max))
                  (not
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index 6189976..2c33d39 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -147,10 +147,10 @@ and also to avoid outputting the warning during normal 
execution."
   (let ((instead (car obsolescence-data))
         (asof (nth 2 obsolescence-data)))
     (format-message
-     "‘%s’ is an obsolete %s%s%s" fun type
+     "`%s' is an obsolete %s%s%s" fun type
      (if asof (concat " (as of " asof ")") "")
      (cond ((stringp instead) (concat "; " (substitute-command-keys instead)))
-           (instead (format-message "; use ‘%s’ instead." instead))
+           (instead (format-message "; use `%s' instead." instead))
            (t ".")))))
 
 (defun macroexpand-1 (form &optional environment)
diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el
index 3ac7094..43fd4ef57a 100644
--- a/lisp/emacs-lisp/map-ynp.el
+++ b/lisp/emacs-lisp/map-ynp.el
@@ -199,9 +199,9 @@ Returns the number of actions taken."
                                   (action (if help (nth 2 help) "act on")))
                               (concat
                                (format-message "\
-Type SPC or ‘y’ to %s the current %s;
-DEL or ‘n’ to skip the current %s;
-RET or ‘q’ to give up on the %s (skip all remaining %s);
+Type SPC or `y' to %s the current %s;
+DEL or `n' to skip the current %s;
+RET or `q' to give up on the %s (skip all remaining %s);
 C-g to quit (cancel the whole command);
 ! to %s all remaining %s;\n"
                                        action object object action objects 
action
diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el
index 5014571..ea56efe 100644
--- a/lisp/emacs-lisp/map.el
+++ b/lisp/emacs-lisp/map.el
@@ -249,21 +249,22 @@ MAP can be a list, hash-table or array."
     :array (seq-empty-p map)
     :hash-table (zerop (hash-table-count map))))
 
-(defun map-contains-key-p (map key &optional testfn)
+(defun map-contains-key (map key &optional testfn)
   "Return non-nil if MAP contain the key KEY, nil otherwise.
 Equality is defined by TESTFN if non-nil or by `equal' if nil.
 
 MAP can be a list, hash-table or array."
-  (seq-contains-p (map-keys map) key testfn))
+  (seq-contains (map-keys map) key testfn))
 
-(defun map-some-p (pred map)
-  "Return a key/value pair for which (PRED key val) is non-nil in MAP.
+(defun map-some (pred map)
+  "Return a non-nil if (PRED key val) is non-nil for any key/value pair in MAP.
 
 MAP can be a list, hash-table or array."
   (catch 'map--break
     (map-apply (lambda (key value)
-                 (when (funcall pred key value)
-                   (throw 'map--break (cons key value))))
+                 (let ((result (funcall pred key value)))
+                   (when result
+                     (throw 'map--break result))))
                map)
     nil))
 
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 7eebb5e..2cd34e1 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -95,7 +95,7 @@ Each element has the form (WHERE BYTECODE STACK) where:
                (propertize (format "%s advice: " where)
                            'face 'warning)
                (let ((fun (advice--car flist)))
-                 (if (symbolp fun) (format-message "‘%S’" fun)
+                 (if (symbolp fun) (format-message "`%S'" fun)
                    (let* ((name (cdr (assq 'name (advice--props flist))))
                           (doc (documentation fun t))
                           (usage (help-split-fundoc doc function)))
@@ -176,7 +176,7 @@ WHERE is a symbol to select an entry in 
`advice--where-alist'."
           (advice--make-1 (aref main 1) (aref main 3)
                           (advice--car main) rest (advice--props main)))
       (let ((desc (assq where advice--where-alist)))
-        (unless desc (error "Unknown add-function location ‘%S’" where))
+        (unless desc (error "Unknown add-function location `%S'" where))
         (advice--make-1 (nth 1 desc) (nth 2 desc)
                         function main props)))))
 
@@ -461,7 +461,7 @@ otherwise it is named address@hidden'.
          (advice (cond ((null name) `(lambda ,lambda-list ,@body))
                        ((or (stringp name) (symbolp name))
                         (intern (format "address@hidden" symbol name)))
-                       (t (error "Unrecognized name spec ‘%S’" name)))))
+                       (t (error "Unrecognized name spec `%S'" name)))))
     `(prog1 ,@(and (symbolp advice) `((defun ,advice ,lambda-list ,@body)))
        (advice-add ',symbol ,where #',advice ,@(and props `(',props))))))
 
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 608bf73..81d0b83 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -296,7 +296,7 @@ destination, prompt for one."
             ((string-match "\\.tar\\'" file)
              (tar-mode) (package-tar-file-info))
             ((string-match "\\.el\\'" file) (package-buffer-info))
-            (t (error "Unrecognized extension ‘%s’"
+            (t (error "Unrecognized extension `%s'"
                       (file-name-extension file))))))
       (package-upload-buffer-internal pkg-desc (file-name-extension file)))))
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 7c4f21f..b0d2ff9 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -234,7 +234,7 @@ of it available such that:
 
 This variable has three possible values:
     nil: no packages are hidden;
-    archive: only criteria (a) is used;
+    `archive': only criteria (a) is used;
     t: both criteria are used.
 
 This variable has no effect if `package-menu--hide-packages' is
@@ -456,13 +456,13 @@ This is, approximately, the inverse of `version-to-list'.
           (push (int-to-string num) str-list)
           (push "." str-list))
          ((< num -4)
-          (error "Invalid version list ‘%s’" vlist))
+          (error "Invalid version list `%s'" vlist))
          (t
           ;; pre, or beta, or alpha
           (cond ((equal "." (car str-list))
                  (pop str-list))
                 ((not (string-match "[0-9]+" (car str-list)))
-                 (error "Invalid version list ‘%s’" vlist)))
+                 (error "Invalid version list `%s'" vlist)))
           (push (cond ((= num -1) "pre")
                       ((= num -2) "beta")
                       ((= num -3) "alpha")
@@ -623,7 +623,7 @@ Return the max version (as a string) if the package is held 
at a lower version."
           ((stringp force)              ; held
            (unless (version-list-= version (version-to-list force))
              force))
-          (t (error "Invalid element in ‘package-load-list’")))))
+          (t (error "Invalid element in `package-load-list'")))))
 
 (defun package-built-in-p (package &optional min-version)
   "Return true if PACKAGE is built-in to Emacs.
@@ -639,6 +639,28 @@ specifying the minimum acceptable version."
         (require 'finder-inf nil t) ; For `package--builtins'.
         (assq package package--builtins))))))
 
+(defun package--autoloads-file-name (pkg-desc)
+  "Return the absolute name of the autoloads file, sans extension.
+PKG-DESC is a `package-desc' object."
+  (expand-file-name
+   (format "%s-autoloads" (package-desc-name pkg-desc))
+   (package-desc-dir pkg-desc)))
+
+(defun package--activate-autoloads-and-load-path (pkg-desc)
+  "Load the autoloads file and add package dir to `load-path'.
+PKG-DESC is a `package-desc' object."
+  (let* ((old-lp load-path)
+         (pkg-dir (package-desc-dir pkg-desc))
+         (pkg-dir-dir (file-name-as-directory pkg-dir)))
+    (with-demoted-errors "Error loading autoloads: %s"
+      (load (package--autoloads-file-name pkg-desc) nil t))
+    (when (and (eq old-lp load-path)
+               (not (or (member pkg-dir load-path)
+                        (member pkg-dir-dir load-path))))
+      ;; Old packages don't add themselves to the `load-path', so we have to
+      ;; do it ourselves.
+      (push pkg-dir load-path))))
+
 (defvar Info-directory-list)
 (declare-function info-initialize "info" ())
 
@@ -648,24 +670,14 @@ If RELOAD is non-nil, also `load' any files inside the 
package which
 correspond to previously loaded files (those returned by
 `package--list-loaded-files')."
   (let* ((name (package-desc-name pkg-desc))
-         (pkg-dir (package-desc-dir pkg-desc))
-         (pkg-dir-dir (file-name-as-directory pkg-dir)))
+         (pkg-dir (package-desc-dir pkg-desc)))
     (unless pkg-dir
-      (error "Internal error: unable to find directory for ‘%s’"
+      (error "Internal error: unable to find directory for `%s'"
              (package-desc-full-name pkg-desc)))
-    ;; Add to load path, add autoloads, and activate the package.
-    (let* ((old-lp load-path)
-           (autoloads-file (expand-file-name
-                            (format "%s-autoloads" name) pkg-dir))
-           (loaded-files-list (and reload (package--list-loaded-files 
pkg-dir))))
-      (with-demoted-errors "Error in package-activate-1: %s"
-        (load autoloads-file nil t))
-      (when (and (eq old-lp load-path)
-                 (not (or (member pkg-dir load-path)
-                          (member pkg-dir-dir load-path))))
-        ;; Old packages don't add themselves to the `load-path', so we have to
-        ;; do it ourselves.
-        (push pkg-dir load-path))
+    (let* ((loaded-files-list (when reload
+                                (package--list-loaded-files pkg-dir))))
+      ;; Add to load path, add autoloads, and activate the package.
+      (package--activate-autoloads-and-load-path pkg-desc)
       ;; Call `load' on all files in `pkg-dir' already present in
       ;; `load-history'.  This is done so that macros in these files are 
updated
       ;; to their new definitions.  If another package is being installed which
@@ -674,7 +686,8 @@ correspond to previously loaded files (those returned by
       (with-demoted-errors "Error in package-activate-1: %s"
         (mapc (lambda (feature) (load feature nil t))
               ;; Skip autoloads file since we already evaluated it above.
-              (remove (file-truename autoloads-file) loaded-files-list))))
+              (remove (file-truename (package--autoloads-file-name pkg-desc))
+                      loaded-files-list))))
     ;; Add info node.
     (when (file-exists-p (expand-file-name "dir" pkg-dir))
       ;; FIXME: not the friendliest, but simple.
@@ -754,8 +767,8 @@ Newer versions are always activated, regardless of FORCE."
                        (unless (package-activate (car req))
                          (throw 'dep-failure req))))))
         (if fail
-            (warn "Unable to activate package ‘%s’.
-Required package ‘%s-%s’ is unavailable"
+            (warn "Unable to activate package `%s'.
+Required package `%s-%s' is unavailable"
                   package (car fail) (package-version-join (cadr fail)))
           ;; If all goes well, activate the package itself.
           (package-activate-1 pkg-vec force)))))))
@@ -919,8 +932,9 @@ untar into a directory named DIR; otherwise, signal an 
error."
 (defun package--compile (pkg-desc)
   "Byte-compile installed package PKG-DESC."
   (let ((warning-minimum-level :error)
-        (save-silently inhibit-message))
-    (package-activate-1 pkg-desc)
+        (save-silently inhibit-message)
+        (load-path load-path))
+    (package--activate-autoloads-and-load-path pkg-desc)
     (byte-recompile-directory (package-desc-dir pkg-desc) 0 t)))
 
 ;;;; Inferring package from current buffer
@@ -1372,13 +1386,18 @@ If successful, set `package-archive-contents'."
 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."
+it to the file.
+If called as part of loading `user-init-file', set
+`package-enable-at-startup' to nil, to prevent accidentally
+loading packages twice."
   (interactive)
   (setq package-alist nil)
   (if (equal user-init-file load-file-name)
       ;; If `package-initialize' is being called as part of loading
       ;; the init file, it's obvious we don't need to ensure-init.
-      (setq package--init-file-ensured t)
+      (setq package--init-file-ensured t
+            ;; And likely we don't need to run it again after init.
+            package-enable-at-startup nil)
     (package--ensure-init-file))
   (package-load-all-descriptors)
   (package-read-all-archive-contents)
@@ -1465,7 +1484,7 @@ similar to an entry in `package-alist'.  Save the cached 
copy to
                ;; 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))
+               (error "Unsigned archive `%s'" name))
              ;; Write out the archives file.
              (write-region content nil local-file nil 'silent)
              ;; Write out good signatures into archive-contents.signed file.
@@ -1495,7 +1514,7 @@ perform the downloads asynchronously."
          (when async
            ;; The t at the end means to propagate connection errors.
            (lambda () (package--update-downloads-in-progress archive) t)))
-      (error (message "Failed to download ‘%s’ archive."
+      (error (message "Failed to download `%s' archive."
                (car archive))))))
 
 ;;;###autoload
@@ -1564,7 +1583,7 @@ SEEN is used internally to detect infinite recursion."
                          (package-desc-full-name already))
               (setq packages (delq already packages))
               (setq already nil))
-          (error "Need package ‘%s-%s’, but only %s is being installed"
+          (error "Need package `%s-%s', but only %s is being installed"
                  next-pkg (package-version-join next-version)
                  (package-version-join (package-desc-version already)))))
       (cond
@@ -1593,20 +1612,20 @@ SEEN is used internally to detect infinite recursion."
                   (setq problem
                         (if (stringp disabled)
                             (format-message
-                             "Package ‘%s’ held at version %s, but version %s 
required"
+                             "Package `%s' held at version %s, but version %s 
required"
                              next-pkg disabled
                              (package-version-join next-version))
-                          (format-message "Required package ‘%s’ is disabled"
+                          (format-message "Required package `%s' is disabled"
                                           next-pkg)))))
                (t (setq found pkg-desc)))))
           (unless found
             (cond
              (problem (error "%s" problem))
              (found-something
-              (error "Need package ‘%s-%s’, but only %s is available"
+              (error "Need package `%s-%s', but only %s is available"
                      next-pkg (package-version-join next-version)
                      found-something))
-             (t (error "Package ‘%s-%s’ is unavailable"
+             (t (error "Package `%s-%s' is unavailable"
                        next-pkg (package-version-join next-version)))))
           (setq packages
                 (package-compute-transaction (cons found packages)
@@ -1766,7 +1785,7 @@ if all the in-between dependencies are also in 
PACKAGE-LIST."
              (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’"
+               (error "Unsigned package: `%s'"
                  (package-desc-name pkg-desc)))
              ;; Signature checked, unpack now.
              (with-temp-buffer (insert content)
@@ -1907,7 +1926,7 @@ to install it but still mark it as selected."
                                                (package-desc-reqs pkg)))
               (package-compute-transaction () (list (list pkg))))))
       (package-download-transaction transaction)
-    (message "‘%s’ is already installed" (package-desc-full-name pkg))))
+    (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.
@@ -1982,7 +2001,7 @@ If some packages are not installed propose to install 
them."
   ;; using here, because the outcome is the same either way (nothing
   ;; gets installed).
   (if (not package-selected-packages)
-      (message "‘package-selected-packages’ is empty, nothing to install")
+      (message "`package-selected-packages' is empty, nothing to install")
     (cl-loop for p in package-selected-packages
              unless (package-installed-p p)
              collect p into lst
@@ -2047,13 +2066,13 @@ If NOSAVE is non-nil, the package is not removed from
                                   (expand-file-name package-user-dir))
                                  (expand-file-name dir)))
            ;; Don't delete "system" packages.
-           (error "Package ‘%s’ is a system package, not deleting"
+           (error "Package `%s' is a system package, not deleting"
                   (package-desc-full-name pkg-desc)))
           ((and (null force)
                 (setq pkg-used-elsewhere-by
                       (package--used-elsewhere-p pkg-desc)))
            ;; Don't delete packages used as dependency elsewhere.
-           (error "Package ‘%s’ is used by ‘%s’ as dependency, not deleting"
+           (error "Package `%s' is used by `%s' as dependency, not deleting"
                   (package-desc-full-name pkg-desc)
                   (package-desc-name pkg-used-elsewhere-by)))
           (t
@@ -2068,7 +2087,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))))))
+           (message "Package `%s' deleted." (package-desc-full-name 
pkg-desc))))))
 
 ;;;###autoload
 (defun package-reinstall (pkg)
@@ -2097,7 +2116,8 @@ will be deleted."
   ;; do absolutely nothing.
   (when (or package-selected-packages
             (yes-or-no-p
-             "‘package-selected-packages’ is empty! Really remove ALL 
packages? "))
+             (format-message
+              "`package-selected-packages' is empty! Really remove ALL 
packages? ")))
     (let ((removable (package--removable-packages)))
       (if removable
           (when (y-or-n-p
@@ -2144,7 +2164,7 @@ will be deleted."
       (with-current-buffer standard-output
         (describe-package-1 package)))))
 
-(defface package-help-section-name-face
+(defface package-help-section-name
   '((t :inherit (bold font-lock-function-name-face)))
   "Face used on section names in package description buffers."
   :version "25.1")
@@ -2155,7 +2175,7 @@ If more STRINGS are provided, insert them followed by a 
newline.
 Otherwise no newline is inserted."
   (declare (indent 1))
   (insert (make-string (max 0 (- 11 (string-width name))) ?\s)
-          (propertize (concat name ": ") 'font-lock-face 
'package-help-section-name-face))
+          (propertize (concat name ": ") 'font-lock-face 
'package-help-section-name))
   (when strings
     (apply #'insert strings)
     (insert "\n")))
@@ -2205,7 +2225,7 @@ Otherwise no newline is inserted."
                                    "Installed"
                                  (capitalize status))
                                'font-lock-face 'package-status-builtin-face))
-           (insert (substitute-command-keys " in ‘"))
+           (insert (substitute-command-keys " in `"))
            (let ((dir (abbreviate-file-name
                        (file-name-as-directory
                         (if (file-in-directory-p pkg-dir package-user-dir)
@@ -2215,10 +2235,10 @@ Otherwise no newline is inserted."
            (if (and (package-built-in-p name)
                     (not (package-built-in-p name version)))
                (insert (substitute-command-keys
-                        "’,\n             shadowing a ")
+                        "',\n             shadowing a ")
                        (propertize "built-in package"
                                    'font-lock-face 
'package-status-builtin-face))
-             (insert (substitute-command-keys "’")))
+             (insert (substitute-command-keys "'")))
            (if signed
                (insert ".")
              (insert " (unsigned)."))
@@ -2366,7 +2386,7 @@ Otherwise no newline is inserted."
 
 (defun package-install-button-action (button)
   (let ((pkg-desc (button-get button 'package-desc)))
-    (when (y-or-n-p (format-message "Install package ‘%s’? "
+    (when (y-or-n-p (format-message "Install package `%s'? "
                                     (package-desc-full-name pkg-desc)))
       (package-install pkg-desc nil)
       (revert-buffer nil t)
@@ -2374,7 +2394,7 @@ Otherwise no newline is inserted."
 
 (defun package-delete-button-action (button)
   (let ((pkg-desc (button-get button 'package-desc)))
-    (when (y-or-n-p (format-message "Delete package ‘%s’? "
+    (when (y-or-n-p (format-message "Delete package `%s'? "
                                     (package-desc-full-name pkg-desc)))
       (package-delete pkg-desc)
       (revert-buffer nil t)
@@ -2759,68 +2779,68 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
 
 
 ;;; Package menu faces
-(defface package-name-face
+(defface package-name
   '((t :inherit link))
   "Face used on package names in the package menu."
   :version "25.1")
 
-(defface package-description-face
+(defface package-description
   '((t :inherit default))
   "Face used on package description summaries in the package menu."
   :version "25.1")
 
-(defface package-status-built-in-face
+(defface package-status-built-in
   '((t :inherit font-lock-builtin-face))
   "Face used on the status and version of built-in packages."
   :version "25.1")
 
-(defface package-status-external-face
+(defface package-status-external
   '((t :inherit package-status-builtin-face))
   "Face used on the status and version of external packages."
   :version "25.1")
 
-(defface package-status-available-face
+(defface package-status-available
   '((t :inherit default))
   "Face used on the status and version of available packages."
   :version "25.1")
 
-(defface package-status-new-face
-  '((t :inherit (bold package-status-available-face)))
+(defface package-status-new
+  '((t :inherit (bold package-status-available)))
   "Face used on the status and version of new packages."
   :version "25.1")
 
-(defface package-status-held-face
+(defface package-status-held
   '((t :inherit font-lock-constant-face))
   "Face used on the status and version of held packages."
   :version "25.1")
 
-(defface package-status-disabled-face
+(defface package-status-disabled
   '((t :inherit font-lock-warning-face))
   "Face used on the status and version of disabled packages."
   :version "25.1")
 
-(defface package-status-installed-face
+(defface package-status-installed
   '((t :inherit font-lock-comment-face))
   "Face used on the status and version of installed packages."
   :version "25.1")
 
-(defface package-status-dependency-face
-  '((t :inherit package-status-installed-face))
+(defface package-status-dependency
+  '((t :inherit package-status-installed))
   "Face used on the status and version of dependency packages."
   :version "25.1")
 
-(defface package-status-unsigned-face
+(defface package-status-unsigned
   '((t :inherit font-lock-warning-face))
   "Face used on the status and version of unsigned packages."
   :version "25.1")
 
-(defface package-status-incompat-face
+(defface package-status-incompat
   '((t :inherit font-lock-comment-face))
   "Face used on the status and version of incompat packages."
   :version "25.1")
 
-(defface package-status-avail-obso-face
-  '((t :inherit package-status-incompat-face))
+(defface package-status-avail-obso
+  '((t :inherit package-status-incompat))
   "Face used on the status and version of avail-obso packages."
   :version "25.1")
 
@@ -2832,22 +2852,22 @@ PKG is a package-desc object.
 Return (PKG-DESC [NAME VERSION STATUS DOC])."
   (let* ((status  (package-desc-status pkg))
          (face (pcase status
-                 (`"built-in"  'package-status-built-in-face)
-                 (`"external"  'package-status-external-face)
-                 (`"available" 'package-status-available-face)
-                 (`"avail-obso" 'package-status-avail-obso-face)
-                 (`"new"       'package-status-new-face)
-                 (`"held"      'package-status-held-face)
-                 (`"disabled"  'package-status-disabled-face)
-                 (`"installed" 'package-status-installed-face)
-                 (`"dependency" 'package-status-dependency-face)
-                 (`"unsigned"  'package-status-unsigned-face)
-                 (`"incompat"  'package-status-incompat-face)
+                 (`"built-in"  'package-status-built-in)
+                 (`"external"  'package-status-external)
+                 (`"available" 'package-status-available)
+                 (`"avail-obso" 'package-status-avail-obso)
+                 (`"new"       'package-status-new)
+                 (`"held"      'package-status-held)
+                 (`"disabled"  'package-status-disabled)
+                 (`"installed" 'package-status-installed)
+                 (`"dependency" 'package-status-dependency)
+                 (`"unsigned"  'package-status-unsigned)
+                 (`"incompat"  'package-status-incompat)
                  (_            'font-lock-warning-face)))) ; obsolete.
     (list pkg
           `[(,(symbol-name (package-desc-name pkg))
-             face package-name-face
-             font-lock-face package-name-face
+             face package-name
+             font-lock-face package-name
              follow-link t
              package-desc ,pkg
              action package-menu-describe-package)
@@ -2859,7 +2879,7 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
                   (list (propertize (or (package-desc-archive pkg) "")
                                     'font-lock-face face)))
             ,(propertize (package-desc-summary pkg)
-                         'font-lock-face 'package-description-face)])))
+                         'font-lock-face 'package-description)])))
 
 (defvar package-menu--old-archive-contents nil
   "`package-archive-contents' before the latest refresh.")
@@ -2893,8 +2913,8 @@ If optional arg BUTTON is non-nil, describe its 
associated package."
            (cl-remove-if-not (lambda (e) (string-match re (symbol-name (car 
e))))
                              package-archive-contents)))
       (message (substitute-command-keys
-                (concat "Hiding %s packages, type 
‘\\[package-menu-toggle-hiding]’"
-                        " to toggle or ‘\\[customize-variable] RET 
package-hidden-regexps’"
+                (concat "Hiding %s packages, type 
`\\[package-menu-toggle-hiding]'"
+                        " to toggle or `\\[customize-variable] RET 
package-hidden-regexps'"
                         " to customize it"))
         (length hidden)))))
 
@@ -3078,7 +3098,7 @@ prompt (see `package-menu--prompt-transaction-p')."
       (length packages)
       (mapconcat #'package-desc-full-name packages ", ")))
    ;; Exactly 1
-   (t (format-message "package ‘%s’"
+   (t (format-message "package `%s'"
                       (package-desc-full-name (car packages))))))
 
 (defun package-menu--prompt-transaction-p (delete install upgrade)
@@ -3134,7 +3154,7 @@ objects removed."
       (condition-case-unless-debug err
           (let ((inhibit-message package-menu-async))
             (package-delete elt nil 'nosave))
-        (error (message "Error trying to delete ‘%s’: %S"
+        (error (message "Error trying to delete `%s': %S"
                  (package-desc-full-name elt)
                  err))))))
 
@@ -3265,7 +3285,7 @@ Store this list in `package-menu--new-package-list'."
 (defun package-menu--find-and-notify-upgrades ()
   "Notify the user of upgradable packages."
   (when-let ((upgrades (package-menu--find-upgrades)))
-    (message "%d package%s can be upgraded; type ‘%s’ to mark %s for 
upgrading."
+    (message "%d package%s can be upgraded; type `%s' to mark %s for 
upgrading."
       (length upgrades)
       (if (= (length upgrades) 1) "" "s")
       (substitute-command-keys "\\[package-menu-mark-upgrades]")
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 5fe36bb..ea4f38a 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -164,7 +164,7 @@ Currently, the following patterns are provided this way:"
         expansion))))
 
 (declare-function help-fns--signature "help-fns"
-                  (function doc real-def real-function raw))
+                  (function doc real-def real-function buffer))
 
 ;; FIXME: Obviously, this will collide with nadvice's use of
 ;; function-documentation if we happen to advise `pcase'.
@@ -184,7 +184,7 @@ Currently, the following patterns are provided this way:"
              (insert "\n\n-- ")
              (let* ((doc (documentation me 'raw)))
                (setq doc (help-fns--signature symbol doc me
-                                              (indirect-function me) t))
+                                              (indirect-function me) nil))
                (insert "\n" (or doc "Not documented.")))))))
       (let ((combined-doc (buffer-string)))
         (if ud (help-add-fundoc-usage combined-doc (car ud)) combined-doc)))))
@@ -197,7 +197,7 @@ Currently, the following patterns are provided this way:"
          (pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
     (pcase--expand
      ;; FIXME: Could we add the FILE:LINE data in the error message?
-     exp (append cases `((,x (error "No clause matching ‘%S’" ,x)))))))
+     exp (append cases `((,x (error "No clause matching `%S'" ,x)))))))
 
 ;;;###autoload
 (defmacro pcase-lambda (lambda-list &rest body)
@@ -775,7 +775,7 @@ Otherwise, it defers to REST which is a list of branches of 
the form
         (let ((code (pcase--u1 matches code vars rest)))
           (if (eq upat '_) code
             (macroexp--warn-and-return
-             "Pattern t is deprecated.  Use ‘_’ instead"
+             "Pattern t is deprecated.  Use `_' instead"
              code))))
        ((eq upat 'pcase--dontcare) :pcase--dontcare)
        ((memq (car-safe upat) '(guard pred))
@@ -860,7 +860,7 @@ Otherwise, it defers to REST which is a list of branches of 
the form
                      (pcase--u rest))
                    vars
                    (list `((and . ,matches) ,code . ,vars))))
-       (t (error "Unknown pattern ‘%S’" upat)))))
+       (t (error "Unknown pattern `%S'" upat)))))
    (t (error "Incorrect MATCH %S" (car matches)))))
 
 (def-edebug-spec
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index de1f6d1..a499b03 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -458,7 +458,7 @@ matching parts of the target buffer will be highlighted."
   (setq reb-subexp-mode t)
   (reb-update-modestring)
   (use-local-map reb-subexp-mode-map)
-  (message "‘0’-‘9’ to display subexpressions  ‘q’ to quit subexp mode"))
+  (message "`0'-`9' to display subexpressions  `q' to quit subexp mode"))
 
 (defun reb-show-subexp (subexp &optional pause)
   "Visually show limit of subexpression SUBEXP of recent search.
diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el
index b0fb23d..9888e92 100644
--- a/lisp/emacs-lisp/regexp-opt.el
+++ b/lisp/emacs-lisp/regexp-opt.el
@@ -92,7 +92,7 @@ is enclosed by at least one regexp grouping construct.
 The returned regexp is typically more efficient than the equivalent regexp:
 
  (let ((open (if PAREN \"\\\\(\" \"\")) (close (if PAREN \"\\\\)\" \"\")))
-   (concat open (mapconcat 'regexp-quote STRINGS \"\\\\|\") close))
+   (concat open (mapconcat \\='regexp-quote STRINGS \"\\\\|\") close))
 
 If PAREN is `words', then the resulting regexp is additionally surrounded
 by \\=\\< and \\>.
diff --git a/lisp/emacs-lisp/ring.el b/lisp/emacs-lisp/ring.el
index 8badac3..2447dfa 100644
--- a/lisp/emacs-lisp/ring.el
+++ b/lisp/emacs-lisp/ring.el
@@ -175,14 +175,14 @@ Comparison is done via `equal'.  The index is 0-based."
   "Return the next item in the RING, after ITEM.
 Raise error if ITEM is not in the RING."
   (let ((curr-index (ring-member ring item)))
-    (unless curr-index (error "Item is not in the ring: ‘%s’" item))
+    (unless curr-index (error "Item is not in the ring: `%s'" item))
     (ring-ref ring (ring-plus1 curr-index (ring-length ring)))))
 
 (defun ring-previous (ring item)
   "Return the previous item in the RING, before ITEM.
 Raise error if ITEM is not in the RING."
   (let ((curr-index (ring-member ring item)))
-    (unless curr-index (error "Item is not in the ring: ‘%s’" item))
+    (unless curr-index (error "Item is not in the ring: `%s'" item))
     (ring-ref ring (ring-minus1 curr-index (ring-length ring)))))
 
 (defun ring-extend (ring x)
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 7b0de6e..a21ac7a 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -324,7 +324,7 @@ a standalone symbol."
 (defun rx-check (form)
   "Check FORM according to its car's parsing info."
   (unless (listp form)
-    (error "rx ‘%s’ needs argument(s)" form))
+    (error "rx `%s' needs argument(s)" form))
   (let* ((rx (rx-info (car form) 'head))
         (nargs (1- (length form)))
         (min-args (nth 1 rx))
@@ -332,16 +332,16 @@ a standalone symbol."
         (type-pred (nth 3 rx)))
     (when (and (not (null min-args))
               (< nargs min-args))
-      (error "rx form ‘%s’ requires at least %d args"
+      (error "rx form `%s' requires at least %d args"
             (car form) min-args))
     (when (and (not (null max-args))
               (> nargs max-args))
-      (error "rx form ‘%s’ accepts at most %d args"
+      (error "rx form `%s' accepts at most %d args"
             (car form) max-args))
     (when (not (null type-pred))
       (dolist (sub-form (cdr form))
        (unless (funcall type-pred sub-form)
-         (error "rx form ‘%s’ requires args satisfying ‘%s’"
+         (error "rx form `%s' requires args satisfying `%s'"
                 (car form) type-pred))))))
 
 
@@ -395,7 +395,7 @@ FORM is of the form `(and FORM1 ...)'."
 (defun rx-anything (form)
   "Match any character."
   (if (consp form)
-      (error "rx ‘anything’ syntax error: %s" form))
+      (error "rx `anything' syntax error: %s" form))
   (rx-or (list 'or 'not-newline ?\n)))
 
 
@@ -452,7 +452,7 @@ Only both edges of each range is checked."
   (let ((i 0)
        c1 c2 l)
     (if (= 0 (length str))
-       (error "String arg for Rx ‘any’ must not be empty"))
+       (error "String arg for Rx `any' must not be empty"))
     (while (string-match ".-." str i)
       ;; string before range: convert it to characters
       (if (< i (match-beginning 0))
@@ -482,13 +482,13 @@ Only both edges of each range is checked."
                          (error nil))))
        (if (or (null translation)
               (null (string-match "\\`\\[\\[:[-a-z]+:\\]\\]\\'" translation)))
-          (error "Invalid char class ‘%s’ in Rx ‘any’" arg))
+          (error "Invalid char class `%s' in Rx `any'" arg))
        (list (substring translation 1 -1)))) ; strip outer brackets
     ((and (integerp (car-safe arg)) (integerp (cdr-safe arg)))
      (list arg))
     ((stringp arg) (rx-check-any-string arg))
     ((error
-      "rx ‘any’ requires string, character, char pair or char class args"))))
+      "rx `any' requires string, character, char pair or char class args"))))
 
 
 (defun rx-any (form)
@@ -581,7 +581,7 @@ ARG is optional."
              (eq arg 'word-boundary)
              (and (consp arg)
                   (memq (car arg) '(not any in syntax category))))
-    (error "rx ‘not’ syntax error: %s" arg))
+    (error "rx `not' syntax error: %s" arg))
   t)
 
 
@@ -640,7 +640,7 @@ If SKIP is non-nil, allow that number of items after the 
head, i.e.
   (setq form (rx-trans-forms form 1))
   (unless (and (integerp (nth 1 form))
               (> (nth 1 form) 0))
-    (error "rx ‘=’ requires positive integer first arg"))
+    (error "rx `=' requires positive integer first arg"))
   (format "%s\\{%d\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
 
 
@@ -650,7 +650,7 @@ If SKIP is non-nil, allow that number of items after the 
head, i.e.
   (setq form (rx-trans-forms form 1))
   (unless (and (integerp (nth 1 form))
               (> (nth 1 form) 0))
-    (error "rx ‘>=’ requires positive integer first arg"))
+    (error "rx `>=' requires positive integer first arg"))
   (format "%s\\{%d,\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
 
 
@@ -671,14 +671,14 @@ FORM is either `(repeat N FORM1)' or `(repeat N M 
FORMS...)'."
   (cond ((= (length form) 3)
         (unless (and (integerp (nth 1 form))
                      (> (nth 1 form) 0))
-          (error "rx ‘repeat’ requires positive integer first arg"))
+          (error "rx `repeat' requires positive integer first arg"))
         (format "%s\\{%d\\}" (rx-form (nth 2 form) '*) (nth 1 form)))
        ((or (not (integerp (nth 2 form)))
             (< (nth 2 form) 0)
             (not (integerp (nth 1 form)))
             (< (nth 1 form) 0)
             (< (nth 2 form) (nth 1 form)))
-        (error "rx ‘repeat’ range error"))
+        (error "rx `repeat' range error"))
        (t
         (format "%s\\{%d,%d\\}" (rx-form (nth 3 form) '*)
                 (nth 1 form) (nth 2 form)))))
@@ -713,7 +713,7 @@ FORM is either `(repeat N FORM1)' or `(repeat N M 
FORMS...)'."
 (defun rx-check-backref (arg)
   "Check arg ARG for Rx `backref'."
   (or (and (integerp arg) (>= arg 1) (<= arg 9))
-      (error "rx ‘backref’ requires numeric 1<=arg<=9: %s" arg)))
+      (error "rx `backref' requires numeric 1<=arg<=9: %s" arg)))
 
 (defun rx-kleene (form)
   "Parse and produce code from FORM.
@@ -786,7 +786,7 @@ of all atomic regexps."
           (if (= 1 (length name))
               (setq syntax (aref name 0))))))
       (unless syntax
-       (error "Unknown rx syntax ‘%s’" sym)))
+       (error "Unknown rx syntax `%s'" sym)))
     (format "\\s%c" syntax)))
 
 
@@ -794,7 +794,7 @@ of all atomic regexps."
   "Check the argument FORM of a `(category FORM)'."
   (unless (or (integerp form)
              (cdr (assq form rx-categories)))
-    (error "Unknown category ‘%s’" form))
+    (error "Unknown category `%s'" form))
   t)
 
 
@@ -846,16 +846,16 @@ shy groups around the result and some more in other 
functions."
       (cond ((stringp info)
              info)
             ((null info)
-             (error "Unknown rx form ‘%s’" form))
+             (error "Unknown rx form `%s'" form))
             (t
              (funcall (nth 0 info) form)))))
    ((consp form)
     (let ((info (rx-info (car form) 'head)))
       (unless (consp info)
-        (error "Unknown rx form ‘%s’" (car form)))
+        (error "Unknown rx form `%s'" (car form)))
       (funcall (nth 0 info) form)))
    (t
-    (error "rx syntax error at ‘%s’" form))))
+    (error "rx syntax error at `%s'" form))))
 
 
 ;;;###autoload
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index a17b0a8..8dc9147 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -252,14 +252,6 @@ If SEQ is empty, return INITIAL-VALUE and FUNCTION is not 
called."
         (setq acc (funcall function acc elt)))
       acc)))
 
-(cl-defgeneric seq-some-p (pred seq)
-  "Return any element for which (PRED element) is non-nil in SEQ, nil 
otherwise."
-  (catch 'seq--break
-    (seq-doseq (elt seq)
-      (when (funcall pred elt)
-        (throw 'seq--break elt)))
-    nil))
-
 (cl-defgeneric seq-every-p (pred seq)
   "Return non-nil if (PRED element) is non-nil for all elements of the 
sequence SEQ."
   (catch 'seq--break
@@ -268,6 +260,16 @@ If SEQ is empty, return INITIAL-VALUE and FUNCTION is not 
called."
           (throw 'seq--break nil)))
     t))
 
+(cl-defgeneric seq-some (pred seq)
+  "Return non-nil if (PRED element) is non-nil for any element in SEQ, nil 
otherwise.
+If so, return the non-nil value returned by PRED."
+  (catch 'seq--break
+    (seq-doseq (elt seq)
+      (let ((result (funcall pred elt)))
+        (when result
+          (throw 'seq--break result))))
+    nil))
+
 (cl-defgeneric seq-count (pred seq)
   "Return the number of elements for which (PRED element) is non-nil in SEQ."
   (let ((count 0))
@@ -276,19 +278,19 @@ If SEQ is empty, return INITIAL-VALUE and FUNCTION is not 
called."
         (setq count (+ 1 count))))
     count))
 
-(cl-defgeneric seq-contains-p (seq elt &optional testfn)
+(cl-defgeneric seq-contains (seq elt &optional testfn)
   "Return the first element in SEQ that equals to ELT.
 Equality is defined by TESTFN if non-nil or by `equal' if nil."
-  (seq-some-p (lambda (e)
-                (funcall (or testfn #'equal) elt e))
-              seq))
+  (seq-some (lambda (e)
+              (funcall (or testfn #'equal) elt e))
+            seq))
 
 (cl-defgeneric seq-uniq (seq &optional testfn)
   "Return a list of the elements of SEQ with duplicates removed.
 TESTFN is used to compare elements, or `equal' if TESTFN is nil."
   (let ((result '()))
     (seq-doseq (elt seq)
-      (unless (seq-contains-p result elt testfn)
+      (unless (seq-contains result elt testfn)
         (setq result (cons elt result))))
     (nreverse result)))
 
@@ -313,7 +315,7 @@ negative integer or 0, nil is returned."
   "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)
+                (if (seq-contains seq2 elt testfn)
                     (cons elt acc)
                   acc))
               (seq-reverse seq1)
@@ -323,7 +325,7 @@ Equality is defined by TESTFN if non-nil or by `equal' if 
nil."
   "Return a list of the 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))
+                (if (not (seq-contains seq2 elt testfn))
                     (cons elt acc)
                   acc))
               (seq-reverse seq1)
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 9678cfa..0c24f79 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -2213,13 +2213,13 @@ One way to generate local rules is the command 
`smie-config-guess'."
     (let* ((existing (assq major-mode smie-config))
            (config
             (cond ((null existing)
-                   (message "Local rules saved in ‘smie-config’")
+                   (message "Local rules saved in `smie-config'")
                    smie-config--buffer-local)
                   ((y-or-n-p "Replace the existing mode's config? ")
-                   (message "Mode rules replaced in ‘smie-config’")
+                   (message "Mode rules replaced in `smie-config'")
                    smie-config--buffer-local)
                   ((y-or-n-p "Merge with existing mode's config? ")
-                   (message "Mode rules adjusted in ‘smie-config’")
+                   (message "Mode rules adjusted in `smie-config'")
                    (append smie-config--buffer-local (cdr existing)))
                   (t (error "Abort")))))
       (if existing
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 9637e42..e6d451a 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -90,7 +90,7 @@ threading."
   (when (> (length binding) 2)
     (signal
      'error
-     (cons "‘let’ bindings can have only one value-form" binding)))
+     (cons "`let' bindings can have only one value-form" binding)))
   binding)
 
 (defsubst internal--build-binding-value-form (binding prev-var)
diff --git a/lisp/emacs-lisp/tabulated-list.el 
b/lisp/emacs-lisp/tabulated-list.el
index 404dbd1..cd61eb9 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -129,7 +129,7 @@ no entry at POS.  POS, if omitted or nil, defaults to 
point."
 TAG should be a string, with length <= `tabulated-list-padding'.
 If ADVANCE is non-nil, move forward by one line afterwards."
   (unless (stringp tag)
-    (error "Invalid argument to ‘tabulated-list-put-tag’"))
+    (error "Invalid argument to `tabulated-list-put-tag'"))
   (unless (> tabulated-list-padding 0)
     (error "Unable to tag the current line"))
   (save-excursion
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index 3e6039e..110c63f 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -475,7 +475,7 @@ same value during coverage testing."
     (aset testcover-vector idx (cons '1value val)))
    ((not (and (eq (car-safe (aref testcover-vector idx)) '1value)
              (equal (cdr (aref testcover-vector idx)) val)))
-    (error "Value of form marked with ‘1value’ does vary: %s" val)))
+    (error "Value of form marked with `1value' does vary: %s" val)))
   val)
 
 
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index 0a0296f..dca459f 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -324,7 +324,7 @@ This function is called, by name, directly by the C code."
               (apply (timer--function timer) (timer--args timer)))
           (error (message "Error running timer%s: %S"
                           (if (symbolp (timer--function timer))
-                              (format-message " ‘%s’" (timer--function timer))
+                              (format-message " `%s'" (timer--function timer))
                             "")
                           err)))
         (when (and retrigger
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index 8b3f6b4..93fcec8 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -3449,7 +3449,7 @@ controlled by the sign of prefix numeric value."
   (setq viper-parse-sexp-ignore-comments
        (not viper-parse-sexp-ignore-comments))
   (princ (format-message
-         "From now on, ‘%%’ will %signore parentheses inside comment fields"
+         "From now on, `%%' will %signore parentheses inside comment fields"
          (if viper-parse-sexp-ignore-comments "" "NOT "))))
 
 
@@ -3641,7 +3641,7 @@ the Emacs binding of `/'."
     (cond ((or (eq arg 1)
               (and (null arg)
                    (y-or-n-p (format-message
-                               "Search style: ‘%s’.  Want ‘%s’? "
+                               "Search style: `%s'.  Want `%s'? "
                                (if viper-case-fold-search
                                    "case-insensitive" "case-sensitive")
                                (if viper-case-fold-search
@@ -3654,7 +3654,7 @@ the Emacs binding of `/'."
          ((or (eq arg 2)
               (and (null arg)
                    (y-or-n-p (format-message
-                               "Search style: ‘%s’.  Want ‘%s’? "
+                               "Search style: `%s'.  Want `%s'? "
                                (if viper-re-search
                                    "regexp-search" "vanilla-search")
                                (if viper-re-search
@@ -3990,7 +3990,7 @@ Null string will repeat previous search."
     (if (or (not (buffer-modified-p buffer))
            (y-or-n-p
             (format-message
-             "Buffer ‘%s’ is modified, are you sure you want to kill it? "
+             "Buffer `%s' is modified, are you sure you want to kill it? "
              buffer-name)))
        (kill-buffer buffer)
       (error "Buffer not killed"))))
@@ -4640,7 +4640,7 @@ One can use \\=`\\=` and \\='\\=' to temporarily jump 1 
step back."
                                          reg (substring text (- pos s)))))
                     (princ
                      (format-message
-                      "Textmarker ‘%c’ is in buffer ‘%s’ at line %d.\n"
+                      "Textmarker `%c' is in buffer `%s' at line %d.\n"
                                     reg (buffer-name buf) line-no))
                     (princ (format "Here is some text around %c:\n\n %s"
                                     reg text)))
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index e28c67a..092de55 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -583,7 +583,7 @@ the Insert state."
 
 (defcustom viper-keep-point-on-repeat t
   "If t, don't move point when repeating previous command.
-This is useful for doing repeated changes with the ‘.’ key.
+This is useful for doing repeated changes with the `.' key.
 The user can change this to nil, if she likes when the cursor moves
 to a new place after repeating previous Vi command."
   :type 'boolean
diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el
index 250c292..272556d 100644
--- a/lisp/emulation/viper-keym.el
+++ b/lisp/emulation/viper-keym.el
@@ -502,7 +502,7 @@ ALIST is of the form ((key . func) (key . func) ...)
 Normally, this would be called from a hook to a major mode or
 on a per buffer basis.
 Usage:
-      (viper-add-local-keys state '((key-str . func) (key-str . func)...))   "
+      (viper-add-local-keys state \\='((key-str . func) (key-str . func)...))  
 "
 
   (let (map)
     (cond ((eq state 'vi-state)
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el
index 4b33b42..4fa0779 100644
--- a/lisp/emulation/viper-macs.el
+++ b/lisp/emulation/viper-macs.el
@@ -370,11 +370,11 @@ If SCOPE is nil, the user is asked to specify the scope."
                (cond
                 ((y-or-n-p
                   (format-message
-                   "Map this macro for buffer ‘%s’ only? "
+                   "Map this macro for buffer `%s' only? "
                    (buffer-name)))
                  (setq msg
                        (format-message
-                        "%S is mapped to %s for %s in ‘%s’"
+                        "%S is mapped to %s for %s in `%s'"
                         (viper-display-macro macro-name)
                         (viper-abbreviate-string
                          (format
@@ -386,11 +386,11 @@ If SCOPE is nil, the user is asked to specify the scope."
                  (buffer-name))
                 ((y-or-n-p
                   (format-message
-                   "Map this macro for the major mode ‘%S’ only? "
+                   "Map this macro for the major mode `%S' only? "
                    major-mode))
                  (setq msg
                        (format-message
-                        "%S is mapped to %s for %s in ‘%S’"
+                        "%S is mapped to %s for %s in `%S'"
                         (viper-display-macro macro-name)
                         (viper-abbreviate-string
                          (format
diff --git a/lisp/env.el b/lisp/env.el
index f50ed12..3966ab1 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -175,7 +175,7 @@ a side-effect."
       (let ((codings (find-coding-systems-string (concat variable value))))
        (unless (or (eq 'undecided (car codings))
                    (memq (coding-system-base locale-coding-system) codings))
-         (error "Can't encode ‘%s=%s’ with ‘locale-coding-system’"
+         (error "Can't encode `%s=%s' with `locale-coding-system'"
                 variable (or value "")))))
   (and value
        substitute-env-vars
@@ -185,7 +185,7 @@ a side-effect."
   (if (and value (multibyte-string-p value))
       (setq value (encode-coding-string value locale-coding-system)))
   (if (string-match "=" variable)
-      (error "Environment variable name ‘%s’ contains ‘=’" variable))
+      (error "Environment variable name `%s' contains `='" variable))
   (if (string-equal "TZ" variable)
       (set-time-zone-rule value))
   (setq process-environment (setenv-internal process-environment
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index eec6925..958c5ef 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1100,12 +1100,12 @@ Would expand to:
   add things to `erc-server-311-functions' instead.\"
         (do-stuff-with-whois proc parsed))
 
-    (puthash \"311\" 'erc-server-311-functions erc-server-responses)
-    (puthash \"WHOIS\" 'erc-server-WHOIS-functions erc-server-responses)
-    (puthash \"WI\" 'erc-server-WI-functions erc-server-responses)
+    (puthash \"311\" \\='erc-server-311-functions erc-server-responses)
+    (puthash \"WHOIS\" \\='erc-server-WHOIS-functions erc-server-responses)
+    (puthash \"WI\" \\='erc-server-WI-functions erc-server-responses)
 
-    (defalias 'erc-server-WHOIS 'erc-server-311)
-    (defvar erc-server-WHOIS-functions 'erc-server-311
+    (defalias \\='erc-server-WHOIS \\='erc-server-311)
+    (defvar erc-server-WHOIS-functions \\='erc-server-311
       \"Some non-generic variable documentation.
 
   Hook called upon receiving a WHOIS server response.
@@ -1116,8 +1116,8 @@ Would expand to:
 
   See also `erc-server-311'.\")
 
-    (defalias 'erc-server-WI 'erc-server-311)
-    (defvar erc-server-WI-functions 'erc-server-311
+    (defalias \\='erc-server-WI \\='erc-server-311)
+    (defvar erc-server-WI-functions \\='erc-server-311
       \"Some non-generic variable documentation.
 
   Hook called upon receiving a WI server response.
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 6139e93..0e4c709 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -512,7 +512,7 @@ Examples:
 (defun erc-nick-popup (nick)
   (let* ((completion-ignore-case t)
          (action (completing-read (format-message
-                                   "What action to take on ‘%s’? " nick)
+                                   "What action to take on `%s'? " nick)
                                   erc-nick-popup-alist))
          (code (cdr (assoc action erc-nick-popup-alist))))
     (when code
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index bb6e311..0a9932d 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -166,7 +166,7 @@ All values of the list must be uppercase strings.")
   "Return the first matching entry in `erc-dcc-list' which satisfies the
 constraints given as a plist in ARGS. Returns nil on no match.
 
-The property :nick is treated specially, if it contains a ‘!’ character,
+The property :nick is treated specially, if it contains a `!' character,
 it is treated as a address@hidden string, and compared with the :nick property
 value of the individual elements using string-equal. Otherwise it is
 compared with `erc-nick-equal-p' which is IRC case-insensitive."
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 726e9ed..62be63e 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -230,7 +230,7 @@ prompt you for it.")
 (defcustom erc-hide-prompt nil
   "If non-nil, do not display the prompt for commands.
 
-\(A command is any input starting with a ‘/’).
+\(A command is any input starting with a `/').
 
 See also the variables `erc-prompt' and `erc-command-indicator'."
   :group 'erc-display
@@ -667,7 +667,7 @@ See also the variable `erc-prompt'."
   "Indicator used by ERC for showing commands.
 
 If non-nil, this will be used in the ERC buffer to indicate
-commands (i.e., input starting with a ‘/’).
+commands (i.e., input starting with a `/').
 
 If nil, the prompt will be constructed from the variable `erc-prompt'."
   :group 'erc-display
@@ -2789,7 +2789,7 @@ this function from interpreting the line as a command."
 (defun erc-cmd-SAY (line)
   "Send LINE to the current query or channel as a message, not a command.
 
-Use this when you want to send a message with a leading ‘/’.  Note
+Use this when you want to send a message with a leading `/'.  Note
 that since multi-line messages are never a command, you don't
 need this when pasting multiple lines of text."
   (if (string-match "^\\s-*$" line)
@@ -3119,9 +3119,9 @@ a script after exceeding the flood threshold."
         (erc-display-message nil 'error (current-buffer)
                              'cannot-read-file ?f file))
        (t
-        (message "Loading ‘%s’..." file)
+        (message "Loading `%s'..." file)
         (erc-load-script file)
-        (message "Loading ‘%s’...done" file))))
+        (message "Loading `%s'...done" file))))
     t)
    (t nil)))
 
@@ -3259,7 +3259,7 @@ The lines are shown in a buffer named `*Occur*'.
 It serves as a menu to find any of the occurrences in this buffer.
 \\[describe-mode] in that buffer will explain how.
 
-If LINE contains upper case characters (excluding those preceded by ‘\\’),
+If LINE contains upper case characters (excluding those preceded by `\\'),
 the matching is case-sensitive."
   (occur line)
   t)
@@ -4466,7 +4466,7 @@ See also: `erc-echo-notice-in-user-buffers',
   "Handle the logging in process of connection."
   (unless erc-logged-in
     (setq erc-logged-in t)
-    (message "Logging in as ‘%s’... done" (erc-current-nick))
+    (message "Logging in as `%s'... done" (erc-current-nick))
     ;; execute a startup script
     (let ((f (erc-select-startup-file)))
       (when f
@@ -5203,7 +5203,7 @@ So far the following TYPE/L pairs are supported:
 
        Event                    TYPE                   L
 
-    nickname change            'nick                (NEW-NICK)"
+    nickname change            `nick'                (NEW-NICK)"
   (erc-log (format "user-change: type: %S  nlh: %S  l: %S" type nlh l))
   (cond
    ;; nickname change
@@ -6512,7 +6512,7 @@ All windows are opened in the current frame."
     . "\n\nConnection failed!  Not re-establishing connection.\n")
    (finished . "\n\n*** ERC finished ***\n")
    (terminated . "\n\n*** ERC terminated: %e\n")
-   (login . "Logging in as ‘%n’...")
+   (login . "Logging in as `%n'...")
    (nick-in-use . "%n is in use. Choose new nickname: ")
    (nick-too-long
     . "WARNING: Nick length (%i) exceeds max NICKLEN(%l) defined by server")
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el
index 1bd7fbc..3960cd7 100644
--- a/lisp/eshell/em-dirs.el
+++ b/lisp/eshell/em-dirs.el
@@ -301,7 +301,7 @@ Thus, this does not include the current directory.")
                 eshell-user-names)))))))
 
 (defun eshell/pwd (&rest args)
-  "Change output from ‘pwd’ to be cleaner."
+  "Change output from `pwd' to be cleaner."
   (let* ((path default-directory)
         (len (length path)))
     (if (and (> len 1)
@@ -365,7 +365,7 @@ in the minibuffer:
       (let ((curdir (eshell/pwd)))
        (if (string-match path curdir)
            (setq path (replace-match subpath nil nil curdir))
-         (error "Path substring ‘%s’ not found" path))))
+         (error "Path substring `%s' not found" path))))
      ((and path (string-match "^-\\([0-9]*\\)$" path))
       (let ((index (match-string 1 path)))
        (setq path
diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el
index 976882c..f2e67cc 100644
--- a/lisp/eshell/em-glob.el
+++ b/lisp/eshell/em-glob.el
@@ -193,7 +193,7 @@ The basic syntax is:
   *      .*      matches any group of characters (or none)
   #      *       matches zero or more occurrences of preceding
   ##     +       matches one or more occurrences of preceding
-  (x)    \(x\)   makes ‘x’ a regular expression group
+  (x)    \(x\)   makes `x' a regular expression group
   |      \|      boolean OR within an expression group
   [a-b]  [a-b]   matches a character or range
   [^a]   [^a]    excludes a character or range
@@ -220,7 +220,7 @@ resulting regular expression."
                  matched-in-pattern (1+ op-begin))
          (let ((xlat (assq op-char eshell-glob-translate-alist)))
            (if (not xlat)
-               (error "Unrecognized globbing character ‘%c’" op-char)
+               (error "Unrecognized globbing character `%c'" op-char)
              (if (stringp (cdr xlat))
                  (setq regexp (concat regexp (cdr xlat))
                        matched-in-pattern (1+ op-begin))
@@ -289,7 +289,7 @@ the form:
                   glob (car globs)
                   len (length glob)))))
     (if (and recurse-p (not glob))
-       (error "‘**’ cannot end a globbing pattern"))
+       (error "`**' cannot end a globbing pattern"))
     (let ((index 1))
       (setq incl glob)
       (while (and (eq incl glob)
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index 539080f..102795f 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -172,18 +172,18 @@ PERMISSION BITS (for owner/group/world):
 
 OWNERSHIP:
   U               owned by effective uid
-  u(UID|'user')   owned by UID/user
-  g(GID|'group')  owned by GID/group
+  u(UID|\\='user\\=')   owned by UID/user
+  g(GID|\\='group\\=')  owned by GID/group
 
 FILE ATTRIBUTES:
   l[+-]N                 +/-/= N links
-  a[Mwhms][+-](N|'FILE') access time +/-/= N months/weeks/hours/mins/secs
+  a[Mwhms][+-](N|\\='FILE\\=') access time +/-/= N months/weeks/hours/mins/secs
                         (days if unspecified) if FILE specified,
-                        use as comparison basis; so a+'file.c'
+                        use as comparison basis; so a+\\='file.c\\='
                         shows files accessed before file.c was
                         last accessed
-  m[Mwhms][+-](N|'FILE') modification time...
-  c[Mwhms][+-](N|'FILE') change time...
+  m[Mwhms][+-](N|\\='FILE\\=') modification time...
+  c[Mwhms][+-](N|\\='FILE\\=') change time...
   L[kmp][+-]N            file size +/-/= N Kb/Mb/blocks
 
 EXAMPLES:
@@ -193,7 +193,7 @@ EXAMPLES:
   ***/*~f*(-/)  recursively (though not traversing symlinks),
                find all directories (or symlinks referring to
                directories) whose names do not begin with f.
-  e*(*Lk+50)    executables 50k or larger beginning with ‘e’")
+  e*(*Lk+50)    executables 50k or larger beginning with `e'")
 
 (defvar eshell-modifier-help-string
   "Eshell modifier quick reference:
@@ -318,7 +318,7 @@ resultant list of strings."
                    (if (and func (functionp func))
                        (setq preds (eshell-add-pred-func func preds
                                                          negate follow))
-                     (error "Invalid function predicate ‘%s’"
+                     (error "Invalid function predicate `%s'"
                             (eshell-stringify func))))
                (error "Invalid function predicate")))
             ((eq char ?^)
@@ -336,20 +336,20 @@ resultant list of strings."
                              (cons `(lambda (lst)
                                       (mapcar (function ,func) lst))
                                    mods))
-                     (error "Invalid function modifier ‘%s’"
+                     (error "Invalid function modifier `%s'"
                             (eshell-stringify func))))
                (error "Invalid function modifier")))
             ((eq char ?:)
              (forward-char)
              (let ((mod (assq (char-after) eshell-modifier-alist)))
                (if (not mod)
-                   (error "Unknown modifier character ‘%c’" (char-after))
+                   (error "Unknown modifier character `%c'" (char-after))
                  (forward-char)
                  (setq mods (cons (eval (cdr mod)) mods)))))
             (t
              (let ((pred (assq char eshell-predicate-alist)))
                (if (not pred)
-                   (error "Unknown predicate character ‘%c’" char)
+                   (error "Unknown predicate character `%c'" char)
                  (forward-char)
                  (setq preds
                        (eshell-add-pred-func (eval (cdr pred)) preds
diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el
index 8e65e44..1a16e5e 100644
--- a/lisp/eshell/em-script.el
+++ b/lisp/eshell/em-script.el
@@ -45,7 +45,7 @@ commands, as a script file."
 (defcustom eshell-login-script (expand-file-name "login" eshell-directory-name)
   "If non-nil, a file to invoke when starting up Eshell interactively.
 This file should be a file containing Eshell commands, where comment
-lines begin with ‘#’."
+lines begin with `#'."
   :type 'file
   :group 'eshell-script)
 
@@ -89,7 +89,7 @@ This includes when running `eshell-command'."
 
 (defun eshell-source-file (file &optional args subcommand-p)
   "Execute a series of Eshell commands in FILE, passing ARGS.
-Comments begin with ‘#’."
+Comments begin with `#'."
   (interactive "f")
   (let ((orig (point))
        (here (point-max))
diff --git a/lisp/eshell/esh-opt.el b/lisp/eshell/esh-opt.el
index 4d28208..96d485b 100644
--- a/lisp/eshell/esh-opt.el
+++ b/lisp/eshell/esh-opt.el
@@ -180,7 +180,7 @@ This code doesn't really need to be macro expanded 
everywhere."
                (concat usage
                        (format-message "
 This command is implemented in Lisp.  If an unrecognized option is
-passed to this command, the external version ‘%s’
+passed to this command, the external version `%s'
 will be called instead." extcmd)))))
     (throw 'eshell-usage usage)))
 
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 170779f..2565842 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -88,7 +88,7 @@ specification of filenames (for example, in calling 
`find-file', or
 some other Lisp function that deals with files, not numbers), add the
 following in your init file:
 
-  (put 'find-file 'eshell-no-numeric-conversions t)
+  (put \\='find-file \\='eshell-no-numeric-conversions t)
 
 Any function with the property `eshell-no-numeric-conversions' set to
 a non-nil value, will be passed strings, not numbers, even when an
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index f5110c3..0d94186 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -116,7 +116,7 @@
 (require 'ring)
 
 (defgroup eshell-var nil
-  "Variable interpolation is introduced whenever the ‘$’ character
+  "Variable interpolation is introduced whenever the `$' character
 appears unquoted in any argument (except when that argument is
 surrounded by single quotes).  It may be used to interpolate a
 variable value, a subcommand, or even the result of a Lisp form."
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index a90794f..3d58943 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -797,10 +797,10 @@ This is called whenever you create a new face, and at 
other times."
            symbol (intern name)))
     (setq menu 'facemenu-face-menu)
     (setq docstring
-         (purecopy (format-message "Select face ‘%s’ for subsequent insertion.
+         (purecopy (format "Select face `%s' for subsequent insertion.
 If the mark is active and there is no prefix argument,
-apply face ‘%s’ to the region instead.
-This command was defined by ‘facemenu-add-new-face’."
+apply face `%s' to the region instead.
+This command was defined by `facemenu-add-new-face'."
                  name name)))
     (cond ((facemenu-iterate ; check if equivalent face is already in the menu
            (lambda (m) (and (listp m)
@@ -846,12 +846,12 @@ Return the event type (a symbol) of the added menu entry.
 This is called whenever you use a new color."
   (let (symbol)
     (unless (color-defined-p color)
-      (error "Color ‘%s’ undefined" color))
+      (error "Color `%s' undefined" color))
     (cond ((eq menu 'facemenu-foreground-menu)
           (setq symbol (intern (concat "fg:" color))))
          ((eq menu 'facemenu-background-menu)
           (setq symbol (intern (concat "bg:" color))))
-         (t (error "MENU should be ‘facemenu-foreground-menu’ or 
‘facemenu-background-menu’")))
+         (t (error "MENU should be `facemenu-foreground-menu' or 
`facemenu-background-menu'")))
     (unless (facemenu-iterate ; Check if color is already in the menu.
             (lambda (m) (and (listp m)
                              (eq (car m) symbol)))
diff --git a/lisp/faces.el b/lisp/faces.el
index 9e879c1..5485d80 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -574,7 +574,7 @@ If FACE is a face-alias, get the documentation for the 
target face."
   (let ((alias (get face 'face-alias)))
     (if alias
         (let ((doc (get alias 'face-documentation)))
-         (format-message "%s is an alias for the face ‘%s’.%s" face alias
+         (format "%s is an alias for the face `%s'.%s" face alias
                   (if doc (format "\n%s" doc)
                     "")))
       (get face 'face-documentation))))
@@ -1005,7 +1005,7 @@ a single face name."
     (setq default (car (split-string default crm-separator t))))
 
   (let ((prompt (if default
-                    (format-message "%s (default ‘%s’): " prompt default)
+                    (format-message "%s (default `%s'): " prompt default)
                   (format "%s: " prompt)))
         aliasfaces nonaliasfaces faces)
     ;; Build up the completion tables.
@@ -1137,8 +1137,8 @@ Value is the new attribute value."
   (let* ((completion-ignore-case t)
         (value (completing-read
                  (format-message (if default
-                                     "%s for face ‘%s’ (default %s): "
-                                   "%s for face ‘%s’: ")
+                                     "%s for face `%s' (default %s): "
+                                   "%s for face `%s': ")
                                  name face default)
                 completion-alist nil nil nil nil default)))
     (if (equal value "") default value)))
@@ -1225,7 +1225,7 @@ of a global face.  Value is the new attribute value."
 If optional argument FRAME is nil or omitted, use the selected frame."
   (let ((completion-ignore-case t))
     (completing-read (format-message
-                      "Set font attributes of face ‘%s’ from font: " face)
+                      "Set font attributes of face `%s' from font: " face)
                     (append (fontset-list) (x-list-fonts "*" nil frame)))))
 
 
@@ -1437,11 +1437,11 @@ If FRAME is omitted or nil, use the selected frame."
                    (setq face alias)
                    (insert
                     (format-message
-                      "\n  %s is an alias for the face ‘%s’.\n%s"
+                      "\n  %s is an alias for the face `%s'.\n%s"
                       f alias
                       (if (setq obsolete (get f 'obsolete-face))
                           (format-message
-                           "  This face is obsolete%s; use ‘%s’ instead.\n"
+                           "  This face is obsolete%s; use `%s' instead.\n"
                            (if (stringp obsolete)
                                (format " since %s" obsolete)
                              "")
@@ -1459,13 +1459,13 @@ If FRAME is omitted or nil, use the selected frame."
                    (help-xref-button 1 'help-customize-face f)))
                (setq file-name (find-lisp-object-file-name f 'defface))
                (when file-name
-                 (princ (substitute-command-keys "Defined in ‘"))
+                 (princ (substitute-command-keys "Defined in `"))
                  (princ (file-name-nondirectory file-name))
-                 (princ (substitute-command-keys "’"))
+                 (princ (substitute-command-keys "'"))
                  ;; Make a hyperlink to the library.
                  (save-excursion
                    (re-search-backward
-                     (substitute-command-keys "‘\\([^‘’]+\\)’") nil t)
+                     (substitute-command-keys "`\\([^`']+\\)'") nil t)
                    (help-xref-button 1 'help-face-def f file-name))
                  (princ ".")
                  (terpri)
@@ -1552,7 +1552,7 @@ If FRAME is nil, the current FRAME is used."
                               options))
                        ((eq req 'supports)
                         (display-supports-face-attributes-p options frame))
-                       (t (error "Unknown req ‘%S’ with options ‘%S’"
+                       (t (error "Unknown req `%S' with options `%S'"
                                  req options)))))
     match))
 
@@ -1925,7 +1925,7 @@ resulting color name in the echo area."
                                (logand 65535 (nth 0 components))
                                (logand 65535 (nth 1 components))
                                (logand 65535 (nth 2 components))))))))
-    (when msg (message "Color: ‘%s’" color))
+    (when msg (message "Color: `%s'" color))
     color))
 
 (defun face-at-point (&optional thing multiple)
@@ -2778,13 +2778,13 @@ also the same size as FACE on FRAME, or fail."
                (if (string-match-p "\\*" pattern)
                    (if (null (face-font face))
                        (error "No matching fonts are the same height as the 
frame default font")
-                     (error "No matching fonts are the same height as face 
‘%s’" face))
+                     (error "No matching fonts are the same height as face 
`%s'" face))
                  (if (null (face-font face))
-                     (error "Height of font ‘%s’ doesn't match the frame 
default font"
+                     (error "Height of font `%s' doesn't match the frame 
default font"
                             pattern)
-                   (error "Height of font ‘%s’ doesn't match face ‘%s’"
+                   (error "Height of font `%s' doesn't match face `%s'"
                           pattern face)))
-             (error "No fonts match ‘%s’" pattern)))
+             (error "No fonts match `%s'" pattern)))
        (car fonts))
     (cdr (assq 'font (frame-parameters (selected-frame))))))
 
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 975f726..8d3f8bf 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -412,9 +412,9 @@ Optional SERVICE specifies the port used (default 
\"discard\").
 Optional QUIET flag suppresses the \"Pinging...\" message.
 Optional STRATEGY overrides the three variables above.
 Returned values:
- t      means that HOST answered.
-'accept means the relevant variable told us to accept.
-\"mesg\"  means HOST exists, but does not respond for some reason."
+ t       means that HOST answered.
+`accept' means the relevant variable told us to accept.
+\"mesg\"   means HOST exists, but does not respond for some reason."
   ;; Try some (Emory local):
   ;; (ffap-machine-p "ftp" nil nil 'ping)
   ;; (ffap-machine-p "nonesuch" nil nil 'ping)
diff --git a/lisp/filenotify.el b/lisp/filenotify.el
index c94f631..5822cf0 100644
--- a/lisp/filenotify.el
+++ b/lisp/filenotify.el
@@ -54,7 +54,7 @@ different files from the same directory are watched.")
   "Handle file system monitoring event.
 If EVENT is a filewatch event, call its callback.  It has the format
 
-  \(file-notify (DESCRIPTOR ACTIONS FILE COOKIE) CALLBACK)
+  \(file-notify (DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE]) CALLBACK)
 
 Otherwise, signal a `file-notify-error'."
   (interactive "e")
@@ -64,10 +64,10 @@ Otherwise, signal a `file-notify-error'."
     (signal 'file-notify-error
            (cons "Not a valid file-notify event" event))))
 
-(defvar file-notify--pending-events nil
-  "List of pending file notification events for a future `renamed' action.
-The entries are a list (DESCRIPTOR ACTION FILE COOKIE).  ACTION
-is either `moved-from' or `renamed-from'.")
+;; Needed for `inotify' and `w32notify'.  In the latter case, COOKIE is nil.
+(defvar file-notify--pending-event nil
+  "A pending file notification events for a future `renamed' action.
+It is a form ((DESCRIPTOR ACTION FILE [FILE1-OR-COOKIE]) CALLBACK).")
 
 (defun file-notify--event-file-name (event)
   "Return file name of file notification event, or nil."
@@ -92,26 +92,26 @@ This is available in case a file has been moved."
 ;; `inotify' returns the same descriptor when the file (directory)
 ;; uses the same inode.  We want to distinguish, and apply a virtual
 ;; descriptor which make the difference.
-(defun file-notify--descriptor (descriptor file)
+(defun file-notify--descriptor (descriptor)
   "Return the descriptor to be used in `file-notify-*-watch'.
 For `gfilenotify' and `w32notify' it is the same descriptor as
 used in the low-level file notification package."
   (if (and (natnump descriptor) (eq file-notify--library 'inotify))
-      (cons descriptor file)
+      (cons descriptor
+            (car (cadr (gethash descriptor file-notify-descriptors))))
     descriptor))
 
 ;; The callback function used to map between specific flags of the
 ;; respective file notifications, and the ones we return.
 (defun file-notify-callback (event)
   "Handle an EVENT returned from file notification.
-EVENT is the cdr of the event in `file-notify-handle-event'
-\(DESCRIPTOR ACTIONS FILE COOKIE)."
+EVENT is the cadr of the event in `file-notify-handle-event'
+\(DESCRIPTOR ACTIONS FILE [FILE1-OR-COOKIE])."
   (let* ((desc (car event))
         (registered (gethash desc file-notify-descriptors))
-        (pending-event (assoc desc file-notify--pending-events))
         (actions (nth 1 event))
         (file (file-notify--event-file-name event))
-        file1 callback)
+        file1 callback pending-event)
 
     ;; Make actions a list.
     (unless (consp actions) (setq actions (cons actions nil)))
@@ -129,22 +129,23 @@ EVENT is the cdr of the event in 
`file-notify-handle-event'
       (dolist (action actions)
 
        ;; Send pending event, if it doesn't match.
-       (when (and pending-event
+       (when (and file-notify--pending-event
                   ;; The cookie doesn't match.
-                  (not (eq (file-notify--event-cookie pending-event)
+                  (not (eq (file-notify--event-cookie
+                             (car file-notify--pending-event))
                            (file-notify--event-cookie event)))
                   (or
                    ;; inotify.
-                   (and (eq (nth 1 pending-event) 'moved-from)
+                   (and (eq (nth 1 (car file-notify--pending-event))
+                             'moved-from)
                         (not (eq action 'moved-to)))
                    ;; w32notify.
-                   (and (eq (nth 1 pending-event) 'renamed-from)
+                   (and (eq (nth 1 (car file-notify--pending-event))
+                             'renamed-from)
                         (not (eq action 'renamed-to)))))
-         (funcall callback
-                  (list desc 'deleted
-                        (file-notify--event-file-name pending-event)))
-         (setq file-notify--pending-events
-               (delete pending-event file-notify--pending-events)))
+          (setq pending-event file-notify--pending-event
+                file-notify--pending-event nil)
+          (setcar (cdar pending-event) 'deleted))
 
        ;; Map action.  We ignore all events which cannot be mapped.
        (setq action
@@ -156,46 +157,42 @@ EVENT is the cdr of the event in 
`file-notify-handle-event'
                (setq file1 (file-notify--event-file1-name event))
                'renamed)
 
-              ;; inotify.
+              ;; inotify, w32notify.
               ((eq action 'attrib) 'attribute-changed)
-              ((eq action 'create) 'created)
-              ((eq action 'modify) 'changed)
-              ((memq action '(delete 'delete-self move-self)) 'deleted)
+              ((memq action '(create added)) 'created)
+              ((memq action '(modify modified)) 'changed)
+              ((memq action '(delete 'delete-self move-self removed)) 'deleted)
               ;; Make the event pending.
-              ((eq action 'moved-from)
-               (add-to-list 'file-notify--pending-events
-                            (list desc action file
-                                  (file-notify--event-cookie event)))
+              ((memq action '(moved-from renamed-from))
+               (setq file-notify--pending-event
+                      `((,desc ,action ,file ,(file-notify--event-cookie 
event))
+                        ,callback))
                nil)
               ;; Look for pending event.
-              ((eq action 'moved-to)
-               (if (null pending-event)
+              ((memq action '(moved-to renamed-to))
+               (if (null file-notify--pending-event)
                    'created
                  (setq file1 file
-                       file (file-notify--event-file-name pending-event)
-                       file-notify--pending-events
-                       (delete pending-event file-notify--pending-events))
-                 'renamed))
-
-              ;; w32notify.
-              ((eq action 'added) 'created)
-              ((eq action 'modified) 'changed)
-              ((eq action 'removed) 'deleted)
-              ;; Make the event pending.
-              ((eq action 'renamed-from)
-               (add-to-list 'file-notify--pending-events
-                            (list desc action file
-                                  (file-notify--event-cookie event)))
-               nil)
-              ;; Look for pending event.
-              ((eq action 'renamed-to)
-               (if (null pending-event)
-                   'created
-                 (setq file1 file
-                       file (file-notify--event-file-name pending-event)
-                       file-notify--pending-events
-                       (delete pending-event file-notify--pending-events))
-                 'renamed))))
+                       file (file-notify--event-file-name
+                              (car file-notify--pending-event)))
+                  ;; If the source is handled by another watch, we
+                  ;; must fire the rename event there as well.
+                  (when (not (eq (file-notify--descriptor desc)
+                                 (file-notify--descriptor
+                                  (caar file-notify--pending-event))))
+                    (setq pending-event
+                          `((,(caar file-notify--pending-event)
+                             renamed ,file ,file1)
+                            ,(cadr file-notify--pending-event))))
+                  (setq file-notify--pending-event nil)
+                  'renamed))))
+
+        ;; Apply pending callback.
+        (when pending-event
+          (setcar
+           (car pending-event) (file-notify--descriptor (caar pending-event)))
+          (funcall (cadr pending-event) (car pending-event))
+          (setq pending-event nil))
 
        ;; Apply callback.
        (when (and action
@@ -213,12 +210,10 @@ EVENT is the cdr of the event in 
`file-notify-handle-event'
          (if file1
              (funcall
               callback
-              `(,(file-notify--descriptor desc (nth 0 entry))
-                ,action ,file ,file1))
+              `(,(file-notify--descriptor desc) ,action ,file ,file1))
            (funcall
             callback
-            `(,(file-notify--descriptor desc (nth 0 entry))
-              ,action ,file))))))))
+            `(,(file-notify--descriptor desc) ,action ,file))))))))
 
 ;; `gfilenotify' and `w32notify' return a unique descriptor for every
 ;; `file-notify-add-watch', while `inotify' returns a unique
@@ -325,8 +320,7 @@ FILE is the name of the file whose event is being reported."
      file-notify-descriptors)
 
     ;; Return descriptor.
-    (file-notify--descriptor
-     desc (unless (file-directory-p file) (file-name-nondirectory file)))))
+    (file-notify--descriptor desc)))
 
 (defun file-notify-rm-watch (descriptor)
   "Remove an existing watch specified by its DESCRIPTOR.
diff --git a/lisp/files-x.el b/lisp/files-x.el
index 524ad49..a130ffc 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -189,7 +189,7 @@ from the Local Variables list ignoring the input argument 
VALUE."
        (unless (let ((case-fold-search t))
                  (goto-char beg)
                  (search-forward "Local Variables:" nil t))
-         (throw 'exit (message "Can’t add file-local variables"))))
+         (throw 'exit (message "Can't add file-local variables"))))
 
       ;; prefix is what comes before "local variables:" in its line.
       ;; suffix is what comes after "local variables:" in its line.
diff --git a/lisp/files.el b/lisp/files.el
index f96ac09..c309f86 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -995,10 +995,10 @@ directory if it does not exist."
               (put 'user-emacs-directory-warning 'this-session t)
               (display-warning 'initialization
                                (format "\
-Unable to %s ‘user-emacs-directory’ (%s).
+Unable to %s `user-emacs-directory' (%s).
 Any data that would normally be written there may be lost!
 If you never want to see this message again,
-customize the variable ‘user-emacs-directory-warning’."
+customize the variable `user-emacs-directory-warning'."
                                        errtype user-emacs-directory)))))
        bestname))))
 
@@ -1641,7 +1641,7 @@ killed."
     (user-error "Aborted"))
   (and (buffer-modified-p) buffer-file-name
        (not (yes-or-no-p
-             (format-message "Kill and replace buffer ‘%s’ without saving it? "
+             (format-message "Kill and replace buffer `%s' without saving it? "
                              (buffer-name))))
        (user-error "Aborted"))
   (let ((obuf (current-buffer))
@@ -2789,7 +2789,7 @@ we don't actually set it to the same mode the buffer 
already has."
        (catch 'nop
          (dolist (mode (nreverse modes))
            (if (not (functionp mode))
-               (message "Ignoring unknown mode ‘%s’" mode)
+               (message "Ignoring unknown mode `%s'" mode)
              (setq done t)
              (or (set-auto-mode-0 mode keep-mode-if-same)
                  ;; continuing would call minor modes again, toggling them off
@@ -2803,7 +2803,7 @@ we don't actually set it to the same mode the buffer 
already has."
         (setq mode (hack-local-variables t))
         (not (memq mode modes))        ; already tried and failed
         (if (not (functionp mode))
-            (message "Ignoring unknown mode ‘%s’" mode)
+            (message "Ignoring unknown mode `%s'" mode)
           (setq done t)
           (set-auto-mode-0 mode keep-mode-if-same)))
     ;; If we didn't, look for an interpreter specified in the first line.
@@ -3420,7 +3420,7 @@ local variables, but directory-local variables may still 
be applied."
                                 (display-warning
                                   :warning
                                   (format-message
-                                   "%s: ‘lexical-binding’ at end of file 
unreliable"
+                                   "%s: `lexical-binding' at end of file 
unreliable"
                                    (file-name-nondirectory
                                     (or buffer-file-name ""))))))
                              (t
@@ -3557,7 +3557,7 @@ It is dangerous if either of these conditions are met:
                  var (if since (format " (since %s)" since))
                  (if (stringp instead)
                      (substitute-command-keys instead)
-                   (format-message "use ‘%s’ instead" instead)))))))
+                   (format-message "use `%s' instead" instead)))))))
 
 (defun hack-one-local-variable (var val)
   "Set local variable VAR with value VAL.
@@ -3674,7 +3674,7 @@ variables from CLASS are applied to the buffer.  The 
variables
 for a class are defined using `dir-locals-set-class-variables'."
   (setq directory (file-name-as-directory (expand-file-name directory)))
   (unless (assq class dir-locals-class-alist)
-    (error "No such class ‘%s’" (symbol-name class)))
+    (error "No such class `%s'" (symbol-name class)))
   (push (list directory class mtime) dir-locals-directory-cache))
 
 (defun dir-locals-set-class-variables (class variables)
@@ -4030,7 +4030,7 @@ Interactively, confirmation is required unless you supply 
a prefix argument."
                       (listp last-nonmenu-event)
                       use-dialog-box))
             (or (y-or-n-p (format-message
-                            "File ‘%s’ exists; overwrite? " filename))
+                            "File `%s' exists; overwrite? " filename))
                 (user-error "Canceled")))
        (set-visited-file-name filename (not confirm))))
   (set-buffer-modified-p t)
@@ -4736,7 +4736,7 @@ Before and after saving the buffer, this function runs
                         ;; existing directory.
                         (error "%s is a directory" filename)
                       (unless (y-or-n-p (format-message
-                                         "File ‘%s’ exists; overwrite? "
+                                         "File `%s' exists; overwrite? "
                                          filename))
                         (error "Canceled"))))
                 (set-visited-file-name filename)))
@@ -4778,7 +4778,7 @@ Before and after saving the buffer, this function runs
                  (unless (file-exists-p dir)
                    (if (y-or-n-p
                         (format-message
-                          "Directory ‘%s’ does not exist; create? " dir))
+                          "Directory `%s' does not exist; create? " dir))
                        (make-directory dir t)
                      (error "Canceled")))
                  (setq setmodes (basic-save-buffer-1))))
@@ -5221,7 +5221,7 @@ given.  With a prefix argument, TRASH is nil."
      (list dir
           (if (directory-files dir nil directory-files-no-dot-files-regexp)
               (y-or-n-p
-               (format-message "Directory ‘%s’ is not empty, really %s? "
+               (format-message "Directory `%s' is not empty, really %s? "
                                 dir (if trashing "trash" "delete")))
             nil)
           (null current-prefix-arg))))
@@ -5327,7 +5327,7 @@ directly into NEWNAME instead."
            default-directory default-directory nil nil)
           current-prefix-arg t nil)))
   (when (file-in-directory-p newname directory)
-    (error "Cannot copy ‘%s’ into its subdirectory ‘%s’"
+    (error "Cannot copy `%s' into its subdirectory `%s'"
            directory newname))
   ;; If default-directory is a remote directory, make sure we find its
   ;; copy-directory handler.
@@ -5699,7 +5699,7 @@ To choose one, move point to the proper line and then 
type C-c C-c.
 Then you'll be asked about a number of files to recover."
   (interactive)
   (if (null auto-save-list-file-prefix)
-      (error "You set ‘auto-save-list-file-prefix’ to disable making session 
files"))
+      (error "You set `auto-save-list-file-prefix' to disable making session 
files"))
   (let ((dir (file-name-directory auto-save-list-file-prefix))
         (nd (file-name-nondirectory auto-save-list-file-prefix)))
     (unless (file-directory-p dir)
@@ -5793,7 +5793,7 @@ This command is used in the special Dired buffer created 
by
                               (condition-case nil
                                   (save-excursion (recover-file file))
                                 (error
-                                 "Failed to recover ‘%s’" file)))
+                                 "Failed to recover `%s'" file)))
                             files
                             '("file" "files" "recover"))
            (message "No files can be recovered from this session now")))
@@ -6478,7 +6478,7 @@ normally equivalent short `-D' option is just passed on to
                 file result)
              ;; Unix.  Access the file to get a suitable error.
              (access-file file "Reading directory")
-             (error "Listing directory failed but ‘access-file’ worked")))
+             (error "Listing directory failed but `access-file' worked")))
 
          (when (if (stringp switches)
                    (string-match "--dired\\>" switches)
@@ -6771,7 +6771,7 @@ for the specified category of users."
        ((= char ?g) #o2070)
        ((= char ?o) #o1007)
        ((= char ?a) #o7777)
-       (t (error "%c: bad ‘who’ character" char))))
+       (t (error "%c: bad `who' character" char))))
 
 (defun file-modes-char-to-right (char &optional from)
   "Convert CHAR to a numeric value of mode bits.
@@ -6843,7 +6843,7 @@ as in \"og+rX-w\"."
                    (file-modes-rights-to-number (substring modes (match-end 1))
                                                 num-who num-modes)
                    modes (substring modes (match-end 3))))
-         (error "Parse error in modes near ‘%s’" (substring modes 0))))
+         (error "Parse error in modes near `%s'" (substring modes 0))))
       num-modes)))
 
 (defun read-file-modes (&optional prompt orig-file)
@@ -6912,7 +6912,7 @@ Otherwise, trash FILENAME using the freedesktop.org 
conventions,
                                               trash-dir)))
           ;; We can't trash a parent directory of trash-directory.
           (if (string-prefix-p fn trash-dir)
-              (error "Trash directory ‘%s’ is a subdirectory of ‘%s’"
+              (error "Trash directory `%s' is a subdirectory of `%s'"
                      trash-dir filename))
           (unless (file-directory-p trash-dir)
             (make-directory trash-dir t))
diff --git a/lisp/filesets.el b/lisp/filesets.el
index c098879..464c7c3 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -679,14 +679,14 @@ variables my-ps-viewer, my-pdf-viewer, my-dvi-viewer, 
my-pic-viewer.
 In order to view pdf or rtf files in an Emacs buffer, you could use these:
 
 
-      \(\"^.+\\\\.pdf\\\\'\" \"pdftotext\"
+      \(\"^.+\\\\.pdf\\\\\\='\" \"pdftotext\"
        \((:capture-output t)
        \(:args (\"%S - | fmt -w \" window-width))
        \(:ignore-on-read-text t)
        \(:constraintp (lambda ()
                        \(and \(filesets-which-command-p \"pdftotext\")
                             \(filesets-which-command-p \"fmt\"))))))
-      \(\"^.+\\\\.rtf\\\\'\" \"rtf2htm\"
+      \(\"^.+\\\\.rtf\\\\\\='\" \"rtf2htm\"
        \((:capture-output t)
        \(:args (\"%S 2> /dev/null | w3m -dump -T text/html\"))
        \(:ignore-on-read-text t)
@@ -1799,7 +1799,7 @@ User will be queried, if no fileset name is provided."
                     (current-buffer)))
         (name   (or name
                     (completing-read
-                     (format-message "Add ‘%s’ to fileset: " buffer)
+                     (format-message "Add `%s' to fileset: " buffer)
                      filesets-data nil)))
          (entry  (or (assoc name filesets-data)
                      (when (y-or-n-p
@@ -1819,13 +1819,13 @@ User will be queried, if no fileset name is provided."
                                        :test 'filesets-files-equalp)))
          (cond
           (inlist
-           (message "Filesets: ‘%s’ is already in ‘%s’" this name))
+           (message "Filesets: `%s' is already in `%s'" this name))
           ((and (equal (filesets-entry-mode entry) ':files)
                 this)
            (filesets-entry-set-files entry (cons this files) t)
            (filesets-set-config name 'filesets-data filesets-data))
           (t
-           (message "Filesets: Can't add ‘%s’ to fileset ‘%s’" this name)))))))
+           (message "Filesets: Can't add `%s' to fileset `%s'" this name)))))))
 
 (defun filesets-remove-buffer (&optional name buffer)
   "Remove BUFFER (or current buffer) to fileset NAME.
@@ -1835,7 +1835,7 @@ User will be queried, if no fileset name is provided."
                     (current-buffer)))
         (name   (or name
                     (completing-read
-                     (format-message "Remove ‘%s’ from fileset: " buffer)
+                     (format-message "Remove `%s' from fileset: " buffer)
                      filesets-data nil t)))
                 (entry (assoc name filesets-data)))
     (if entry
@@ -1848,7 +1848,7 @@ User will be queried, if no fileset name is provided."
              (let ((new (list (cons ':files (delete (car inlist) files)))))
                (setcdr entry new)
                (filesets-set-config name 'filesets-data filesets-data))
-           (message "Filesets: Can't remove ‘%s’ from fileset ‘%s’"
+           (message "Filesets: Can't remove `%s' from fileset `%s'"
                     this
                     name))))))
 
@@ -2441,30 +2441,30 @@ fileset thinks this is necessary or not."
 "Filesets: manual editing of user data required!
 
 Filesets has detected that you were using an older version before,
-which requires some manual updating. Type ‘y’ for editing the startup
+which requires some manual updating. Type `y' for editing the startup
 file now.
 
-The layout of ‘filesets-data’ has changed. Please delete your cache file
+The layout of `filesets-data' has changed. Please delete your cache file
 and edit your startup file as shown below:
 
-1. ‘filesets-data’: Edit all :pattern filesets in your startup file and
+1. `filesets-data': Edit all :pattern filesets in your startup file and
 transform all entries as shown in this example:
 
        \(\"Test\" (:pattern \"~/dir/^pattern$\"))
        --> \(\"Test\" (:pattern \"~/dir/\" \"^pattern$\"))
 
-2. ‘filesets-data’: Change all occurrences of \":document\" to \":ingroup\":
+2. `filesets-data': Change all occurrences of \":document\" to \":ingroup\":
 
       \(\(\"Test\" \(:document \"~/dir/file\"))
       --> \(\(\"Test\" \(:ingroup \"~/dir/file\"))
 
-3. ‘filesets-subdocument-patterns’: If you already modified the variable
-previously called ‘filesets-subdocument-patterns’, change its name to
-‘filesets-ingroup-patterns’.
+3. `filesets-subdocument-patterns': If you already modified the variable
+previously called `filesets-subdocument-patterns', change its name to
+`filesets-ingroup-patterns'.
 
-4. ‘filesets-menu-cache-contents’: If you already modified this
-variable, change the entry ‘filesets-subdocument--cache’ to
-‘filesets-ingroup-cache’.
+4. `filesets-menu-cache-contents': If you already modified this
+variable, change the entry `filesets-subdocument--cache' to
+`filesets-ingroup-cache'.
 
 5. Type M-x filesets-update-cleanup and restart Emacs.
 
diff --git a/lisp/find-cmd.el b/lisp/find-cmd.el
index 8e41906..d78a0b3 100644
--- a/lisp/find-cmd.el
+++ b/lisp/find-cmd.el
@@ -209,7 +209,7 @@ args that OPTION can receive and ARGS are the arguments for 
OPTION.
 If DONT-QUOTE is non-nil, arguments are quoted for passing them to
 the shell."
   (when (and (numberp argcount) (< (length args) argcount))
-    (error "‘%s’ needs at least %d arguments" option argcount))
+    (error "`%s' needs at least %d arguments" option argcount))
   (let ((oper (or oper 'find-or)))
     (if (and args (length args))
         (funcall oper (mapcar (lambda (x)
@@ -247,7 +247,7 @@ them into valid switches.  The result is -and(ed) together."
             (find-to-string
              (find-generic option oper argcnt (cdr form) dont-quote))))
          (t
-          (error "Sorry I don't know how to handle ‘%s’" (car form))))))))
+          (error "Sorry I don't know how to handle `%s'" (car form))))))))
 
 (provide 'find-cmd)
 
diff --git a/lisp/finder.el b/lisp/finder.el
index 51226ae..715dd94 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -393,7 +393,7 @@ FILE should be in a form suitable for passing to 
`locate-library'."
       (if (locate-library (match-string 1))
           (make-text-button (match-beginning 1) (match-end 1)
                             'xref (match-string-no-properties 1)
-                            'help-echo "Read this file’s commentary"
+                            'help-echo "Read this file's commentary"
                             :type 'finder-xref)))
     (goto-char (point-min))
     (setq buffer-read-only t)
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index b74b603..cec95bf 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -538,12 +538,13 @@ and what they do:
  dollar-sign character.  Hash characters in other contexts will still
  follow whatever the syntax table says about the hash character.
 
- (\"\\\\('\\\\).\\\\('\\\\)\"
+ (\"\\\\(\\='\\\\).\\\\(\\='\\\\)\"
   (1 \"\\\"\")
   (2 \"\\\"\"))
 
- gives a pair single-quotes, which surround a single character, a SYNTAX of
- \"\\\"\" (meaning string quote syntax).  Single-quote characters in other
+ gives a pair of apostrophes, which surround a single character, a
+ SYNTAX of \"\\\"\" (meaning string quote syntax).  Apostrophes in other
+
  contexts will not be affected.
 
 This is normally set via `font-lock-defaults'.")
@@ -1051,7 +1052,7 @@ The region it returns may start or end in the middle of a 
line.")
    ;; Of course, this function doesn't do all of the above in all situations
    ;; (e.g. depending on whether jit-lock is in use) and it can't guess what
    ;; the caller wants.
-   (interactive-only "use ‘font-lock-ensure’ or ‘font-lock-flush’ instead."))
+   (interactive-only "use `font-lock-ensure' or `font-lock-flush' instead."))
   (interactive "p")
   (font-lock-set-defaults)
   (let ((font-lock-verbose (or font-lock-verbose interactively)))
diff --git a/lisp/format.el b/lisp/format.el
index 7ab68c8..dbc814e 100644
--- a/lisp/format.el
+++ b/lisp/format.el
@@ -395,7 +395,7 @@ unless you supply a prefix argument."
                                  (cdr (assq 'default-directory
                                             (buffer-local-variables)))
                                  nil nil (buffer-name))))
-         (fmt (format-read (format-message "Write file ‘%s’ in format: "
+         (fmt (format-read (format-message "Write file `%s' in format: "
                                             (file-name-nondirectory file)))))
      (list file fmt (not current-prefix-arg))))
   (let ((old-formats buffer-file-format)
@@ -416,7 +416,7 @@ If FORMAT is nil then do not do any format conversion."
   (interactive
    ;; Same interactive spec as write-file, plus format question.
    (let* ((file (read-file-name "Find file: "))
-         (fmt (format-read (format-message "Read file ‘%s’ in format: "
+         (fmt (format-read (format-message "Read file `%s' in format: "
                                             (file-name-nondirectory file)))))
      (list file fmt)))
   (let ((format-alist nil))
@@ -435,7 +435,7 @@ a list (ABSOLUTE-FILE-NAME SIZE)."
   (interactive
    ;; Same interactive spec as write-file, plus format question.
    (let* ((file (read-file-name "Find file: "))
-         (fmt (format-read (format-message "Read file ‘%s’ in format: "
+         (fmt (format-read (format-message "Read file `%s' in format: "
                                             (file-name-nondirectory file)))))
      (list file fmt)))
   (let (value size old-undo)
diff --git a/lisp/frame.el b/lisp/frame.el
index 3abb72c..bbf0a63 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -743,7 +743,7 @@ the name of an X display device (HOST.SERVER.SCREEN) or a 
tty device file."
       (frame-terminal f)))
    ((terminal-live-p device) device)
    (t
-    (error "Invalid argument %s in ‘get-device-terminal’" device))))
+    (error "Invalid argument %s in `get-device-terminal'" device))))
 
 (defun frames-on-display-list (&optional device)
   "Return a list of all frames on DEVICE.
@@ -894,7 +894,7 @@ If there is no frame by that name, signal an error."
         (frame (cdr (assoc name frame-names-alist))))
     (if frame
        (select-frame-set-input-focus frame)
-      (error "There is no frame named ‘%s’" name))))
+      (error "There is no frame named `%s'" name))))
 
 
 ;;;; Background mode.
diff --git a/lisp/fringe.el b/lisp/fringe.el
index f982b35..8f40c46 100644
--- a/lisp/fringe.el
+++ b/lisp/fringe.el
@@ -122,7 +122,7 @@ See `fringe-mode' for possible values and their effect."
       (and (consp style)
           (or (null (car style)) (integerp (car style)))
           (or (null (cdr style)) (integerp (cdr style))))
-      (error "Invalid fringe style ‘%s’" style)))
+      (error "Invalid fringe style `%s'" style)))
 
 ;; For initialization of fringe-mode, take account of changes
 ;; made explicitly to default-frame-alist.
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 3256231..ab22ab8 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -328,7 +328,7 @@ compatibility with versions of Emacs that lack the variable
 
     (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
            (image-load-path (cons (car load-path)
-                                  (when (boundp 'image-load-path)
+                                  (when (boundp \\='image-load-path)
                                     image-load-path))))
       (mh-tool-bar-folder-buttons-init))"
   (unless library (error "No library specified"))
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 01eb6c5..8ad81c9 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -195,16 +195,16 @@ this list."
   "Headers that are only to be displayed if they have interesting data.
 Possible values in this list are:
 
-  'empty       Headers with no content.
-  'newsgroups  Newsgroup identical to Gnus group.
-  'to-address  To identical to To-address.
-  'to-list     To identical to To-list.
-  'cc-list     CC identical to To-list.
-  'followup-to Followup-to identical to Newsgroups.
-  'reply-to    Reply-to identical to From.
-  'date        Date less than four days old.
-  'long-to     To and/or Cc longer than 1024 characters.
-  'many-to     Multiple To and/or Cc."
+  `empty'       Headers with no content.
+  `newsgroups'  Newsgroup identical to Gnus group.
+  `to-address'  To identical to To-address.
+  `to-list'     To identical to To-list.
+  `cc-list'     CC identical to To-list.
+  `followup-to' Followup-to identical to Newsgroups.
+  `reply-to'    Reply-to identical to From.
+  `date'        Date less than four days old.
+  `long-to'     To and/or Cc longer than 1024 characters.
+  `many-to'     Multiple To and/or Cc."
   :type '(set (const :tag "Headers with no content." empty)
              (const :tag "Newsgroups identical to Gnus group." newsgroups)
              (const :tag "To identical to To-address." to-address)
@@ -661,7 +661,7 @@ For instance, if you would like to save articles related to 
Gnus in
 the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\",
 you could set this variable to something like:
 
- '((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
+  ((\"^Subject:.*gnus\\|^Newsgroups:.*gnus\" \"gnus-stuff\")
    (\"^Subject:.*vm\\|^Xref:.*vm\" \"vm-stuff\"))
 
 This variable is an alist where the key is the match and the
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index b233ad7..23c79cb 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -194,17 +194,17 @@ are tracked this way by default."
   "The splitting strategy applied to the keys in `gnus-registry-track-extra'.
 
 Given a set of unique found groups G and counts for each element
-of G, and a key K (typically 'sender or 'subject):
+of G, and a key K (typically `sender' or `subject'):
 
 When nil, if G has only one element, use it.  Otherwise give up.
 This is the fastest but also least useful strategy.
 
-When 'majority, use the majority by count.  So if there is a
+When `majority', use the majority by count.  So if there is a
 group with the most articles counted by K, use that.  Ties are
 resolved in no particular order, simply the first one found wins.
 This is the slowest strategy but also the most accurate one.
 
-When 'first, the first element of G wins.  This is fast and
+When `first', the first element of G wins.  This is fast and
 should be OK if your senders and subjects don't \"bleed\" across
 groups."
   :group 'gnus-registry
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index 82a2c98..e267b6a 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -122,9 +122,10 @@ This variable can be a list of select methods which Gnus 
will query with
 the `ask-server' method in addition to the primary, secondary, and archive
 servers.
 
+
 E.g.:
   (setq gnus-check-new-newsgroups
-       '((nntp \"some.server\") (nntp \"other.server\")))
+       \\='((nntp \"some.server\") (nntp \"other.server\")))
 
 If this variable is nil, then you have to tell Gnus explicitly to
 check for new newsgroups with 
\\<gnus-group-mode-map>\\[gnus-find-new-newsgroups]."
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 6b90204..d4ca655 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -997,7 +997,7 @@ following hook:
                       (mail-header-set-subject
                        header
                        (gnus-simplify-subject
-                        (mail-header-subject header) 're-only)))
+                        (mail-header-subject header) \\='re-only)))
                     gnus-newsgroup-headers)))"
   :group 'gnus-group-select
   :type 'hook)
diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el
index 881ff4e..f216466 100644
--- a/lisp/gnus/gnus-uu.el
+++ b/lisp/gnus/gnus-uu.el
@@ -143,7 +143,7 @@ details."
 To use, for instance, `untar' to unpack tar files and `zip -x' to
 unpack zip files, say the following:
   (setq gnus-uu-user-archive-rules
-    '((\"\\\\.tar$\" \"untar\")
+    \\='((\"\\\\.tar$\" \"untar\")
       (\"\\\\.zip$\" \"zip -x\")))"
   :group 'gnus-extract-archive
   :type '(repeat (group regexp (string :tag "Command"))))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 6362d9a..ea26216 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1362,7 +1362,7 @@ If you want to save your mail in one group and the news 
articles you
 write in another group, you could say something like:
 
  \(setq gnus-message-archive-group
-       '((if (message-news-p)
+       \\='((if (message-news-p)
              \"misc-news\"
            \"misc-mail\")))
 
@@ -2396,7 +2396,7 @@ less space and be faster as a result.
 This variable can also be a list of visual elements to switch on.  For
 instance, to switch off all visual things except menus, you can say:
 
-   (setq gnus-visual '(menu))
+   (setq gnus-visual \\='(menu))
 
 Valid elements include `summary-highlight', `group-highlight',
 `article-highlight', `mouse-face', `summary-menu', `group-menu',
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index ad135d4..cf18fbe 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -1090,10 +1090,13 @@ This only works when `display-time' is enabled."
       (if (and (imap-open server port stream authentication buf)
               (imap-authenticate
                user (or (cdr (assoc from mail-source-password-cache))
-                        password) buf)
-              (imap-mailbox-select mailbox nil buf))
+                         password) buf))
+          (let ((mailbox-list (if (listp mailbox) mailbox (list mailbox))))
+            (dolist (mailbox mailbox-list)
+              (when (imap-mailbox-select mailbox nil buf)
          (let ((coding-system-for-write mail-source-imap-file-coding-system)
                str)
+            (message "Fetching from %s..." mailbox)
            (with-temp-file mail-source-crash-box
              ;; Avoid converting 8-bit chars from inserted strings to
              ;; multibyte.
@@ -1128,8 +1131,8 @@ This only works when `display-time' is enabled."
               fetchflag nil buf))
            (if dontexpunge
                (imap-mailbox-unselect buf)
-             (imap-mailbox-close nil buf))
-           (imap-close buf))
+              (imap-mailbox-close nil buf)))))
+            (imap-close buf))
        (imap-close buf)
        ;; We nix out the password in case the error
        ;; was because of a wrong password being given.
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 0f6f63e..5ede15b 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1131,7 +1131,7 @@ Presets to impersonate popular mail agents are found in 
the
 message-cite-style-* variables.  This variable is intended for
 use in `gnus-posting-styles', such as:
 
-  ((posting-from-work-p) (eval (set (make-local-variable 'message-cite-style) 
message-cite-style-outlook)))"
+  ((posting-from-work-p) (eval (set (make-local-variable 
\\='message-cite-style) message-cite-style-outlook)))"
   :version "24.1"
   :group 'message-insertion
   :type '(choice (const :tag "Do not override variables" :value nil)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 20ba0a3..ac228f9 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -807,6 +807,7 @@ textual parts.")
                     nil
                   group)
                 server))
+       (info (when info (list info)))
        active)
     (with-current-buffer nntp-server-buffer
       (when result
@@ -814,10 +815,11 @@ textual parts.")
                  (not (setq active
                             (nth 2 (assoc group nnimap-current-infos)))))
          (let ((sequences (nnimap-retrieve-group-data-early
-                           server (list info))))
-           (nnimap-finish-retrieve-group-infos server (list info) sequences
+                           server info)))
+           (nnimap-finish-retrieve-group-infos server info sequences
                                                t)
            (setq active (nth 2 (assoc group nnimap-current-infos)))))
+       (setq active (or active '(0 . 1)))
        (erase-buffer)
        (insert (format "211 %d %d %d %S\n"
                        (- (cdr active) (car active))
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 15ccc47..9784f1b 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -350,10 +350,10 @@ result, `gnus-retrieve-headers' will be called instead."
 (defcustom nnir-swish++-additional-switches '()
   "*A list of strings, to be given as additional arguments to swish++.
 
-Note that this should be a list.  Ie, do NOT use the following:
+Note that this should be a list.  I.e., do NOT use the following:
     (setq nnir-swish++-additional-switches \"-i -w\") ; wrong
 Instead, use this:
-    (setq nnir-swish++-additional-switches '(\"-i\" \"-w\"))"
+    (setq nnir-swish++-additional-switches \\='(\"-i\" \"-w\"))"
   :type '(repeat (string))
   :group 'nnir)
 
@@ -399,10 +399,10 @@ This cannot be a server parameter."
 (defcustom nnir-swish-e-additional-switches '()
   "*A list of strings, to be given as additional arguments to swish-e.
 
-Note that this should be a list.  Ie, do NOT use the following:
+Note that this should be a list.  I.e., do NOT use the following:
     (setq nnir-swish-e-additional-switches \"-i -w\") ; wrong
 Instead, use this:
-    (setq nnir-swish-e-additional-switches '(\"-i\" \"-w\"))
+    (setq nnir-swish-e-additional-switches \\='(\"-i\" \"-w\"))
 
 This could be a server parameter."
   :type '(repeat (string))
@@ -429,10 +429,10 @@ This could be a server parameter."
 
 (defcustom nnir-hyrex-additional-switches '()
   "*A list of strings, to be given as additional arguments for nnir-search.
-Note that this should be a list. Ie, do NOT use the following:
+Note that this should be a list. I.e., do NOT use the following:
     (setq nnir-hyrex-additional-switches \"-ddl ddl.xml -c nnir\") ; wrong !
 Instead, use this:
-    (setq nnir-hyrex-additional-switches '(\"-ddl\" \"ddl.xml\" \"-c\" 
\"nnir\"))"
+    (setq nnir-hyrex-additional-switches \\='(\"-ddl\" \"ddl.xml\" \"-c\" 
\"nnir\"))"
   :type '(repeat (string))
   :group 'nnir)
 
@@ -471,10 +471,10 @@ arrive at the correct group name, \"mail.misc\"."
 The switches `-q', `-a', and `-s' are always used, very few other switches
 make any sense in this context.
 
-Note that this should be a list.  Ie, do NOT use the following:
+Note that this should be a list.  I.e., do NOT use the following:
     (setq nnir-namazu-additional-switches \"-i -w\") ; wrong
 Instead, use this:
-    (setq nnir-namazu-additional-switches '(\"-i\" \"-w\"))"
+    (setq nnir-namazu-additional-switches \\='(\"-i\" \"-w\"))"
   :type '(repeat (string))
   :group 'nnir)
 
@@ -500,10 +500,10 @@ arrive at the correct group name, \"mail.misc\"."
 (defcustom nnir-notmuch-additional-switches '()
   "*A list of strings, to be given as additional arguments to notmuch.
 
-Note that this should be a list.  Ie, do NOT use the following:
+Note that this should be a list.  I.e., do NOT use the following:
     (setq nnir-notmuch-additional-switches \"-i -w\") ; wrong
 Instead, use this:
-    (setq nnir-notmuch-additional-switches '(\"-i\" \"-w\"))"
+    (setq nnir-notmuch-additional-switches \\='(\"-i\" \"-w\"))"
   :version "24.1"
   :type '(repeat (string))
   :group 'nnir)
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 6811160..7efb154 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -83,7 +83,7 @@ If you'd like, for instance, one mail group for mail from the
 else, you could do something like this:
 
  (setq nnmail-split-methods
-       '((\"mail.4ad\" \"From:.*4ad\")
+       \\='((\"mail.4ad\" \"From:.*4ad\")
         (\"mail.junk\" \"From:.*Lars\\\\|Subject:.*buy\")
         (\"mail.misc\" \"\")))
 
@@ -180,7 +180,7 @@ E.g.:
       (lambda (newsgroup)
        (cond ((string-match \"private\" newsgroup) 31)
              ((string-match \"junk\" newsgroup) 1)
-             ((string-match \"important\" newsgroup) 'never)
+             ((string-match \"important\" newsgroup) \\='never)
              (t 7))))"
   :group 'nnmail-expire
   :type '(choice (const :tag "nnmail-expiry-wait" nil)
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index e34b708..ccfc599 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -1943,7 +1943,9 @@ Fill in VALUES if based on an article."
     (kill-all-local-variables)
     (erase-buffer)
     (widget-insert "Specify your query for Mairix (check boxes for activating 
fields):\n\n")
-    (widget-insert "(Whitespaces will be converted to ‘,’ (i.e. AND). Use ‘/’ 
for OR.)\n\n")
+    (widget-insert
+     (substitute-command-keys
+      "(Whitespaces will be converted to `,' (i.e. AND). Use `/' for 
OR.)\n\n"))
 ;    (make-local-variable 'nnmairix-widgets)
     (setq nnmairix-widgets (nnmairix-widget-build-editable-fields values))
     (when (member 'flags nnmairix-widget-other)
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 8d09781..6c97cec 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -72,7 +72,7 @@ For instance, if you want Gnus to beep every time you connect
 to innd, you could say something like:
 
 \(setq nntp-server-action-alist
-       '((\"innd\" (ding))))
+       \\='((\"innd\" (ding))))
 
 You probably don't want to do that, though.")
 
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index a1d121c..77ef21d 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -319,7 +319,7 @@ suitable file is found, return nil."
             (when remapped
               (princ "Its keys are remapped to ")
               (princ (if (symbolp remapped)
-                         (format-message "‘%s’" remapped)
+                         (format-message "`%s'" remapped)
                       "an anonymous command"))
               (princ ".\n"))
 
@@ -353,22 +353,22 @@ suitable file is found, return nil."
       (insert "\nThis function has a compiler macro")
       (if (symbolp handler)
           (progn
-            (insert (format-message " ‘%s’" handler))
+            (insert (format-message " `%s'" handler))
             (save-excursion
-              (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+              (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
                                   nil t)
               (help-xref-button 1 'help-function handler)))
         ;; FIXME: Obsolete since 24.4.
         (let ((lib (get function 'compiler-macro-file)))
           (when (stringp lib)
-            (insert (format-message " in ‘%s’" lib))
+            (insert (format-message " in `%s'" lib))
             (save-excursion
-              (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+              (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
                                   nil t)
               (help-xref-button 1 'help-function-cmacro function lib)))))
       (insert ".\n"))))
 
-(defun help-fns--signature (function doc real-def real-function raw)
+(defun help-fns--signature (function doc real-def real-function buffer)
   "Insert usage at point and return docstring.  With highlighting."
   (if (keymapp function)
       doc                       ; If definition is a keymap, skip arglist note.
@@ -402,10 +402,13 @@ suitable file is found, return nil."
              (use1 (replace-regexp-in-string
                     "\\`(\\\\=\\\\\\\\=` \\([^\n ]*\\))\\'"
                     "\\\\=`\\1" use t))
-             (high (if raw
-                       (cons use1 doc)
-                     (help-highlight-arguments (substitute-command-keys use1)
-                                               (substitute-command-keys 
doc)))))
+             (high (if buffer
+                       (let (subst-use1 subst-doc)
+                         (with-current-buffer buffer
+                           (setq subst-use1 (substitute-command-keys use1))
+                           (setq subst-doc (substitute-command-keys doc)))
+                         (help-highlight-arguments subst-use1 subst-doc))
+                     (cons use1 doc))))
         (let ((fill-begin (point))
               (high-usage (car high))
               (high-doc (cdr high)))
@@ -419,13 +422,13 @@ suitable file is found, return nil."
                           (get function
                                'derived-mode-parent))))
     (when parent-mode
-      (insert (substitute-command-keys "\nParent mode: ‘"))
+      (insert (substitute-command-keys "\nParent mode: `"))
       (let ((beg (point)))
         (insert (format "%s" parent-mode))
         (make-text-button beg (point)
                           'type 'help-function
                           'help-args (list parent-mode)))
-      (insert (substitute-command-keys "’.\n")))))
+      (insert (substitute-command-keys "'.\n")))))
 
 (defun help-fns--obsolete (function)
   ;; Ignore lambda constructs, keyboard macros, etc.
@@ -441,7 +444,7 @@ suitable file is found, return nil."
       (when (nth 2 obsolete)
         (insert (format " since %s" (nth 2 obsolete))))
       (insert (cond ((stringp use) (concat ";\n" use))
-                    (use (format-message ";\nuse ‘%s’ instead." use))
+                    (use (format-message ";\nuse `%s' instead." use))
                     (t "."))
               "\n"))))
 
@@ -477,7 +480,7 @@ FILE is the file where FUNCTION was probably defined."
                           (format ";\nin Lisp code %s" interactive-only))
                          ((and (symbolp 'interactive-only)
                                (not (eq interactive-only t)))
-                          (format-message ";\nin Lisp code use ‘%s’ instead."
+                          (format-message ";\nin Lisp code use `%s' instead."
                                           interactive-only))
                          (t "."))
                    "\n")))))
@@ -546,7 +549,7 @@ FILE is the file where FUNCTION was probably defined."
                 ;; Aliases are Lisp functions, so we need to check
                 ;; aliases before functions.
                 (aliased
-                 (format-message "an alias for ‘%s’" real-def))
+                 (format-message "an alias for `%s'" real-def))
                 ((autoloadp def)
                  (format "%s autoloaded %s"
                          (if (commandp def) "an interactive" "an")
@@ -581,21 +584,21 @@ FILE is the file where FUNCTION was probably defined."
        (save-excursion
          (save-match-data
            (when (re-search-backward (substitute-command-keys
-                                       "alias for ‘\\([^‘’]+\\)’")
+                                       "alias for `\\([^`']+\\)'")
                                       nil t)
              (help-xref-button 1 'help-function real-def)))))
 
       (when file-name
        ;; We used to add .el to the file name,
        ;; but that's completely wrong when the user used load-file.
-       (princ (format-message " in ‘%s’"
+       (princ (format-message " in `%s'"
                                (if (eq file-name 'C-source)
                                    "C source code"
                                  (help-fns-short-filename file-name))))
        ;; Make a hyperlink to the library.
        (with-current-buffer standard-output
          (save-excursion
-           (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+           (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
                                 nil t)
            (help-xref-button 1 'help-function-def function file-name))))
       (princ ".")
@@ -604,7 +607,8 @@ FILE is the file where FUNCTION was probably defined."
                                  (point)))
       (terpri)(terpri)
 
-      (let ((doc-raw (documentation function t)))
+      (let ((doc-raw (documentation function t))
+            (key-bindings-buffer (current-buffer)))
 
        ;; If the function is autoloaded, and its docstring has
        ;; key substitution constructs, load the library.
@@ -615,11 +619,11 @@ FILE is the file where FUNCTION was probably defined."
 
         (help-fns--key-bindings function)
         (with-current-buffer standard-output
-         (let ((doc (help-fns--signature function doc-raw sig-key
-                                          real-function nil)))
-           (run-hook-with-args 'help-fns-describe-function-functions function)
-           (insert "\n"
-                   (or doc "Not documented."))))))))
+          (let ((doc (help-fns--signature function doc-raw sig-key
+                                          real-function key-bindings-buffer)))
+            (run-hook-with-args 'help-fns-describe-function-functions function)
+            (insert "\n"
+                    (or doc "Not documented."))))))))
 
 ;; Add defaults to `help-fns-describe-function-functions'.
 (add-hook 'help-fns-describe-function-functions #'help-fns--obsolete)
@@ -730,14 +734,14 @@ it is displayed along with the global value."
              (if file-name
                  (progn
                    (princ (format-message
-                            " is a variable defined in ‘%s’.\n"
+                            " is a variable defined in `%s'.\n"
                             (if (eq file-name 'C-source)
                                 "C source code"
                               (file-name-nondirectory file-name))))
                    (with-current-buffer standard-output
                      (save-excursion
                        (re-search-backward (substitute-command-keys
-                                             "‘\\([^‘’]+\\)’")
+                                             "`\\([^`']+\\)'")
                                             nil t)
                        (help-xref-button 1 'help-variable-def
                                          variable file-name)))
@@ -746,7 +750,7 @@ it is displayed along with the global value."
                      (princ "Its ")))
                (if valvoid
                    (princ " is void as a variable.")
-                 (princ (substitute-command-keys "’s ")))))
+                 (princ (substitute-command-keys "'s ")))))
            (unless valvoid
              (with-current-buffer standard-output
                (setq val-start-pos (point))
@@ -872,7 +876,7 @@ if it is given a local binding.\n"))))
               (unless (eq alias variable)
                 (setq extra-line t)
                 (princ (format-message
-                        "  This variable is an alias for ‘%s’.\n"
+                        "  This variable is an alias for `%s'.\n"
                         alias)))
 
               (when obsolete
@@ -881,7 +885,7 @@ if it is given a local binding.\n"))))
                 (if (nth 2 obsolete)
                     (princ (format " since %s" (nth 2 obsolete))))
                (princ (cond ((stringp use) (concat ";\n  " use))
-                            (use (format-message ";\n  use ‘%s’ instead."
+                            (use (format-message ";\n  use `%s' instead."
                                                   (car obsolete)))
                             (t ".")))
                 (terpri))
@@ -915,13 +919,13 @@ if it is given a local binding.\n"))))
                                     dir-file nil)))
                        (princ (substitute-command-keys
                                 (if dir-file
-                                    "by the file\n  ‘"
-                                  "for the directory\n  ‘")))
+                                    "by the file\n  `"
+                                  "for the directory\n  `")))
                        (with-current-buffer standard-output
                          (insert-text-button
                           file 'type 'help-dir-local-var-def
                           'help-args (list variable file)))
-                       (princ (substitute-command-keys "’.\n"))))
+                       (princ (substitute-command-keys "'.\n"))))
                  (princ (substitute-command-keys
                          "  This variable's value is file-local.\n"))))
 
@@ -938,7 +942,7 @@ file-local variable.\n")
                (when (assq variable safe-local-variable-values)
                  (princ (substitute-command-keys
                           "  However, you have added it to \
-‘safe-local-variable-values’.\n"))))
+`safe-local-variable-values'.\n"))))
 
              (when safe-var
                 (setq extra-line t)
@@ -946,7 +950,7 @@ file-local variable.\n")
                (princ "if its value\n  satisfies the predicate ")
                (princ (if (byte-code-function-p safe-var)
                           "which is a byte-compiled expression.\n"
-                        (format-message "‘%s’.\n" safe-var))))
+                        (format-message "`%s'.\n" safe-var))))
 
               (if extra-line (terpri))
              (princ "Documentation:\n")
diff --git a/lisp/help.el b/lisp/help.el
index 2fcb52e..66df6b0 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -964,12 +964,12 @@ documentation for the major and minor modes of that 
buffer."
        (let* ((mode major-mode)
               (file-name (find-lisp-object-file-name mode nil)))
          (when file-name
-           (princ (format-message " defined in ‘%s’"
+           (princ (format-message " defined in `%s'"
                                    (file-name-nondirectory file-name)))
            ;; Make a hyperlink to the library.
            (with-current-buffer standard-output
              (save-excursion
-               (re-search-backward (substitute-command-keys "‘\\([^‘’]+\\)’")
+               (re-search-backward (substitute-command-keys "`\\([^`']+\\)'")
                                     nil t)
                (help-xref-button 1 'help-function-def mode file-name)))))
        (princ ":\n")
@@ -1041,7 +1041,7 @@ is currently activated with completion."
   (let ((minor-mode (lookup-minor-mode-from-indicator indicator)))
     (if minor-mode
        (describe-minor-mode-from-symbol minor-mode)
-      (error "Cannot find minor mode for ‘%s’" indicator))))
+      (error "Cannot find minor mode for `%s'" indicator))))
 
 (defun lookup-minor-mode-from-indicator (indicator)
   "Return a minor mode symbol from its indicator on the mode line."
@@ -1352,8 +1352,8 @@ the help window if the current value of the user option
 
 (defun help--docstring-quote (string)
   "Return a doc string that represents STRING.
-The result, when formatted by ‘substitute-command-keys’, should equal STRING."
-  (replace-regexp-in-string "['\\`]" "\\\\=\\&" string))
+The result, when formatted by `substitute-command-keys', should equal STRING."
+  (replace-regexp-in-string "['\\`‘’]" "\\\\=\\&" string))
 
 ;; The following functions used to be in help-fns.el, which is not preloaded.
 ;; But for various reasons, they are more widely needed, so they were
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 0255585..89b1204 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -362,7 +362,7 @@ Hi-lock: end is found.  A mode is excluded if it's in the 
list
     (setq hi-lock-archaic-interface-message-used t)
     (if hi-lock-archaic-interface-deduce
         (global-hi-lock-mode hi-lock-mode)
-      (warn
+      (warn "%s"
        "Possible archaic use of (hi-lock-mode).
 Use (global-hi-lock-mode 1) in .emacs to enable hi-lock for all buffers,
 use (hi-lock-mode 1) for individual buffers.  For compatibility with Emacs
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index 310a074..74cdfe1 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -133,10 +133,10 @@ main-content <=MAIN_CONTENT;\\n\" rtfm-section file style 
rtfm-section file))
 \(defun rtfm-build-source-docs (section srcdir destdir)
   (interactive
    \"s section[eg- emacs / p4-blame]:\\nD source-dir: \\nD output-dir: \")
-  (require 'htmlfontify)
+  (require \\='htmlfontify)
   (hfy-load-tags-cache srcdir)
-  (let ((hfy-page-header  'rtfm-build-page-header)
-        (hfy-page-footer  'rtfm-build-page-footer)
+  (let ((hfy-page-header  \\='rtfm-build-page-header)
+        (hfy-page-footer  \\='rtfm-build-page-footer)
         (rtfm-section                     section)
         (hfy-index-file                   \"index\"))
     (htmlfontify-run-etags srcdir)
@@ -187,13 +187,13 @@ It takes only one argument, the filename."
   :type  '(string))
 
 (defcustom hfy-src-doc-link-style "text-decoration: underline;"
-  "String to add to the ‘<style> a’ variant of an htmlfontify CSS class."
+  "String to add to the `<style> a' variant of an htmlfontify CSS class."
   :group 'htmlfontify
   :tag   "src-doc-link-style"
   :type  '(string))
 
 (defcustom hfy-src-doc-link-unstyle " text-decoration: none;"
-  "Regex to remove from the ‘<style> a’ variant of an htmlfontify CSS class."
+  "Regex to remove from the `<style> a' variant of an htmlfontify CSS class."
   :group 'htmlfontify
   :tag   "src-doc-link-unstyle"
   :type  '(string))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 3e97343..718471b 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -2303,7 +2303,7 @@ buffers which are visiting a file."
 (defun ibuffer (&optional other-window-p name qualifiers noselect
                          shrink filter-groups formats)
   "Begin using Ibuffer to edit a list of buffers.
-Type ‘h’ after entering ibuffer for more information.
+Type `h' after entering ibuffer for more information.
 
 All arguments are optional.
 OTHER-WINDOW-P says to use another window.
diff --git a/lisp/ido.el b/lisp/ido.el
index 95be656..13b6d52 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -378,7 +378,7 @@ use either \\[customize] or the function `ido-mode'."
   '("\\` ")
   "List of regexps or functions matching buffer names to ignore.
 For example, traditional behavior is not to list buffers whose names begin
-with a space, for which the regexp is ‘\\\\=` ’.  See the source file for
+with a space, for which the regexp is `\\\\=` '.  See the source file for
 example functions that filter buffer names."
   :type '(repeat (choice regexp function))
   :group 'ido)
@@ -387,7 +387,7 @@ example functions that filter buffer names."
   '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./")
   "List of regexps or functions matching file names to ignore.
 For example, traditional behavior is not to list files whose names begin
-with a #, for which the regexp is ‘\\\\=`#’.  See the source file for
+with a #, for which the regexp is `\\\\=`#'.  See the source file for
 example functions that filter filenames."
   :type '(repeat (choice regexp function))
   :group 'ido)
diff --git a/lisp/image.el b/lisp/image.el
index 99a65e3..0c62088 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -343,7 +343,7 @@ of image data.  If that doesn't work, and SOURCE is a file 
name,
 use its file extension as image type.
 Optional DATA-P non-nil means SOURCE is a string containing image data."
   (when (and (not data-p) (not (stringp source)))
-    (error "Invalid image file name ‘%s’" source))
+    (error "Invalid image file name `%s'" source))
   (unless type
     (setq type (if data-p
                   (image-type-from-data source)
@@ -351,7 +351,7 @@ Optional DATA-P non-nil means SOURCE is a string containing 
image data."
                     (image-type-from-file-name source))))
     (or type (error "Cannot determine image type")))
   (or (memq type (and (boundp 'image-types) image-types))
-      (error "Invalid image type ‘%s’" type))
+      (error "Invalid image type `%s'" type))
   type)
 
 
diff --git a/lisp/info.el b/lisp/info.el
index 2c92df4..a5a2c55 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3460,7 +3460,7 @@ MATCHES is a list of index matches found by 
`Info-index'.")
        (when (equal (car (nth 0 nodeinfo)) (or filename Info-current-file))
          (insert
           (format "* %-20s %s.\n"
-                  (format-message "*Index for ‘%s’*::" (cdr (nth 0 nodeinfo)))
+                  (format "*Index for ‘%s’*::" (cdr (nth 0 nodeinfo)))
                   (cdr (nth 0 nodeinfo)))))))))
 
 (defun Info-virtual-index (topic)
@@ -3496,7 +3496,7 @@ search results."
        (Info-goto-node orignode)
        (message "")))
     (Info-find-node Info-current-file
-                    (format-message "*Index for ‘%s’*" topic))))
+                    (format "*Index for ‘%s’*" topic))))
 
 (add-to-list 'Info-virtual-files
             '("\\`\\*Apropos\\*\\'"
@@ -3635,7 +3635,7 @@ Build a menu of the possible matches."
        (setq nodes (cdr nodes)))
       (if nodes
          (Info-find-node Info-apropos-file (car (car nodes)))
-       (setq nodename (format-message "Index for ‘%s’" string))
+       (setq nodename (format "Index for ‘%s’" string))
        (push (list nodename string (Info-apropos-matches string))
              Info-apropos-nodes)
        (Info-find-node Info-apropos-file nodename)))))
diff --git a/lisp/international/ccl.el b/lisp/international/ccl.el
index 08c18e1..daba2b6 100644
--- a/lisp/international/ccl.el
+++ b/lisp/international/ccl.el
@@ -967,8 +967,7 @@ is a list of CCL-BLOCKs."
   (let ((len (length ccl-code))
        (buffer-mag (aref ccl-code 0)))
     (cond ((= buffer-mag 0)
-          (insert (substitute-command-keys
-                    "Don’t output anything.\n")))
+          (insert (substitute-command-keys "Don't output anything.\n")))
          ((= buffer-mag 1)
           (insert "Out-buffer must be as large as in-buffer.\n"))
          (t
diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 4667a00..cdbaade 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -1070,7 +1070,7 @@ Value is name of that font."
        (condition-case nil
            (setq ascii-font (x-resolve-font-name pattern))
          (error
-          (message "Warning: no fonts matching ‘%s’ available" pattern)
+          (message "Warning: no fonts matching `%s' available" pattern)
           (aset xlfd-fields index "*")
           (setq index (1+ index))))))
     (unless ascii-font
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 5934919..4fd4b90 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -400,9 +400,9 @@ To prefer, for instance, utf-8, say the following:
   \(prefer-coding-system \\='utf-8)"
   (interactive "zPrefer coding system: ")
   (if (not (and coding-system (coding-system-p coding-system)))
-      (error "Invalid coding system ‘%s’" coding-system))
+      (error "Invalid coding system `%s'" coding-system))
   (if (memq (coding-system-type coding-system) '(raw-text undecided))
-      (error "Can't prefer the coding system ‘%s’" coding-system))
+      (error "Can't prefer the coding system `%s'" coding-system))
   (let ((base (coding-system-base coding-system))
        (eol-type (coding-system-eol-type coding-system)))
     (set-coding-system-priority base)
@@ -417,7 +417,7 @@ To prefer, for instance, utf-8, say the following:
     (set-default-coding-systems base)
     (if (called-interactively-p 'interactive)
        (or (eq base default-file-name-coding-system)
-           (message "The default value of ‘file-name-coding-system’ was not 
changed because the specified coding system is not suitable for file 
names.")))))
+           (message "The default value of `file-name-coding-system' was not 
changed because the specified coding system is not suitable for file 
names.")))))
 
 (defvar sort-coding-systems-predicate nil
   "If non-nil, a predicate function to sort coding systems.
@@ -719,14 +719,14 @@ DEFAULT is the coding system to use by default in the 
query."
              (insert "No default coding systems to try for "
                      (if (stringp from)
                          (format "string \"%s\"." from)
-                       (format-message "buffer ‘%s’." bufname)))
+                       (format-message "buffer `%s'." bufname)))
            (insert
             "These default coding systems were tried to encode"
             (if (stringp from)
                 (concat " \"" (if (> (length from) 10)
                                   (concat (substring from 0 10) "...\"")
                                 (concat from "\"")))
-              (format-message " text\nin the buffer ‘%s’" bufname))
+              (format-message " text\nin the buffer `%s'" bufname))
             ":\n")
            (let ((pos (point))
                  (fill-prefix "  "))
@@ -876,13 +876,13 @@ and TO is ignored."
                  (setq auto-cs (car auto-cs))
                (display-warning
                 'mule
-                (format "\
-Invalid coding system ‘%s’ is specified
+                (format-message "\
+Invalid coding system `%s' is specified
 for the current buffer/file by the %s.
 It is highly recommended to fix it before writing to a file."
                         (car auto-cs)
                         (if (eq (cdr auto-cs) :coding) ":coding tag"
-                          (format-message "variable ‘%s’" (cdr auto-cs))))
+                          (format-message "variable `%s'" (cdr auto-cs))))
                 :warning)
                (or (yes-or-no-p "Really proceed with writing? ")
                    (error "Save aborted"))
@@ -1452,7 +1452,7 @@ If INPUT-METHOD is nil, deactivate any current input 
method."
   (unless (or current-input-method (null input-method))
     (let ((slot (assoc input-method input-method-alist)))
       (if (null slot)
-         (error "Can't activate input method ‘%s’" input-method))
+         (error "Can't activate input method `%s'" input-method))
       (setq current-input-method-title nil)
       (let ((func (nth 2 slot)))
        (if (functionp func)
@@ -1461,7 +1461,7 @@ If INPUT-METHOD is nil, deactivate any current input 
method."
              (progn
                (require (cdr func))
                (apply (car func) input-method (nthcdr 5 slot)))
-           (error "Can't activate input method ‘%s’" input-method))))
+           (error "Can't activate input method `%s'" input-method))))
       (setq current-input-method input-method)
       (or (stringp current-input-method-title)
          (setq current-input-method-title (nth 3 slot)))
@@ -1539,7 +1539,7 @@ which marks the variable `default-input-method' as set 
for Custom buffers."
 
   (interactive "P\np")
   (if toggle-input-method-active
-      (error "Recursive use of ‘toggle-input-method’"))
+      (error "Recursive use of `toggle-input-method'"))
   (if (and current-input-method (not arg))
       (deactivate-input-method)
     (let ((toggle-input-method-active t)
@@ -1589,7 +1589,7 @@ which marks the variable `default-input-method' as set 
for Custom buffers."
         (with-output-to-temp-buffer (help-buffer)
           (let ((elt (assoc input-method input-method-alist)))
             (princ (format-message
-                    "Input method: %s (‘%s’ in mode line) for %s\n  %s\n"
+                    "Input method: %s (`%s' in mode line) for %s\n  %s\n"
                     input-method (nth 3 elt) (nth 1 elt) (nth 4 elt))))))))))
 
 (defun describe-current-input-method ()
@@ -1599,7 +1599,7 @@ This is a subroutine for `describe-input-method'."
       (if (and (symbolp describe-current-input-method-function)
               (fboundp describe-current-input-method-function))
          (funcall describe-current-input-method-function)
-       (message "No way to describe the current input method ‘%s’"
+       (message "No way to describe the current input method `%s'"
                 current-input-method)
        (ding))
     (error "No input method is activated now")))
@@ -2174,9 +2174,9 @@ See `set-language-info-alist' for use in programs."
              (search-backward (symbol-name (car l)))
              (help-xref-button 0 'help-coding-system (car l))
              (goto-char (point-max))
-             (insert " (‘"
+             (insert (substitute-command-keys " (`")
                      (coding-system-mnemonic (car l))
-                     "’ in mode line):\n\t"
+                     (substitute-command-keys "' in mode line):\n\t")
                       (substitute-command-keys
                        (coding-system-doc-string (car l)))
                      "\n")
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 063b873..ecbc4f4 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -904,8 +904,8 @@
   (dolist (script '(devanagari sanskrit bengali tamil telugu assamese
                               oriya kannada malayalam gujarati punjabi))
     (define-charset (intern (format "%s-cdac" script))
-      (format-message
-       "Glyphs of %s script for CDAC font.  Subset of ‘indian-glyph’."
+      (format
+       "Glyphs of %s script for CDAC font.  Subset of `indian-glyph'."
        (capitalize (symbol-name script)))
       :short-name (format "CDAC %s glyphs" (capitalize (symbol-name script)))
       :supplementary-p t
@@ -916,8 +916,8 @@
   (dolist (script '(devanagari bengali punjabi gujarati
                               oriya tamil telugu kannada malayalam))
     (define-charset (intern (format "%s-akruti" script))
-      (format-message
-       "Glyphs of %s script for AKRUTI font.  Subset of ‘indian-glyph’."
+      (format
+       "Glyphs of %s script for AKRUTI font.  Subset of `indian-glyph'."
        (capitalize (symbol-name script)))
       :short-name (format "AKRUTI %s glyphs" (capitalize (symbol-name script)))
       :supplementary-p t
diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el
index 57b6d62..fa5a7eb 100644
--- a/lisp/international/mule-diag.el
+++ b/lisp/international/mule-diag.el
@@ -332,7 +332,7 @@ meanings of these arguments."
       (let ((char (charset-iso-final-char charset)))
        (when (> char 0)
          (insert "Final char of ISO2022 designation sequence: ")
-         (insert (format-message "‘%c’\n" char))))
+         (insert (format-message "`%c'\n" char))))
       (let (aliases)
        (dolist (c charset-list)
          (if (and (not (eq c charset))
@@ -770,7 +770,7 @@ but still contains full information about each coding 
system."
 # MNEMONIC-LETTER -- CODING-SYSTEM-NAME
 #   DOC-STRING
 ")
-    (princ "\
+    (princ (substitute-command-keys "\
 #########################
 ## LIST OF CODING SYSTEMS
 ## Each line corresponds to one coding system
@@ -794,7 +794,7 @@ but still contains full information about each coding 
system."
 ##      0
 ##  POST-READ-CONVERSION, PRE-WRITE-CONVERSION = function name to be called
 ##
-"))
+")))
   (dolist (coding-system (sort-coding-systems (coding-system-list 'base-only)))
     (if (null arg)
        (print-coding-system-briefly coding-system 'tightly)
@@ -1038,7 +1038,8 @@ see the function `describe-fontset' for the format of the 
list."
       (save-excursion
        (goto-char (point-min))
        (while (re-search-forward
-               "^  \\([^ ]+\\) (‘.*’ in mode line)$" nil t)
+               (substitute-command-keys "^  \\([^ ]+\\) (`.*' in mode line)$")
+                nil t)
          (help-xref-button 1 'help-input-method (match-string 1)))))))
 
 (defun list-input-methods-1 ()
@@ -1046,7 +1047,8 @@ see the function `describe-fontset' for the format of the 
list."
       (princ "
 No input method is available, perhaps because you have not
 installed LEIM (Libraries of Emacs Input Methods).")
-    (princ "LANGUAGE\n  NAME (‘TITLE’ in mode line)\n")
+    (princ (substitute-command-keys
+            "LANGUAGE\n  NAME (`TITLE' in mode line)\n"))
     (princ "    SHORT-DESCRIPTION\n------------------------------\n")
     (setq input-method-alist
          (sort input-method-alist
@@ -1059,7 +1061,7 @@ installed LEIM (Libraries of Emacs Input Methods).")
          (princ language)
          (terpri))
        (princ (format-message
-                "  %s (‘%s’ in mode line)\n    %s\n"
+                "  %s (`%s' in mode line)\n    %s\n"
                 (car elt)
                 (let ((title (nth 3 elt)))
                   (if (and (consp title) (stringp (car title)))
diff --git a/lisp/international/ogonek.el b/lisp/international/ogonek.el
index 7caa5d4..01cbe1e 100644
--- a/lisp/international/ogonek.el
+++ b/lisp/international/ogonek.el
@@ -133,10 +133,10 @@ znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c 
nast/epuj/aco.
  `~/.emacs' za/z/ada/c wczytania wybranych funkcji, na dodatek dopiero
  w chwili ich rzeczywistego u/zycia:
 
-   (autoload 'ogonek-jak \"ogonek\")
-   (autoload 'ogonek-recode-region \"ogonek\")
-   (autoload 'ogonek-prefixify-region \"ogonek\")
-   (autoload 'ogonek-deprefixify-region \"ogonek\")
+   (autoload \\='ogonek-jak \"ogonek\")
+   (autoload \\='ogonek-recode-region \"ogonek\")
+   (autoload \\='ogonek-prefixify-region \"ogonek\")
+   (autoload \\='ogonek-deprefixify-region \"ogonek\")
 
  Cz/esto wyst/epuj/ace kombinacje wywo/la/n funkcji mo/zna dla wygody
  skr/oci/c i przypisa/c klawiszom. Oto praktyczne przyk/lady:
@@ -144,17 +144,17 @@ znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c 
nast/epuj/aco.
    (defun deprefixify-iso8859-2-region (start end)
      (interactive \"*r\")
      (ogonek-deprefixify-region start end ?/ \"iso8859-2\"))
-   (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
+   (global-set-key \"\\C-cd\" \\='deprefixify-iso8859-2-region) ; ctrl-c d
 
    (defun mazovia-to-iso8859-2 (start end)
      (interactive \"*r\")
      (ogonek-recode-region start end \"mazovia\" \"iso8859-2\"))
-   (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
+   (global-set-key \"\\C-cr\" \\='mazovia-to-iso8859-2) ; ctrl-c r
 
    (defun prefixify-iso8859-2-region (start end)
      (interactive \"*r\")
      (ogonek-prefixify-region start end \"iso8859-2\" ?/))
-   (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
+   (global-set-key \"\\C-cp\" \\='prefixify-iso8859-2-region) ; ctrl-c p
 
  Ka/zd/a operacj/e przekodowania mo/zna w ca/lo/sci odwo/la/c
  przez wykonanie polecenia `undo'.")
@@ -163,7 +163,7 @@ znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c 
nast/epuj/aco.
   "Display `ogonek-informacja' in an auxiliary *ogonek-jak* buffer."
   (interactive)
   (set-buffer  (get-buffer-create " *ogonek-jak*"))
-  (insert ogonek-informacja)
+  (insert (substitute-command-keys ogonek-informacja))
   (switch-to-buffer " *ogonek-jak*")
   (goto-char (point-min)))
 
@@ -233,10 +233,10 @@ The functions come in the following groups.
  to autoload the needed functions, for example by adding the
  following lines to your init file:
 
-   (autoload 'ogonek-how \"ogonek\")
-   (autoload 'ogonek-recode-region \"ogonek\")
-   (autoload 'ogonek-prefixify-region \"ogonek\")
-   (autoload 'ogonek-deprefixify-region \"ogonek\")
+   (autoload \\='ogonek-how \"ogonek\")
+   (autoload \\='ogonek-recode-region \"ogonek\")
+   (autoload \\='ogonek-prefixify-region \"ogonek\")
+   (autoload \\='ogonek-deprefixify-region \"ogonek\")
 
  The most frequent function calls can be abbreviated and assigned to
  keyboard keys. Here are a few practical examples:
@@ -262,7 +262,7 @@ The functions come in the following groups.
   "Display `ogonek-information' in an auxiliary *recode-how* buffer."
   (interactive "*")
   (set-buffer  (get-buffer-create " *ogonek-how*"))
-  (insert ogonek-information)
+  (insert (substitute-command-keys ogonek-information))
   (switch-to-buffer " *ogonek-how*")
   (goto-char (point-min)))
 
diff --git a/lisp/json.el b/lisp/json.el
index 5392a13..daa0c94 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -286,7 +286,7 @@ representation will be parsed correctly."
 (defun json-read-string ()
   "Read the JSON string at point."
   (unless (char-equal (json-peek) ?\")
-    (signal 'json-string-format (list "doesn’t start with ‘\"’!")))
+    (signal 'json-string-format (list "doesn't start with `\"'!")))
   ;; Skip over the '"'
   (json-advance)
   (let ((characters '())
diff --git a/lisp/kermit.el b/lisp/kermit.el
index d4a21f4..9b464ab 100644
--- a/lisp/kermit.el
+++ b/lisp/kermit.el
@@ -135,7 +135,7 @@ In this state, use LFD to send a line and end it with a 
carriage-return."
 (defun kermit-clean-on ()
   "Delete all null characters and ^M's from the kermit output.
 Note that another (perhaps better) way to do this is to use the
-command ‘kermit | tr -d '\\015'’."
+command `kermit | tr -d \\='\\015\\=''."
   (interactive)
   (set-process-filter (get-buffer-process (current-buffer))
                      'kermit-clean-filter))
diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el
index 89a58cf..7c44385 100644
--- a/lisp/leim/quail/cyrillic.el
+++ b/lisp/leim/quail/cyrillic.el
@@ -839,7 +839,7 @@ Sorry, but `ghe with upturn' is not included in ISO 8859-5."
  "ЯВЕРТЫ Roman transcription
 
 This layout is based on Roman transcription by phonemic resemblance.
-When preceded by a ‘/’, the second and the third rows (number key row) change
+When preceded by a `/', the second and the third rows (number key row) change
 as follows.
 
   keytop | Q  W  E  R  T  Y  U  I  O  P  A  S  D
@@ -1244,8 +1244,8 @@ Unicode based."
 This phonetic layout replaces all the Latin letters with Bulgarian
 \(Cyrillic) letters based on similarities in their pronunciation or look.
 
-Note that, since the letters ‘щ’, ‘ь’, ‘ю’ and ‘я’ are attached to the
-‘]’, ‘\’, ‘\\=`’ and ‘[’ keys respectively, Caps Lock does not affect them."
+Note that, since the letters `щ', `ь', `ю' and `я' are attached to the
+`]', `\', `\\=`' and `[' keys respectively, Caps Lock does not affect them."
 nil t t t t nil nil nil nil nil t)
 
 ;;  Ю  1! 2@ 3№ 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ьѝ
diff --git a/lisp/leim/quail/hebrew.el b/lisp/leim/quail/hebrew.el
index ac67fbf..d90b362 100644
--- a/lisp/leim/quail/hebrew.el
+++ b/lisp/leim/quail/hebrew.el
@@ -36,8 +36,8 @@
 
 Based on SI-1452 keyboard layout.
 Only Hebrew-related characters are considered.
- ‘q’ is used to switch levels instead of Alt-Gr.
- Maqaaf (־) is mapped to ‘/פ’.
+ `q' is used to switch levels instead of Alt-Gr.
+ Maqaaf (־) is mapped to `/פ'.
 " nil t t t t nil nil nil nil nil t)
 
 (quail-define-rules
@@ -113,8 +113,8 @@ Only Hebrew-related characters are considered.
 
 Based on latest draft of SI-1452 keyboard layout.
 Only Hebrew-related characters are considered.
- ‘\\=`’ is used to switch levels instead of Alt-Gr.
-Geresh is mapped to ‘\\=`k’.
+ `\\=`' is used to switch levels instead of Alt-Gr.
+Geresh is mapped to `\\=`k'.
 " nil t t t t nil nil nil nil nil t)
 
 (quail-define-rules
@@ -457,8 +457,8 @@ Provides access to all Hebrew characters suitable to Modern 
Hebrew.
 
 Based on Society of Biblical Literature's Tiro keyboard layout.
 Not suitable for modern Hebrew input.
- ‘q’ is used to switch levels instead of Alt-Gr.
- Combining dot above (Called Masora dot) (̇) is mapped to ‘q1’.
+ `q' is used to switch levels instead of Alt-Gr.
+ Combining dot above (Called Masora dot) (̇) is mapped to `q1'.
 " nil t t t t nil nil nil nil nil t)
 
 (quail-define-rules
@@ -603,8 +603,8 @@ Not suitable for modern Hebrew input.
 
 Based on Society of Biblical Literature's SIL keyboard layout.
 Phonetic and not suitable for modern Hebrew input.
- ‘\\=`’ is used to switch levels instead of Alt-Gr.
- Euro Sign (€) is mapped to ‘Z’.
+ `\\=`' is used to switch levels instead of Alt-Gr.
+ Euro Sign (€) is mapped to `Z'.
 " nil t t t t nil nil nil nil nil t)
 
 (quail-define-rules
diff --git a/lisp/leim/quail/latin-ltx.el b/lisp/leim/quail/latin-ltx.el
index 82c0aa3..3c84ba8 100644
--- a/lisp/leim/quail/latin-ltx.el
+++ b/lisp/leim/quail/latin-ltx.el
@@ -36,7 +36,7 @@
  "LaTeX-like input method for many characters.
 These characters are from the charsets used by the `utf-8' coding
 system, including many technical ones.  Examples:
- \\'a -> á  \\`{a} -> à
+ \\\\='a -> á  \\\\=`{a} -> à
  \\pi -> π  \\int -> ∫  ^1 -> ¹"
 
  '(("\t" . quail-completion))
@@ -184,7 +184,7 @@ system, including many technical ones.  Examples:
  ("\\H" ?̋)
  ("\\H{}" ?˝)
  ("\\U{o}" ?ő) ("\\Uo" ?ő) ;; FIXME: Was it just a typo?
- 
+
  ("\\OE" ?Œ) ;; ("{\\OE}" ?Œ)
  ("\\oe" ?œ) ;; ("{\\oe}" ?œ)
 
@@ -216,7 +216,7 @@ system, including many technical ones.  Examples:
            (name (if (match-end 1) (capitalize basename) (downcase basename))))
       (concat "^" (if (> (length name) 1) "\\") name)))
   "\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'")
- 
+
  ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name))))
  ;;  "\\`MODIFIER LETTER SMALL \\(.\\)\\'")
  ;; ("^\\1" "\\`MODIFIER LETTER CAPITAL \\(.\\)\\'")
@@ -694,7 +694,7 @@ system, including many technical ones.  Examples:
  ("\\defs" ?≙)                         ; per fuzz/zed
  ;; ("\\sqrt[3]" ?∛)
  ("\\llbracket" ?\〚)                   ; stmaryrd
- ("\\rrbracket" ?\〛) 
+ ("\\rrbracket" ?\〛)
  ;; ("\\lbag" ?\〚)                     ; fuzz
  ;; ("\\rbag" ?\〛)
  ("\\ldata" ?\《)                       ; fuzz/zed
diff --git a/lisp/leim/quail/thai.el b/lisp/leim/quail/thai.el
index 72e5020..7d0949e 100644
--- a/lisp/leim/quail/thai.el
+++ b/lisp/leim/quail/thai.el
@@ -46,9 +46,9 @@
  "Thai Kesmanee input method with TIS620 keyboard layout
 
 The difference from the ordinal Thai keyboard:
-    ‘฿’ and ‘๏’ are assigned to ‘\\’ and ‘|’ respectively,
-    ‘ฃ’ and ‘ฅ’ are assigned to ‘\\=`’ and ‘~’ respectively,
-    Don't know where to assign characters ‘๚’ and ‘๛’."
+    `฿' and `๏' are assigned to `\\' and `|' respectively,
+    `ฃ' and `ฅ' are assigned to `\\=`' and `~' respectively,
+    Don't know where to assign characters `๚' and `๛'."
  nil t t t t nil nil nil nil nil t)
 
 (thai-generate-quail-map
diff --git a/lisp/leim/quail/tibetan.el b/lisp/leim/quail/tibetan.el
index d5a92ca..93cb65b 100644
--- a/lisp/leim/quail/tibetan.el
+++ b/lisp/leim/quail/tibetan.el
@@ -155,7 +155,7 @@
             and to get da-drag in  -r-d, -l-d .)
   |     : Special signs.
 
-  Tsheg is assigned to SPC.  Space is assigned to period ‘.’.
+  Tsheg is assigned to SPC.  Space is assigned to period `.'.
 "
  nil nil nil nil nil nil nil nil
  'quail-tibetan-update-translation)
@@ -411,7 +411,7 @@
       +---------------------------------------------+
          |zཞ|xཟ|cའ|vཡ|bར|nལ|mཤ|,ས|.ཧ|/ཨ|
          +---------------------------------------+
-  The key ‘h’ is used for consonant stacking.
+  The key `h' is used for consonant stacking.
 
   [SHIFTED]
 
@@ -427,14 +427,14 @@
 
   DIFFERENCE FROM THE ORIGINAL TIBKEY:
 
-    1. Vowel ‘a’ should be typed explicitly by the key ‘A’.
+    1. Vowel `a' should be typed explicitly by the key `A'.
        This is really inconvenient.  But to make the coding
        scheme clear, it is desirable to have an explicit
-       vowel sign for ‘a’.
+       vowel sign for `a'.
     2. Tsheg is assigned to SPC key.  You can input a space
-       by typing ‘>’.
+       by typing `>'.
     4. To avoid the default stacking ���� and to obtain གཡ,
-       type ‘E’ instead of ‘v’ (=ཡ).
+       type `E' instead of `v' (=ཡ).
     3. There are many characters that are not supported in the
        current implementation (especially special signs).
        I hope I'll complete in a future revision.
diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el
index 70307f6..87f12ba 100644
--- a/lisp/ls-lisp.el
+++ b/lisp/ls-lisp.el
@@ -222,7 +222,7 @@ current year.  The OLD-TIME-FORMAT is used for older files. 
 To use ISO
 8601 dates, you could set:
 
 \(setq ls-lisp-format-time-list
-       '(\"%Y-%m-%d %H:%M\"
+       \\='(\"%Y-%m-%d %H:%M\"
          \"%Y-%m-%d      \"))"
   :type '(list (string :tag "Early time format")
               (string :tag "Old time format"))
diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el
index ccd8926..368e2ab 100644
--- a/lisp/mail/feedmail.el
+++ b/lisp/mail/feedmail.el
@@ -418,9 +418,9 @@ cases.  You can give a timeout for the prompt; see variable
 If nil, the prepped message will be shown, for confirmation or
 otherwise, in some window in the current frame without resizing
 anything.  That may or may not display enough of the message to
-distinguish it from others.  If set to the symbol ‘queued’, take
+distinguish it from others.  If set to the symbol `queued', take
 this action only when running the queue.  If set to the symbol
-‘immediate’, take this action only when sending immediately.  For
+`immediate', take this action only when sending immediately.  For
 any other non-nil value, take the action in both cases.  Even if
 you're not confirming the sending of immediate or queued messages,
 it can still be interesting to see a lot about them as they are
@@ -471,9 +471,9 @@ Addresses for the message envelope are deduced by examining
 appropriate address headers in the message.  Generally, they will show
 up in the list of deduced addresses in the order that the headers
 happen to appear (duplicate addresses are eliminated in any case).
-This variable can be set to the symbol ‘first’, in which case the
+This variable can be set to the symbol `first', in which case the
 Bcc:/Resent-Bcc: addresses will appear at the beginning in the list;
-or, it can be set to the symbol ‘last’, in which case they will appear
+or, it can be set to the symbol `last', in which case they will appear
 at the end of the list.
 
 Why should you care?  Well, maybe you don't, and certainly the same
@@ -484,7 +484,7 @@ addresses are not handled first, there can be substantial 
delays in
 seeing the message again.  Some configurations of sendmail, for example,
 seem to try to deliver to each addressee at least once, immediately
 and serially, so slow SMTP conversations can add up to a delay.  There
-is an option for either ‘first’ or ‘last’ because you might have a
+is an option for either `first' or `last' because you might have a
 delivery agent that processes the addresses backwards."
   :group 'feedmail-headers
   :type '(choice (const nil)
@@ -566,7 +566,7 @@ but common in some proprietary systems."
   "If non-nil and the email has no Sender: header, use this value.
 May be nil, in which case nothing in particular is done with respect
 to Sender: lines.  By design, will not replace an existing Sender:
-line, but you can achieve that with a fiddle-plex 'replace action.
+line, but you can achieve that with a fiddle-plex replace action.
 NB: it makes no sense to use the value t since there is no sensible
 default for Sender:.
 
@@ -1745,7 +1745,7 @@ applied to a file after you've just read it from disk: 
for example, a
 feedmail FQM message file from a queue.  You could use something like
 this:
 
-\(setq auto-mode-alist \(cons \'\(\"\\\\.fqm$\" . feedmail-vm-mail-mode\) 
auto-mode-alist\)\)
+\(setq auto-mode-alist \(cons \\='\(\"\\\\.fqm$\" . feedmail-vm-mail-mode\) 
auto-mode-alist\)\)
 "
   (feedmail-say-debug ">in-> feedmail-vm-mail-mode")
   (let ((the-buf (current-buffer)))
@@ -2054,7 +2054,7 @@ backup file names and the like)."
                ;; the handler for the condition-case
                (error (setq messages-skipped (1+ messages-skipped))
                       (ding t)
-                      (message "FQM: Trapped ‘%s’, message left in queue." 
(car signal-stuff))
+                      (message "FQM: Trapped `%s', message left in queue." 
(car signal-stuff))
                       (sit-for 3)
                       (message "FQM: Trap details: \"%s\""
                                (mapconcat 'identity (cdr signal-stuff) "\" 
\""))
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el
index 577cec0..cd9df1f 100644
--- a/lisp/mail/mailalias.el
+++ b/lisp/mail/mailalias.el
@@ -119,11 +119,11 @@ completed.  `pattern' is nil when 
`mail-directory-requery' is nil.
 
 The value might look like this:
 
-  '(remote-shell-program \"HOST\" \"-nl\" \"USER\" \"COMMAND\")
+  (remote-shell-program \"HOST\" \"-nl\" \"USER\" \"COMMAND\")
 
 or like this:
 
-  '(remote-shell-program \"HOST\" \"-n\" \"COMMAND '^\" pattern \"'\")"
+  (remote-shell-program \"HOST\" \"-n\" \"COMMAND \\='^\" pattern \"\\='\")"
   :type 'sexp
   :group 'mailalias)
 (put 'mail-directory-process 'risky-local-variable t)
@@ -512,7 +512,7 @@ PREFIX is the string we want to complete."
                                     mail-aliases))
                                (if (consp mail-local-names)
                                    mail-local-names)
-                               (or directory 
+                               (or directory
                                    (when (consp mail-directory-names)
                                      mail-directory-names)))
                        (lambda (a b)
diff --git a/lisp/mail/rfc2368.el b/lisp/mail/rfc2368.el
index 3c4e9b2..50ff2cf 100644
--- a/lisp/mail/rfc2368.el
+++ b/lisp/mail/rfc2368.el
@@ -66,16 +66,16 @@
 
 ;; describes 'mailto:'
 (defconst rfc2368-mailto-scheme-index 1
-  "Describes the ‘mailto:’ portion of the url.")
+  "Describes the `mailto:' portion of the url.")
 ;; i'm going to call this part the 'prequery'
 (defconst rfc2368-mailto-prequery-index 2
-  "Describes the portion of the url between ‘mailto:’ and ‘?’.")
+  "Describes the portion of the url between `mailto:' and `?'.")
 ;; i'm going to call this part the 'query'
 (defconst rfc2368-mailto-query-index 4
-  "Describes the portion of the url after ‘?’.")
+  "Describes the portion of the url after `?'.")
 
 (defun rfc2368-unhexify-string (string)
-  "Unhexify STRING -- e.g. ‘hello%20there’ -> ‘hello there’."
+  "Unhexify STRING -- e.g. `hello%20there' -> `hello there'."
   (replace-regexp-in-string "%[[:xdigit:]]\\{2\\}"
                            (lambda (match)
                              (string (string-to-number (substring match 1)
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 5b5ee4e..4c0f2b9 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -525,31 +525,33 @@ This also saves the value of `send-mail-function' via 
Customize."
          ;; Query the user.
          (with-temp-buffer
            (rename-buffer "*Emacs Mail Setup Help*" t)
-           (insert "\
+           (insert (substitute-command-keys "\
  Emacs is about to send an email message, but it has not been
  configured for sending email.  To tell Emacs how to send email:
 
- - Type `"
+ - Type `")
                    (propertize "mail client" 'face 'bold)
-                   "' to start your default email client and
-   pass it the message text.\n\n")
+                   (substitute-command-keys "\
+' to start your default email client and
+   pass it the message text.\n\n"))
            (and sendmail-program
                 (executable-find sendmail-program)
-                (insert "\
- - Type `"
+                (insert (substitute-command-keys "\
+ - Type `")
                         (propertize "transport" 'face 'bold)
-                        "' to invoke the system's mail transport agent
-   (the `"
+                        (substitute-command-keys "\
+' to invoke the system's mail transport agent
+   (the `")
                         sendmail-program
-                        "' program).\n\n"))
-           (insert "\
- - Type `"
+                        (substitute-command-keys "' program).\n\n")))
+           (insert (substitute-command-keys "\
+ - Type `")
                    (propertize "smtp" 'face 'bold)
-                   "' to send mail directly to an \"outgoing mail\" server.
+                   (substitute-command-keys "' to send mail directly to an 
\"outgoing mail\" server.
    (Emacs may prompt you for SMTP settings).
 
  Emacs will record your selection and will use it thereafter.
- To change it later, customize the option `send-mail-function'.\n")
+ To change it later, customize the option `send-mail-function'.\n"))
            (goto-char (point-min))
            (display-buffer (current-buffer))
            (let ((completion-ignore-case t))
diff --git a/lisp/man.el b/lisp/man.el
index c5dbcba..23b2110 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -104,7 +104,7 @@
   "Manpage cleaning filter command phrases.
 This variable contains a list of the following form:
 
-'((command-string phrase-string*)*)
+  ((command-string phrase-string*)*)
 
 Each phrase-string is concatenated onto the command-string to form a
 command filter.  The (standard) output (and standard error) of the Un*x
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index a8c5e33..700d22c 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -91,7 +91,7 @@ user's MH directory, then in the system MH lib directory.")
 Default is \"replgroupcomps\".
 
 This file is used to form replies to the sender and all recipients of
-a message. Only used if ‘(mh-variant-p 'nmh)’ is non-nil.
+a message. Only used if (mh-variant-p \\='nmh) is non-nil.
 If not an absolute file name, the file is searched for first in the
 user's MH directory, then in the system MH lib directory.")
 
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 82c7a4d..9865d08 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -162,7 +162,7 @@ compatibility with versions of Emacs that lack the variable
 
     (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
            (image-load-path (cons (car load-path)
-                                  (when (boundp 'image-load-path)
+                                  (when (boundp \\='image-load-path)
                                     image-load-path))))
       (mh-tool-bar-folder-buttons-init))"
   (unless library (error "No library specified"))
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 22e4cd7..7cdf67c 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -1353,8 +1353,8 @@ show window is toggled off."
 This option is consulted when a prefix argument is used with
 \\[mh-sort-folder]. Normally default arguments to \"sortm\" are
 specified in the MH profile. This option may be used to provide
-an alternate view. For example, ‘(\"-nolimit\" \"-textfield\"
-\"subject\")’ is a useful setting."
+an alternate view. For example, (\"-nolimit\" \"-textfield\"
+\"subject\") is a useful setting."
   :type '(repeat string)
   :group 'mh-folder
   :package-version '(MH-E . "8.0"))
@@ -1657,7 +1657,7 @@ using the Emacs 22 command \"emacsclient\" as follows:
         origMode
         polltime 10
         headertime 0
-        command emacsclient --eval '(mh-inc-spool-mh-e)'
+        command emacsclient --eval \\='(mh-inc-spool-mh-e)\\='
 
 In XEmacs, the command \"gnuclient\" is used in a similar
 fashion."
diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el
index 2e73f62..259f60d 100644
--- a/lisp/mh-e/mh-seq.el
+++ b/lisp/mh-e/mh-seq.el
@@ -390,7 +390,7 @@ then a non-empty sequence is read."
   "Read and return a sequence name.
 Prompt with PROMPT, raise an error if the sequence is empty and
 the NOT-EMPTY flag is non-nil, and supply an optional DEFAULT
-sequence. A reply of ‘%’ defaults to the first sequence
+sequence. A reply of `%' defaults to the first sequence
 containing the current message."
   (let* ((input (completing-read (format "%s sequence%s: " prompt
                                          (if default
@@ -766,7 +766,7 @@ completion is over."
   "Parse LINE to generate folder name, unseen messages and total messages.
 If CURRENT-FOLDER is non-nil then it contains the current folder
 name and it is used to avoid problems in corner cases involving
-folders whose names end with a ‘+’ character."
+folders whose names end with a `+' character."
   (with-temp-buffer
     (insert line)
     (goto-char (point-max))
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index 060da46..643674a 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -419,21 +419,21 @@ names and the function is called when OUTPUT is 
available."
                                         return-nil-if-folder-empty)
   "Normalizes FOLDER name.
 
-Makes sure that two ‘/’ characters never occur next to each
-other. Also all occurrences of ‘..’ and ‘.’ are suitably
+Makes sure that two `/' characters never occur next to each
+other. Also all occurrences of `..' and `.' are suitably
 processed. So \"+inbox/../news\" will be normalized to \"+news\".
 
-If optional argument EMPTY-STRING-OKAY is nil then a ‘+’ is added
+If optional argument EMPTY-STRING-OKAY is nil then a `+' is added
 at the front if FOLDER lacks one. If non-nil and FOLDER is the
 empty string then nothing is added.
 
 If optional argument DONT-REMOVE-TRAILING-SLASH is non-nil then a
-trailing ‘/’ if present is retained (if present), otherwise it is
+trailing `/' if present is retained (if present), otherwise it is
 removed.
 
 If optional argument RETURN-NIL-IF-FOLDER-EMPTY is non-nil, then
 return nil if FOLDER is \"\" or \"+\". This is useful when
-normalizing the folder for the ‘folders’ command which displays
+normalizing the folder for the `folders' command which displays
 the directories in / if passed \"+\". This is usually not
 desired. If this argument is non-nil, then EMPTY-STRING-OKAY has
 no effect."
diff --git a/lisp/mouse-copy.el b/lisp/mouse-copy.el
index d3c3c80..6198a12 100644
--- a/lisp/mouse-copy.el
+++ b/lisp/mouse-copy.el
@@ -154,7 +154,7 @@ If you have the bug (or the real fix :-), please let me 
know."
   "Drag out a secondary selection, then paste it at the current point.
 
 To test this function, evaluate:
-       (global-set-key [M-down-mouse-1] 'mouse-drag-secondary-pasting)
+       (global-set-key [M-down-mouse-1] \\='mouse-drag-secondary-pasting)
 put the point at one place, then click and drag over some other region."
   (interactive "e")
   ;; Work-around: We see and react to each part of a multi-click event
diff --git a/lisp/mouse-drag.el b/lisp/mouse-drag.el
index 945c305..2b61096 100644
--- a/lisp/mouse-drag.el
+++ b/lisp/mouse-drag.el
@@ -206,7 +206,7 @@ about which direction is natural.  Perhaps it has to do 
with which
 hemisphere you're in.)
 
 To test this function, evaluate:
-    (global-set-key [down-mouse-2] 'mouse-drag-throw)"
+    (global-set-key [down-mouse-2] \\='mouse-drag-throw)"
   (interactive "e")
   ;; we want to do save-selected-window, but that requires 19.29
   (let* ((start-posn (event-start start-event))
@@ -266,7 +266,7 @@ Drag scrolling is identical to the \"hand\" option in 
MacPaint, or the
 middle button in Tk text widgets.
 
 To test this function, evaluate:
-    (global-set-key [down-mouse-2] 'mouse-drag-drag)"
+    (global-set-key [down-mouse-2] \\='mouse-drag-drag)"
   (interactive "e")
   ;; we want to do save-selected-window, but that requires 19.29
   (let* ((start-posn (event-start start-event))
diff --git a/lisp/mouse.el b/lisp/mouse.el
index f52b83b..6584733 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -146,7 +146,7 @@ items `Turn Off' and `Help'."
          (describe-minor-mode-completion-table-for-indicator))))
   (let* ((minor-mode (lookup-minor-mode-from-indicator indicator))
          (mm-fun (or (get minor-mode :minor-mode-function) minor-mode)))
-    (unless minor-mode (error "Cannot find minor mode for ‘%s’" indicator))
+    (unless minor-mode (error "Cannot find minor mode for `%s'" indicator))
     (let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist)))
            (menu (and (keymapp map) (lookup-key map [menu-bar]))))
       (setq menu
diff --git a/lisp/mpc.el b/lisp/mpc.el
index 59581f3..b7c19a9 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -253,6 +253,7 @@ defaults to 6600 and HOST defaults to localhost."
 
 (defun mpc--proc-connect (host)
   (let ((port 6600)
+        local
         pass)
 
     (when (string-match "\\`\\(?:\\(.*\\)@\\)?\\(.*?\\)\\(?::\\(.*\\)\\)?\\'"
@@ -267,6 +268,8 @@ defaults to 6600 and HOST defaults to localhost."
                 (if (string-match "[^[:digit:]]" v)
                     (string-to-number v)
                   v)))))
+    (when (string-prefix-p "/" host)    ;FIXME: Use file-name-absolute-p?
+      (setq local t))
 
     (mpc--debug "Connecting to %s:%s..." host port)
     (with-current-buffer (get-buffer-create (format " *mpc-%s:%s*" host port))
@@ -279,7 +282,10 @@ defaults to 6600 and HOST defaults to localhost."
       (let* ((coding-system-for-read 'utf-8-unix)
              (coding-system-for-write 'utf-8-unix)
              (proc (condition-case err
-                       (open-network-stream "MPC" (current-buffer) host port)
+                       (make-network-process :name "MPC" :buffer 
(current-buffer)
+                                             :host (unless local host)
+                                             :service (if local host port)
+                                             :family (if local 'local))
                      (error (user-error (error-message-string err))))))
         (when (processp mpc-proc)
           ;; Inherit the properties of the previous connection.
@@ -1751,7 +1757,7 @@ A value of t means the main playlist.")
                      (completing-read "Rename playlist: "
                                       (mpc-cmd-list 'Playlist)
                                       nil 'require-match)))
-          (newname (read-string (format-message "Rename ‘%s’ to: " oldname))))
+          (newname (read-string (format-message "Rename `%s' to: " oldname))))
      (if (zerop (length newname))
          (error "Aborted")
        (list oldname newname))))
@@ -2630,6 +2636,8 @@ This is used so that they can be compared with `eq', 
which is needed for
   (interactive
    (progn
      (if current-prefix-arg
+         ;; FIXME: We should provide some completion here, especially for the
+         ;; case where the user specifies a local socket/file name.
          (setq mpc-host (read-string "MPD host and port: " nil nil mpc-host)))
      nil))
   (let* ((song-buf (mpc-songs-buf))
diff --git a/lisp/msb.el b/lisp/msb.el
index b717dcc..0351bda 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -746,7 +746,7 @@ to the buffer-list variable in FUNCTION-INFO."
       (error (unless msb--error
               (setq msb--error
                     (format-message
-                     "In msb-menu-cond, error for buffer ‘%s’."
+                     "In msb-menu-cond, error for buffer `%s'."
                      (buffer-name buffer)))
               (error "%s" msb--error))))))
 
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 38b1604..bb83514 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -4626,7 +4626,7 @@ NEWNAME should be the name to give the new compressed or 
uncompressed file.")
            (format  "%s %s \"%s\""     ; remsh -l USER does not work well
                                        ; on a hp-ux machine I tried
                     remote-shell-program host command))
-      (ange-ftp-message "Remote command ‘%s’ ..." command)
+      (ange-ftp-message "Remote command `%s' ..." command)
       ;; Cannot call ange-ftp-real-dired-run-shell-command here as it
       ;; would prepend "cd default-directory" --- which bombs because
       ;; default-directory is in ange-ftp syntax for remote file names.
@@ -5978,7 +5978,7 @@ Other orders of $ and _ seem to all work just fine.")
 
 (defcustom ange-ftp-bs2000-special-prefix
   "X"
-  "Prefix used for filenames starting with ‘#’ or address@hidden"
+  "Prefix used for filenames starting with `#' or `@'."
   :group 'ange-ftp
   :type 'string)
 
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 3f8cb84..757e368 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -439,7 +439,7 @@ For example, adding to the default a specific translation 
of an ange-ftp
 address to an HTTP URL:
 
     (setq browse-url-filename-alist
-         '((\"/address@hidden:/home/www/html/\" .
+         \\='((\"/address@hidden:/home/www/html/\" .
             \"http://www.acme.co.uk/\";)
             (\"^/\\(address@hidden|address@hidden)?\\([^:]+\\):/*\" . 
\"ftp://\\2/\";)
             (\"^/\\([^:@address@hidden)?\\([^:]+\\):/*\" . \"ftp://\\1\\2/\";)
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index cc53e04..b559ff6 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -851,14 +851,14 @@ t if it successfully authenticates, nil otherwise."
        (setq user (or imap-username
                       (read-from-minibuffer
                        (format-message
-                        "imap: username for %s (using stream ‘%s’): "
+                        "imap: username for %s (using stream `%s'): "
                         imap-server imap-stream)
                        (or user imap-default-user))))
        (setq passwd
              (or imap-password
                  (read-passwd
                   (format-message
-                   "imap: password for address@hidden (using authenticator 
‘%s’): "
+                   "imap: password for address@hidden (using authenticator 
`%s'): "
                    user imap-server imap-auth))))
        (when (and user passwd)
          (if (funcall loginfunc user passwd)
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index 8a9236c..a73b4df 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -398,7 +398,7 @@ Overwrite existing entry? ")
                                (concat "\n\n" (make-string 65 ?=)
 "\nYou can now customize your saved Mairix searches by modifying\n\
 the variable mairix-saved-searches. Don't forget to save your\nchanges \
-in your .emacs by pressing ‘Save for Future Sessions’.\n"
+in your .emacs by pressing `Save for Future Sessions'.\n"
 (make-string 65 ?=) "\n")))
 
 (autoload 'mail-strip-quoted-names "mail-utils")
@@ -668,7 +668,7 @@ Fill in VALUES if based on an article."
             "    ^substring=  to match the substring at the beginning of a 
word.\n"))
     (widget-insert
      (format-message
-      "Whitespace will be converted to ‘,’ (i.e. AND).  Use ‘/’ for OR.\n\n"))
+      "Whitespace will be converted to `,' (i.e. AND).  Use `/' for OR.\n\n"))
     (setq mairix-widgets (mairix-widget-build-editable-fields values))
     (when (member 'flags mairix-widget-other)
       (widget-insert "\nFlags:\n      Seen:     ")
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 9277b09..6c80e62 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -848,8 +848,8 @@ Argument BUFFER is the buffer of the retrieval process."
                newsticker--error-headline
                (format-message
                 (concat "%s: Newsticker could not retrieve news from %s.\n"
-                        "Return status: ‘%s’\n"
-                        "Command was ‘%s’")
+                        "Return status: `%s'\n"
+                        "Command was `%s'")
                 (format-time-string "%A, %H:%M")
                 feed-name event command)
                ""
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el
index ef8507e..4eef580 100644
--- a/lisp/net/newst-treeview.el
+++ b/lisp/net/newst-treeview.el
@@ -1269,7 +1269,7 @@ Note: does not update the layout."
                    (file-exists-p newsticker-groups-filename)
                    (y-or-n-p
                     (format-message
-                     (concat "Obsolete variable ‘newsticker-groups-filename’ "
+                     (concat "Obsolete variable `newsticker-groups-filename' "
                              "points to existing file \"%s\".\n"
                              "Read it? ")
                      newsticker-groups-filename))
@@ -1281,7 +1281,7 @@ Note: does not update the layout."
          (file-exists-p newsticker-groups-filename)
         (y-or-n-p (format-message
                     (concat "Delete the file \"%s\",\nto which the obsolete "
-                            "variable ‘newsticker-groups-filename’ points ? ")
+                            "variable `newsticker-groups-filename' points ? ")
                     newsticker-groups-filename))
         (delete-file newsticker-groups-filename))
     (when buf
diff --git a/lisp/net/ntlm.el b/lisp/net/ntlm.el
index 5f02e29..ff7e79e 100644
--- a/lisp/net/ntlm.el
+++ b/lisp/net/ntlm.el
@@ -3,8 +3,9 @@
 ;; Copyright (C) 2001, 2007-2015 Free Software Foundation, Inc.
 
 ;; Author: Taro Kawagishi <address@hidden>
-;; Keywords: NTLM, SASL
-;; Version: 1.00
+;; Maintainer: Thomas Fitzsimmons <address@hidden>
+;; Keywords: NTLM, SASL, comm
+;; Version: 2.00
 ;; Created: February 2001
 
 ;; This file is part of GNU Emacs.
@@ -65,6 +66,27 @@
 ;;; Code:
 
 (require 'md4)
+(require 'hmac-md5)
+(require 'calc)
+
+(defgroup ntlm nil
+  "NTLM (NT LanManager) authentication."
+  :version "25.1"
+  :group 'comm)
+
+(defcustom ntlm-compatibility-level 5
+  "The NTLM compatibility level.
+Ordered from 0, the oldest, least-secure level through 5, the
+newest, most-secure level.  Newer servers may reject lower
+levels.  At levels 3 through 5, send LMv2 and NTLMv2 responses.
+At levels 0, 1 and 2, send LM and NTLM responses.
+
+In this implementation, levels 0, 1 and 2 are the same (old,
+insecure), and levels 3, 4 and 5 are the same (new, secure).  If
+NTLM authentication isn't working at level 5, try level 0.  The
+other levels are only present because other clients have six
+levels."
+  :type '(choice (const 0) (const 1) (const 2) (const 3) (const 4) (const 5)))
 
 ;;;
 ;;; NTLM authentication interface functions
@@ -112,6 +134,39 @@ is not given."
        `(string-as-unibyte ,string)
       string)))
 
+(defun ntlm-compute-timestamp ()
+  "Compute an NTLMv2 timestamp.
+Return a unibyte string representing the number of tenths of a
+microsecond since January 1, 1601 as a 64-bit little-endian
+signed integer."
+  (let* ((s-to-tenths-of-us "mul(add(lsh($1,16),$2),10000000)")
+        (us-to-tenths-of-us "mul($3,10)")
+        (ps-to-tenths-of-us "idiv($4,100000)")
+        (tenths-of-us-since-jan-1-1601
+         (apply 'calc-eval (concat "add(add(add("
+                                   s-to-tenths-of-us ","
+                                   us-to-tenths-of-us "),"
+                                   ps-to-tenths-of-us "),"
+                                   ;; tenths of microseconds between
+                                   ;; 1601-01-01 and 1970-01-01
+                                   "116444736000000000)")
+                ;; add trailing zeros to support old current-time formats
+                'rawnum (append (current-time) '(0 0))))
+        result-bytes)
+    (dotimes (byte 8)
+      (push (calc-eval "and($1,16#FF)" 'rawnum tenths-of-us-since-jan-1-1601)
+           result-bytes)
+      (setq tenths-of-us-since-jan-1-1601
+           (calc-eval "rsh($1,8,64)" 'rawnum tenths-of-us-since-jan-1-1601)))
+    (apply 'unibyte-string (nreverse result-bytes))))
+
+(defun ntlm-generate-nonce ()
+  "Generate a random nonce, not to be used more than once.
+Return a random eight byte unibyte string."
+  (unibyte-string
+   (random 256) (random 256) (random 256) (random 256)
+   (random 256) (random 256) (random 256) (random 256)))
+
 (defun ntlm-build-auth-response (challenge user password-hashes)
   "Return the response string to a challenge string CHALLENGE given by
 the NTLM based server for the user USER and the password hash list
@@ -128,9 +183,9 @@ by PASSWORD-HASHES.  PASSWORD-HASHES should be a return 
value of
         uDomain-len uDomain-offs
         ;; response struct and its fields
         lmRespData                     ;lmRespData, 24 bytes
-        ntRespData                     ;ntRespData, 24 bytes
+        ntRespData                     ;ntRespData, variable length
         domain                         ;ascii domain string
-        lu ld off-lm off-nt off-d off-u off-w off-s)
+        lu ld ln off-lm off-nt off-d off-u off-w off-s)
     ;; extract domain string from challenge string
     (setq uDomain-len (md4-unpack-int16 (substring uDomain 0 2)))
     (setq uDomain-offs (md4-unpack-int32 (substring uDomain 4 8)))
@@ -144,30 +199,63 @@ by PASSWORD-HASHES.  PASSWORD-HASHES should be a return 
value of
       (setq domain (substring user (1+ (match-beginning 0))))
       (setq user (substring user 0 (match-beginning 0))))
 
-    ;; check if "negotiate NTLM2 key" flag is set in type 2 message
-    (if (not (zerop (logand (aref flags 2) 8)))
-       (let (randomString
-             sessionHash)
-         ;; generate NTLM2 session response data
-         (setq randomString (string-make-unibyte
-                             (concat
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256))
-                              (make-string 1 (random 256)))))
-         (setq sessionHash (secure-hash 'md5
-                                        (concat challengeData randomString)
-                                        nil nil t))
-         (setq sessionHash (substring sessionHash 0 8))
-
-         (setq lmRespData (concat randomString (make-string 16 0)))
-         (setq ntRespData (ntlm-smb-owf-encrypt
-                           (cadr password-hashes) sessionHash)))
-      (progn
+    (unless (and (integerp ntlm-compatibility-level)
+                (>= ntlm-compatibility-level 0)
+                (<= ntlm-compatibility-level 5))
+      (error "Invalid ntlm-compatibility-level value"))
+    (if (and (>= ntlm-compatibility-level 3)
+            (<= ntlm-compatibility-level 5))
+       ;; extract target information block, if it is present
+       (if (< (cdr uDomain-offs) 48)
+           (error "Failed to find target information block")
+         (let* ((targetInfo-len (md4-unpack-int16 (substring rchallenge
+                                                             40 42)))
+                (targetInfo-offs (md4-unpack-int32 (substring rchallenge
+                                                              44 48)))
+                (targetInfo (substring rchallenge
+                                       (cdr targetInfo-offs)
+                                       (+ (cdr targetInfo-offs)
+                                          targetInfo-len)))
+                (upcase-user (upcase (ntlm-ascii2unicode user (length user))))
+                (ntlmv2-hash (hmac-md5 (concat upcase-user
+                                               (ntlm-ascii2unicode
+                                                domain (length domain)))
+                                       (cadr password-hashes)))
+                (nonce (ntlm-generate-nonce))
+                (blob (concat (make-string 2 1)
+                              (make-string 2 0)        ; blob signature
+                              (make-string 4 0)        ; reserved value
+                              (ntlm-compute-timestamp) ; timestamp
+                              nonce                    ; client nonce
+                              (make-string 4 0)        ; unknown
+                              targetInfo               ; target info
+                              (make-string 4 0)))      ; unknown
+                ;; for reference: LMv2 interim calculation
+                ;; (lm-interim (hmac-md5 (concat challengeData nonce)
+                ;;                       ntlmv2-hash))
+                (nt-interim (hmac-md5 (concat challengeData blob)
+                                      ntlmv2-hash)))
+           ;; for reference: LMv2 field, but match other clients that
+           ;; send all zeros
+           ;; (setq lmRespData (concat lm-interim nonce))
+           (setq lmRespData (make-string 24 0))
+           (setq ntRespData (concat nt-interim blob))))
+      ;; compatibility level is 2, 1 or 0
+      ;; level 2 should be treated specially but it's not clear how,
+      ;; so just treat it the same as levels 0 and 1
+      ;; check if "negotiate NTLM2 key" flag is set in type 2 message
+      (if (not (zerop (logand (aref flags 2) 8)))
+         (let (randomString
+               sessionHash)
+           ;; generate NTLM2 session response data
+           (setq randomString (ntlm-generate-nonce))
+           (setq sessionHash (secure-hash 'md5
+                                          (concat challengeData randomString)
+                                          nil nil t))
+           (setq sessionHash (substring sessionHash 0 8))
+           (setq lmRespData (concat randomString (make-string 16 0)))
+           (setq ntRespData (ntlm-smb-owf-encrypt
+                             (cadr password-hashes) sessionHash)))
        ;; generate response data
        (setq lmRespData
              (ntlm-smb-owf-encrypt (car password-hashes) challengeData))
@@ -177,12 +265,13 @@ by PASSWORD-HASHES.  PASSWORD-HASHES should be a return 
value of
     ;; get offsets to fields to pack the response struct in a string
     (setq lu (length user))
     (setq ld (length domain))
+    (setq ln (length ntRespData))
     (setq off-lm 64)                   ;offset to string 'lmResponse
     (setq off-nt (+ 64 24))            ;offset to string 'ntResponse
-    (setq off-d (+ 64 48))             ;offset to string 'uDomain
-    (setq off-u (+ 64 48 (* 2 ld)))    ;offset to string 'uUser
-    (setq off-w (+ 64 48 (* 2 (+ ld lu)))) ;offset to string 'uWks
-    (setq off-s (+ 64 48 (* 2 (+ ld lu lu)))) ;offset to string 'sessionKey
+    (setq off-d (+ 64 24 ln))          ;offset to string 'uDomain
+    (setq off-u (+ 64 24 ln (* 2 ld))) ;offset to string 'uUser
+    (setq off-w (+ 64 24 ln (* 2 (+ ld lu)))) ;offset to string 'uWks
+    (setq off-s (+ 64 24 ln (* 2 (+ ld lu lu)))) ;offset to string 'sessionKey
     ;; pack the response struct in a string
     (concat "NTLMSSP\0"                        ;response ident field, 8 bytes
            (md4-pack-int32 '(0 . 3))   ;response msgType field, 4 bytes
@@ -194,9 +283,9 @@ by PASSWORD-HASHES.  PASSWORD-HASHES should be a return 
value of
            (md4-pack-int32 (cons 0 off-lm)) ;field offset
 
            ;; ntResponse field, 8 bytes
-           ;;AddBytes(response,ntResponse,ntRespData,24);
-           (md4-pack-int16 24)         ;len field
-           (md4-pack-int16 24)         ;maxlen field
+           ;;AddBytes(response,ntResponse,ntRespData,ln);
+           (md4-pack-int16 ln) ;len field
+           (md4-pack-int16 ln) ;maxlen field
            (md4-pack-int32 (cons 0 off-nt)) ;field offset
 
            ;; uDomain field, 8 bytes
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index cd5bbbd..df06350 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -926,7 +926,7 @@ The list is updated automatically by 
`defun-rcirc-command'.")
 
 (defun rcirc-complete ()
   "Cycle through completions from list of nicks in channel or IRC commands.
-IRC command completion is performed only if ‘/’ is the first input char."
+IRC command completion is performed only if `/' is the first input char."
   (interactive)
   (unless (rcirc-looking-at-input)
     (error "Point not located after rcirc prompt"))
diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el
index c0dcc23..da46ec3 100644
--- a/lisp/net/rlogin.el
+++ b/lisp/net/rlogin.el
@@ -175,7 +175,7 @@ function `rlogin-directory-tracking-mode' rather than 
simply setting the
 variable."
   (interactive (list
                (read-from-minibuffer (format-message
-                                       "Arguments for ‘%s’ (hostname first): "
+                                       "Arguments for `%s' (hostname first): "
                                        (file-name-nondirectory rlogin-program))
                                      nil nil nil 'rlogin-history)
                current-prefix-arg))
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index a05108d..ada2767 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -489,7 +489,7 @@ structure predicate for the type of element you want to 
retrieve.
 For example, to retrieve a message named \"foo\" when other
 elements named \"foo\" exist in the WSDL you could use:
 
-  (soap-wsdl-get \"foo\" WSDL 'soap-message-p)
+  (soap-wsdl-get \"foo\" WSDL \\='soap-message-p)
 
 If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns' will be
 used to resolve the namespace alias."
diff --git a/lisp/net/tls.el b/lisp/net/tls.el
index 544aec5..48e6a42 100644
--- a/lisp/net/tls.el
+++ b/lisp/net/tls.el
@@ -137,7 +137,7 @@ the external program knows about the root certificates you
 consider trustworthy, e.g.:
 
 \(setq tls-program
-      '(\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h\"
+      \\='(\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p 
%h\"
        \"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h 
--protocols ssl3\"
        \"openssl s_client -connect %h:%p -CAfile 
/etc/ssl/certs/ca-certificates.crt -no_ssl2 -ign_eof\"))"
   :type '(choice (const :tag "Always" t)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 6cec3c5..0969048 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -972,14 +972,14 @@ checked via the following code:
         (erase-buffer)
         (let ((proc (start-process (buffer-name) (current-buffer)
                                    \"ssh\" \"-l\" user host \"wc\" \"-c\")))
-          (when (memq (process-status proc) '(run open))
+          (when (memq (process-status proc) \\='(run open))
             (process-send-string proc (make-string sent ?\\ ))
             (process-send-eof proc)
             (process-send-eof proc))
           (while (not (progn (goto-char (point-min))
                              (re-search-forward \"\\\\w+\" (point-max) t)))
             (accept-process-output proc 1))
-          (when (memq (process-status proc) '(run open))
+          (when (memq (process-status proc) \\='(run open))
             (setq received (string-to-number (match-string 0)))
             (delete-process proc)
             (message \"Bytes sent: %s\\tBytes received: %s\" sent received)
@@ -3615,7 +3615,7 @@ This is needed in order to hide 
`last-coding-system-used', which is set
 for process communication also."
   (with-current-buffer (process-buffer proc)
     ;; FIXME: If there is a gateway process, we need communication
-    ;; between several processes.  Too complicate to implement, so we
+    ;; between several processes.  Too complicated to implement, so we
     ;; read output from all processes.
     (let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc))
          buffer-read-only last-coding-system-used)
diff --git a/lisp/obsolete/fast-lock.el b/lisp/obsolete/fast-lock.el
index 0f57dfd..7e3dd66 100644
--- a/lisp/obsolete/fast-lock.el
+++ b/lisp/obsolete/fast-lock.el
@@ -336,7 +336,7 @@ If nil, means information for all faces will be saved.")
 With arg, turn Fast Lock mode on if and only if arg is positive and the buffer
 is associated with a file.  Enable it automatically in your `~/.emacs' by:
 
- (setq font-lock-support-mode 'fast-lock-mode)
+ (setq font-lock-support-mode \\='fast-lock-mode)
 
 If Fast Lock mode is enabled, and the current buffer does not contain any text
 properties, any associated Font Lock cache is used if its timestamp matches the
@@ -538,7 +538,7 @@ If the same file has different cache file names when edited 
on different
 machines, e.g., on one machine the cache file name has the prefix `#home',
 perhaps due to automount, try putting in your `~/.emacs' something like:
 
- (setq directory-abbrev-alist (cons '(\"^/home/\" . \"/\") 
directory-abbrev-alist))
+ (setq directory-abbrev-alist (cons \\='(\"^/home/\" . \"/\") 
directory-abbrev-alist))
 
 Emacs automagically removes the common `/tmp_mnt' automount prefix by default.
 
diff --git a/lisp/obsolete/iswitchb.el b/lisp/obsolete/iswitchb.el
index 61f9d7f..4121e65 100644
--- a/lisp/obsolete/iswitchb.el
+++ b/lisp/obsolete/iswitchb.el
@@ -1096,7 +1096,7 @@ Return the modified list with the last element prepended 
to it."
              (and iswitchb-prompt-newbuffer
                   (y-or-n-p
                    (format-message
-                    "No buffer matching ‘%s’, create one? "
+                    "No buffer matching `%s', create one? "
                     buf)))))
        ;; then create a new buffer
        (progn
diff --git a/lisp/obsolete/landmark.el b/lisp/obsolete/landmark.el
index 39684a7..91c3387 100644
--- a/lisp/obsolete/landmark.el
+++ b/lisp/obsolete/landmark.el
@@ -866,7 +866,7 @@ If the game is finished, this command requests for another 
game."
   (move-to-column (+ landmark-x-offset (* landmark-square-width (1- x)))))
 
 (defun landmark-plot-square (square value)
-  "Draw ‘X’, ‘O’ or ‘.’ on SQUARE depending on VALUE, leave point there."
+  "Draw `X', `O' or `.' on SQUARE depending on VALUE, leave point there."
   (or (= value 1)
       (landmark-goto-square square))
   (let ((inhibit-read-only t))
diff --git a/lisp/obsolete/lazy-lock.el b/lisp/obsolete/lazy-lock.el
index 885a11f..79afd80 100644
--- a/lisp/obsolete/lazy-lock.el
+++ b/lisp/obsolete/lazy-lock.el
@@ -466,7 +466,7 @@ See also `lazy-lock-stealth-load'."
 With arg, turn Lazy Lock mode on if and only if arg is positive.  Enable it
 automatically in your `~/.emacs' by:
 
- (setq font-lock-support-mode 'lazy-lock-mode)
+ (setq font-lock-support-mode \\='lazy-lock-mode)
 
 For a newer font-lock support mode with similar functionality, see
 `jit-lock-mode'.  Eventually, Lazy Lock mode will be deprecated in
diff --git a/lisp/obsolete/otodo-mode.el b/lisp/obsolete/otodo-mode.el
index be067f8..1e9f7e4 100644
--- a/lisp/obsolete/otodo-mode.el
+++ b/lisp/obsolete/otodo-mode.el
@@ -648,7 +648,7 @@ If point is on an empty line, insert the entry there."
     (forward-line (1- todo-previous-line))
     (let ((item (todo-item-string-start)))
       (setq todo-previous-answer
-            (y-or-n-p (format-message "More important than ‘%s’? " item)))))
+            (y-or-n-p (format-message "More important than `%s'? " item)))))
   todo-previous-answer)
 (defalias 'todo-ask-p 'todo-more-important-p)
 
diff --git a/lisp/obsolete/pgg-gpg.el b/lisp/obsolete/pgg-gpg.el
index cd29c61..f3d63eb 100644
--- a/lisp/obsolete/pgg-gpg.el
+++ b/lisp/obsolete/pgg-gpg.el
@@ -122,7 +122,7 @@
                  (insert-file-contents output-file-name)))
            (set-buffer errors-buffer)
            (if (memq status '(stop signal))
-               (error "%s exited abnormally: ‘%s’" program exit-status))
+               (error "%s exited abnormally: `%s'" program exit-status))
            (if (= 127 exit-status)
                (error "%s could not be found" program))))
       (if passphrase-with-newline
diff --git a/lisp/obsolete/pgg-pgp.el b/lisp/obsolete/pgg-pgp.el
index ee7af04..af2d7a8 100644
--- a/lisp/obsolete/pgg-pgp.el
+++ b/lisp/obsolete/pgg-pgp.el
@@ -99,7 +99,7 @@ Bourne shell or its equivalent \(not tcsh) is needed for 
\"2>\"."
            (pgg-convert-lbt-region (point-min)(point-max) 'LF)
 
            (if (memq status '(stop signal))
-               (error "%s exited abnormally: ‘%s’" program exit-status))
+               (error "%s exited abnormally: `%s'" program exit-status))
            (if (= 127 exit-status)
                (error "%s could not be found" program))
 
diff --git a/lisp/obsolete/pgg-pgp5.el b/lisp/obsolete/pgg-pgp5.el
index d87c6fd..bbc08c4 100644
--- a/lisp/obsolete/pgg-pgp5.el
+++ b/lisp/obsolete/pgg-pgp5.el
@@ -115,7 +115,7 @@ Bourne shell or its equivalent \(not tcsh) is needed for 
\"2>\"."
            (pgg-convert-lbt-region (point-min)(point-max) 'LF)
 
            (if (memq status '(stop signal))
-               (error "%s exited abnormally: ‘%s’" program exit-status))
+               (error "%s exited abnormally: `%s'" program exit-status))
            (if (= 127 exit-status)
                (error "%s could not be found" program))
 
diff --git a/lisp/obsolete/sym-comp.el b/lisp/obsolete/sym-comp.el
index c633bd5..ac67963 100644
--- a/lisp/obsolete/sym-comp.el
+++ b/lisp/obsolete/sym-comp.el
@@ -165,9 +165,9 @@ Uses `symbol-completion-symbol-function' and
 used something like this in a major mode which provides symbol
 completion:
 
-  (if (featurep 'hippie-exp)
-      (set (make-local-variable 'hippie-expand-try-functions-list)
-          (cons 'symbol-completion-try-complete
+  (if (featurep \\='hippie-exp)
+      (set (make-local-variable \\='hippie-expand-try-functions-list)
+          (cons \\='symbol-completion-try-complete
                  hippie-expand-try-functions-list)))"
   (when (and symbol-completion-symbol-function
             symbol-completion-completions-function)
diff --git a/lisp/obsolete/tpu-edt.el b/lisp/obsolete/tpu-edt.el
index adf6122..d16cd27 100644
--- a/lisp/obsolete/tpu-edt.el
+++ b/lisp/obsolete/tpu-edt.el
@@ -873,7 +873,7 @@ With argument, fill and justify."
   (set-frame-width (selected-frame) width))
 
 (defun tpu-toggle-newline-and-indent nil
-  "Toggle between ‘newline and indent’ and ‘simple newline’."
+  "Toggle between `newline-and-indent' and simple `newline'."
   (interactive)
   (cond (tpu-newline-and-indent-p
          (setq tpu-newline-and-indent-string "")
@@ -1313,7 +1313,7 @@ kill modified buffers without asking."
                (if tpu-regexp-p "en" "dis"))))
 
 (defun tpu-regexp-prompt (prompt)
-  "Read a string, adding ‘RE ’ to the prompt if tpu-regexp-p is set."
+  "Read a string, adding `RE ' to the prompt if tpu-regexp-p is set."
   (let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt)))
     (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)))
 
diff --git a/lisp/obsolete/vi.el b/lisp/obsolete/vi.el
index 2375eb5..081b229 100644
--- a/lisp/obsolete/vi.el
+++ b/lisp/obsolete/vi.el
@@ -832,7 +832,7 @@ Possible prefix-arg cases are nil, INTEGER, (nil . CHAR) or 
(INTEGER . CHAR)."
 
 (defun vi-goto-mark (mark-char &optional line-flag)
   "Go to marked position or line (if line-flag is given).
-Goto mark address@hidden means jump into and pop the top mark on the mark 
ring."
+Goto mark `@' means jump into and pop the top mark on the mark ring."
   (cond ((char-equal mark-char last-command-event)     ; `` or ''
         (exchange-point-and-mark) (if line-flag (back-to-indentation)))
        ((char-equal mark-char ?@)      ; jump and pop mark
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index ffc7df4..799e58b 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -1677,7 +1677,7 @@ If the point is not on a source block then return nil."
     (if point
         ;; taken from `org-open-at-point'
         (progn (org-mark-ring-push) (goto-char point) (org-show-context))
-      (message "source-code block ‘%s’ not found in this buffer" name))))
+      (message "source-code block `%s' not found in this buffer" name))))
 
 (defun org-babel-find-named-block (name)
   "Find a named source-code block.
@@ -1712,7 +1712,7 @@ org-babel-named-src-block-regexp."
     (if point
         ;; taken from `org-open-at-point'
         (progn (goto-char point) (org-show-context))
-      (message "result ‘%s’ not found in this buffer" name))))
+      (message "result `%s' not found in this buffer" name))))
 
 (defun org-babel-find-named-result (name &optional point)
   "Find a named result.
@@ -2207,7 +2207,7 @@ file's directory then expand relative links."
   "Make true to capitalize begin/end example markers inserted by code blocks.")
 
 (defun org-babel-examplize-region (beg end &optional results-switches)
-  "Comment out region using the inline ‘==’ or ‘: ’ org example quote."
+  "Comment out region using the inline `==' or `: ' org example quote."
   (interactive "*r")
   (let ((chars-between (lambda (b e)
                         (not (string-match "^[\\s]*$" (buffer-substring b 
e)))))
diff --git a/lisp/org/ob-fortran.el b/lisp/org/ob-fortran.el
index 0e6eb4f..aab7859 100644
--- a/lisp/org/ob-fortran.el
+++ b/lisp/org/ob-fortran.el
@@ -108,7 +108,7 @@ it's header arguments."
   "Wrap body in a \"program ... end program\" block if none exists."
   (if (string-match "^[ \t]*program[ \t]*.*" (capitalize body))
       (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
-       (if vars (error "Cannot use :vars if ‘program’ statement is present"))
+       (if vars (error "Cannot use :vars if `program' statement is present"))
        body)
     (format "program main\n%s\nend program main\n" body)))
 
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index 4abe7af..eb74f93 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -64,7 +64,7 @@ This will typically be either 'python or 'python-mode."
   :type 'string)
 
 (defcustom org-babel-python-None-to 'hline
-  "Replace ‘None’ in python tables with this before returning."
+  "Replace `None' in python tables with this before returning."
   :group 'org-babel
   :version "24.4"
   :package-version '(Org . "8.0")
diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el
index 472d3e6..3e79592 100644
--- a/lisp/org/ob-ref.el
+++ b/lisp/org/ob-ref.el
@@ -176,7 +176,7 @@ the variable."
            ;;       buffer (marker-buffer id-loc)
            ;;       loc (marker-position id-loc))
            ;; (move-marker id-loc nil)
-           (error "Reference ‘%s’ not found in this buffer" ref))
+           (error "Reference `%s' not found in this buffer" ref))
          (cond
           (lob-info (setq type 'lob))
           (id (setq type 'id))
diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el
index 419b9a6..7d8e23f 100644
--- a/lisp/org/ob-scheme.el
+++ b/lisp/org/ob-scheme.el
@@ -109,7 +109,7 @@ For a named session, the buffer name will be the session 
name.
 
 If the session is unnamed (nil), generate a name.
 
-If the session is ‘none’, use nil for the session name, and
+If the session is `none', use nil for the session name, and
 org-babel-scheme-execute-with-geiser will use a temporary session."
   (let ((result
         (cond ((not name)
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 3a87f6b..ae5a252 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -497,7 +497,7 @@ are prefix commands.  For the dispatcher to display useful 
information, you
 should provide a description for the prefix, like
 
  (setq org-agenda-custom-commands
-   '((\"h\" . \"HOME + Name tag searches\") ; describe prefix \"h\"
+   \\='((\"h\" . \"HOME + Name tag searches\") ; describe prefix \"h\"
      (\"hl\" tags \"+HOME+Lisa\")
      (\"hp\" tags \"+HOME+Peter\")
      (\"hk\" tags \"+HOME+Kim\")))"
@@ -1211,7 +1211,7 @@ For example, 9:30am would become 09:30 rather than  9:30."
   :type 'boolean)
 
 (defun org-agenda-time-of-day-to-ampm (time)
-  "Convert TIME of a string like ‘13:45’ to an AM/PM style time string."
+  "Convert TIME of a string like `13:45' to an AM/PM style time string."
   (let* ((hour-number (string-to-number (substring time 0 -3)))
          (minute (substring time -2))
          (ampm "am"))
@@ -1932,7 +1932,7 @@ list as second element:
 For example, to display a 16px horizontal space for Emacs
 category, you can use:
 
-  (\"Emacs\" '(space . (:width (16))))"
+  (\"Emacs\" \\='(space . (:width (16))))"
   :group 'org-agenda-line-format
   :version "24.1"
   :type '(alist :key-type (string :tag "Regexp matching category")
@@ -1975,7 +1975,7 @@ estimate."
   :type 'boolean)
 
 (defcustom org-agenda-auto-exclude-function nil
-  "A function called with a tag to decide if it is filtered on ‘/ RET’.
+  "A function called with a tag to decide if it is filtered on `/ RET'.
 The sole argument to the function, which is called once for each
 possible tag, is a string giving the name of the tag.  The
 function should return either nil if the tag should be included
@@ -2538,7 +2538,7 @@ For example, if you have a custom agenda command \"p\" 
and you
 want this command to be accessible only from plain text files,
 use this:
 
-   '((\"p\" ((in-file . \"\\.txt\"))))
+   \\='((\"p\" ((in-file . \"\\.txt\"))))
 
 Here are the available contexts definitions:
 
@@ -2556,7 +2556,7 @@ accessible if there is at least one valid check.
 You can also bind a key to another agenda custom command
 depending on contextual rules.
 
-    '((\"p\" \"q\" ((in-file . \"\\.txt\"))))
+    \\='((\"p\" \"q\" ((in-file . \"\\.txt\"))))
 
 Here it means: in .txt files, use \"p\" as the key for the
 agenda command otherwise associated with \"q\".  (The command
@@ -3625,9 +3625,9 @@ FILTER-ALIST is an alist of filters we need to apply when
          ;; Popup existing buffer
          (org-agenda-prepare-window (get-buffer org-agenda-buffer-name)
                                     filter-alist)
-         (message "Sticky Agenda buffer, use ‘r’ to refresh")
+         (message "Sticky Agenda buffer, use `r' to refresh")
          (or org-agenda-multi (org-agenda-fit-window-to-buffer))
-         (throw 'exit "Sticky Agenda buffer, use ‘r’ to refresh"))
+         (throw 'exit "Sticky Agenda buffer, use `r' to refresh"))
       (setq org-todo-keywords-for-agenda nil)
       (setq org-drawers-for-agenda nil)
       (put 'org-agenda-tag-filter :preset-filter
@@ -9596,7 +9596,7 @@ This is a command that has to be installed in 
`calendar-mode-map'."
             "Hebrew:     " (calendar-hebrew-date-string date) " (until 
sunset)\n"
             "Islamic:    " (calendar-islamic-date-string date) " (until 
sunset)\n"
             "French:     " (calendar-french-date-string date) "\n"
-            "Baha'i:     " (calendar-bahai-date-string date) " (until 
sunset)\n"
+            "Bahá’í:     " (calendar-bahai-date-string date) " (until 
sunset)\n"
             "Mayan:      " (calendar-mayan-date-string date) "\n"
             "Coptic:     " (calendar-coptic-date-string date) "\n"
             "Ethiopic:   " (calendar-ethiopic-date-string date) "\n"
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index 2eb2d12..06adc07 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -190,7 +190,7 @@
     (:booktitle    . "Title of a book, part of which is being cited.  See the 
LaTeX book for how to type titles.  For book entries, use the title field 
instead.")
     (:chapter      . "A chapter (or section or whatever) number.")
     (:crossref     . "The database key of the entry being cross referenced.")
-    (:edition      . "The edition of a book for example, ‘Second’.  This 
should be an ordinal, and should have the first letter capitalized, as shown 
here; the standard styles convert to lower case when necessary.")
+    (:edition      . "The edition of a book for example, 'Second'.  This 
should be an ordinal, and should have the first letter capitalized, as shown 
here; the standard styles convert to lower case when necessary.")
     (:editor       . "Name(s) of editor(s), typed as indicated in the LaTeX 
book.  If there is also an author field, then the editor field gives the editor 
of the book or collection in which the reference appears.")
     (:howpublished . "How something strange has been published.  The first 
word should be capitalized.")
     (:institution  . "The sponsoring institution of a technical report.")
@@ -205,9 +205,9 @@
     (:school       . "The name of the school where a thesis was written.")
     (:series       . "The name of a series or set of books.  When citing an 
entire book, the title field gives its title and an optional series field gives 
the name of a series or multi-volume set in which the book is published.")
     (:title        . "The work’s title, typed as explained in the LaTeX book.")
-    (:type         . "The type of a technical report for example, ‘Research 
Note’.")
+    (:type         . "The type of a technical report for example, 'Research 
Note'.")
     (:volume       . "The volume of a journal or multi-volume book.")
-    (:year         . "The year of publication or, for an unpublished work, the 
year it was written.  Generally it should consist of four numerals, such as 
1984, although the standard styles can handle any year whose last four 
nonpunctuation characters are numerals, such as ‘(about 1984)’"))
+    (:year         . "The year of publication or, for an unpublished work, the 
year it was written.  Generally it should consist of four numerals, such as 
1984, although the standard styles can handle any year whose last four 
nonpunctuation characters are numerals, such as '(about 1984)'"))
   "Bibtex fields with descriptions.")
 
 (defvar org-bibtex-entries nil
@@ -221,7 +221,7 @@
 
 (defcustom org-bibtex-prefix nil
   "Optional prefix for all bibtex property names.
-For example setting to ‘BIB_’ would allow interoperability with fireforg."
+For example setting to `BIB_' would allow interoperability with fireforg."
   :group 'org-bibtex
   :version "24.1"
   :type  '(choice
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el
index 7b4b6ea..6a4b2ba 100644
--- a/lisp/org/org-capture.el
+++ b/lisp/org/org-capture.el
@@ -460,7 +460,7 @@ For example, if you have a capture template \"c\" and you 
want
 this template to be accessible only from `message-mode' buffers,
 use this:
 
-   '((\"c\" ((in-mode . \"message-mode\"))))
+   ((\"c\" ((in-mode . \"message-mode\"))))
 
 Here are the available contexts definitions:
 
@@ -478,7 +478,7 @@ accessible if there is at least one valid check.
 You can also bind a key to another agenda custom command
 depending on contextual rules.
 
-    '((\"c\" \"d\" ((in-mode . \"message-mode\"))))
+   ((\"c\" \"d\" ((in-mode . \"message-mode\"))))
 
 Here it means: in `message-mode buffers', use \"c\" as the
 key for the capture template otherwise associated with \"d\".
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index aee91ce..9489edf 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -717,7 +717,7 @@ Notification is shown only once."
          (unless org-clock-notification-was-shown
            (setq org-clock-notification-was-shown t)
            (org-notify
-            (format-message "Task ‘%s’ should be finished by now. (%s)"
+            (format-message "Task `%s' should be finished by now. (%s)"
                              org-clock-heading org-clock-effort)
              org-clock-sound))
        (setq org-clock-notification-was-shown nil)))))
@@ -948,7 +948,7 @@ k/K      Keep X minutes of the idle time (default is all).  
If this
          clocked back in at the present time.
 
 g/G      Indicate that you “got back” X minutes ago.  This is quite
-         different from ‘k’: it clocks you out from the beginning of
+         different from `k': it clocks you out from the beginning of
          the idle period and clock you back in X minutes ago.
 
 s/S      Subtract the idle time from the current clock.  This is the
diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el
index 75de8c2..e5435e3 100644
--- a/lisp/org/org-ctags.el
+++ b/lisp/org/org-ctags.el
@@ -457,7 +457,7 @@ Wrapper for org-ctags-rebuild-tags-file-then-find-tag."
   (if (and (buffer-file-name)
           (y-or-n-p
            (format-message
-            "Tag ‘%s’ not found.  Rebuild table ‘%s/TAGS’ and look again?"
+            "Tag `%s' not found.  Rebuild table `%s/TAGS' and look again?"
             name
             (file-name-directory (buffer-file-name)))))
       (org-ctags-rebuild-tags-file-then-find-tag name)
diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el
index 22e543c..ab3c61e 100644
--- a/lisp/org/org-feed.el
+++ b/lisp/org/org-feed.el
@@ -691,7 +691,7 @@ formatted as a string, not the original XML data."
         (t
          (setq entry (plist-put entry :description
                                 (format-message
-                                  "Unknown ‘%s’ content." type)))))))
+                                  "Unknown `%s' content." type)))))))
     entry))
 
 (provide 'org-feed)
diff --git a/lisp/org/org-habit.el b/lisp/org/org-habit.el
index 7911dcf..e2be460 100644
--- a/lisp/org/org-habit.el
+++ b/lisp/org/org-habit.el
@@ -180,7 +180,7 @@ This list represents a \"habit\" for the rest of this 
module."
        (error "Habit %s has no scheduled date" habit-entry))
       (unless scheduled-repeat
        (error
-        "Habit ‘%s’ has no scheduled repeat period or has an incorrect one"
+        "Habit `%s' has no scheduled repeat period or has an incorrect one"
         habit-entry))
       (setq sr-days (org-habit-duration-to-days scheduled-repeat))
       (unless (> sr-days 0)
diff --git a/lisp/org/org-irc.el b/lisp/org/org-irc.el
index fc3294f..1ec69d8 100644
--- a/lisp/org/org-irc.el
+++ b/lisp/org/org-irc.el
@@ -108,7 +108,7 @@ attributes that are found."
 (defun org-irc-ellipsify-description (string &optional after)
   "Remove unnecessary white space from STRING and add ellipses if necessary.
 Strip starting and ending white space from STRING and replace any
-chars that the value AFTER with ‘...’"
+chars that the value AFTER with `...'"
   (let* ((after (number-to-string (or after 30)))
         (replace-map (list (cons "^[ \t]*" "")
                            (cons "[ \t]*$" "")
diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el
index a52c196..a1ddc5d 100644
--- a/lisp/org/org-mouse.el
+++ b/lisp/org/org-mouse.el
@@ -539,7 +539,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
                ((stringp (nth 2 entry))
                 (concat (org-mouse-agenda-type (nth 1 entry))
                         (nth 2 entry)))
-               (t "Agenda Command ‘%s’"))
+               (t "Agenda Command `%s'"))
               30))))
      "--"
      ["Delete Blank Lines" delete-blank-lines
@@ -566,7 +566,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:"
       (save-excursion (org-apply-on-list wrap-fun nil)))))
 
 (defun org-mouse-bolp ()
-  "Return true if there only spaces, tabs, and ‘*’ before point.
+  "Return true if there only spaces, tabs, and `*' before point.
 This means, between the beginning of line and the point."
   (save-excursion
     (skip-chars-backward " \t*") (bolp)))
@@ -708,9 +708,9 @@ This means, between the beginning of line and the point."
      ((org-mouse-looking-at ":\\([A-Za-z0-9_]+\\):" "A-Za-z0-9_" -1) ;tags
       (popup-menu
        `(nil
-        [,(format-message "Display ‘%s’" (match-string 1))
+        [,(format-message "Display `%s'" (match-string 1))
          (org-tags-view nil ,(match-string 1))]
-        [,(format-message "Sparse Tree ‘%s’" (match-string 1))
+        [,(format-message "Sparse Tree `%s'" (match-string 1))
          (org-tags-sparse-tree nil ,(match-string 1))]
         "--"
         ,@(org-mouse-tag-menu))))
diff --git a/lisp/org/org-plot.el b/lisp/org/org-plot.el
index 7024ed6..fd6b4ed 100644
--- a/lisp/org/org-plot.el
+++ b/lisp/org/org-plot.el
@@ -94,7 +94,7 @@ Return value is the point at the beginning of the table."
   (goto-char (org-table-begin)))
 
 (defun org-plot/collect-options (&optional params)
-  "Collect options from an org-plot ‘#+Plot:’ line.
+  "Collect options from an org-plot `#+Plot:' line.
 Accepts an optional property list PARAMS, to which the options
 will be added.  Returns the resulting property list."
   (interactive)
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el
index ae0f494..339f2b7 100644
--- a/lisp/org/org-protocol.el
+++ b/lisp/org/org-protocol.el
@@ -303,7 +303,7 @@ part."
 
 (defun org-protocol-flatten-greedy (param-list &optional strip-path 
replacement)
   "Greedy handlers might receive a list like this from emacsclient:
- '((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\")
+ ((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\"))
 where \"/dir/\" is the absolute path to emacsclients working directory.  This
 function transforms it into a flat list using `org-protocol-flatten' and
 transforms the elements of that list as follows:
@@ -347,7 +347,7 @@ returned list."
 
 (defun org-protocol-flatten (l)
   "Greedy handlers might receive a list like this from emacsclient:
- '( (\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\")
+ ((\"/dir/org-protocol:/greedy:/~/path1\" (23 . 12)) (\"/dir/param\"))
 where \"/dir/\" is the absolute path to emacsclients working directory.
 This function transforms it into a flat list."
   (if (null l) ()
@@ -365,9 +365,9 @@ link's URL to the `kill-ring'.
 
 The location for a browser's bookmark has to look like this:
 
-  javascript:location.href='org-protocol://store-link://'+ \\
+  javascript:location.href=\\='org-protocol://store-link://\\='+ \\
         encodeURIComponent(location.href)
-        encodeURIComponent(document.title)+'/'+ \\
+        encodeURIComponent(document.title)+\\='/\\='+ \\
 
 Don't use `escape()'! Use `encodeURIComponent()' instead.  The title of the 
page
 could contain slashes and the location definitely will.
@@ -396,16 +396,16 @@ The sub-protocol used to reach this function is set in
 This function detects an URL, title and optional text, separated
 by `/'.  The location for a browser's bookmark looks like this:
 
-  javascript:location.href='org-protocol://capture://'+ \\
-        encodeURIComponent(location.href)+'/' \\
-        encodeURIComponent(document.title)+'/'+ \\
+  javascript:location.href=\\='org-protocol://capture://\\='+ \\
+        encodeURIComponent(location.href)+\\='/\\=' \\
+        encodeURIComponent(document.title)+\\='/\\='+ \\
         encodeURIComponent(window.getSelection())
 
 By default, it uses the character `org-protocol-default-template-key',
 which should be associated with a template in `org-capture-templates'.
 But you may prepend the encoded URL with a character and a slash like so:
 
-  javascript:location.href='org-protocol://capture://b/'+ ...
+  javascript:location.href=\\='org-protocol://capture://b/\\='+ ...
 
 Now template ?b will be used."
   (if (and (boundp 'org-stored-links)
@@ -455,7 +455,7 @@ in `org-protocol-project-alist'.
 
 The location for a browser's bookmark should look like this:
 
-  javascript:location.href='org-protocol://open-source://'+ \\
+  javascript:location.href=\\='org-protocol://open-source://\\='+ \\
         encodeURIComponent(location.href)"
   ;; As we enter this function for a match on our protocol, the return value
   ;; defaults to nil.
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 8a6c77a..c970fe6 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -166,10 +166,10 @@ other-frame       Use `switch-to-buffer-other-frame' to 
display edit buffer.
          (const reorganize-frame)))
 
 (defvar org-src-mode-hook nil
-  "Hook  run after Org switched a source code snippet to its Emacs mode.
+  "Hook run after Org switched a source code snippet to its Emacs mode.
 This hook will run
 
-- when editing a source code snippet with \"C-c '\".
+- when editing a source code snippet with `\\[org-src-mode-map]'.
 - When formatting a source code snippet for export with htmlize.
 
 You may want to use this hook for example to turn off `outline-minor-mode'
@@ -226,7 +226,7 @@ the existing edit buffer."
 (define-minor-mode org-src-mode
   "Minor mode for language major mode buffers generated by org.
 This minor mode is turned on in two situations:
-- when editing a source code snippet with \"C-c '\".
+- when editing a source code snippet with `\\[org-src-mode-map]'.
 - When formatting a source code snippet for export with htmlize.
 There is a mode hook, and keybindings for `org-edit-src-exit' and
 `org-edit-src-save'")
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index fb59367..478ad93 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -545,8 +545,8 @@ slightly, to make sure a beginning of line in the first 
line is included.
 SEPARATOR specifies the field separator in the lines.  It can have the
 following values:
 
-'(4)     Use the comma as a field separator
-'(16)    Use a TAB as field separator
+(4)      Use the comma as a field separator
+(16)     Use a TAB as field separator
 integer  When a number, use that many spaces as field separator
 nil      When nil, the command tries to be smart and figure out the
          separator in the following way:
@@ -3404,7 +3404,7 @@ Parameters get priority."
     (if (eq org-table-use-standard-references t)
        (org-table-fedit-toggle-ref-type))
     (org-goto-line startline)
-    (message "Edit formulas, finish with ‘C-c C-c’ or ‘C-c '’.  See menu for 
more commands.")))
+    (message "%s" "Edit formulas, finish with C-c C-c or C-c '.  See menu for 
more commands.")))
 
 (defun org-table-fedit-post-command ()
   (when (not (memq this-command '(lisp-complete-symbol)))
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 963da77..c7b64cc 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -481,7 +481,7 @@ value of the variable, after updating it:
       \(dolist (backend val)
         \(cond
          \((not (load (format \"ox-%s\" backend) t t))
-          \(message \"Problems while trying to load export back-end ‘%s’\"
+          \(message \"Problems while trying to load export back-end 
\\=`%s\\='\"
                    backend))
          \((not (memq backend new-list)) (push backend new-list))))
       \(set-default \\='org-export-backends new-list)))
@@ -1982,7 +1982,7 @@ file identifier are
                  filename matches the regexp.  If you want to
                  use groups here, use shy groups.
 
-                 Example: (\"\\.x?html\\'\" . \"firefox %s\")
+                 Example: (\"\\.x?html\\\\='\" . \"firefox %s\")
                           (\"\\(?:xhtml\\|html\\)\" . \"firefox %s\")
                           to open *.html and *.xhtml with firefox.
 
@@ -1998,7 +1998,7 @@ file identifier are
                  In a custom lisp form, you can access the group matches with
                  (match-string n link).
 
-                 Example: (\"\\.pdf::\\(\\d+\\)\\'\" . \"evince -p %1 %s\")
+                 Example: (\"\\.pdf::\\(\\d+\\)\\\\='\" . \"evince -p %1 %s\")
                      to open [[file:document.pdf::5]] with evince at page 5.
 
  `directory'   Matches a directory
@@ -12222,13 +12222,13 @@ With a triple \\[universal-argument] prefix, 
circumvent any state blocking.
 With a numeric prefix arg of 0, inhibit note taking for the change.
 
 For calling through lisp, arg is also interpreted in the following way:
-'none             -> empty state
-\"\"(empty string)  -> switch to empty state
-'done             -> switch to DONE
-'nextset          -> switch to the next set of keywords
-'previousset      -> switch to the previous set of keywords
-\"WAITING\"         -> switch to the specified keyword, but only if it
-                     really is a member of `org-todo-keywords'."
+`none'             -> empty state
+\"\" (empty string)  -> switch to empty state
+`done'             -> switch to DONE
+`nextset'          -> switch to the next set of keywords
+`previousset'      -> switch to the previous set of keywords
+\"WAITING\"          -> switch to the specified keyword, but only if it
+                      really is a member of `org-todo-keywords'."
   (interactive "P")
   (if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
       (let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index a0573d0..4e3e0ef 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -1060,7 +1060,7 @@ keywords are understood:
     Menu entry for the export dispatcher.  It should be a list
     like:
 
-      '(KEY DESCRIPTION-OR-ORDINAL ACTION-OR-MENU)
+      (KEY DESCRIPTION-OR-ORDINAL ACTION-OR-MENU)
 
     where :
 
@@ -1084,17 +1084,17 @@ keywords are understood:
       If it is an alist, associations should follow the
       pattern:
 
-        '(KEY DESCRIPTION ACTION)
+        (KEY DESCRIPTION ACTION)
 
       where KEY, DESCRIPTION and ACTION are described above.
 
     Valid values include:
 
-      '(?m \"My Special Back-end\" my-special-export-function)
+       (?m \"My Special Back-end\" my-special-export-function)
 
       or
 
-      '(?l \"Export to LaTeX\"
+       (?l \"Export to LaTeX\"
            \(?p \"As PDF file\" org-latex-export-to-pdf)
            \(?o \"As PDF file and open\"
                \(lambda (a s v b)
@@ -1105,7 +1105,7 @@ keywords are understood:
       or the following, which will be added to the previous
       sub-menu,
 
-      '(?l 1
+       (?l 1
           \((?B \"As TEX buffer (Beamer)\" org-beamer-export-as-latex)
            \(?P \"As PDF file (Beamer)\" org-beamer-export-to-pdf)))
 
@@ -5553,7 +5553,7 @@ and `org-export-to-file' for more specialized functions."
                                       (kill-buffer proc-buffer))))
                            (org-export-add-to-stack proc-buffer nil p)
                            (ding)
-                           (message "Process ‘%s’ exited abnormally" p))
+                           (message "Process `%s' exited abnormally" p))
                        (unless org-export-async-debug
                          (delete-file ,,temp-file)))))))))))))
 
diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el
index 33446af..b64fb65 100644
--- a/lisp/pcmpl-cvs.el
+++ b/lisp/pcmpl-cvs.el
@@ -38,7 +38,7 @@
 ;; User Variables:
 
 (defcustom pcmpl-cvs-binary (or (executable-find "cvs") "cvs")
-  "The full path of the ‘cvs’ binary."
+  "The full path of the `cvs' binary."
   :type 'file
   :group 'pcmpl-cvs)
 
@@ -154,7 +154,7 @@
 (defun pcmpl-cvs-entries (&optional opers)
   "Return the Entries for the current directory.
 If OPERS is a list of characters, return entries for which that
-operation character applies, as displayed by ‘cvs -n update’."
+operation character applies, as displayed by `cvs -n update'."
   (let* ((arg (pcomplete-arg))
         (dir (file-name-as-directory
               (or (file-name-directory arg) "")))
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
index 5ca792d..1e06f1b 100644
--- a/lisp/play/bubbles.el
+++ b/lisp/play/bubbles.el
@@ -101,31 +101,31 @@ and a shift mode."
   :group 'bubbles)
 
 (defun bubbles-set-game-easy ()
-  "Set game theme to ‘easy’."
+  "Set game theme to `easy'."
   (interactive)
   (setq bubbles-game-theme 'easy)
   (bubbles))
 
 (defun bubbles-set-game-medium ()
-  "Set game theme to ‘medium’."
+  "Set game theme to `medium'."
   (interactive)
   (setq bubbles-game-theme 'medium)
   (bubbles))
 
 (defun bubbles-set-game-difficult ()
-  "Set game theme to ‘difficult’."
+  "Set game theme to `difficult'."
   (interactive)
   (setq bubbles-game-theme 'difficult)
   (bubbles))
 
 (defun bubbles-set-game-hard ()
-  "Set game theme to ‘hard’."
+  "Set game theme to `hard'."
   (interactive)
   (setq bubbles-game-theme 'hard)
   (bubbles))
 
 (defun bubbles-set-game-userdefined ()
-  "Set game theme to ‘user-defined’."
+  "Set game theme to `user-defined'."
   (interactive)
   (setq bubbles-game-theme 'user-defined)
   (bubbles))
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index 702376c..d2953b6 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -977,7 +977,7 @@ If the game is finished, this command requests for another 
game."
   (move-to-column (+ gomoku-x-offset (* gomoku-square-width (1- x)))))
 
 (defun gomoku-plot-square (square value)
-  "Draw ‘X’, ‘O’ or ‘.’ on SQUARE depending on VALUE, leave point there."
+  "Draw `X', `O' or `.' on SQUARE depending on VALUE, leave point there."
   (or (= value 1)
       (gomoku-goto-square square))
   (let ((inhibit-read-only t))
diff --git a/lisp/proced.el b/lisp/proced.el
index 5c65edf..bf7ce24 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -1924,7 +1924,7 @@ and \f (formfeed) at the end."
               (unless (bolp)
                 (insert "\n"))
               (insert (current-time-string)
-                      (format-message "\tBuffer ‘%s’, signal ‘%s’\n"
+                      (format-message "\tBuffer `%s', signal `%s'\n"
                                       (buffer-name obuf) (car args)))
               (goto-char (point-max))
               (insert "\f\n")))))))
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 70af389..452f3b9 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -286,11 +286,11 @@ type A is
   :type 'boolean :group 'ada)
 
 (defcustom ada-indent-is-separate t
-  "Non-nil means indent ‘is separate’ or ‘is abstract’ if on a single line."
+  "Non-nil means indent `is separate' or `is abstract' if on a single line."
   :type 'boolean :group 'ada)
 
 (defcustom ada-indent-record-rel-type 3
-  "Indentation for ‘record’ relative to ‘type’ or ‘use’.
+  "Indentation for `record' relative to `type' or `use'.
 
 An example is:
    type A is
@@ -397,7 +397,7 @@ Must be one of :
   :group 'ada)
 
 (defcustom ada-use-indent ada-broken-indent
-  "Indentation for the lines in a ‘use’ statement.
+  "Indentation for the lines in a `use' statement.
 
 An example is:
    use Ada.Text_IO,
@@ -405,7 +405,7 @@ An example is:
   :type 'integer :group 'ada)
 
 (defcustom ada-when-indent 3
-  "Indentation for ‘when’ relative to ‘exception’ or ‘case’.
+  "Indentation for `when' relative to `exception' or `case'.
 
 An example is:
    case A is
@@ -413,7 +413,7 @@ An example is:
   :type 'integer :group 'ada)
 
 (defcustom ada-with-indent ada-broken-indent
-  "Indentation for the lines in a ‘with’ statement.
+  "Indentation for the lines in a `with' statement.
 
 An example is:
    with Ada.Text_IO,
@@ -2834,7 +2834,7 @@ ORGPOINT is the limit position used in the calculation."
       (save-excursion
        (goto-char (car match-cons))
        (unless (ada-search-ignore-string-comment "when" t opos)
-         (error "Missing ‘when’ between ‘case’ and ‘=>’"))
+         (error "Missing `when' between `case' and `=>'"))
        (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))
      ;;
      ;; case..is..when
@@ -3003,7 +3003,7 @@ ORGPOINT is the limit position used in the calculation."
       (list cur-indent 'ada-broken-indent)))))
 
 (defun ada-get-indent-noindent (orgpoint)
-  "Calculate the indentation when point is just before a ‘noindent stmt’.
+  "Calculate the indentation when point is just before a `noindent stmt'.
 ORGPOINT is the limit position used in the calculation."
   (let ((label 0))
     (save-excursion
@@ -3429,7 +3429,7 @@ Return the new position of point or nil if not found."
 Moves point to the matching block start."
   (ada-goto-matching-start 0)
   (unless (looking-at (concat "\\<" keyword "\\>"))
-    (error "Matching start is not ‘%s’" keyword)))
+    (error "Matching start is not `%s'" keyword)))
 
 
 (defun ada-check-defun-name (defun-name)
@@ -3667,7 +3667,7 @@ otherwise throw error."
   "Move point to the beginning of a block-start.
 Which block depends on the value of NEST-LEVEL, which defaults to zero.
 If NOERROR is non-nil, it only returns nil if no matching start was found.
-If GOTOTHEN is non-nil, point moves to the ‘then’ following ‘if’."
+If GOTOTHEN is non-nil, point moves to the `then' following `if'."
   (let ((nest-count (if nest-level nest-level 0))
        (found nil)
 
@@ -3734,7 +3734,7 @@ If GOTOTHEN is non-nil, point moves to the ‘then’ 
following ‘if’."
                (if pos
                    (goto-char (car pos))
                  (error (concat
-                         "No matching ‘is’ or ‘renames’ for ‘package’ at"
+                         "No matching `is' or `renames' for `package' at"
                          " line "
                          (number-to-string (count-lines 1 (1+ current)))))))
              (unless (looking-at "renames")
@@ -3862,7 +3862,7 @@ If GOTOTHEN is non-nil, point moves to the ‘then’ 
following ‘if’."
             ((looking-at "do")
              (unless (ada-search-ignore-string-comment
                       "\\<accept\\|return\\>" t)
-               (error "Missing ‘accept’ or ‘return’ in front of ‘do’"))))
+               (error "Missing `accept' or `return' in front of `do'"))))
            (point))
 
        (if noerror
@@ -4073,7 +4073,7 @@ Assumes point to be at the end of a statement."
 
 
 (defun ada-looking-at-semi-or ()
-  "Return t if looking at an ‘or’ following a semicolon."
+  "Return t if looking at an `or' following a semicolon."
   (save-excursion
     (and (looking-at "\\<or\\>")
         (progn
@@ -4146,7 +4146,7 @@ Return nil if the private is part of the package name, as 
in
                           "type\\)\\>"))))))
 
 (defun ada-search-ignore-complex-boolean (regexp backwardp)
-  "Search for REGEXP, ignoring comments, strings, ‘and then’, ‘or else’.
+  "Search for REGEXP, ignoring comments, strings, `and then', `or else'.
 If BACKWARDP is non-nil, search backward; search forward otherwise."
   (let (result)
   (while (and (setq result (ada-search-ignore-string-comment regexp backwardp))
@@ -4366,7 +4366,7 @@ of the region.  Otherwise, operate only on the current 
line."
 
 (defun ada-move-to-end ()
   "Move point to the end of the block around point.
-Moves to ‘begin’ if in a declarative part."
+Moves to `begin' if in a declarative part."
   (interactive)
   (let ((pos (point))
        decl-start)
diff --git a/lisp/progmodes/ada-prj.el b/lisp/progmodes/ada-prj.el
index 7e354bc..3b71c59 100644
--- a/lisp/progmodes/ada-prj.el
+++ b/lisp/progmodes/ada-prj.el
@@ -309,13 +309,13 @@ where the compilation is done.")
 "If you want to remotely compile, debug and
 run your application, specify the name of a
 remote machine here. This capability requires
-the ‘rsh’ protocol on the remote machine.")
+the `rsh' protocol on the remote machine.")
     (ada-prj-field 'cross_prefix "Prefix used in for the cross tool chain"
 "When working on multiple cross targets, it is
 most convenient to specify the prefix of the
 tool chain here. For instance, on PowerPc
-vxworks, you would enter ‘powerpc-wrs-vxworks-’.
-To use JGNAT, enter ‘j’.")
+vxworks, you would enter `powerpc-wrs-vxworks-'.
+To use JGNAT, enter `j'.")
     )
 
 
diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el
index 6f2f78f..816de12 100644
--- a/lisp/progmodes/ada-xref.el
+++ b/lisp/progmodes/ada-xref.el
@@ -286,7 +286,7 @@ On Windows systems, this will properly handle .exe 
extension as well."
                    (ada-find-file-in-dir (concat exec-name ".exe") 
exec-path))))
     (if result
        result
-      (error "‘%s’ not found in path" exec-name))))
+      (error "`%s' not found in path" exec-name))))
 
 (defun ada-initialize-runtime-library (cross-prefix)
   "Initialize the variables for the runtime library location.
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index f26b8ec..82f0d72 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -634,7 +634,7 @@ move into or out of sexps (not even normal expression 
parentheses).
 
 If point is already at the earliest statement within braces or parens,
 this function doesn't move back into any whitespace preceding it; it
-returns 'same in this case.
+returns `same' in this case.
 
 Stop at statement continuation tokens like \"else\", \"catch\",
 \"finally\" and the \"while\" in \"do ... while\" if the start point
@@ -656,19 +656,19 @@ start of the definition in a \"#define\".  Also stop at 
start of
 macros before leaving them.
 
 Return:
-'label          if stopped at a label or \"case...:\" or \"default:\";
-'same           if stopped at the beginning of the current statement;
-'up             if stepped to a containing statement;
-'previous       if stepped to a preceding statement;
-'beginning      if stepped from a statement continuation clause to
+`label'         if stopped at a label or \"case...:\" or \"default:\";
+`same'          if stopped at the beginning of the current statement;
+`up'            if stepped to a containing statement;
+`previous'      if stepped to a preceding statement;
+`beginning'     if stepped from a statement continuation clause to
                 its start clause; or
-'macro          if stepped to a macro start.
-Note that 'same and not 'label is returned if stopped at the same
+`macro'         if stepped to a macro start.
+Note that `same' and not `label' is returned if stopped at the same
 label without crossing the colon character.
 
 LIM may be given to limit the search.  If the search hits the limit,
 point will be left at the closest following token, or at the start
-position if that is less ('same is returned in this case).
+position if that is less (`same' is returned in this case).
 
 NOERROR turns off error logging to `c-parsing-error'.
 
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 0e904d2..a1e26b9 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -926,14 +926,14 @@ following elements.  The car of each element describes 
the type of the
 operator group, and the cdr is a list of the operator tokens in it.
 The operator group types are:
 
-'prefix         Unary prefix operators.
-'postfix        Unary postfix operators.
-'postfix-if-paren
+`prefix'        Unary prefix operators.
+`postfix'       Unary postfix operators.
+`postfix-if-paren'
                Unary postfix operators if and only if the chars have
                parenthesis syntax.
-'left-assoc     Binary left associative operators (i.e. a+b+c means (a+b)+c).
-'right-assoc    Binary right associative operators (i.e. a=b=c means a=(b=c)).
-'right-assoc-sequence
+`left-assoc'    Binary left associative operators (i.e. a+b+c means (a+b)+c).
+`right-assoc'   Binary right associative operators (i.e. a=b=c means a=(b=c)).
+`right-assoc-sequence'
                 Right associative operator that constitutes of a
                 sequence of tokens that separate expressions.  All the
                 tokens in the group are in this case taken as
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index df6e987..da36647 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -833,7 +833,7 @@ string in the mode line), and a semicolon or comma is typed 
(see
 no arguments, and should return one of the following values:
 
   nil             -- no determination made, continue checking
-  'stop           -- do not insert a newline, and stop checking
+  `stop'          -- do not insert a newline, and stop checking
   (anything else) -- insert a newline, and stop checking
 
 If every function in the list is called with no determination made,
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 322024e..b8ba170 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -724,7 +724,7 @@ mode-compile.el.
 If your Emacs does not default to `cperl-mode' on Perl files, and you
 want it to: put the following into your .emacs file:
 
-  (defalias 'perl-mode 'cperl-mode)
+  (defalias \\='perl-mode \\='cperl-mode)
 
 Get perl5-info from
   $CPAN/doc/manual/info/perl5-old/perl5-info.tar.gz
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el
index 2443d6f..80f9e2a 100644
--- a/lisp/progmodes/ebrowse.el
+++ b/lisp/progmodes/ebrowse.el
@@ -3471,7 +3471,7 @@ are not performed."
     (with-output-to-temp-buffer (concat "*Apropos Members*")
       (set-buffer standard-output)
       (erase-buffer)
-      (insert (format-message "Members matching ‘%s’\n\n" regexp))
+      (insert (format-message "Members matching `%s'\n\n" regexp))
       (cl-loop for s in (ebrowse-list-of-matching-members members regexp) do
                (cl-loop for info in (gethash s members) do
                         (ebrowse-draw-file-member-info info))))))
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index bcabf3c..1ea9f17 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -1322,7 +1322,7 @@ which see."
   0 - contains the last symbol read from the buffer.
   1 - contains the string last displayed in the echo area for variables,
       or argument string for functions.
-  2 - 'function if function args, 'variable if variable documentation.")
+  2 - `function' if function args, `variable' if variable documentation.")
 
 (defun elisp-eldoc-documentation-function ()
   "`eldoc-documentation-function' (which see) for Emacs Lisp."
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index d38a7cd..0d5fc3a 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -1268,7 +1268,7 @@ buffer-local values of tags table format variables."
       ;;   \6 is the line to start searching at;
       ;;   \7 is the char to start searching at.
       (while (re-search-forward
-             "^\\(\\([^\177]+[^-a-zA-Z0-9_+*$:\177]+\\)?\
+             "^\\(\\([^\177]*[^-a-zA-Z0-9_+*$:\177]+\\)?\
 \\([-a-zA-Z0-9_+*$?:]+\\)[^-a-zA-Z0-9_+*$?:\177]*\\)\177\
 \\(\\([^\n\001]+\\)\001\\)?\\([0-9]+\\)?,\\([0-9]+\\)?\n"
              nil t)
@@ -1459,7 +1459,7 @@ hits the start of file."
         (when (symbolp symbs)
           (if (boundp symbs)
              (setq symbs (symbol-value symbs))
-           (insert (format-message "symbol ‘%s’ has no value\n" symbs))
+           (insert (format-message "symbol `%s' has no value\n" symbs))
            (setq symbs nil)))
         (if (vectorp symbs)
            (mapatoms ins-symb symbs)
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el
index 43b057b..e8a1ae4 100644
--- a/lisp/progmodes/f90.el
+++ b/lisp/progmodes/f90.el
@@ -1425,7 +1425,7 @@ single - statement is not continued.
 begin  - current line is the first in a continued statement.
 end    - current line is the last in a continued statement
 middle - current line is neither first nor last in a continued statement.
-Comment lines embedded amongst continued lines return 'middle."
+Comment lines embedded amongst continued lines return `middle'."
   (let (pcont cont)
     (save-excursion
       (setq pcont (if (f90-previous-statement) (f90-line-continued))))
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index f220633..a9d4743 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -287,7 +287,7 @@ Return its file name if found, or nil if not found."
             nil)))))
 
 (defun flymake-fix-file-name (name)
-  "Replace all occurrences of ‘\\’ with ‘/’."
+  "Replace all occurrences of `\\' with `/'."
   (when name
     (setq name (expand-file-name name))
     (setq name (abbreviate-file-name name))
@@ -785,7 +785,7 @@ Perhaps use text from LINE-ERR-INFO-LIST to enhance 
highlighting."
        (when (flymake-same-files real-file-name source-file-name)
          (setq line-err-info (flymake-ler-set-file line-err-info nil))
          (setq err-info-list (flymake-add-err-info err-info-list 
line-err-info))))
-      (flymake-log 3 "parsed ‘%s’, %s line-err-info" (nth idx lines) (if 
line-err-info "got" "no"))
+      (flymake-log 3 "parsed `%s', %s line-err-info" (nth idx lines) (if 
line-err-info "got" "no"))
       (setq idx (1+ idx)))
     err-info-list))
 
@@ -1086,7 +1086,7 @@ For the format of LINE-ERR-INFO, see 
`flymake-ler-make-ler'."
     (error
      (let* ((err-str
              (format-message
-              "Failed to launch syntax check process ‘%s’ with args %s: %s"
+              "Failed to launch syntax check process `%s' with args %s: %s"
               cmd args (error-message-string err)))
             (source-file-name buffer-file-name)
             (cleanup-f        (flymake-get-cleanup-function source-file-name)))
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index 83e427d..ee4733f 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -817,15 +817,15 @@ Variables controlling indentation style and extra 
features:
   Amount of extra indentation for text in full-line comments (default 0).
 `fortran-comment-indent-style'
   How to indent the text in full-line comments. Allowed values are:
-  nil       don't change the indentation
-  fixed     indent to `fortran-comment-line-extra-indent' beyond the
+  nil         don't change the indentation
+  `fixed'     indent to `fortran-comment-line-extra-indent' beyond the
               value of either
                 `fortran-minimum-statement-indent-fixed' (fixed format) or
                 `fortran-minimum-statement-indent-tab' (TAB format),
               depending on the continuation format in use.
-  relative  indent to `fortran-comment-line-extra-indent' beyond the
+  `relative'  indent to `fortran-comment-line-extra-indent' beyond the
               indentation for a line of code.
-  (default 'fixed)
+  (default `fixed')
 `fortran-comment-indent-char'
   Single-character string to be inserted instead of space for
   full-line comment indentation (default \" \").
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 9942e17..1eff62c 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -2065,7 +2065,7 @@ a GDB/MI reply message."
 (defun gdbmi-bnf-gdb-prompt ()
   "Implementation of the following GDB/MI output grammar rule:
   gdb-prompt ==>
-       '(gdb)' nl
+       `(gdb)' nl
 
   nl ==>
        CR | CR-LF"
@@ -2085,7 +2085,7 @@ a GDB/MI reply message."
   "Implementation of the following GDB/MI output grammar rule:
 
   result-record ==>
-       [ token ] '^' result-class ( ',' result )* nl
+       [ token ] `^' result-class ( `,' result )* nl
 
   token ==>
        any sequence of digits."
@@ -2110,16 +2110,16 @@ a GDB/MI reply message."
        exec-async-output | status-async-output | notify-async-output
 
   exec-async-output ==>
-       [ token ] '*' async-output
+       [ token ] `*' async-output
 
   status-async-output ==>
-       [ token ] '+' async-output
+       [ token ] `+' async-output
 
   notify-async-output ==>
-       [ token ] '=' async-output
+       [ token ] `=' async-output
 
   async-output ==>
-       async-class ( ',' result )* nl"
+       async-class ( `,' result )* nl"
 
   (gdbmi-bnf-result-and-async-record-impl))
 
@@ -2130,13 +2130,13 @@ a GDB/MI reply message."
        console-stream-output | target-stream-output | log-stream-output
 
   console-stream-output ==>
-       '~' c-string
+       `~' c-string
 
   target-stream-output ==>
-       '@' c-string
+       `@' c-string
 
   log-stream-output ==>
-       '&' c-string"
+       `&' c-string"
   (when (< gdbmi-bnf-offset (length gud-marker-acc))
     (if (and (member (aref gud-marker-acc gdbmi-bnf-offset) '(?~ ?@ ?&))
              (string-match (concat "\\([~@&]\\)\\(" gdb--string-regexp "\\)\n")
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index b5e7998..50ebadf 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -152,7 +152,7 @@ This variable can have 3 values:
 nil        Arrows just move the cursor
 t          Arrows force the cursor back to the current command line and
            walk the history
-'cmdline   When the cursor is in the current command line, arrows walk the
+`cmdline'  When the cursor is in the current command line, arrows walk the
            history.  Everywhere else in the buffer, arrows move the cursor."
   :group 'idlwave-shell-general-setup
   :type '(choice
@@ -229,7 +229,7 @@ to set this option to nil."
 
 (defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+:_.$#%={}\\- "
   "The characters allowed in file names, as a string.
-Used for file name completion.  Must not contain ‘'’, ‘,’ and ‘\"’
+Used for file name completion.  Must not contain `\\='', `,' and `\"'
 because these are used as separators by IDL."
   :group 'idlwave-shell-general-setup
   :type 'string)
@@ -439,15 +439,13 @@ Value decides about the method which is used to mark the 
line.  Valid values
 are:
 
 nil       Do not mark the line
-'arrow    Use the overlay arrow
-'face     Use `idlwave-shell-stop-line-face' to highlight the line.
+`arrow'   Use the overlay arrow
+`face'    Use `idlwave-shell-stop-line-face' to highlight the line.
 t         Use what IDLWAVE thinks is best.  Will be a face where possible,
           otherwise the overlay arrow.
 The overlay-arrow has the disadvantage to hide the first chars of a line.
 Since many people do not have the main block of IDL programs indented,
-a face highlighting may be better.
-In Emacs 21, the overlay arrow is displayed in a special area and never
-hides any code, so setting this to 'arrow on Emacs 21 sounds like a good idea."
+a face highlighting may be better."
   :group 'idlwave-shell-highlighting-and-faces
   :type '(choice
          (const :tag "No marking" nil)
@@ -494,10 +492,10 @@ where IDL is stopped, when in Electric Debug Mode."
   "Non-nil means, mark breakpoints in the source files.
 Valid values are:
 nil        Do not mark breakpoints.
-'face      Highlight line with `idlwave-shell-breakpoint-face'.
-'glyph     Red dot at the beginning of line.  If the display does not
-           support glyphs, will use 'face instead.
-t          Glyph when possible, otherwise face (same effect as 'glyph)."
+`face'     Highlight line with `idlwave-shell-breakpoint-face'.
+`glyph'    Red dot at the beginning of line.  If the display does not
+           support glyphs, will use `face' instead.
+t          Glyph when possible, otherwise face (same effect as `glyph')."
   :group 'idlwave-shell-highlighting-and-faces
   :type '(choice
          (const :tag "No marking" nil)
@@ -3911,7 +3909,7 @@ Elements of the alist have the form:
 
 (defun idlwave-shell-module-source-query (module &optional type)
   "Determine the source file for a given module.
-Query as a function if TYPE set to something beside 'pro."
+Query as a function if TYPE set to something beside `pro'."
   (if module
       (idlwave-shell-send-command
        (format "print,(routine_info('%s',/SOURCE%s)).PATH" module
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index daf919a..b524b76 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -376,7 +376,7 @@ The following values are allowed:
 
 nil       Don't scan any buffers.
 t         Scan all `idlwave-mode' buffers in the current editing session.
-current   Scan only the current buffer, but no other buffers."
+`current' Scan only the current buffer, but no other buffers."
   :group 'idlwave-routine-info
   :type '(choice
          (const :tag "No buffer" nil)
@@ -743,7 +743,7 @@ The actions that can be performed are listed in 
`idlwave-indent-action-table'."
 (defcustom idlwave-abbrev-start-char "\\"
   "A single character string used to start abbreviations in abbrev mode.
 Possible characters to choose from: ~\\=`\%
-or even ‘?’.  ‘.’ is not a good choice because it can make structure
+or even `?'.  `.' is not a good choice because it can make structure
 field names act like abbrevs in certain circumstances.
 
 Changes to this in `idlwave-mode-hook' will have no effect.  Instead a user
@@ -5833,15 +5833,15 @@ to override IDLWAVE's idea of what should be completed 
at point.
 Possible values are:
 
 0  <=>  query for the completion type
-1  <=>  'procedure
-2  <=>  'procedure-keyword
-3  <=>  'function
-4  <=>  'function-keyword
-5  <=>  'procedure-method
-6  <=>  'procedure-method-keyword
-7  <=>  'function-method
-8  <=>  'function-method-keyword
-9  <=>  'class
+1  <=>  `procedure'
+2  <=>  `procedure-keyword'
+3  <=>  `function'
+4  <=>  `function-keyword'
+5  <=>  `procedure-method'
+6  <=>  `procedure-method-keyword'
+7  <=>  `function-method'
+8  <=>  `function-method-keyword'
+9  <=>  `class'
 
 As a special case, the universal argument C-u forces completion of
 function names in places where the default would be a keyword.
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 9abbf16..4f46cbe 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1455,7 +1455,7 @@ Fill comments, backslashed lines, and variable 
definitions specially."
 
 (defun makefile-browser-insert-continuation ()
   "Insert a makefile continuation.
-In the makefile buffer, go to (end-of-line), insert a ‘\\’
+In the makefile buffer, go to (end-of-line), insert a `\\'
 character, insert a new blank line, go to that line and indent by one TAB.
 This is most useful in the process of creating continued lines when copying
 large dependencies from the browser to the client buffer.
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index b95c3f9..5a4ed84 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -402,11 +402,11 @@ Only used in ( If -> Then ; Else) and ( Disj1 ; Disj2 ) 
style expressions."
 (defcustom prolog-parse-mode 'beg-of-clause
   "The parse mode used (decides from which point parsing is done).
 Legal values:
-'beg-of-line   - starts parsing at the beginning of a line, unless the
-                 previous line ends with a backslash.  Fast, but has
-                 problems detecting multiline /* */ comments.
-'beg-of-clause - starts parsing at the beginning of the current clause.
-                 Slow, but copes better with /* */ comments."
+`beg-of-line'   - starts parsing at the beginning of a line, unless the
+                  previous line ends with a backslash.  Fast, but has
+                  problems detecting multiline /* */ comments.
+`beg-of-clause' - starts parsing at the beginning of the current clause.
+                  Slow, but copes better with /* */ comments."
   :version "24.1"
   :group 'prolog-indentation
   :type '(choice (const :value beg-of-line)
@@ -1209,7 +1209,7 @@ using the commands `send-region', `send-string' and 
\\[prolog-consult-region].
 Commands:
 Tab indents for Prolog; with argument, shifts rest
  of expression rigidly with the current line.
-Paragraphs are separated only by blank lines and '%%'. '%'s start comments.
+Paragraphs are separated only by blank lines and `%%'. `%'s start comments.
 
 Return at end of buffer sends line as input.
 Return not at end copies rest of line to end and sends it.
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 63a43c1..9528ffe 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2819,7 +2819,7 @@ of `error' with a user-friendly message."
   (or (python-shell-get-process)
       (if interactivep
           (user-error
-           "Start a Python process first with ‘%s’ or ‘%s’."
+           "Start a Python process first with `%s' or `%s'."
            (substitute-command-keys "\\[run-python]")
            ;; Get the binding.
            (key-description
@@ -2979,7 +2979,7 @@ This is a wrapper over `buffer-substring' that takes care 
of
 different transformations for the code sent to be evaluated in
 the python shell:
   1. When optional argument NOMAIN is non-nil everything under an
-     \"if __name__ == '__main__'\" block will be removed.
+     \"if __name__ == \\='__main__\\='\" block will be removed.
   2. When a subregion of the buffer is sent, it takes care of
      appending extra empty lines so tracebacks are correct.
   3. When the region sent is a substring of the current buffer, a
@@ -4006,7 +4006,7 @@ The skeleton will be bound to python-skeleton-NAME."
   (let* ((name (symbol-name name))
          (function-name (intern (concat "python-skeleton--" name)))
          (msg (format-message
-               "Add ‘%s’ clause? " name)))
+               "Add `%s' clause? " name)))
     (when (not skel)
       (setq skel
             `(< ,(format "%s:" name) \n \n
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index f46c8a9..cbf65c0 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -4276,7 +4276,7 @@ passed as command line arguments."
     ;; work for remote hosts; we suppress the check there.
     (unless (or (file-remote-p default-directory)
                (executable-find program))
-      (error "Unable to locate SQL program ‘%s’" program))
+      (error "Unable to locate SQL program `%s'" program))
     ;; Make sure buffer name is unique.
     (when (sql-buffer-live-p (format "*%s*" buf-name))
       (setq buf-name (format "SQL-%s" product))
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index caae746..f83c676 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -4477,7 +4477,7 @@ More specifically, after a generate and before an 
endgenerate."
     (= nest 0) )) ; return nest
 
 (defun verilog-in-deferred-immediate-final-p ()
-  "Return true if inside an ‘assert/assume/cover final’ statement."
+  "Return true if inside an `assert/assume/cover final' statement."
   (interactive)
   (and (looking-at "final")
        (verilog-looking-back "\\<\\(?:assert\\|assume\\|cover\\)\\>\\s-+" nil))
@@ -7221,7 +7221,7 @@ will be completed at runtime and should not be added to 
this list.")
 
 (defun verilog-func-completion (type)
   "Build regular expression for module/task/function names.
-TYPE is ‘module’, ‘tf’ for task or function, or t if unknown."
+TYPE is `module', `tf' for task or function, or t if unknown."
   (if (string= verilog-str "")
       (setq verilog-str "[a-zA-Z_]"))
   (let ((verilog-str (concat (cond
@@ -7294,7 +7294,7 @@ must be a function to be called for every match to check 
if this should
 really be a match.  If VERILOG-FLAG is t, the function returns a list of
 all possible completions.  If VERILOG-FLAG is nil it returns a string,
 the longest possible completion, or t if VERILOG-STR is an exact match.
-If VERILOG-FLAG is ‘lambda’, the function returns t if VERILOG-STR is an
+If VERILOG-FLAG is `lambda', the function returns t if VERILOG-STR is an
 exact match, nil otherwise."
   (save-excursion
     (let ((verilog-all nil))
@@ -7489,7 +7489,7 @@ VERILOG-PRED is non-nil, it must be a function to be 
called for every match
 to check if this should really be a match.  If VERILOG-FLAG is t, the
 function returns a list of all possible completions.  If it is nil it
 returns a string, the longest possible completion, or t if VERILOG-STR is
-an exact match.  If VERILOG-FLAG is ‘lambda’, the function returns t if
+an exact match.  If VERILOG-FLAG is `lambda', the function returns t if
 VERILOG-STR is an exact match, nil otherwise."
   (save-excursion
     (let ((verilog-all nil)
@@ -10099,7 +10099,7 @@ if non-nil."
 
 ;; Combined
 (defun verilog-decls-get-signals (decls)
-  "Return all declared signals in DECLS, excluding ‘assign’ statements."
+  "Return all declared signals in DECLS, excluding `assign' statements."
   (append
    (verilog-decls-get-outputs decls)
    (verilog-decls-get-inouts decls)
@@ -11484,14 +11484,14 @@ Lisp Templates:
   Lisp functions:
 
        vl-name        Name portion of the input/output port.
-       vl-bits        Bus bits portion of the input/output port (‘[2:0]’).
-       vl-mbits       Multidimensional array bits for port (‘[2:0][3:0]’).
-       vl-width       Width of the input/output port (‘3’ for [2:0]).
+       vl-bits        Bus bits portion of the input/output port (`[2:0]').
+       vl-mbits       Multidimensional array bits for port (`[2:0][3:0]').
+       vl-width       Width of the input/output port (`3' for [2:0]).
                        May be a (...) expression if bits isn't a constant.
        vl-dir         Direction of the pin input/output/inout/interface.
        vl-modport     The modport, if an interface with a modport.
-       vl-cell-type   Module name/type of the cell (‘InstModule’).
-       vl-cell-name   Instance name of the cell (‘instName’).
+       vl-cell-type   Module name/type of the cell (`InstModule').
+       vl-cell-name   Instance name of the cell (`instName').
 
   Normal Lisp variables may be used in expressions.  See
   `verilog-read-defines' which can set vh-{definename} variables for use
@@ -14177,7 +14177,7 @@ Files are checked based on `verilog-library-flags'."
                             (match-string 1) (buffer-file-name))))
          (when warn
            (message
-            "File ‘%s’ isn't readable, use shift-mouse2 to paste in this field"
+            "File `%s' isn't readable, use shift-mouse2 to paste in this field"
             (match-string 1))))))))
 
 
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 47b15d8..19a7e97 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -164,7 +164,7 @@
 '/' or is empty)."
   (let ((val (widget-value widget)))
     (unless (string-match "^\\(\\|.*/\\)$" val)
-      (widget-put widget :error "Invalid directory entry: must end with ‘/’")
+      (widget-put widget :error "Invalid directory entry: must end with `/'")
       widget)))
 
 ;; help string for user options
@@ -4361,7 +4361,7 @@ Usage:
       ;;;  -->  \" := \"      [[  -->  [        --CR  -->  comment-out code
       ..   -->  \" => \"      ]   -->  )        ---   -->  horizontal line
       ,,   -->  \" <= \"      ]]  -->  ]        ----  -->  display comment
-      ==   -->  \" == \"      ''  -->  \\\"
+      ==   -->  \" == \"      \\='\\='  -->  \\\"
 
 
   WORD COMPLETION:
@@ -4808,7 +4808,7 @@ Usage:
     automatically recognized as VHDL source files.  To add an extension
     \".xxx\", add the following line to your Emacs start-up file (`.emacs'):
 
-      \(push '(\"\\\\.xxx\\\\'\" . vhdl-mode) auto-mode-alist)
+      \(push \\='(\"\\\\.xxx\\\\\\='\" . vhdl-mode) auto-mode-alist)
 
 
   HINTS:
@@ -5714,7 +5714,7 @@ the offset is simply returned."
        (t nil)))))
 
 (defun vhdl-in-extended-identifier-p ()
-  "Determine if point is inside extended identifier (delimited by ‘\\’)."
+  "Determine if point is inside extended identifier (delimited by `\\')."
   (save-match-data
     (and (save-excursion (re-search-backward "\\\\" (vhdl-point 'bol) t))
         (save-excursion (re-search-forward "\\\\" (vhdl-point 'eol) t)))))
@@ -8743,7 +8743,7 @@ is omitted or nil."
              (vhdl-comment-insert)))))
     (self-insert-command count)))
 
-(defun vhdl-electric-open-bracket (count) "‘[’ --> ‘(’, ‘([’ --> ‘[’"
+(defun vhdl-electric-open-bracket (count) "`[' --> `(', `([' --> `['"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (if (= (preceding-char) ?\()
@@ -8751,7 +8751,7 @@ is omitted or nil."
        (insert-char ?\( 1))
     (self-insert-command count)))
 
-(defun vhdl-electric-close-bracket (count) "‘]’ --> ‘)’, ‘)]’ --> ‘]’"
+(defun vhdl-electric-close-bracket (count) "`]' --> `)', `)]' --> `]'"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (progn
@@ -8769,7 +8769,7 @@ is omitted or nil."
        (insert-char ?\' 1))
     (self-insert-command count)))
 
-(defun vhdl-electric-semicolon (count) "‘;;’ --> ‘ : ’, ‘: ;’ --> ‘ := ’"
+(defun vhdl-electric-semicolon (count) "`;;' --> ` : ', `: ;' --> ` := '"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (cond ((= (preceding-char) vhdl-last-input-event)
@@ -8783,7 +8783,7 @@ is omitted or nil."
            (t (insert-char ?\; 1)))
     (self-insert-command count)))
 
-(defun vhdl-electric-comma (count) "‘,,’ --> ‘ <= ’"
+(defun vhdl-electric-comma (count) "`,,' --> ` <= '"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (cond ((= (preceding-char) vhdl-last-input-event)
@@ -8793,7 +8793,7 @@ is omitted or nil."
            (t (insert-char ?\, 1)))
     (self-insert-command count)))
 
-(defun vhdl-electric-period (count) "‘..’ --> ‘ => ’"
+(defun vhdl-electric-period (count) "`..' --> ` => '"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (cond ((= (preceding-char) vhdl-last-input-event)
@@ -8803,7 +8803,7 @@ is omitted or nil."
            (t (insert-char ?\. 1)))
     (self-insert-command count)))
 
-(defun vhdl-electric-equal (count) "‘==’ --> ‘ == ’"
+(defun vhdl-electric-equal (count) "`==' --> ` == '"
   (interactive "p")
   (if (and vhdl-stutter-mode (= count 1) (not (vhdl-in-literal)))
       (cond ((= (preceding-char) vhdl-last-input-event)
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index b0a8eb7..7eff1f1 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -390,8 +390,8 @@ elements is negated."
   "Go to the location of ITEM and display the buffer.
 WINDOW controls how the buffer is displayed:
   nil      -- switch-to-buffer
-  'window  -- pop-to-buffer (other window)
-  'frame   -- pop-to-buffer (other frame)"
+  `window' -- pop-to-buffer (other window)
+  `frame'  -- pop-to-buffer (other frame)"
   (let* ((marker (save-excursion
                    (xref-location-marker (xref-item-location item))))
          (buf (marker-buffer marker)))
diff --git a/lisp/recentf.el b/lisp/recentf.el
index a599383..8f420af 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1224,7 +1224,7 @@ use for the dialog.  It defaults to 
\"*`recentf-menu-title'*\"."
                        ", or type the corresponding digit key,"
                      "")
                    " to open it.\n"
-                   (format-message "Click on Cancel or type ‘q’ to cancel.\n"))
+                   (format-message "Click on Cancel or type `q' to cancel.\n"))
     ;; Use a L&F that looks like the recentf menu.
     (tree-widget-set-theme "folder")
     (apply 'widget-create
diff --git a/lisp/replace.el b/lisp/replace.el
index be73cab..37e97e2 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -209,9 +209,9 @@ wants to replace FROM with TO."
              (let ((match (match-string 3 from)))
                (cond
                 ((string= match "\\n")
-                 (message "Note: ‘\\n’ here doesn't match a newline; to do 
that, type C-q C-j instead"))
+                 (message "Note: `\\n' here doesn't match a newline; to do 
that, type C-q C-j instead"))
                 ((string= match "\\t")
-                 (message "Note: ‘\\t’ here doesn't match a tab; to do that, 
just type TAB")))
+                 (message "Note: `\\t' here doesn't match a tab; to do that, 
just type TAB")))
                (sit-for 2)))
         (if (not to)
             from
@@ -1140,7 +1140,7 @@ To return to ordinary Occur mode, use 
\\[occur-cease-edit]."
            (goto-char m)
            (recenter line)
            (if readonly
-               (message "Buffer ‘%s’ is read only." buf)
+               (message "Buffer `%s' is read only." buf)
              (delete-region (line-beginning-position) (line-end-position))
              (insert text))
            (move-to-column col)))))))
@@ -1496,7 +1496,7 @@ See also `multi-occur'."
                     ;; it is longer than window-width.
                     (if (> (+ (length regexp) 42) (window-width))
                         "" (format-message
-                             " for ‘%s’" (query-replace-descr regexp)))))
+                             " for `%s'" (query-replace-descr regexp)))))
          (setq occur-revert-arguments (list regexp nlines bufs))
           (if (= count 0)
               (kill-buffer occur-buf)
diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el
index c46e05d..635990a 100644
--- a/lisp/scroll-bar.el
+++ b/lisp/scroll-bar.el
@@ -61,7 +61,7 @@ SIDE must be the symbol `left' or `right'."
          (cols  (nth 1 wsb)))
     (cond
      ((not (memq side '(left right)))
-      (error "‘left’ or ‘right’ expected instead of %S" side))
+      (error "`left' or `right' expected instead of %S" side))
      ((and (eq vtype side) cols))
      ((eq (frame-parameter nil 'vertical-scroll-bars) side)
       ;; nil means it's a non-toolkit scroll bar, and its width in
diff --git a/lisp/server.el b/lisp/server.el
index b16a06e..5a67f12 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -575,7 +575,7 @@ If the key is not valid, signal an error."
   (if server-auth-key
     (if (string-match-p "^[!-~]\\{64\\}$" server-auth-key)
         server-auth-key
-      (error "The key ‘%s’ is invalid" server-auth-key))
+      (error "The key `%s' is invalid" server-auth-key))
     (server-generate-key)))
 
 ;;;###autoload
diff --git a/lisp/simple.el b/lisp/simple.el
index b8d4e74..f80faae 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1655,7 +1655,7 @@ invoking, give a prefix argument to 
`execute-extended-command'."
                       (not executing-kbd-macro)
                       (where-is-internal function overriding-local-map t))))
     (unless (commandp function)
-      (error "‘%s’ is not a valid command name" command-name))
+      (error "`%s' is not a valid command name" command-name))
     (setq this-command function)
     ;; Normally `real-this-command' should never be changed, but here we really
     ;; want to pretend that M-x <cmd> RET is nothing more than a "key
@@ -1689,7 +1689,7 @@ invoking, give a prefix argument to 
`execute-extended-command'."
                            (symbol-name function) typed))))
         (when binding
           (with-temp-message
-              (format-message "You can run the command ‘%s’ with %s"
+              (format-message "You can run the command `%s' with %s"
                               function
                               (if (stringp binding)
                                   (concat "M-x " binding " RET")
@@ -2801,7 +2801,7 @@ This variable only matters if `undo-ask-before-discard' 
is non-nil.")
        (setq undo-extra-outer-limit (+ size 50000))
        (if (let (use-dialog-box track-mouse executing-kbd-macro )
              (yes-or-no-p (format-message
-                            "Buffer ‘%s’ undo info is %d bytes long; discard 
it? "
+                            "Buffer `%s' undo info is %d bytes long; discard 
it? "
                             (buffer-name) size)))
            (progn (setq buffer-undo-list nil)
                   (setq undo-extra-outer-limit nil)
@@ -2810,7 +2810,7 @@ This variable only matters if `undo-ask-before-discard' 
is non-nil.")
     (display-warning '(undo discard-info)
                     (concat
                      (format-message
-                       "Buffer ‘%s’ undo info was %d bytes long.\n"
+                       "Buffer `%s' undo info was %d bytes long.\n"
                        (buffer-name) size)
                      "The undo info was discarded because it exceeded \
 `undo-outer-limit'.
@@ -3570,7 +3570,7 @@ Also, delete any process that is exited or signaled."
                                 `(,(buffer-name buf)
                                   face link
                                   help-echo ,(format-message
-                                              "Visit buffer ‘%s’"
+                                              "Visit buffer `%s'"
                                               (buffer-name buf))
                                   follow-link t
                                   process-buffer ,buf
@@ -7348,11 +7348,11 @@ buffer buried."
                (push var warn-vars)))
         (when warn-vars
           (display-warning 'mail
-                           (format "\
+                           (format-message "\
 The default mail mode is now Message mode.
 You have the following Mail mode variable%s customized:
-\n  %s\n\nTo use Mail mode, set ‘mail-user-agent’ to sendmail-user-agent.
-To disable this warning, set ‘compose-mail-user-agent-warnings’ to nil."
+\n  %s\n\nTo use Mail mode, set `mail-user-agent' to sendmail-user-agent.
+To disable this warning, set `compose-mail-user-agent-warnings' to nil."
                                    (if (> (length warn-vars) 1) "s" "")
                                    (mapconcat 'symbol-name
                                               warn-vars " "))))))
@@ -7423,8 +7423,8 @@ With a prefix argument, set VARIABLE to VALUE 
buffer-locally."
                                (t "globally"))))
          (val (progn
                  (when obsolete
-                   (message (concat "‘%S’ is obsolete; "
-                                    (if (symbolp obsolete) "use ‘%S’ instead" 
"%s"))
+                   (message (concat "`%S' is obsolete; "
+                                    (if (symbolp obsolete) "use `%S' instead" 
"%s"))
                             var obsolete)
                    (sit-for 3))
                  (if prop
@@ -7448,7 +7448,7 @@ With a prefix argument, set VARIABLE to VALUE 
buffer-locally."
       (require 'cus-edit)
       (setq type (widget-convert type))
       (unless (widget-apply type :match value)
-       (user-error "Value ‘%S’ does not match type %S of %S"
+       (user-error "Value `%S' does not match type %S of %S"
                    value (car type) variable))))
 
   (if make-local
@@ -7659,7 +7659,7 @@ back on `completion-list-insert-choice-function' when 
nil."
   ;; `base-position'.  It's difficult to make any use of `base-size',
   ;; so we just ignore it.
   (unless (consp base-position)
-    (message "Obsolete ‘base-size’ passed to choose-completion-string")
+    (message "Obsolete `base-size' passed to choose-completion-string")
     (setq base-position nil))
 
   (let* ((buffer (or buffer completion-reference-buffer))
@@ -8384,7 +8384,7 @@ CUSTOMIZATIONS, if non-nil, should be composed of 
alternating
     `(progn
 
        (defcustom ,varalt-sym nil
-         ,(format "Alist of alternative implementations for the ‘%s’ command.
+         ,(format "Alist of alternative implementations for the `%s' command.
 
 Each entry must be a pair (ALTNAME . ALTFUN), where:
 ALTNAME - The name shown at user to describe the alternative implementation.
@@ -8397,22 +8397,22 @@ ALTFUN  - The function called to implement this 
alternative."
        (defvar ,varimp-sym nil "Internal use only.")
 
        (defun ,command (&optional arg)
-         ,(format "Run generic command ‘%s’.
+         ,(format "Run generic command `%s'.
 If used for the first time, or with interactive ARG, ask the user which
-implementation to use for ‘%s’.  The variable ‘%s’
+implementation to use for `%s'.  The variable `%s'
 contains the list of implementations currently supported for this command."
                   command-name command-name varalt-name)
          (interactive "P")
          (when (or arg (null ,varimp-sym))
            (let ((val (completing-read
                       ,(format-message
-                         "Select implementation for command ‘%s’: "
+                         "Select implementation for command `%s': "
                          command-name)
                       ,varalt-sym nil t)))
              (unless (string-equal val "")
               (when (null ,varimp-sym)
                 (message
-                 "Use ‘C-u M-x %s RET’ to select another implementation"
+                 "Use C-u M-x %s RET`to select another implementation"
                  ,command-name)
                 (sit-for 3))
               (customize-save-variable ',varimp-sym
@@ -8420,7 +8420,7 @@ contains the list of implementations currently supported 
for this command."
          (if ,varimp-sym
              (call-interactively ,varimp-sym)
            (message "%s" ,(format-message
-                           "No implementation selected for command ‘%s’"
+                           "No implementation selected for command `%s'"
                            command-name)))))))
 
 
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 2989274..97c977c 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -203,7 +203,7 @@ the user is done with the current expansion list.")
     )
   "List of functions to periodically call stealthily.
 This list is of the form:
- '( (\"NAME\" FUNCTION ...)
+  ( (\"NAME\" FUNCTION ...)
     ...)
 where NAME is the name of the major display mode these functions are
 for, and the remaining elements FUNCTION are functions to call in order.
@@ -458,9 +458,9 @@ items is reached."
 (defcustom speedbar-directory-button-trim-method 'span
   "Indicates how the directory button will be displayed.
 Possible values are:
- 'span - span large directories over multiple lines.
- 'trim - trim large directories to only show the last few.
- nil   - no trimming."
+ `span' - span large directories over multiple lines.
+ `trim' - trim large directories to only show the last few.
+ nil    - no trimming."
   :group 'speedbar
   :type '(radio (const :tag "Span large directories over multiple lines."
                       span)
diff --git a/lisp/startup.el b/lisp/startup.el
index b5e258f..9caf485 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -86,7 +86,7 @@ or if your init file contains a line of this form:
  (setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\")
 If your init file is byte-compiled, use the following form
 instead:
- (eval '(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\"))
+ (eval \\='(setq inhibit-startup-echo-area-message \"YOUR-USER-NAME\"))
 Thus, someone else using a copy of your init file will see the
 startup message unless he personally acts to inhibit it."
   :type '(choice (const :tag "Don't inhibit")
@@ -360,7 +360,7 @@ this variable usefully is to set it while building and 
dumping Emacs."
   :group 'initialization
   :initialize #'custom-initialize-default
   :set (lambda (_variable _value)
-         (error "Customizing ‘site-run-file’ does not work")))
+         (error "Customizing `site-run-file' does not work")))
 
 (make-obsolete-variable 'system-name "use (system-name) instead" "25.1")
 
@@ -752,7 +752,7 @@ to prepare for opening the first frame (e.g. open a 
connection to an X server)."
                (let ((elt (assoc completion tty-long-option-alist)))
                  ;; Check for abbreviated long option.
                  (or elt
-                     (error "Option ‘%s’ is ambiguous" argi))
+                     (error "Option `%s' is ambiguous" argi))
                  (setq argi (cdr elt)))
              ;; Check for a short option.
              (setq argval nil
@@ -804,13 +804,18 @@ to prepare for opening the first frame (e.g. open a 
connection to an X server)."
 (defvar server-process)
 
 (defun startup--setup-quote-display ()
-  "If curved quotes don't work, display ASCII approximations."
-  (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?” . ?\")))
-    (when (not (char-displayable-p (car char-repl)))
-      (unless standard-display-table
-        (setq standard-display-table (make-display-table)))
-      (aset standard-display-table (car char-repl)
-            (vector (make-glyph-code (cdr char-repl) 'shadow))))))
+  "Display ASCII approximations on user request or if curved quotes don't 
work."
+  (when (memq text-quoting-style '(nil grave straight))
+    (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?” . ?\")))
+      (let ((char (car char-repl))
+            (repl (cdr char-repl)))
+        (when (or text-quoting-style (not (char-displayable-p char)))
+          (when (and (eq repl ?\`) (eq text-quoting-style 'straight))
+            (setq repl ?\'))
+          (unless standard-display-table
+            (setq standard-display-table (make-display-table)))
+          (aset standard-display-table char
+                (vector (make-glyph-code repl 'shadow))))))))
 
 (defun command-line ()
   "A subroutine of `normal-top-level'.
@@ -911,7 +916,7 @@ please check its value")
                  ((stringp completion)
                   (let ((elt (assoc completion longopts)))
                     (unless elt
-                      (error "Option ‘%s’ is ambiguous" argi))
+                      (error "Option `%s' is ambiguous" argi))
                     (setq argi (substring (car elt) 1))))
                  (t
                   (setq argval nil
@@ -954,7 +959,7 @@ please check its value")
           (setq done t)))
        ;; Was argval set but not used?
        (and argval
-            (error "Option ‘%s’ doesn't allow an argument" argi))))
+            (error "Option `%s' doesn't allow an argument" argi))))
 
     ;; Re-attach the --display arg.
     (and display-arg (setq args (append display-arg args)))
@@ -973,7 +978,7 @@ please check its value")
               (not (featurep
                     (intern
                      (concat (symbol-name initial-window-system) "-win")))))
-         (error "Unsupported window system ‘%s’" initial-window-system))
+         (error "Unsupported window system `%s'" initial-window-system))
       ;; Process window-system specific command line parameters.
       (setq command-line-args
             (let ((window-system initial-window-system)) ;Hack attack!
@@ -1184,10 +1189,10 @@ please check its value")
             (display-warning
              'initialization
              (format-message "\
-An error occurred while loading ‘%s’:\n\n%s%s%s\n\n\
+An error occurred while loading `%s':\n\n%s%s%s\n\n\
 To ensure normal operation, you should investigate and remove the
 cause of the error in your initialization file.  Start Emacs with
-the ‘--debug-init’ option to view a complete error backtrace."
+the `--debug-init' option to view a complete error backtrace."
                      user-init-file
                      (get (car error) 'error-message)
                      (if (cdr error) ": " "")
@@ -1234,6 +1239,11 @@ the ‘--debug-init’ option to view a complete error 
backtrace."
        ;; unibyte (display table, terminal coding system &c).
        (set-language-environment current-language-environment)))
 
+    ;; Setup quote display again, if the init file sets
+    ;; text-quoting-style to a non-nil value.
+    (when (and (not noninteractive) text-quoting-style)
+      (startup--setup-quote-display))
+
     ;; Do this here in case the init file sets mail-host-address.
     (if (equal user-mail-address "")
        (setq user-mail-address (or (getenv "EMAIL")
@@ -1320,8 +1330,8 @@ the ‘--debug-init’ option to view a complete error 
backtrace."
           (setq warned t)
           (display-warning 'initialization
                            (format-message "\
-Your ‘load-path’ seems to contain\n\
-your ‘.emacs.d’ directory: %s\n\
+Your `load-path' seems to contain\n\
+your `.emacs.d' directory: %s\n\
 This is likely to cause problems...\n\
 Consider using a subdirectory instead, e.g.: %s"
                                     dir (expand-file-name
@@ -1380,11 +1390,11 @@ settings will be marked as \"CHANGED outside of 
Customize\"."
 
 (defcustom initial-scratch-message (purecopy "\
 ;; This buffer is for notes you don't want to save, and for Lisp evaluation.
-;; If you want to create a file, visit that file with C-x C-f,
+;; If you want to create a file, visit that file with \\[find-file],
 ;; then enter the text in that file's own buffer.
 
 ")
-  "Initial message displayed in *scratch* buffer at startup.
+  "Initial documentation displayed in *scratch* buffer at startup.
 If this is nil, no message will be displayed."
   :type '(choice (text :tag "Message")
                 (const :tag "none" nil))
@@ -2270,7 +2280,7 @@ nil default-directory" name)
                     (if (stringp completion)
                         (let ((elt (member completion longopts)))
                           (or elt
-                              (error "Option ‘%s’ is ambiguous" argi))
+                              (error "Option `%s' is ambiguous" argi))
                           (setq argi (substring (car elt) 1)))
                       (setq argval nil
                             argi orig-argi)))))
@@ -2340,7 +2350,7 @@ nil default-directory" name)
                      (setq inhibit-startup-screen t)
                      (setq tem (or argval (pop command-line-args-left)))
                      (or (stringp tem)
-                         (error "File name omitted from ‘-insert’ option"))
+                         (error "File name omitted from `-insert' option"))
                      (insert-file-contents (command-line-normalize-file-name 
tem)))
 
                     ((equal argi "-kill")
@@ -2375,7 +2385,7 @@ nil default-directory" name)
                      ;; An explicit option to specify visiting a file.
                      (setq tem (or argval (pop command-line-args-left)))
                      (unless (stringp tem)
-                       (error "File name omitted from ‘%s’ option" argi))
+                       (error "File name omitted from `%s' option" argi))
                      (funcall process-file-arg tem))
 
                     ;; These command lines now have no effect.
@@ -2396,7 +2406,7 @@ nil default-directory" name)
                        (unless did-hook
                          ;; Presume that the argument is a file name.
                          (if (string-match "\\`-" argi)
-                             (error "Unknown option ‘%s’" argi))
+                             (error "Unknown option `%s'" argi))
                          ;; FIXME: Why do we only inhibit the startup
                          ;; screen for -nw?
                          (unless initial-window-system
@@ -2420,7 +2430,7 @@ nil default-directory" name)
         (get-buffer "*scratch*")
         (with-current-buffer "*scratch*"
           (when (zerop (buffer-size))
-            (insert initial-scratch-message)
+            (insert (substitute-command-keys initial-scratch-message))
             (set-buffer-modified-p nil))))
 
     ;; Prepend `initial-buffer-choice' to `displayable-buffers'.
diff --git a/lisp/subr.el b/lisp/subr.el
index 61b8706..ce3011d 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -72,7 +72,7 @@ For more information, see Info node `(elisp)Declaring 
Functions'."
 If FORM does return, signal an error."
   (declare (debug t))
   `(prog1 ,form
-     (error "Form marked with ‘noreturn’ did return")))
+     (error "Form marked with `noreturn' did return")))
 
 (defmacro 1value (form)
   "Evaluate FORM, expecting a constant return value.
@@ -320,7 +320,7 @@ Defaults to `error'."
                     (mapcar (lambda (parent)
                               (cons parent
                                     (or (get parent 'error-conditions)
-                                        (error "Unknown signal ‘%s’" parent))))
+                                        (error "Unknown signal `%s'" parent))))
                             parent))
            (cons parent (get parent 'error-conditions)))))
     (put name 'error-conditions
@@ -1607,7 +1607,7 @@ can do the job."
         (let* ((sym (cadr list-var))
                (append (eval append))
                (msg (format-message
-                     "‘add-to-list’ can't use lexical var ‘%s’; use ‘push’ or 
‘cl-pushnew’"
+                     "`add-to-list' can't use lexical var `%s'; use `push' or 
`cl-pushnew'"
                      sym))
                ;; Big ugly hack so we only output a warning during
                ;; byte-compilation, and so we can use
@@ -2208,7 +2208,7 @@ Any input that is not one of CHARS is ignored.
 If optional argument INHIBIT-KEYBOARD-QUIT is non-nil, ignore
 keyboard-quit events while waiting for a valid input."
   (unless (consp chars)
-    (error "Called ‘read-char-choice’ without valid char choices"))
+    (error "Called `read-char-choice' without valid char choices"))
   (let (char done show-help (helpbuf " *Char Help*"))
     (let ((cursor-in-echo-area t)
           (executing-kbd-macro executing-kbd-macro)
@@ -4773,7 +4773,7 @@ Examples of version conversion:
 
 See documentation for `version-separator' and `version-regexp-alist'."
   (or (and (stringp ver) (> (length ver) 0))
-      (error "Invalid version string: ‘%s’" ver))
+      (error "Invalid version string: `%s'" ver))
   ;; Change .x.y to 0.x.y
   (if (and (>= (length ver) (length version-separator))
           (string-equal (substring ver 0 (length version-separator))
@@ -4805,9 +4805,9 @@ See documentation for `version-separator' and 
`version-regexp-alist'."
                  ((string-match "^[-_+ ]?\\([a-zA-Z]\\)$" s)
                   (push (- (aref (downcase (match-string 1 s)) 0) ?a -1)
                         lst))
-                 (t (error "Invalid version syntax: ‘%s’" ver))))))
+                 (t (error "Invalid version syntax: `%s'" ver))))))
       (if (null lst)
-         (error "Invalid version syntax: ‘%s’" ver)
+         (error "Invalid version syntax: `%s'" ver)
        (nreverse lst)))))
 
 
diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el
index ccac142..98ad5ac 100644
--- a/lisp/term/common-win.el
+++ b/lisp/term/common-win.el
@@ -112,7 +112,7 @@
 ;; Handle the -xrm option.
 (defun x-handle-xrm-switch (switch)
   (unless (consp x-invocation-args)
-    (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+    (error "%s: missing argument to `%s' option" (invocation-name) switch))
   (setq x-command-line-resources
        (if (null x-command-line-resources)
            (pop x-invocation-args)
@@ -152,7 +152,7 @@
 ;; the initial frame, too.
 (defun x-handle-name-switch (switch)
   (or (consp x-invocation-args)
-      (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+      (error "%s: missing argument to `%s' option" (invocation-name) switch))
   (setq x-resource-name (pop x-invocation-args)
        initial-frame-alist (cons (cons 'name x-resource-name)
                                  initial-frame-alist)))
@@ -207,7 +207,7 @@ have been processed."
                  (let ((elt (assoc completion option-alist)))
                    ;; Check for abbreviated long option.
                    (or elt
-                       (error "Option ‘%s’ is ambiguous" this-switch))
+                       (error "Option `%s' is ambiguous" this-switch))
                    (setq this-switch completion))))))
       (setq aelt (assoc this-switch option-alist))
       (if aelt (setq handler (nth 2 aelt)))
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index c325661..ebd76a6 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -93,7 +93,7 @@
 ;; Handle the --parent-id option.
 (defun x-handle-parent-id (switch)
   (or (consp x-invocation-args)
-      (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+      (error "%s: missing argument to `%s' option" (invocation-name) switch))
   (setq initial-frame-alist (cons
                              (cons 'parent-id
                                    (string-to-number (car x-invocation-args)))
@@ -104,7 +104,7 @@
 ;; to give us back our session id we had on the previous run.
 (defun x-handle-smid (switch)
   (or (consp x-invocation-args)
-      (error "%s: missing argument to ‘%s’ option" (invocation-name) switch))
+      (error "%s: missing argument to `%s' option" (invocation-name) switch))
   (setq x-session-previous-id (car x-invocation-args)
        x-invocation-args (cdr x-invocation-args)))
 
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 3fe21c4..87c2a95 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -388,7 +388,7 @@ It consists of pairs (REGEXP . DICTIONARY).  If REGEXP is 
found
 in the message headers, `ispell-local-dictionary' will be set to
 DICTIONARY if `ispell-local-dictionary' is not buffer-local.
 E.g. you may use the following value:
-  '((\"^Newsgroups:[ \\t]*de\\\\.\" . \"deutsch8\")
+   ((\"^Newsgroups:[ \\t]*de\\\\.\" . \"deutsch8\")
     (\"^To:[^\\n,]+\\\\.de[ \\t\\n,>]\" . \"deutsch8\"))"
   :type '(repeat (cons regexp string))
   :group 'ispell)
@@ -484,7 +484,7 @@ The function must take one string argument and return a 
string."
   "When non-nil ispell uses framepop to display choices in a dedicated frame.
 You can set this variable to dynamically use framepop if you are in a
 window system by evaluating the following on startup to set this variable:
-  (and window-system (condition-case () (require 'framepop) (error nil)))"
+  (and window-system (condition-case () (require \\='framepop) (error nil)))"
   :type 'boolean
   :group 'ispell)
 
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index 0714723..df78447 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -228,7 +228,7 @@ This function is controlled by the settings of 
reftex-insert-label-flags."
                                  (symbol-value reftex-docstruct-symbol)))
               (ding)
               (if (y-or-n-p
-                   (format-message "Label ‘%s’ exists. Use anyway? " label))
+`                  (format-message "Label `%s' exists. Use anyway? " label))
                   (setq valid t)))
 
              ;; Label is ok
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index b9d4b7c..bdae6e5 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -876,7 +876,7 @@ label prefix determines the wording of a reference."
     (setq newlabel (read-string (format "Rename label \"%s\" to:" label)))
     (if (assoc newlabel (symbol-value reftex-docstruct-symbol))
         (if (not (y-or-n-p
-                  (format-message "Label ‘%s’ exists.  Use anyway? " label)))
+                  (format-message "Label `%s' exists.  Use anyway? " label)))
             (error "Abort")))
     (save-excursion
       (save-window-excursion
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index a8f5fce..482dd4c 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -1153,9 +1153,9 @@ path."
   "Sorting of the entries found in BibTeX databases by reftex-citation.
 Possible values:
 nil            Do not sort entries.
-'author        Sort entries by author name.
-'year          Sort entries by increasing year.
-'reverse-year  Sort entries by decreasing year."
+`author'       Sort entries by author name.
+`year'         Sort entries by increasing year.
+`reverse-year' Sort entries by decreasing year."
   :group 'reftex-citation-support
   :type '(choice (const :tag "not" nil)
                  (const :tag "by author" author)
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index f95f4fa..7dc9184 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -2932,7 +2932,7 @@ When LEVEL is non-nil, increase section numbers on that 
level.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-ref" "reftex-ref.el" 
"35c0c8fcf8eebfc4366bf0f78aed7f2f")
+;;;### (autoloads nil "reftex-ref" "reftex-ref.el" 
"86c0a243e49d55bb33a32ddac613e189")
 ;;; Generated autoloads from reftex-ref.el
 
 (autoload 'reftex-label-location "reftex-ref" "\
@@ -3046,7 +3046,7 @@ During a selection process, these are the local bindings.
 
 ;;;***
 
-;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"e3514ef292edfce6722c75225456ffa1")
+;;;### (autoloads nil "reftex-toc" "reftex-toc.el" 
"db9b727d89e2a6ff01986e7c6aff1058")
 ;;; Generated autoloads from reftex-toc.el
 
 (autoload 'reftex-toc "reftex-toc" "\
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index 7a2857a..9625ec2 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -2138,15 +2138,15 @@ for completion and choices.
 
  (a) If user selects bullets or #, it's just added.
  (b) If user selects enumerations, a further prompt is given.  User needs to
-     input a starting item, for example 'e' for 'A)' style.
+     input a starting item, for example `e' for `A)' style.
 
 The position of the new list is arranged according to whether or not the
 current line and the previous line are blank lines.
 
 2. When continuing a list, one thing needs to be noticed:
 
-List style alphabetical list, such as 'a.', and roman numerical list, such as
-'i.', have some overlapping items, for example 'v.' The function can deal with
+List style alphabetical list, such as `a.', and roman numerical list, such as
+`i.', have some overlapping items, for example `v.' The function can deal with
 the problem elegantly in most situations.  But when those overlapped list are
 preceded by a blank line, it is hard to determine which type to use
 automatically.  The function uses alphabetical list by default.  If you want
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 1d872f0..cb65e5f 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -2066,7 +2066,7 @@ Images in many formats can be inlined with <img 
src=\"URL\">.
 If you mainly create your own documents, `sgml-specials' might be
 interesting.  But note that some HTML 2 browsers can't handle `&apos;'.
 To work around that, do:
-   (eval-after-load \"sgml-mode\" '(aset sgml-char-names ?\\=' nil))
+   (eval-after-load \"sgml-mode\" \\='(aset sgml-char-names ?\\=' nil))
 
 \\{html-mode-map}"
   (setq-local sgml-display-text html-display-text)
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 9c50eca..151d648 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -2806,8 +2806,8 @@ ORIENTATION is a symbol either horizontally or 
vertically."
 ;;;###autoload
 (defun table-justify (what justify)
   "Justify contents of a cell, a row of cells or a column of cells.
-WHAT is a symbol ‘cell’, ‘row’ or ‘column’.  JUSTIFY is a symbol
-‘left’, ‘center’, ‘right’, ‘top’, ‘middle’, ‘bottom’ or ‘none’."
+WHAT is a symbol `cell', `row' or `column'.  JUSTIFY is a symbol
+`left', `center', `right', `top', `middle', `bottom' or `none'."
   (interactive
    (list (let* ((_ (barf-if-buffer-read-only))
                (completion-ignore-case t)
@@ -2822,8 +2822,8 @@ WHAT is a symbol ‘cell’, ‘row’ or ‘column’.  JUSTIFY is a 
symbol
 ;;;###autoload
 (defun table-justify-cell (justify &optional paragraph)
   "Justify cell contents.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal, or ‘top’,
-‘middle’, ‘bottom’ or ‘none’ for vertical.  When optional PARAGRAPH is
+JUSTIFY is a symbol `left', `center' or `right' for horizontal, or `top',
+`middle', `bottom' or `none' for vertical.  When optional PARAGRAPH is
 non-nil the justify operation is limited to the current paragraph,
 otherwise the entire cell contents is justified."
   (interactive
@@ -2835,8 +2835,8 @@ otherwise the entire cell contents is justified."
 ;;;###autoload
 (defun table-justify-row (justify)
   "Justify cells of a row.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal,
-or ‘top’, ‘middle’, ‘bottom’ or ‘none’ for vertical."
+JUSTIFY is a symbol `left', `center' or `right' for horizontal,
+or `top', `middle', `bottom' or `none' for vertical."
   (interactive
    (list (table--query-justification)))
   (let((cell-list (table--horizontal-cell-list nil nil 'top)))
@@ -2852,8 +2852,8 @@ or ‘top’, ‘middle’, ‘bottom’ or ‘none’ for vertical."
 ;;;###autoload
 (defun table-justify-column (justify)
   "Justify cells of a column.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal,
-or ‘top’, ‘middle’, ‘bottom’ or ‘none’ for vertical."
+JUSTIFY is a symbol `left', `center' or `right' for horizontal,
+or `top', `middle', `bottom' or `none' for vertical."
   (interactive
    (list (table--query-justification)))
   (let((cell-list (table--vertical-cell-list nil nil 'left)))
@@ -3341,8 +3341,8 @@ INTERVAL is the number of cells to travel between 
sequence element
 insertion which is normally 1.  When zero or less is given for
 INTERVAL it is interpreted as number of cells per row so that sequence
 is placed straight down vertically as long as the table's cell
-structure is uniform.  JUSTIFY is a symbol ‘left’, ‘center’ or
-‘right’ that specifies justification of the inserted string.
+structure is uniform.  JUSTIFY is a symbol `left', `center' or
+`right' that specifies justification of the inserted string.
 
 Example:
 
@@ -4461,8 +4461,8 @@ looking at the appearance of the CELL contents."
 
 (defun table--justify-cell-contents (justify &optional paragraph)
   "Justify the current cell contents.
-JUSTIFY is a symbol ‘left’, ‘center’ or ‘right’ for horizontal, or ‘top’,
-‘middle’, ‘bottom’ or ‘none’ for vertical.  When PARAGRAPH is non-nil the
+JUSTIFY is a symbol `left', `center' or `right' for horizontal, or `top',
+`middle', `bottom' or `none' for vertical.  When PARAGRAPH is non-nil the
 justify operation is limited to the current paragraph."
   (table-with-cache-buffer
     (let ((beg (point-min))
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 6244189..5fdf9e3 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -3410,6 +3410,8 @@ There might be text before point."
     (not (or
           ;; Don't compose address@hidden
           (eq after-syntax ?_)
+          ;; Don't compose inside verbatim blocks!
+          (nth 8 (syntax-ppss))
           ;; The \alpha in \alpha2 may be composed but of course \alphax may 
not.
           (and (eq after-syntax ?w)
                (or (< after-char ?0)
diff --git a/lisp/textmodes/texnfo-upd.el b/lisp/textmodes/texnfo-upd.el
index 0ce7064..0508426 100644
--- a/lisp/textmodes/texnfo-upd.el
+++ b/lisp/textmodes/texnfo-upd.el
@@ -1407,7 +1407,7 @@ level in the Texinfo file; when looking for the 
`Previous' pointer,
 the section found will be at the same or higher hierarchical level in
 the Texinfo file; when looking for the `Up' pointer, the section found
 will be at some level higher in the Texinfo file.  The fourth argument
-\(one of `next’, `previous’, or `up'\) specifies whether to find the
+\(one of `next', `previous', or `up'\) specifies whether to find the
 `Next', `Previous', or `Up' pointer."
   (let ((case-fold-search t))
     (cond ((eq direction 'next)
diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el
index c94e417..0e645fc 100644
--- a/lisp/textmodes/tildify.el
+++ b/lisp/textmodes/tildify.el
@@ -160,7 +160,7 @@ a simple pass through function could be used:
     (setq-local tildify-foreach-region-function
                 (lambda (cb beg end) (funcall cb beg end)))
 or better still:
-    (setq-local tildify-foreach-region-function 'funcall)
+    (setq-local tildify-foreach-region-function \\='funcall)
 See `tildify-foreach-ignore-environments' function for other ways to use the
 variable."
   :version "25.1"
diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el
index 5e318b5..4133e0f 100644
--- a/lisp/textmodes/two-column.el
+++ b/lisp/textmodes/two-column.el
@@ -373,7 +373,7 @@ First column's text    sSs  Second column's text
 \(See  \\[describe-mode] .)"
   (interactive "*p")
   (and (2C-other)
-       (if (y-or-n-p (format-message "Overwrite associated buffer ‘%s’? "
+       (if (y-or-n-p (format-message "Overwrite associated buffer `%s'? "
                                     (buffer-name (2C-other))))
           (with-current-buffer (2C-other)
             (erase-buffer))
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 84ffcca..a9c539b 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -145,7 +145,7 @@ a symbol as a valid THING."
            (let ((bounds (bounds-of-thing-at-point thing)))
              (when bounds
                (buffer-substring (car bounds) (cdr bounds)))))))
-    (when (and text no-properties)
+    (when (and text no-properties (sequencep text))
       (set-text-properties 0 (length text) nil text))
     text))
 
@@ -289,7 +289,7 @@ If nil, construct the regexp from 
`thing-at-point-uri-schemes'.")
     "uuid:" "vemmi://"  "webcal://" "xri://" "xmlrpc.beep://"
     "xmlrpc.beeps://" "z39.50r://" "z39.50s://" "xmpp:"
     ;; Compatibility
-    "fax:" "mms://" "mmsh://" "modem:" "prospero:" "snews:";
+    "fax:" "man:" "mms://" "mmsh://" "modem:" "prospero:" "snews:";
     "wais://")
   "List of URI schemes recognized by `thing-at-point-url-at-point'.
 Each string in this list should correspond to the start of a
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index 409ba7c..da83f3a 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -235,7 +235,7 @@ Optional arguments are:
 ARG any arguments to the ACTION command,
 OUTPUT-FORMAT is the file format to output (default is jpeg),
 ACTION-PREFIX is the symbol to place before the ACTION command
-              (defaults to '-' but can sometimes be '+')."
+              (defaults to `-' but can sometimes be `+')."
   (call-process thumbs-conversion-program nil nil nil
                (or action-prefix "-")
                action
diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el
index a29658a..0f1e4de 100644
--- a/lisp/tree-widget.el
+++ b/lisp/tree-widget.el
@@ -294,9 +294,9 @@ Typically it should contain something like this:
 
   (tree-widget-set-parent-theme \"my-parent-theme\")
   (tree-widget-set-image-properties
-   (if (featurep 'xemacs)
-       '(:ascent center)
-     '(:ascent center :mask (heuristic t))
+   (if (featurep \\='xemacs)
+       \\='(:ascent center)
+     \\='(:ascent center :mask (heuristic t))
      ))"
   (or name (setq name (or tree-widget-theme "default")))
   (unless (string-equal name (tree-widget-theme-name))
diff --git a/lisp/tutorial.el b/lisp/tutorial.el
index e9095b3..f8660f5 100644
--- a/lisp/tutorial.el
+++ b/lisp/tutorial.el
@@ -136,18 +136,18 @@ options:
                            (setq mapsym s)))))
             (insert
              (format
-              "The default Emacs binding for the key %s is the command ‘%s’.  "
+              "The default Emacs binding for the key %s is the command `%s'.  "
               (key-description key)
               db))
             (insert "However, your customizations have "
                     (if cb
-                        (format-message "rebound it to the command ‘%s’" cb)
+                        (format-message "rebound it to the command `%s'" cb)
                       "unbound it"))
             (insert ".")
             (when mapsym
               (insert "  (For the more advanced user:"
                       (format-message
-                       " This binding is in the keymap ‘%s’.)" mapsym)))
+                       " This binding is in the keymap `%s'.)" mapsym)))
             (if (string= where "")
                 (unless (keymapp db)
                   (insert "\n\nYou can use M-x "
@@ -159,7 +159,7 @@ options:
                           ""
                         "the key")
                       where
-                      (format-message " to get the function ‘%s’." db))))
+                      (format-message " to get the function `%s'." db))))
           (fill-region (point-min) (point)))))
       (help-print-return-message))))
 
@@ -451,7 +451,7 @@ where
                                               (lookup-key global-map
                                                           [menu-bar]))))
                                 (stringp cwhere))
-                           (format-message "the ‘%s’ menu" cwhere)
+                           (format-message "the `%s' menu" cwhere)
                          "the menus"))))
            (setq where ""))
          (setq remark nil)
diff --git a/lisp/type-break.el b/lisp/type-break.el
index c7043b5..8503736 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -803,7 +803,7 @@ this or ask the user to start one right now."
    (type-break-mode-line-message-mode)
    (t
     (beep t)
-    (message "%sYou should take a typing break now.  Do ‘%s’."
+    (message "%sYou should take a typing break now.  Do `%s'."
              (type-break-time-stamp)
              (substitute-command-keys "\\[type-break]"))
     (sit-for 1)
diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el
index 13b9774..e011b96 100644
--- a/lisp/url/url-util.el
+++ b/lisp/url/url-util.el
@@ -285,7 +285,7 @@ Will not do anything if `url-show-status' is nil."
   "Build a query-string.
 
 Given a QUERY in the form:
-'((key1 val1)
+ ((key1 val1)
   (key2 val2)
   (key3 val1 val2)
   (key4)
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 7e75277..46c2ec3 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -122,9 +122,9 @@ cookies  -- never accept HTTP cookies
 
 Samples:
 
- (setq url-privacy-level 'high)
- (setq url-privacy-level '(email lastloc))    ;; equivalent to 'high
- (setq url-privacy-level '(os))
+ (setq url-privacy-level \\='high)
+ (setq url-privacy-level \\='(email lastloc))    ;; equivalent to \\='high
+ (setq url-privacy-level \\='(os))
 
 ::NOTE::
 This variable controls several other variables and is _NOT_ automatically
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index c81afce..7bfc3b6 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -1456,7 +1456,8 @@ Useful commands:
          (map-extents 'delete-extent)
        (mapc 'delete-overlay (overlays-in 1 1)))
 
-      (insert "This is a registry of all active Ediff sessions.
+      (insert (substitute-command-keys "\
+This is a registry of all active Ediff sessions.
 
 Useful commands:
      button2, `v', RET over a session record:  switch to that session
@@ -1471,7 +1472,7 @@ Useful commands:
 \t\tActive Ediff Sessions:
 \t\t----------------------
 
-")
+"))
       ;; purge registry list from dead buffers
       (mapc (lambda (elt)
              (if (not (ediff-buffer-live-p elt))
diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el
index b665034..b45d533 100644
--- a/lisp/vc/ediff-ptch.el
+++ b/lisp/vc/ediff-ptch.el
@@ -406,7 +406,7 @@ other files, enter /dev/null
                  (with-output-to-temp-buffer ediff-msg-buffer
                    (ediff-with-current-buffer standard-output
                      (fundamental-mode))
-                   (princ (format "
+                   (princ (format-message "
 Ediff has inferred that
        %s
        %s
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 50c6d96..8a0f554 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -270,8 +270,10 @@ matching the resulting Git log output, and KEYWORDS is a 
list of
          (disp-rev (or (vc-git--symbolic-ref file)
                        (substring rev 0 7)))
          (def-ml (vc-default-mode-line-string 'Git file))
-         (help-echo (get-text-property 0 'help-echo def-ml)))
+         (help-echo (get-text-property 0 'help-echo def-ml))
+         (face   (get-text-property 0 'face def-ml)))
     (propertize (replace-regexp-in-string (concat rev "\\'") disp-rev def-ml t 
t)
+                'face face
                 'help-echo (concat help-echo "\nCurrent revision: " rev))))
 
 (cl-defstruct (vc-git-extra-fileinfo
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index e674f0e..3e6d2a9 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -380,14 +380,14 @@ If the argument is a list, the files must all have the 
same back end."
 If FILES are not registered, this function always returns nil.
 For registered files, the possible values are:
 
-  'implicit   FILES are always writable, and checked out `implicitly'
+  `implicit'   FILES are always writable, and checked out `implicitly'
               when the user saves the first changes to the file.
 
-  'locking    FILES are read-only if up-to-date; user must type
+  `locking'   FILES are read-only if up-to-date; user must type
               \\[vc-next-action] before editing.  Strict locking
               is assumed.
 
-  'announce   FILES are read-only if up-to-date; user must type
+  `announce'  FILES are read-only if up-to-date; user must type
               \\[vc-next-action] before editing.  But other users
               may be editing at the same time."
   (vc-call-backend backend 'checkout-model files))
@@ -416,10 +416,10 @@ For registered files, the possible values are:
 A return of nil from this function means we have no information on the
 status of this file.  Otherwise, the value returned is one of:
 
-  'up-to-date        The working file is unmodified with respect to the
+  `up-to-date'       The working file is unmodified with respect to the
                      latest version on the current branch, and not locked.
 
-  'edited            The working file has been edited by the user.  If
+  `edited'           The working file has been edited by the user.  If
                      locking is used for the file, this state means that
                      the current version is locked by the calling user.
                      This status should *not* be reported for files
@@ -429,44 +429,44 @@ status of this file.  Otherwise, the value returned is 
one of:
   USER               The current version of the working file is locked by
                      some other USER (a string).
 
-  'needs-update      The file has not been edited by the user, but there is
+  `needs-update'     The file has not been edited by the user, but there is
                      a more recent version on the current branch stored
                      in the repository.
 
-  'needs-merge       The file has been edited by the user, and there is also
+  `needs-merge'      The file has been edited by the user, and there is also
                      a more recent version on the current branch stored in
                      the repository.  This state can only occur if locking
                      is not used for the file.
 
-  'unlocked-changes  The working version of the file is not locked,
+  `unlocked-changes' The working version of the file is not locked,
                      but the working file has been changed with respect
                      to that version.  This state can only occur for files
                      with locking; it represents an erroneous condition that
                      should be resolved by the user (vc-next-action will
                      prompt the user to do it).
 
-  'added             Scheduled to go into the repository on the next commit.
+  `added'            Scheduled to go into the repository on the next commit.
                      Often represented by vc-working-revision = \"0\" in VCSes
                      with monotonic IDs like Subversion and Mercurial.
 
-  'removed           Scheduled to be deleted from the repository on next 
commit.
+  `removed'          Scheduled to be deleted from the repository on next 
commit.
 
-  'conflict          The file contains conflicts as the result of a merge.
+  `conflict'         The file contains conflicts as the result of a merge.
                      For now the conflicts are text conflicts.  In the
                      future this might be extended to deal with metadata
                      conflicts too.
 
-  'missing           The file is not present in the file system, but the VC
+  `missing'          The file is not present in the file system, but the VC
                      system still tracks it.
 
-  'ignored           The file showed up in a dir-status listing with a flag
+  `ignored'          The file showed up in a dir-status listing with a flag
                      indicating the version-control system is ignoring it,
                      Note: This property is not set reliably (some VCSes
                      don't have useful directory-status commands) so assume
                      that any file with vc-state nil might be ignorable
                      without VC knowing it.
 
-  'unregistered      The file is not under version control."
+  `unregistered'     The file is not under version control."
 
   ;; Note: in Emacs 22 and older, return of nil meant the file was
   ;; unregistered.  This is potentially a source of
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 0c113b3..a9e1e2a 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -494,7 +494,7 @@ non-nil means return old filename."
                                        overwrite))
                 (error
                  (setq errors (1+ errors))
-                 (dired-log "Rename ‘%s’ to ‘%s’ failed:\n%s\n"
+                 (dired-log "Rename `%s' to `%s' failed:\n%s\n"
                             file-ori file-new
                             err)))))))))
     errors))
@@ -651,7 +651,7 @@ If OLD, return the old target.  If MOVE, move point before 
it."
                (substitute-in-file-name link-to-new) link-from))
           (error
            (setq errors (1+ errors))
-           (dired-log "Link ‘%s’ to ‘%s’ failed:\n%s\n"
+           (dired-log "Link `%s' to `%s' failed:\n%s\n"
                       link-from link-to-new
                       err)))))
     (cons changes errors)))
@@ -837,10 +837,10 @@ Like original function but it skips read-only words."
               (unless (equal 0 (process-file dired-chmod-program
                                             nil nil nil perm-tmp filename))
                 (setq errors (1+ errors))
-                (dired-log "%s %s ‘%s’ failed\n\n"
+                (dired-log "%s %s `%s' failed\n\n"
                            dired-chmod-program perm-tmp filename)))
           (setq errors (1+ errors))
-          (dired-log "Cannot parse permission ‘%s’ for file ‘%s’\n\n"
+          (dired-log "Cannot parse permission `%s' for file `%s'\n\n"
                      perms-new filename)))
       (goto-char (next-single-property-change (1+ (point)) prop-wanted
                                              nil (point-max))))
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 3191496..0c20850 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1867,10 +1867,10 @@ cleaning up these problems."
              (when has-bogus
                (goto-char (point-max))
                (insert (substitute-command-keys
-                         " Type ‘\\[whitespace-cleanup]’")
+                         " Type `\\[whitespace-cleanup]'")
                        " to cleanup the buffer.\n\n"
                        (substitute-command-keys
-                         " Type ‘\\[whitespace-cleanup-region]’")
+                         " Type `\\[whitespace-cleanup-region]'")
                        " to cleanup a region.\n\n"))
              (whitespace-display-window (current-buffer)))))
        has-bogus))))
@@ -1931,13 +1931,13 @@ cleaning up these problems."
 
 
 (defun whitespace-mark-x (nchars condition)
-  "Insert the mark (‘X’ or ‘ ’) after NCHARS depending on CONDITION."
+  "Insert the mark (`X' or ` ') after NCHARS depending on CONDITION."
   (forward-char nchars)
   (insert (if condition "X" " ")))
 
 
 (defun whitespace-insert-option-mark (the-list the-value)
-  "Insert the option mark (‘X’ or ‘ ’) in toggle options buffer."
+  "Insert the option mark (`X' or ` ') in toggle options buffer."
   (goto-char (point-min))
   (forward-line 2)
   (dolist (sym  the-list)
diff --git a/lisp/widget.el b/lisp/widget.el
index d62f7ff..aadb063 100644
--- a/lisp/widget.el
+++ b/lisp/widget.el
@@ -80,7 +80,7 @@ create identical widgets:
 
 * (widget-create NAME)
 
-* (apply 'widget-create CLASS ARGS)
+* (apply \\='widget-create CLASS ARGS)
 
 The third argument DOC is a documentation string for the widget."
   ;;
diff --git a/lisp/window.el b/lisp/window.el
index 65b4ef0..6d18905 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5868,7 +5868,7 @@ one of the regular expressions in 
`special-display-regexps'.
 
 This variable can be set in your init file, like this:
 
-  (setq special-display-frame-alist '((width . 80) (height . 20)))
+  (setq special-display-frame-alist \\='((width . 80) (height . 20)))
 
 These supersede the values given in `default-frame-alist'."
   :type '(repeat (cons :format "%v"
diff --git a/lisp/woman.el b/lisp/woman.el
index de2cbc1..f2e59e5 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -786,7 +786,7 @@ without interactive confirmation, if it exists as a topic."
 
 (defvar woman-file-regexp nil
   "Regexp used to select (possibly compressed) man source files, e.g.
-\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\'\".
+\"\\.\\([0-9lmnt]\\w*\\)\\(\\.\\(g?z\\|bz2\\|xz\\)\\)?\\\\='\".
 Built automatically from the customizable user options
 `woman-uncompressed-file-regexp' and `woman-file-compression-regexp'.")
 
@@ -816,7 +816,7 @@ becoming more common in the GNU world.  For example, the 
man pages
 in the ncurses package include `toe.1m', `form.3x', etc.
 
 Note: an optional compression regexp will be appended, so this regexp
-MUST NOT end with any kind of string terminator such as $ or \\'."
+MUST NOT end with any kind of string terminator such as $ or \\\\='."
   :type 'regexp
   :set 'set-woman-file-regexp
   :group 'woman-interface)
@@ -826,8 +826,8 @@ MUST NOT end with any kind of string terminator such as $ 
or \\'."
   "Do not change this unless you are sure you know what you are doing!
 Regexp used to match compressed man file extensions for which
 decompressors are available and handled by auto-compression mode,
-e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\'\" for `gzip', `bzip2', or `xz'.
-Should begin with \\. and end with \\' and MUST NOT be optional."
+e.g. \"\\\\.\\\\(g?z\\\\|bz2\\\\|xz\\\\)\\\\\\='\" for `gzip', `bzip2', or 
`xz'.
+Should begin with \\. and end with \\\\=' and MUST NOT be optional."
   ;; Should be compatible with car of
   ;; `jka-compr-file-name-handler-entry', but that is unduly
   ;; complicated, includes an inappropriate extension (.tgz) and is
@@ -3719,7 +3719,7 @@ expression in parentheses.  Leaves point after the value."
   "Find and return start of next control line.
 PAT, if non-nil, specifies an additional component of the control
 line regexp to search for, which is appended to the default
-regexp, \"\\(\\\\c\\)?\\n[.']\"."
+regexp, \"\\(\\\\c\\)?\\n[.\\=']\"."
   (let ((pattern (concat "\\(\\\\c\\)?\n[.']" pat))
         to)
     (save-excursion
@@ -3981,7 +3981,7 @@ Optional argument NUMERIC, if non-nil, means the argument 
is numeric."
     (goto-char from)))
 
 (defun woman-horizontal-line ()
-  "\\l'Nc' -- Draw a horizontal line of length N using character c, default _."
+  "\\l\\='Nc\\=' -- Draw a horizontal line of length N using character c, 
default _."
   (delete-char -1)
   (delete-char 1)
   (looking-at "\\(.\\)\\(.*\\)\\1")
diff --git a/src/dispextern.h b/src/dispextern.h
index 37ebab0..e5adeab 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3245,6 +3245,7 @@ extern ptrdiff_t compute_display_string_end (ptrdiff_t,
                                             struct bidi_string_data *);
 extern void produce_stretch_glyph (struct it *);
 extern int merge_glyphless_glyph_face (struct it *);
+extern void forget_escape_and_glyphless_faces (void);
 
 extern void get_font_ascent_descent (struct font *, int *, int *);
 
diff --git a/src/doc.c b/src/doc.c
index 5d0aae7..b6963d2 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -724,7 +724,7 @@ as the keymap for future \\=\\[COMMAND] substrings.
 
 Each \\=‘ and \\=` is replaced by left quote, and each \\=’ and \\='
 is replaced by right quote.  Left and right quote characters are
-specified by ‘text-quoting-style’.
+specified by `text-quoting-style'.
 
 \\=\\= quotes the following character and is discarded; thus,
 \\=\\=\\=\\= puts \\=\\= into the output, \\=\\=\\=\\[ puts \\=\\[ into the 
output, and
@@ -1024,15 +1024,15 @@ syms_of_doc (void)
 
   DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style,
                doc: /* Style to use for single quotes when generating text.
-‘curve’ means quote with curved single quotes \\=‘like this\\=’.
-‘straight’ means quote with straight apostrophes \\='like this\\='.
-‘grave’ means quote with grave accent and apostrophe \\=`like this\\='.
-The default value nil acts like ‘curve’ if curved single quotes are
-displayable, and like ‘grave’ otherwise.  */);
+`curve' means quote with curved single quotes \\=‘like this\\=’.
+`straight' means quote with straight apostrophes \\='like this\\='.
+`grave' means quote with grave accent and apostrophe \\=`like this\\='.
+The default value nil acts like `curve' if curved single quotes are
+displayable, and like `grave' otherwise.  */);
   Vtext_quoting_style = Qnil;
 
   DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag,
-              doc: /* If nil, a nil ‘text-quoting-style’ is treated as 
‘grave’.  */);
+              doc: /* If nil, a nil `text-quoting-style' is treated as 
`grave'.  */);
   /* Initialized by ‘main’.  */
 
   defsubr (&Sdocumentation);
diff --git a/src/editfns.c b/src/editfns.c
index e7d5dd8..831edb4 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3837,11 +3837,11 @@ DEFUN ("format-message", Fformat_message, 
Sformat_message, 1, MANY, 0,
 The first argument is a format control string.
 The other arguments are substituted into it to make the result, a string.
 
-This acts like ‘format’, except it also replaces each left single
+This acts like `format', except it also replaces each left single
 quotation mark (\\=‘) and grave accent (\\=`) by a left quote, and each
 right single quotation mark (\\=’) and apostrophe (\\=') by a right quote.
 The left and right quote replacement characters are specified by
-‘text-quoting-style’.
+`text-quoting-style'.
 
 usage: (format-message STRING &rest OBJECTS)  */)
   (ptrdiff_t nargs, Lisp_Object *args)
diff --git a/src/keyboard.c b/src/keyboard.c
index a8b1e98..ccd3405 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -380,6 +380,11 @@ kset_echo_string (struct kboard *kb, Lisp_Object val)
   kb->echo_string_ = val;
 }
 static void
+kset_echo_prompt (struct kboard *kb, Lisp_Object val)
+{
+  kb->echo_prompt_ = val;
+}
+static void
 kset_kbd_queue (struct kboard *kb, Lisp_Object val)
 {
   kb->kbd_queue_ = val;
@@ -501,8 +506,9 @@ echo_dash (void)
     return;
 
   /* Do nothing if we just printed a prompt.  */
-  if (current_kboard->echo_after_prompt
-      == SCHARS (KVAR (current_kboard, echo_string)))
+  if (STRINGP (KVAR (current_kboard, echo_prompt))
+      && (SCHARS (KVAR (current_kboard, echo_prompt))
+         == SCHARS (KVAR (current_kboard, echo_string))))
     return;
 
   /* Do nothing if we have already put a dash at the end.  */
@@ -534,8 +540,12 @@ echo_update (void)
   if (current_kboard->immediate_echo)
     {
       ptrdiff_t i;
+      Lisp_Object prompt = KVAR (current_kboard, echo_prompt);
+      Lisp_Object prefix = call0 (Qinternal_echo_keystrokes_prefix);
       kset_echo_string (current_kboard,
-                       call0 (Qinternal_echo_keystrokes_prefix));
+                       NILP (prompt) ? prefix
+                       : NILP (prefix) ? prompt
+                       : concat2 (prompt, prefix));
 
       for (i = 0; i < this_command_key_count; i++)
        {
@@ -584,7 +594,7 @@ void
 cancel_echoing (void)
 {
   current_kboard->immediate_echo = false;
-  current_kboard->echo_after_prompt = -1;
+  kset_echo_prompt (current_kboard, Qnil);
   kset_echo_string (current_kboard, Qnil);
   ok_to_echo_at_next_pause = NULL;
   echo_kboard = NULL;
@@ -693,11 +703,11 @@ force_auto_save_soon (void)
 
 DEFUN ("recursive-edit", Frecursive_edit, Srecursive_edit, 0, 0, "",
        doc: /* Invoke the editor command loop recursively.
-To get out of the recursive edit, a command can throw to ‘exit’ -- for
-instance ‘(throw \\='exit nil)’.
-If you throw a value other than t, ‘recursive-edit’ returns normally
+To get out of the recursive edit, a command can throw to `exit' -- for
+instance (throw \\='exit nil).
+If you throw a value other than t, `recursive-edit' returns normally
 to the function that called it.  Throwing a t value causes
-‘recursive-edit’ to quit, so that control returns to the command loop
+`recursive-edit' to quit, so that control returns to the command loop
 one level up.
 
 This function is called by the editor initialization to begin editing.  */)
@@ -2942,7 +2952,7 @@ read_char (int commandflag, Lisp_Object map,
       bool saved_immediate_echo = current_kboard->immediate_echo;
       struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause;
       Lisp_Object saved_echo_string = KVAR (current_kboard, echo_string);
-      ptrdiff_t saved_echo_after_prompt = current_kboard->echo_after_prompt;
+      Lisp_Object saved_echo_prompt = KVAR (current_kboard, echo_prompt);
 
       /* Save the this_command_keys status.  */
       key_count = this_command_key_count;
@@ -2984,15 +2994,8 @@ read_char (int commandflag, Lisp_Object map,
 
       cancel_echoing ();
       ok_to_echo_at_next_pause = saved_ok_to_echo;
-      /* Do not restore the echo area string when the user is
-         introducing a prefix argument. Otherwise we end with
-         repetitions of the partially introduced prefix
-         argument. (bug#19875) */
-      if (NILP (intern ("prefix-arg")))
-        {
-          kset_echo_string (current_kboard, saved_echo_string);
-        }
-      current_kboard->echo_after_prompt = saved_echo_after_prompt;
+      kset_echo_string (current_kboard, saved_echo_string);
+      kset_echo_prompt (current_kboard, saved_echo_prompt);
       if (saved_immediate_echo)
        echo_now ();
 
@@ -8870,8 +8873,8 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, 
Lisp_Object prompt,
          /* Install the string PROMPT as the beginning of the string
             of echoing, so that it serves as a prompt for the next
             character.  */
-         kset_echo_string (current_kboard, prompt);
-         current_kboard->echo_after_prompt = SCHARS (prompt);
+         kset_echo_prompt (current_kboard, prompt);
+         current_kboard->immediate_echo = false;
          echo_now ();
        }
       else if (cursor_in_echo_area
@@ -10695,7 +10698,7 @@ init_kboard (KBOARD *kb, Lisp_Object type)
   kb->kbd_queue_has_data = false;
   kb->immediate_echo = false;
   kset_echo_string (kb, Qnil);
-  kb->echo_after_prompt = -1;
+  kset_echo_prompt (kb, Qnil);
   kb->kbd_macro_buffer = 0;
   kb->kbd_macro_bufsize = 0;
   kset_defining_kbd_macro (kb, Qnil);
@@ -11758,6 +11761,7 @@ mark_kboards (void)
       mark_object (KVAR (kb, Vlocal_function_key_map));
       mark_object (KVAR (kb, Vdefault_minibuffer_frame));
       mark_object (KVAR (kb, echo_string));
+      mark_object (KVAR (kb, echo_prompt));
     }
   {
     union buffered_input_event *event;
diff --git a/src/keyboard.h b/src/keyboard.h
index 3e4c475..0402e0a 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -175,9 +175,8 @@ struct kboard
     /* True means echo each character as typed.  */
     bool_bf immediate_echo : 1;
 
-    /* If we have echoed a prompt string specified by the user,
-       this is its length in characters.  Otherwise this is -1.  */
-    ptrdiff_t echo_after_prompt;
+    /* If we have a prompt string specified by the user, this is it.  */
+    Lisp_Object echo_prompt_;
   };
 
 INLINE void
diff --git a/src/process.c b/src/process.c
index 1ab8378..f4613be 100644
--- a/src/process.c
+++ b/src/process.c
@@ -4859,6 +4859,10 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
              data is available in the buffers manually.  */
           if (nfds == 0)
            {
+             fd_set tls_available;
+             int set = 0;
+
+             FD_ZERO (&tls_available);
              if (! wait_proc)
                {
                  /* We're not waiting on a specific process, so loop
@@ -4879,7 +4883,8 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
                          {
                            nfds++;
                            eassert (p->infd == channel);
-                           FD_SET (p->infd, &Available);
+                           FD_SET (p->infd, &tls_available);
+                           set++;
                          }
                      }
                }
@@ -4896,9 +4901,12 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
                      nfds = 1;
                      eassert (0 <= wait_proc->infd);
                      /* Set to Available.  */
-                     FD_SET (wait_proc->infd, &Available);
+                     FD_SET (wait_proc->infd, &tls_available);
+                     set++;
                    }
                }
+             if (set)
+               Available = tls_available;
            }
 #endif
        }
diff --git a/src/w32.c b/src/w32.c
index cc55507..bb51496 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -4534,6 +4534,8 @@ sys_rmdir (const char * path)
 int
 sys_unlink (const char * path)
 {
+  int rmstatus, e;
+
   path = map_w32_filename (path, NULL);
 
   if (w32_unicode_filenames)
@@ -4541,9 +4543,18 @@ sys_unlink (const char * path)
       wchar_t path_w[MAX_PATH];
 
       filename_to_utf16 (path, path_w);
-      /* On Unix, unlink works without write permission. */
+      /* On Unix, unlink works without write permission.  */
       _wchmod (path_w, 0666);
-      return _wunlink (path_w);
+      rmstatus = _wunlink (path_w);
+      e = errno;
+      /* Symlinks to directories can only be deleted by _rmdir;
+        _unlink returns EACCES.  */
+      if (rmstatus != 0
+         && errno == EACCES
+         && (is_symlink (path) & FILE_ATTRIBUTE_DIRECTORY) != 0)
+       rmstatus = _wrmdir (path_w);
+      else
+       errno = e;
     }
   else
     {
@@ -4551,8 +4562,17 @@ sys_unlink (const char * path)
 
       filename_to_ansi (path, path_a);
       _chmod (path_a, 0666);
-      return _unlink (path_a);
+      rmstatus = _unlink (path_a);
+      e = errno;
+      if (rmstatus != 0
+         && errno == EACCES
+         && (is_symlink (path) & FILE_ATTRIBUTE_DIRECTORY) != 0)
+       rmstatus = _rmdir (path_a);
+      else
+       errno = e;
     }
+
+  return rmstatus;
 }
 
 static FILETIME utc_base_ft;
@@ -5626,7 +5646,8 @@ symlink (char const *filename, char const *linkname)
 /* A quick inexpensive test of whether FILENAME identifies a file that
    is a symlink.  Returns non-zero if it is, zero otherwise.  FILENAME
    must already be in the normalized form returned by
-   map_w32_filename.
+   map_w32_filename.  If the symlink is to a directory, the
+   FILE_ATTRIBUTE_DIRECTORY bit will be set in the return value.
 
    Note: for repeated operations on many files, it is best to test
    whether the underlying volume actually supports symlinks, by
@@ -5684,6 +5705,8 @@ is_symlink (const char *filename)
       attrs_mean_symlink =
        (wfdw.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0
        && (wfdw.dwReserved0 & IO_REPARSE_TAG_SYMLINK) == 
IO_REPARSE_TAG_SYMLINK;
+      if (attrs_mean_symlink)
+       attrs_mean_symlink |= (wfdw.dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY);
     }
   else if (_mbspbrk (filename_a, "?"))
     {
@@ -5697,6 +5720,8 @@ is_symlink (const char *filename)
       attrs_mean_symlink =
        (wfda.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0
        && (wfda.dwReserved0 & IO_REPARSE_TAG_SYMLINK) == 
IO_REPARSE_TAG_SYMLINK;
+      if (attrs_mean_symlink)
+       attrs_mean_symlink |= (wfda.dwFileAttributes & 
FILE_ATTRIBUTE_DIRECTORY);
     }
   if (fh == INVALID_HANDLE_VALUE)
     return 0;
diff --git a/src/xdisp.c b/src/xdisp.c
index 9ff9f6c..82931b8 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -6787,6 +6787,18 @@ merge_glyphless_glyph_face (struct it *it)
   return face_id;
 }
 
+/* Forget the `escape-glyph' and `glyphless-char' faces.  This should
+   be called before redisplaying windows, and when the frame's face
+   cache is freed.  */
+void
+forget_escape_and_glyphless_faces (void)
+{
+  last_escape_glyph_frame = NULL;
+  last_escape_glyph_face_id = (1 << FACE_ID_BITS);
+  last_glyphless_glyph_frame = NULL;
+  last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
+}
+
 /* Load IT's display element fields with information about the next
    display element from the current position of IT.  Value is false if
    end of buffer (or C string) is reached.  */
@@ -10673,6 +10685,11 @@ display_echo_area_1 (ptrdiff_t a1, Lisp_Object a2)
   Lisp_Object window;
   struct text_pos start;
 
+  /* We are about to enter redisplay without going through
+     redisplay_internal, so we need to forget these faces by hand
+     here.  */
+  forget_escape_and_glyphless_faces ();
+
   /* Do this before displaying, so that we have a large enough glyph
      matrix for the display.  If we can't get enough space for the
      whole text, display the last N lines.  That works by setting w->start.  */
@@ -13326,10 +13343,7 @@ redisplay_internal (void)
   sw = w;
 
   pending = false;
-  last_escape_glyph_frame = NULL;
-  last_escape_glyph_face_id = (1 << FACE_ID_BITS);
-  last_glyphless_glyph_frame = NULL;
-  last_glyphless_glyph_face_id = (1 << FACE_ID_BITS);
+  forget_escape_and_glyphless_faces ();
 
   /* If face_change, init_iterator will free all realized faces, which
      includes the faces referenced from current matrices.  So, we
diff --git a/src/xfaces.c b/src/xfaces.c
index d89adca..0303249 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -4173,6 +4173,8 @@ free_realized_faces (struct face_cache *c)
          c->faces_by_id[i] = NULL;
        }
 
+      /* Forget the escape-glyph and glyphless-char faces.  */
+      forget_escape_and_glyphless_faces ();
       c->used = 0;
       size = FACE_CACHE_BUCKETS_SIZE * sizeof *c->buckets;
       memset (c->buckets, 0, size);
diff --git a/test/automated/Makefile.in b/test/automated/Makefile.in
index 174b3b6..59a8866 100644
--- a/test/automated/Makefile.in
+++ b/test/automated/Makefile.in
@@ -52,9 +52,15 @@ unexport EMACSDATA EMACSDOC EMACSPATH GREP_OPTIONS
 ## To run tests under a debugger, set this to eg: "gdb --args".
 GDB =
 
+# The locale to run tests under.  Tests should work if this is set to
+# any supported locale.  Use the C locale by default, as it should be
+# supported everywhere.
+TEST_LOCALE = C
+
 # The actual Emacs command run in the targets below.
 # Prevent any setting of EMACSLOADPATH in user environment causing problems.
-emacs = EMACSLOADPATH= LC_ALL=C EMACS_TEST_DIRECTORY=$(srcdir) $(GDB) 
"$(EMACS)" $(EMACSOPT)
+emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) EMACS_TEST_DIRECTORY=$(srcdir) \
+ $(GDB) "$(EMACS)" $(EMACSOPT)
 
 .PHONY: all check
 
diff --git a/test/automated/flymake-tests.el b/test/automated/flymake-tests.el
index 23dbb3d..a77c316 100644
--- a/test/automated/flymake-tests.el
+++ b/test/automated/flymake-tests.el
@@ -34,6 +34,7 @@
 (defun flymake-tests--current-face (file predicate)
   (let ((buffer (find-file-noselect
                  (expand-file-name file flymake-tests-data-directory)))
+        (process-environment (cons "LC_ALL=C" process-environment))
         (i 0))
     (unwind-protect
         (with-current-buffer buffer
diff --git a/test/automated/map-tests.el b/test/automated/map-tests.el
index 1f3a07e..8693415 100644
--- a/test/automated/map-tests.el
+++ b/test/automated/map-tests.el
@@ -252,31 +252,29 @@ Evaluate BODY for each created map.
   (should (not (map-empty-p "hello")))
   (should (map-empty-p "")))
 
-(ert-deftest test-map-contains-key-p ()
-  (should (map-contains-key-p '((a . 1) (b . 2)) 'a))
-  (should (not (map-contains-key-p '((a . 1) (b . 2)) 'c)))
-  (should (map-contains-key-p '(("a" . 1)) "a"))
-  (should (not (map-contains-key-p '(("a" . 1)) "a" #'eq)))
-  (should (map-contains-key-p [a b c] 2))
-  (should (not (map-contains-key-p [a b c] 3))))
-
-(ert-deftest test-map-some-p ()
+(ert-deftest test-map-contains-key ()
+  (should (map-contains-key '((a . 1) (b . 2)) 'a))
+  (should (not (map-contains-key '((a . 1) (b . 2)) 'c)))
+  (should (map-contains-key '(("a" . 1)) "a"))
+  (should (not (map-contains-key '(("a" . 1)) "a" #'eq)))
+  (should (map-contains-key [a b c] 2))
+  (should (not (map-contains-key [a b c] 3))))
+
+(ert-deftest test-map-some ()
   (with-maps-do map
-    (should (equal (map-some-p (lambda (k _v)
-                                 (eq 1 k))
-                               map)
-                   (cons 1 4)))
-    (should (not (map-some-p (lambda (k _v)
-                               (eq 'd k))
-                             map))))
+    (should (map-some (lambda (k _v)
+                        (eq 1 k))
+                      map))
+    (should-not (map-some (lambda (k _v)
+                            (eq 'd k))
+                          map)))
   (let ((vec [a b c]))
-    (should (equal (map-some-p (lambda (k _v)
-                                 (> k 1))
-                               vec)
-                   (cons 2 'c)))
-    (should (not (map-some-p (lambda (k _v)
-                               (> k 3))
-                             vec)))))
+    (should (map-some (lambda (k _v)
+                        (> k 1))
+                      vec))
+    (should-not (map-some (lambda (k _v)
+                            (> k 3))
+                          vec))))
 
 (ert-deftest test-map-every-p ()
   (with-maps-do map
diff --git a/test/automated/python-tests.el b/test/automated/python-tests.el
index 219f99e..d9b4c3e 100644
--- a/test/automated/python-tests.el
+++ b/test/automated/python-tests.el
@@ -2920,7 +2920,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-input-regexps'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-input-regexps'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-2 ()
   "Check `python-shell-prompt-output-regexps' are validated."
@@ -2929,7 +2930,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-output-regexps'"))))
+              (format-message
+               "Invalid regexp \\( in 
`python-shell-prompt-output-regexps'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-3 ()
   "Check `python-shell-prompt-regexp' is validated."
@@ -2938,7 +2940,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-regexp'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-regexp'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-4 ()
   "Check `python-shell-prompt-block-regexp' is validated."
@@ -2947,7 +2950,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-block-regexp'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-block-regexp'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-5 ()
   "Check `python-shell-prompt-pdb-regexp' is validated."
@@ -2956,7 +2960,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-pdb-regexp'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-pdb-regexp'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-6 ()
   "Check `python-shell-prompt-output-regexp' is validated."
@@ -2965,7 +2970,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-output-regexp'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-output-regexp'")))))
 
 (ert-deftest python-shell-prompt-validate-regexps-7 ()
   "Check default regexps are valid."
@@ -2982,7 +2988,8 @@ and `python-shell-interpreter-args' in the new shell 
buffer."
                                    :type 'user-error)))
     (should
      (string= (cadr error-data)
-              "Invalid regexp \\( in `python-shell-prompt-output-regexp'"))))
+              (format-message
+               "Invalid regexp \\( in `python-shell-prompt-output-regexp'")))))
 
 (ert-deftest python-shell-prompt-set-calculated-regexps-2 ()
   "Check `python-shell-prompt-input-regexps' are set."
diff --git a/test/automated/seq-tests.el b/test/automated/seq-tests.el
index 482daee..07a183d 100644
--- a/test/automated/seq-tests.el
+++ b/test/automated/seq-tests.el
@@ -129,21 +129,22 @@ Evaluate BODY for each created sequence.
     (should (eq (seq-reduce #'+ seq 0) 0))
     (should (eq (seq-reduce #'+ seq 7) 7))))
 
-(ert-deftest test-seq-some-p ()
+(ert-deftest test-seq-some ()
   (with-test-sequences (seq '(4 3 2 1))
-    (should (= (seq-some-p #'test-sequences-evenp seq) 4))
-    (should (= (seq-some-p #'test-sequences-oddp seq) 3))
-    (should-not (seq-some-p (lambda (elt) (> elt 10)) seq)))
+    (should (seq-some #'test-sequences-evenp seq))
+    (should (seq-some #'test-sequences-oddp seq))
+    (should-not (seq-some (lambda (elt) (> elt 10)) seq)))
   (with-test-sequences (seq '())
-    (should-not (seq-some-p #'test-sequences-oddp seq))))
+    (should-not (seq-some #'test-sequences-oddp seq)))
+  (should (seq-some #'null '(1 nil 2))))
 
-(ert-deftest test-seq-contains-p ()
+(ert-deftest test-seq-contains ()
   (with-test-sequences (seq '(3 4 5 6))
-    (should (seq-contains-p seq 3))
-    (should-not (seq-contains-p seq 7)))
+    (should (seq-contains seq 3))
+    (should-not (seq-contains seq 7)))
   (with-test-sequences (seq '())
-    (should-not (seq-contains-p seq 3))
-    (should-not (seq-contains-p seq nil))))
+    (should-not (seq-contains seq 3))
+    (should-not (seq-contains seq nil))))
 
 (ert-deftest test-seq-every-p ()
   (with-test-sequences (seq '(43 54 22 1))
diff --git a/test/automated/textprop-tests.el b/test/automated/textprop-tests.el
index f6604fb..0baa911 100644
--- a/test/automated/textprop-tests.el
+++ b/test/automated/textprop-tests.el
@@ -25,7 +25,7 @@
 (require 'ert)
 
 (ert-deftest textprop-tests-format ()
-  "Test ‘format’ with text properties."
+  "Test `format' with text properties."
   ;; See Bug#21351.
   (should (equal-including-properties
            (format #("mouse-1, RET: %s -- w: copy %s"
diff --git a/test/automated/tildify-tests.el b/test/automated/tildify-tests.el
index b53f58c..788abe7 100644
--- a/test/automated/tildify-tests.el
+++ b/test/automated/tildify-tests.el
@@ -55,6 +55,7 @@ If IS-XML is non-nil, <pre> tag is not treated specially."
 INPUT is the initial content of the buffer and EXPECTED is expected result
 after `tildify-buffer' is run."
   (with-temp-buffer
+    (setq-local buffer-file-coding-system 'utf-8)
     (dolist (mode modes)
       (erase-buffer)
       (funcall mode)
@@ -187,6 +188,7 @@ The function must terminate as soon as callback returns 
nil."
 
 (defun tildify-space-test--test (modes nbsp env-open &optional 
set-space-string)
   (with-temp-buffer
+    (setq-local buffer-file-coding-system 'utf-8)
     (dolist (mode modes)
       (funcall mode)
       (when set-space-string
@@ -226,6 +228,7 @@ The function must terminate as soon as callback returns 
nil."
 (defun tildify-space-undo-test--test
     (modes nbsp env-open &optional set-space-string)
   (with-temp-buffer
+    (setq-local buffer-file-coding-system 'utf-8)
     (dolist (mode modes)
       (funcall mode)
       (when set-space-string



reply via email to

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