emacs-devel
[Top][All Lists]
Advanced

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

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


From: Artur Malabarba
Subject: Re: [Emacs-diffs] master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Date: Tue, 6 Oct 2015 10:18:27 +0100

Quick question. Could someone explain to me what the subject of this
email means?
> master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs

Is that what you get when you merge the remote's master onto your local master?

2015-10-05 15:00 GMT+01:00 Kenichi Handa <address@hidden>:
> 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
>
> _______________________________________________
> Emacs-diffs mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/emacs-diffs



reply via email to

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