unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Kaushal Modi <kaushal.modi@gmail.com>
To: Artur Malabarba <bruce.connor.am@gmail.com>
Cc: "K. Handa" <handa@gnu.org>,
	emacs-diffs@gnu.org, emacs-devel <emacs-devel@gnu.org>
Subject: Re: master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Date: Tue, 6 Oct 2015 10:09:54 -0400	[thread overview]
Message-ID: <CAFyQvY3Uv-QC=dpwdA03SMsfSBKB4LBQTAhGKCCpSuTbmye=mg@mail.gmail.com> (raw)
In-Reply-To: <CAAdUY-JUgujDyEPXKFMJAN92bZjbD4ALJVntPVNvLT-OE+BF7Q@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 730198 bytes --]

I'd like to know that too. I thought I was the only one who didn't
understand how these huge commits were created.


--
Kaushal Modi

On Tue, Oct 6, 2015 at 5:18 AM, Artur Malabarba <bruce.connor.am@gmail.com>
wrote:

> 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 <handa@gnu.org>:
> > branch: master
> > commit 94ed5167557112fb00eeca05e62589db744206de
> > Merge: 33f2e00 10e7f7d
> > Author: K. Handa <handa@gnu.org>
> > Commit: K. Handa <handa@gnu.org>
> >
> >     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  <eggert@cs.ucla.edu>
> > +
> > +       Spelling fix (Bug#21420)
> > +
> > +2015-09-05  Nicolas Petton  <nicolas@petton.fr>
> > +
> > +       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  <eggert@Penguin.CS.UCLA.EDU>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <bojohan@gnu.org>
> > +
> > +       * 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  <eggert@cs.ucla.edu>
> > +
> > +       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:46-0700!eggert@cs.ucla.edu.
> > +
> > +2015-09-05  Xue Fuqiao  <xfq.free@gmail.com>
> > +
> > +       * doc/emacs/programs.texi (Program Modes): Remove an index entry.
> > +
> > +2015-09-05  Robert Pluim  <rpluim@gmail.com>  (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  <eliz@gnu.org>
> > +
> > +       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  <pipcet@gmail.com>  (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  <eggert@cs.ucla.edu>
> > +
> > +       Fix minor problems with " in manual
> > +
> > +2015-09-04  Michael Albinus  <michael.albinus@gmx.de>
> > +
> > +       * doc/misc/tramp.texi (Frequently Asked Questions): New item for
> ad-hoc
> > +       multi-hop files.
> > +
> > +2015-09-04  Paul Eggert  <eggert@cs.ucla.edu>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <monnier@iro.umontreal.ca>
> > +
> > +       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  <mvoteiza@udel.edu>
> > +
> > +       * 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  <dgutov@yandex.ru>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <handa@gnu.org>
> > +
> > +       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  <david@porkrind.org>  (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  <eggert@cs.ucla.edu>
> > +
> > +       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  <monnier@iro.umontreal.ca>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <yamaoka@jpl.org>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <michael.albinus@gmx.de>
> > +
> > +       * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Mask "Password:".
> > +
> > +2015-09-01  Paul Eggert  <eggert@cs.ucla.edu>
> > +
> > +       Docstring fixes re quotes in C code
> > +       Fix some docstring quoting problems, mostly by escaping
> apostrophe.
> > +
> > +2015-09-01  Michael Albinus  <michael.albinus@gmx.de>
> > +
> > +       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  <dgutov@yandex.ru>
> > +
> > +       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  <handa@gnu.org>
> > +
> > +       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  <stephen_leake@stephe-leake.org>
> > +
> > +       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  <yamaoka@jpl.org>
> > +
> > +       * 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  <zkanfer@gmail.com>  (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  <yamaoka@jpl.org>
> > +
> > +       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  <ruediger@c-plusplus.net>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <stephen_leake@stephe-leake.org>
> > +
> > +       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  <eliz@gnu.org>
> > +
> > +       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  <rudalics@gmx.at>
> > +
> > +       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  <eggert@cs.ucla.edu>
> > +
> > +       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  <nicolas@petton.fr>
> > +
> > +       Better documentation of seq-let
> > +       * doc/lispref/sequences.texi (Sequence Functions): Rephrase the
> > +       documentation of seq-let.
> > +
> > +2015-08-31  Paul Eggert  <eggert@cs.ucla.edu>
> > +
> > +       * 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  <xfq.free@gmail.com>
> > +
> > +       Minor documentation and NEWS tweak
> > +       * doc/lispintro/emacs-lisp-intro.texi (fwd-para let): Add an
> index
> > +       entry.
> > +
> >  2015-08-30  Michael Albinus  <michael.albinus@gmx.de>
> >
> >         * 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 non-@acronym{ASCII} 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)}
> > -@findex 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
> > -@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
> > +@xref{Tips, ``Tips'' Appendix in the Emacs Lisp Reference, Tips
> >  Appendix, elisp, Emacs Lisp Reference}.
> >  @end ifnothtml
> >  @end ifset
> >  @ifclear WWW_GNU_ORG
> > -@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
> > +@xref{Tips, ``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
> > +@code{text-quoting-style} 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
> >  non-@code{nil} 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
> > +@file{~/.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').
> >  \\@{text-mode-map@}
> > -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.
> >
> >  \\@{lisp-mode-map@}
> > -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
> > -@code{initial-scratch-message} into that buffer.
> > +@code{(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 non-@code{nil}, 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
> > +@code{created} 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
> > -
> > -@group
> > -(file-notify-add-watch
> > -  "/var/tmp" '(change attribute-change) 'my-notify-callback)
> > -     @result{} 35025504
> > -@end group
> > -
> > -@group
> > -(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")
> > -@end 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
> > +@code{package-enable-at-startup} 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 non-@code{nil}, 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
> >
> > -@defun seq-some-p predicate sequence
> > -  This function returns the first member of sequence for which
> @var{predicate}
> > -returns non-@code{nil}.
> > +@defun seq-some predicate sequence
> > +  This function returns non-@code{nil} if @var{predicate} returns
> > +non-@code{nil} 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])
> > -@result{} 1
> > +(seq-some #'numberp ["abc" 1 nil])
> > +@result{} t
> >  @end group
> >  @group
> > -(seq-some-p #'numberp ["abc" "def"])
> > +(seq-some #'numberp ["abc" "def"])
> >  @result{} nil
> >  @end group
> > +@group
> > +(seq-some #'null ["abc" 1 nil])
> > +@result{} t
> > +@end group
> >  @end example
> >  @end defun
> >
> > @@ -583,7 +588,7 @@ to every element of @var{sequence} returns non-@code
> {nil}.
> >  @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
> >  non-@code{nil} if the first argument should sort before the second.
> >  @end defun
> >
> > -@defun seq-contains-p sequence elt &optional function
> > +@defun 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 non-@code{nil},
> >  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 non-@code{nil}, 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 non-@code{nil} 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 non-@code{nil} 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!
> >
> >
> > +@item 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,
> > +@ifset emacs
> > +filecache, bbdb,
> > +@end ifset
> > +or another package, you must use the full ad-hoc file name including
> > +all hops, like @file{@trampfn{ssh, bird,
> > +bastion|ssh@value{postfixhop}news.my.domain, /opt/news/etc}}.
> > +
> > +Alternatively, if you save only the abbreviated multi-hop file name
> > +@file{@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
> > +non-@code{nil} 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 ‘@’
> > + - 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 <johnw@gnu.org>
> >  ;; 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"
> >             "\t@echo 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")
> >             "\t@false\n\n"
> >             "\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 ‘@’."
> > +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 `SYMBOL@NAME'.
> >           (advice (cond ((null name) `(lambda ,lambda-list ,@body))
> >                         ((or (stringp name) (symbolp name))
> >                          (intern (format "%s@%s" 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 nick!user@host 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 ‘@’."
> > +  "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
> > -         '((\"/webmaster@webserver:/home/www/html/\" .
> > +         \\='((\"/webmaster@webserver:/home/www/html/\" .
> >              \"http://www.acme.co.uk/\")
> >              (\"^/\\(ftp@\\|anonymous@\\)?\\([^:]+\\):/*\" . \"ftp://
> \\2/\")
> >              (\"^/\\([^:@]+@\\)?\\([^:]+\\):/*\" . \"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 %s@%s (using authenticator
> ‘%s’): "
> > +                   "imap: password for %s@%s (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 <tarok@transpulse.org>
> > -;; Keywords: NTLM, SASL
> > -;; Version: 1.00
> > +;; Maintainer: Thomas Fitzsimmons <fitzsim@fitzsim.org>
> > +;; 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 ‘@’ 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 \alpha@foo.
> >            (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
> > Emacs-diffs@gnu.org
> > https://lists.gnu.org/mailman/listinfo/emacs-diffs
>
>

[-- Attachment #1.2: Type: text/html, Size: 905811 bytes --]



  reply	other threads:[~2015-10-06 14:09 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20151005140014.24070.46905@vcs.savannah.gnu.org>
     [not found] ` <E1Zj6JL-0006Qd-Ij@vcs.savannah.gnu.org>
2015-10-06  9:18   ` master 94ed516 2/4: Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs Artur Malabarba
2015-10-06 14:09     ` Kaushal Modi [this message]
2015-10-06 14:47       ` [Emacs-diffs] " Alan Mackenzie
2015-10-06 14:47       ` Óscar Fuentes
2015-10-06 14:59         ` Kaushal Modi
2015-10-06 15:48           ` David Kastrup
2015-10-06 16:20     ` [Emacs-diffs] " Stefan Monnier
2015-10-06 17:01       ` Artur Malabarba
2015-10-06 17:25         ` Eli Zaretskii
2015-10-06 20:55           ` Artur Malabarba
2015-10-07 15:06             ` [Emacs-diffs] " Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAFyQvY3Uv-QC=dpwdA03SMsfSBKB4LBQTAhGKCCpSuTbmye=mg@mail.gmail.com' \
    --to=kaushal.modi@gmail.com \
    --cc=bruce.connor.am@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=emacs-diffs@gnu.org \
    --cc=handa@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).