emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 6afef3f: Go back to grave quoting in source-code do


From: Paul Eggert
Subject: [Emacs-diffs] master 6afef3f: Go back to grave quoting in source-code docstrings etc.
Date: Mon, 07 Sep 2015 23:09:45 +0000

branch: master
commit 6afef3f6ca2f3009c722b84e249903b7f807b044
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Go back to grave quoting in source-code docstrings etc.
    
    This reverts almost all my recent changes to use curved quotes
    in docstrings and/or strings used for error diagnostics.
    There are a few exceptions, e.g., Bahá’í proper names.
    * admin/unidata/unidata-gen.el (unidata-gen-table):
    * lisp/abbrev.el (expand-region-abbrevs):
    * lisp/align.el (align-region):
    * lisp/allout.el (allout-mode, allout-solicit-alternate-bullet)
    (outlineify-sticky):
    * lisp/apropos.el (apropos-library):
    * lisp/bookmark.el (bookmark-default-annotation-text):
    * lisp/button.el (button-category-symbol, button-put)
    (make-text-button):
    * lisp/calc/calc-aent.el (math-read-if, math-read-factor):
    * lisp/calc/calc-embed.el (calc-do-embedded):
    * lisp/calc/calc-ext.el (calc-user-function-list):
    * lisp/calc/calc-graph.el (calc-graph-show-dumb):
    * lisp/calc/calc-help.el (calc-describe-key)
    (calc-describe-thing, calc-full-help):
    * lisp/calc/calc-lang.el (calc-c-language)
    (math-parse-fortran-vector-end, math-parse-tex-sum)
    (math-parse-eqn-matrix, math-parse-eqn-prime)
    (calc-yacas-language, calc-maxima-language, calc-giac-language)
    (math-read-giac-subscr, math-read-math-subscr)
    (math-read-big-rec, math-read-big-balance):
    * lisp/calc/calc-misc.el (calc-help, report-calc-bug):
    * lisp/calc/calc-mode.el (calc-auto-why, calc-save-modes)
    (calc-auto-recompute):
    * lisp/calc/calc-prog.el (calc-fix-token-name)
    (calc-read-parse-table-part, calc-user-define-invocation)
    (math-do-arg-check):
    * lisp/calc/calc-store.el (calc-edit-variable):
    * lisp/calc/calc-units.el (math-build-units-table-buffer):
    * lisp/calc/calc-vec.el (math-read-brackets):
    * lisp/calc/calc-yank.el (calc-edit-mode):
    * lisp/calc/calc.el (calc, calc-do, calc-user-invocation):
    * lisp/calendar/appt.el (appt-display-message):
    * lisp/calendar/diary-lib.el (diary-check-diary-file)
    (diary-mail-entries, diary-from-outlook):
    * lisp/calendar/icalendar.el (icalendar-export-region)
    (icalendar--convert-float-to-ical)
    (icalendar--convert-date-to-ical)
    (icalendar--convert-ical-to-diary)
    (icalendar--convert-recurring-to-diary)
    (icalendar--add-diary-entry):
    * lisp/calendar/time-date.el (format-seconds):
    * lisp/calendar/timeclock.el (timeclock-mode-line-display)
    (timeclock-make-hours-explicit, timeclock-log-data):
    * lisp/calendar/todo-mode.el (todo-prefix, todo-delete-category)
    (todo-item-mark, todo-check-format)
    (todo-insert-item--next-param, todo-edit-item--next-key)
    (todo-mode):
    * lisp/cedet/ede/pmake.el (ede-proj-makefile-insert-dist-rules):
    * lisp/cedet/mode-local.el (describe-mode-local-overload)
    (mode-local-print-binding, mode-local-describe-bindings-2):
    * lisp/cedet/semantic/complete.el (semantic-displayor-show-request):
    * lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
    * lisp/cus-start.el (standard):
    * lisp/cus-theme.el (describe-theme-1):
    * lisp/custom.el (custom-add-dependencies, custom-check-theme)
    (custom--sort-vars-1, load-theme):
    * lisp/descr-text.el (describe-text-properties-1, describe-char):
    * lisp/dired-x.el (dired-do-run-mail):
    * lisp/dired.el (dired-log):
    * lisp/emacs-lisp/advice.el (ad-read-advised-function)
    (ad-read-advice-class, ad-read-advice-name, ad-enable-advice)
    (ad-disable-advice, ad-remove-advice, ad-set-argument)
    (ad-set-arguments, ad--defalias-fset, ad-activate)
    (ad-deactivate):
    * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand)
    (byte-compile-unfold-lambda, byte-optimize-form-code-walker)
    (byte-optimize-while, byte-optimize-apply):
    * lisp/emacs-lisp/byte-run.el (defun, defsubst):
    * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode)
    (byte-compile-log-file, byte-compile-format-warn)
    (byte-compile-nogroup-warn, byte-compile-arglist-warn)
    (byte-compile-cl-warn)
    (byte-compile-warn-about-unresolved-functions)
    (byte-compile-file, byte-compile--declare-var)
    (byte-compile-file-form-defmumble, byte-compile-form)
    (byte-compile-normal-call, byte-compile-check-variable)
    (byte-compile-variable-ref, byte-compile-variable-set)
    (byte-compile-subr-wrong-args, byte-compile-setq-default)
    (byte-compile-negation-optimizer)
    (byte-compile-condition-case--old)
    (byte-compile-condition-case--new, byte-compile-save-excursion)
    (byte-compile-defvar, byte-compile-autoload)
    (byte-compile-lambda-form)
    (byte-compile-make-variable-buffer-local, display-call-tree)
    (batch-byte-compile):
    * lisp/emacs-lisp/cconv.el (cconv-convert, cconv--analyze-use):
    * lisp/emacs-lisp/chart.el (chart-space-usage):
    * lisp/emacs-lisp/check-declare.el (check-declare-scan)
    (check-declare-warn, check-declare-file)
    (check-declare-directory):
    * lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine)
    (checkdoc-message-text-engine):
    * lisp/emacs-lisp/cl-extra.el (cl-parse-integer)
    (cl--describe-class):
    * lisp/emacs-lisp/cl-generic.el (cl-defgeneric)
    (cl--generic-describe, cl-generic-generalizers):
    * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause, cl-tagbody)
    (cl-symbol-macrolet):
    * lisp/emacs-lisp/cl.el (cl-unload-function, flet):
    * lisp/emacs-lisp/copyright.el (copyright)
    (copyright-update-directory):
    * lisp/emacs-lisp/edebug.el (edebug-read-list):
    * lisp/emacs-lisp/eieio-base.el (eieio-persistent-read):
    * lisp/emacs-lisp/eieio-core.el (eieio--slot-override)
    (eieio-oref):
    * lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor):
    * lisp/emacs-lisp/eieio-speedbar.el:
    (eieio-speedbar-child-make-tag-lines)
    (eieio-speedbar-child-description):
    * lisp/emacs-lisp/eieio.el (defclass, change-class):
    * lisp/emacs-lisp/elint.el (elint-file, elint-get-top-forms)
    (elint-init-form, elint-check-defalias-form)
    (elint-check-let-form):
    * lisp/emacs-lisp/ert.el (ert-get-test, ert-results-mode-menu)
    (ert-results-pop-to-backtrace-for-test-at-point)
    (ert-results-pop-to-messages-for-test-at-point)
    (ert-results-pop-to-should-forms-for-test-at-point)
    (ert-describe-test):
    * lisp/emacs-lisp/find-func.el (find-function-search-for-symbol)
    (find-function-library):
    * lisp/emacs-lisp/generator.el (iter-yield):
    * lisp/emacs-lisp/gv.el (gv-define-simple-setter):
    * lisp/emacs-lisp/lisp-mnt.el (lm-verify):
    * lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
    * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p):
    * lisp/emacs-lisp/nadvice.el (advice--make-docstring)
    (advice--make, define-advice):
    * lisp/emacs-lisp/package-x.el (package-upload-file):
    * lisp/emacs-lisp/package.el (package-version-join)
    (package-disabled-p, package-activate-1, package-activate)
    (package--download-one-archive)
    (package--download-and-read-archives)
    (package-compute-transaction, package-install-from-archive)
    (package-install, package-install-selected-packages)
    (package-delete, package-autoremove, describe-package-1)
    (package-install-button-action, package-delete-button-action)
    (package-menu-hide-package, package-menu--list-to-prompt)
    (package-menu--perform-transaction)
    (package-menu--find-and-notify-upgrades):
    * lisp/emacs-lisp/pcase.el (pcase-exhaustive, pcase--u1):
    * lisp/emacs-lisp/re-builder.el (reb-enter-subexp-mode):
    * lisp/emacs-lisp/ring.el (ring-previous, ring-next):
    * lisp/emacs-lisp/rx.el (rx-check, rx-anything)
    (rx-check-any-string, rx-check-any, rx-check-not, rx-=)
    (rx-repeat, rx-check-backref, rx-syntax, rx-check-category)
    (rx-form):
    * lisp/emacs-lisp/smie.el (smie-config-save):
    * lisp/emacs-lisp/subr-x.el (internal--check-binding):
    * lisp/emacs-lisp/tabulated-list.el (tabulated-list-put-tag):
    * lisp/emacs-lisp/testcover.el (testcover-1value):
    * lisp/emacs-lisp/timer.el (timer-event-handler):
    * lisp/emulation/viper-cmd.el (viper-toggle-parse-sexp-ignore-comments)
    (viper-toggle-search-style, viper-kill-buffer)
    (viper-brac-function):
    * lisp/emulation/viper-macs.el (viper-record-kbd-macro):
    * lisp/env.el (setenv):
    * lisp/erc/erc-button.el (erc-nick-popup):
    * lisp/erc/erc.el (erc-cmd-LOAD, erc-handle-login, english):
    * lisp/eshell/em-dirs.el (eshell/cd):
    * lisp/eshell/em-glob.el (eshell-glob-regexp)
    (eshell-glob-entries):
    * lisp/eshell/em-pred.el (eshell-parse-modifiers):
    * lisp/eshell/esh-opt.el (eshell-show-usage):
    * lisp/facemenu.el (facemenu-add-new-face)
    (facemenu-add-new-color):
    * lisp/faces.el (read-face-name, read-face-font, describe-face)
    (x-resolve-font-name):
    * lisp/files-x.el (modify-file-local-variable):
    * lisp/files.el (locate-user-emacs-file, find-alternate-file)
    (set-auto-mode, hack-one-local-variable--obsolete)
    (dir-locals-set-directory-class, write-file, basic-save-buffer)
    (delete-directory, copy-directory, recover-session)
    (recover-session-finish, insert-directory)
    (file-modes-char-to-who, file-modes-symbolic-to-number)
    (move-file-to-trash):
    * lisp/filesets.el (filesets-add-buffer, filesets-remove-buffer):
    * lisp/find-cmd.el (find-generic, find-to-string):
    * lisp/finder.el (finder-commentary):
    * lisp/font-lock.el (font-lock-fontify-buffer):
    * lisp/format.el (format-write-file, format-find-file)
    (format-insert-file):
    * lisp/frame.el (get-device-terminal, select-frame-by-name):
    * lisp/fringe.el (fringe--check-style):
    * lisp/gnus/nnmairix.el (nnmairix-widget-create-query):
    * lisp/help-fns.el (help-fns--key-bindings)
    (help-fns--compiler-macro, help-fns--parent-mode)
    (help-fns--obsolete, help-fns--interactive-only)
    (describe-function-1, describe-variable):
    * lisp/help.el (describe-mode)
    (describe-minor-mode-from-indicator):
    * lisp/image.el (image-type):
    * lisp/international/ccl.el (ccl-dump):
    * lisp/international/fontset.el (x-must-resolve-font-name):
    * lisp/international/mule-cmds.el (prefer-coding-system)
    (select-safe-coding-system-interactively)
    (select-safe-coding-system, activate-input-method)
    (toggle-input-method, describe-current-input-method)
    (describe-language-environment):
    * lisp/international/mule-conf.el (code-offset):
    * lisp/international/mule-diag.el (describe-character-set)
    (list-input-methods-1):
    * lisp/mail/feedmail.el (feedmail-run-the-queue):
    * lisp/mouse.el (minor-mode-menu-from-indicator):
    * lisp/mpc.el (mpc-playlist-rename):
    * lisp/msb.el (msb--choose-menu):
    * lisp/net/ange-ftp.el (ange-ftp-shell-command):
    * lisp/net/imap.el (imap-interactive-login):
    * lisp/net/mairix.el (mairix-widget-create-query):
    * lisp/net/newst-backend.el (newsticker--sentinel-work):
    * lisp/net/newst-treeview.el (newsticker--treeview-load):
    * lisp/net/rlogin.el (rlogin):
    * lisp/obsolete/iswitchb.el (iswitchb-possible-new-buffer):
    * lisp/obsolete/otodo-mode.el (todo-more-important-p):
    * lisp/obsolete/pgg-gpg.el (pgg-gpg-process-region):
    * lisp/obsolete/pgg-pgp.el (pgg-pgp-process-region):
    * lisp/obsolete/pgg-pgp5.el (pgg-pgp5-process-region):
    * lisp/org/ob-core.el (org-babel-goto-named-src-block)
    (org-babel-goto-named-result):
    * lisp/org/ob-fortran.el (org-babel-fortran-ensure-main-wrap):
    * lisp/org/ob-ref.el (org-babel-ref-resolve):
    * lisp/org/org-agenda.el (org-agenda-prepare):
    * lisp/org/org-clock.el (org-clock-notify-once-if-expired)
    (org-clock-resolve):
    * lisp/org/org-ctags.el (org-ctags-ask-rebuild-tags-file-then-find-tag):
    * lisp/org/org-feed.el (org-feed-parse-atom-entry):
    * lisp/org/org-habit.el (org-habit-parse-todo):
    * lisp/org/org-mouse.el (org-mouse-popup-global-menu)
    (org-mouse-context-menu):
    * lisp/org/org-table.el (org-table-edit-formulas):
    * lisp/org/ox.el (org-export-async-start):
    * lisp/proced.el (proced-log):
    * lisp/progmodes/ada-mode.el (ada-get-indent-case)
    (ada-check-matching-start, ada-goto-matching-start):
    * lisp/progmodes/ada-prj.el (ada-prj-display-page):
    * lisp/progmodes/ada-xref.el (ada-find-executable):
    * lisp/progmodes/ebrowse.el (ebrowse-tags-apropos):
    * lisp/progmodes/etags.el (etags-tags-apropos-additional):
    * lisp/progmodes/flymake.el (flymake-parse-err-lines)
    (flymake-start-syntax-check-process):
    * lisp/progmodes/python.el (python-shell-get-process-or-error)
    (python-define-auxiliary-skeleton):
    * lisp/progmodes/sql.el (sql-comint):
    * lisp/progmodes/verilog-mode.el (verilog-load-file-at-point):
    * lisp/progmodes/vhdl-mode.el (vhdl-widget-directory-validate):
    * lisp/recentf.el (recentf-open-files):
    * lisp/replace.el (query-replace-read-from)
    (occur-after-change-function, occur-1):
    * lisp/scroll-bar.el (scroll-bar-columns):
    * lisp/server.el (server-get-auth-key):
    * lisp/simple.el (execute-extended-command)
    (undo-outer-limit-truncate, list-processes--refresh)
    (compose-mail, set-variable, choose-completion-string)
    (define-alternatives):
    * lisp/startup.el (site-run-file, tty-handle-args, command-line)
    (command-line-1):
    * lisp/subr.el (noreturn, define-error, add-to-list)
    (read-char-choice, version-to-list):
    * lisp/term/common-win.el (x-handle-xrm-switch)
    (x-handle-name-switch, x-handle-args):
    * lisp/term/x-win.el (x-handle-parent-id, x-handle-smid):
    * lisp/textmodes/reftex-ref.el (reftex-label):
    * lisp/textmodes/reftex-toc.el (reftex-toc-rename-label):
    * lisp/textmodes/two-column.el (2C-split):
    * lisp/tutorial.el (tutorial--describe-nonstandard-key)
    (tutorial--find-changed-keys):
    * lisp/type-break.el (type-break-noninteractive-query):
    * lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes)
    (wdired-do-perm-changes):
    * lisp/whitespace.el (whitespace-report-region):
    Prefer grave quoting in source-code strings used to generate help
    and diagnostics.
    * lisp/faces.el (face-documentation):
    No need to convert quotes, since the result is a docstring.
    * lisp/info.el (Info-virtual-index-find-node)
    (Info-virtual-index, info-apropos):
    Simplify by generating only curved quotes, since info files are
    typically that ways nowadays anyway.
    * lisp/international/mule-diag.el (list-input-methods):
    Don’t assume text quoting style is curved.
    * lisp/org/org-bibtex.el (org-bibtex-fields):
    Revert my recent changes, going back to the old quoting style.
---
 admin/unidata/unidata-gen.el        |    2 +-
 doc/lispintro/emacs-lisp-intro.texi |   36 +++++++-------
 doc/lispref/control.texi            |    2 +-
 doc/lispref/functions.texi          |    4 +-
 doc/lispref/help.texi               |    4 +-
 doc/lispref/modes.texi              |   14 +++---
 doc/lispref/os.texi                 |    2 +-
 doc/lispref/processes.texi          |    4 +-
 doc/lispref/strings.texi            |   16 +++---
 doc/lispref/text.texi               |    2 +-
 doc/lispref/tips.texi               |    8 ++--
 doc/misc/ede.texi                   |    6 +-
 doc/misc/efaq.texi                  |    2 +-
 doc/misc/eieio.texi                 |    2 +-
 doc/misc/gnus-faq.texi              |    8 ++--
 doc/misc/gnus.texi                  |    6 +-
 doc/misc/rcirc.texi                 |    2 +-
 lisp/abbrev.el                      |    2 +-
 lisp/align.el                       |    2 +-
 lisp/allout-widgets.el              |    6 +-
 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/calendar/appt.el               |    2 +-
 lisp/calendar/diary-lib.el          |    8 ++--
 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/pmake.el             |    2 +-
 lisp/cedet/mode-local.el            |   10 ++--
 lisp/cedet/semantic/complete.el     |    4 +-
 lisp/cedet/semantic/java.el         |    2 +-
 lisp/cedet/srecode/srt-mode.el      |    4 +-
 lisp/cus-start.el                   |    2 +-
 lisp/cus-theme.el                   |    4 +-
 lisp/custom.el                      |   12 +++---
 lisp/descr-text.el                  |    4 +-
 lisp/dired-x.el                     |    4 +-
 lisp/dired.el                       |    2 +-
 lisp/electric.el                    |   10 ++--
 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         |   84 +++++++++++++++++-----------------
 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          |   30 ++++++------
 lisp/emacs-lisp/cl.el               |    8 ++--
 lisp/emacs-lisp/copyright.el        |    4 +-
 lisp/emacs-lisp/edebug.el           |    2 +-
 lisp/emacs-lisp/eieio-base.el       |    2 +-
 lisp/emacs-lisp/eieio-core.el       |    6 +-
 lisp/emacs-lisp/eieio-opt.el        |    4 +-
 lisp/emacs-lisp/eieio-speedbar.el   |    4 +-
 lisp/emacs-lisp/eieio.el            |    6 +-
 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/nadvice.el          |    6 +-
 lisp/emacs-lisp/package-x.el        |    2 +-
 lisp/emacs-lisp/package.el          |   61 +++++++++++++------------
 lisp/emacs-lisp/pcase.el            |    6 +-
 lisp/emacs-lisp/re-builder.el       |    2 +-
 lisp/emacs-lisp/ring.el             |    4 +-
 lisp/emacs-lisp/rx.el               |   38 ++++++++--------
 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-macs.el        |    8 ++--
 lisp/env.el                         |    4 +-
 lisp/erc/erc-button.el              |    2 +-
 lisp/erc/erc-dcc.el                 |    2 +-
 lisp/erc/erc.el                     |   16 +++---
 lisp/eshell/em-dirs.el              |    4 +-
 lisp/eshell/em-glob.el              |    6 +-
 lisp/eshell/em-pred.el              |   10 ++--
 lisp/eshell/em-script.el            |    4 +-
 lisp/eshell/esh-opt.el              |    2 +-
 lisp/eshell/esh-var.el              |    2 +-
 lisp/facemenu.el                    |   10 ++--
 lisp/faces.el                       |   32 +++++++-------
 lisp/files-x.el                     |    2 +-
 lisp/files.el                       |   38 ++++++++--------
 lisp/filesets.el                    |   30 ++++++------
 lisp/find-cmd.el                    |    4 +-
 lisp/finder.el                      |    2 +-
 lisp/font-lock.el                   |    2 +-
 lisp/format.el                      |    6 +-
 lisp/frame.el                       |    4 +-
 lisp/fringe.el                      |    2 +-
 lisp/gnus/nnmairix.el               |    4 +-
 lisp/help-fns.el                    |   46 ++++++++++----------
 lisp/help.el                        |    8 ++--
 lisp/htmlfontify.el                 |    4 +-
 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     |   10 +++--
 lisp/json.el                        |    2 +-
 lisp/kermit.el                      |    2 +-
 lisp/leim/quail/cyrillic.el         |    6 +-
 lisp/leim/quail/hebrew.el           |   16 +++---
 lisp/leim/quail/thai.el             |    6 +-
 lisp/leim/quail/tibetan.el          |   12 +++---
 lisp/mail/feedmail.el               |   12 +++---
 lisp/mail/rfc2368.el                |    8 ++--
 lisp/mh-e/mh-comp.el                |    2 +-
 lisp/mh-e/mh-e.el                   |    4 +-
 lisp/mh-e/mh-seq.el                 |    4 +-
 lisp/mh-e/mh-utils.el               |   10 ++--
 lisp/mouse.el                       |    2 +-
 lisp/mpc.el                         |    2 +-
 lisp/msb.el                         |    2 +-
 lisp/net/ange-ftp.el                |    4 +-
 lisp/net/imap.el                    |    4 +-
 lisp/net/mairix.el                  |    4 +-
 lisp/net/newst-backend.el           |    4 +-
 lisp/net/newst-treeview.el          |    4 +-
 lisp/net/rcirc.el                   |    2 +-
 lisp/net/rlogin.el                  |    2 +-
 lisp/obsolete/iswitchb.el           |    2 +-
 lisp/obsolete/landmark.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/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              |    8 ++--
 lisp/org/org-bibtex.el              |    8 ++--
 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-table.el               |    2 +-
 lisp/org/org.el                     |    2 +-
 lisp/org/ox.el                      |    2 +-
 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/ebrowse.el           |    2 +-
 lisp/progmodes/etags.el             |    2 +-
 lisp/progmodes/flymake.el           |    6 +-
 lisp/progmodes/idlw-shell.el        |    2 +-
 lisp/progmodes/idlwave.el           |    2 +-
 lisp/progmodes/make-mode.el         |    2 +-
 lisp/progmodes/python.el            |    4 +-
 lisp/progmodes/sql.el               |    2 +-
 lisp/progmodes/verilog-mode.el      |   22 +++++-----
 lisp/progmodes/vhdl-mode.el         |   16 +++---
 lisp/recentf.el                     |    2 +-
 lisp/replace.el                     |    8 ++--
 lisp/scroll-bar.el                  |    2 +-
 lisp/server.el                      |    2 +-
 lisp/simple.el                      |   36 +++++++-------
 lisp/startup.el                     |   26 +++++-----
 lisp/subr.el                        |   14 +++---
 lisp/term/common-win.el             |    6 +-
 lisp/term/x-win.el                  |    4 +-
 lisp/textmodes/reftex-ref.el        |    2 +-
 lisp/textmodes/reftex-toc.el        |    2 +-
 lisp/textmodes/table.el             |   24 +++++-----
 lisp/textmodes/two-column.el        |    2 +-
 lisp/tutorial.el                    |   10 ++--
 lisp/type-break.el                  |    2 +-
 lisp/wdired.el                      |    8 ++--
 lisp/whitespace.el                  |    8 ++--
 src/doc.c                           |   14 +++---
 src/editfns.c                       |    4 +-
 src/keyboard.c                      |    8 ++--
 test/automated/textprop-tests.el    |    2 +-
 219 files changed, 882 insertions(+), 870 deletions(-)

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/lispintro/emacs-lisp-intro.texi 
b/doc/lispintro/emacs-lisp-intro.texi
index 5ad5f26..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
@@ -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/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/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 89339ff..b3042d7 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -377,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
 
@@ -398,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/modes.texi b/doc/lispref/modes.texi
index f00e481..a8b6bb1 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1155,9 +1155,9 @@ Many other modes, such as `mail-mode', `outline-mode' and
   "Major mode for editing text written for humans to read.
 In this mode, paragraphs are delimited only by blank or white lines.
 You can thus get the full benefit of adaptive filling
- (see the variable ‘adaptive-fill-mode’).
+ (see the variable `adaptive-fill-mode').
 address@hidden@}
-Turning on Text mode runs the normal hook ‘text-mode-hook’."
+Turning on Text mode runs the normal hook `text-mode-hook'."
 @end group
 @group
   (set (make-local-variable 'text-mode-variant) t)
@@ -1252,7 +1252,7 @@ And here is the code to set up the keymap for Lisp mode:
     @dots{}
     map)
   "Keymap for ordinary Lisp mode.
-All commands in ‘lisp-mode-shared-map’ are inherited by this map.")
+All commands in `lisp-mode-shared-map' are inherited by this map.")
 @end group
 @end smallexample
 
@@ -1268,12 +1268,12 @@ Delete converts tabs to spaces as it moves back.
 Blank lines separate paragraphs.  Semicolons start comments.
 
 address@hidden@}
-Note that ‘run-lisp’ may be used either to start an inferior Lisp job
+Note that `run-lisp' may be used either to start an inferior Lisp job
 or to switch back to an existing one.
 @end group
 
 @group
-Entry to this mode calls the value of ‘lisp-mode-hook’
+Entry to this mode calls the value of `lisp-mode-hook'
 if that value is non-nil."
   (lisp-mode-variables nil t)
   (set (make-local-variable 'find-tag-default-function)
@@ -1447,7 +1447,7 @@ will load the library that defines the mode.  For example:
 (defcustom msb-mode nil
   "Toggle msb-mode.
 Setting this variable directly does not take effect;
-use either \\[customize] or the function ‘msb-mode’."
+use either \\[customize] or the function `msb-mode'."
   :set 'custom-set-minor-mode
   :initialize 'custom-initialize-default
   :version "20.4"
@@ -1605,7 +1605,7 @@ for this macro.
 Interactively with no argument, this command toggles the mode.
 A positive prefix argument enables the mode, any other prefix
 argument disables it.  From Lisp, argument omitted or nil enables
-the mode, ‘toggle’ toggles the state.
+the mode, `toggle' toggles the state.
 
 When Hungry mode is enabled, the control delete key
 gobbles all preceding whitespace except the last.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index f7d4117..6ef87df 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1928,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}}
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/strings.texi b/doc/lispref/strings.texi
index 4a33893..f422507 100644
--- a/doc/lispref/strings.texi
+++ b/doc/lispref/strings.texi
@@ -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 3304428..55e550a 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -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/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/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 5ab34a0..19c78bf 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -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 d50bcd6..9093fa2 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -21034,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)
@@ -24081,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/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 eb9085c..f31c3d8 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -481,9 +481,9 @@ text in allout item bodies.")
 
 \(That space is used to convey selected cues indicating body qualities,
 including things like:
- - encryption ‘~’
- - numbering ‘#’
- - indirect reference address@hidden
+ - encryption `~'
+ - numbering `#'
+ - indirect reference `@'
  - distinctive bullets - see `allout-distinctive-bullets-string'.)")
 ;;;_    = allout-span-to-category
 (defvar allout-span-to-category
diff --git a/lisp/allout.el b/lisp/allout.el
index 3ba440f..f705573 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -229,7 +229,7 @@ See `allout-unprefixed-keybindings' for the list of 
keybindings
 that are not prefixed.
 
 Use vector format for the keys:
-  - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+  - put literal keys after a `?' question mark, eg: `?a', `?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
     of the modifiers, eg: [(control ?a)]
@@ -257,7 +257,7 @@ This is in contrast to the majority of allout-mode bindings 
on
 preceding command key.
 
 Use vector format for the keys:
-  - put literal keys after a ‘?’ question mark, eg: ‘?a’, ‘?.’
+  - put literal keys after a `?' question mark, eg: `?a', `?.'
   - enclose control, shift, or meta-modified keys as sequences within
     parentheses, with the literal key, as above, preceded by the name(s)
     of the modifiers, eg: [(control ?a)]
@@ -1012,9 +1012,9 @@ determination of aberrance is according to the mistaken 
item
 being followed by a legitimate item of excessively greater depth.
 
 The classic example of a mistaken item, for a standard allout
-outline configuration, is a body line that begins with an ‘...’
+outline configuration, is a body line that begins with an `...'
 ellipsis.  This happens to contain a legitimate depth-2 header
-prefix, constituted by two ‘..’ dots at the beginning of the
+prefix, constituted by two `..' dots at the beginning of the
 line.  The only thing that can distinguish it *in principle* from
 a legitimate one is if the following real header is at a depth
 that is discontinuous from the depth of 2 implied by the
@@ -2081,20 +2081,20 @@ OPEN:   A TOPIC that is not CLOSED, though its 
OFFSPRING or BODY may be."
                  (and (not (string= allout-auto-activation "activate"))
                       (if (string= allout-auto-activation "ask")
                           (if (y-or-n-p (format-message
-                                         "Expose %s with layout ‘%s’? "
+                                         "Expose %s with layout `%s'? "
                                          (buffer-name) use-layout))
                               t
                             (message "Skipped %s layout." (buffer-name))
                             nil)
                         t)))
         (save-excursion
-          (message "Adjusting ‘%s’ exposure..." (buffer-name))
+          (message "Adjusting `%s' exposure..." (buffer-name))
           (goto-char 0)
           (allout-this-or-next-heading)
           (condition-case err
               (progn
                 (apply 'allout-expose-topic (list use-layout))
-                (message "Adjusting ‘%s’ exposure... done."
+                (message "Adjusting `%s' exposure... done."
                          (buffer-name)))
             ;; Problem applying exposure -- notify user, but don't
             ;; interrupt, eg, file visit:
@@ -3484,7 +3484,7 @@ Offer one suitable for current depth DEPTH as default."
       (goto-char (allout-current-bullet-pos))
       (setq choice (solicit-char-in-string
                     (format-message
-                     "Select bullet: %s (‘%s’ default): "
+                     "Select bullet: %s (`%s' default): "
                      sans-escapes
                      (allout-substring-no-properties default-bullet))
                     sans-escapes
@@ -5879,7 +5879,7 @@ With repeat count, copy the exposed portions of entire 
buffer."
 (defun allout-toggle-current-subtree-encryption (&optional keymode-cue)
   "Encrypt clear or decrypt encoded topic text.
 
-Allout uses Emacs ‘epg’ library to perform encryption.  Symmetric
+Allout uses Emacs `epg' library to perform encryption.  Symmetric
 and keypair encryption are supported.  All encryption is ascii
 armored.
 
@@ -5941,7 +5941,7 @@ associated with it.  This can be used to dissociate any
 recipients with the file, by selecting no recipients in the
 dialog.
 
-Encryption and decryption uses the Emacs ‘epg’ library.
+Encryption and decryption uses the Emacs `epg' library.
 
 Encrypted text will be ascii-armored.
 
@@ -6381,7 +6381,7 @@ for details on preparing Emacs for automatic allout 
activation."
       (allout-open-topic 2)
       (insert (substitute-command-keys
                (concat "Dummy outline topic header -- see"
-                       " ‘allout-mode’ docstring: ‘\\[describe-mode]’.")))
+                       " `allout-mode' docstring: `\\[describe-mode]'.")))
       (allout-adjust-file-variable
        "allout-layout" (or allout-layout '(-1 : 0))))))
 ;;;_   > allout-file-vars-section-data ()
@@ -6546,7 +6546,7 @@ Optional arg DO-DEFAULTING indicates to accept empty 
input (CR)."
 (defun regexp-sans-escapes (regexp &optional successive-backslashes)
   "Return a copy of REGEXP with all character escapes stripped out.
 
-Representations of actual backslashes -- ‘\\\\\\\\’ -- are left as a
+Representations of actual backslashes -- `\\\\\\\\' -- are left as a
 single backslash.
 
 Optional arg SUCCESSIVE-BACKSLASHES is used internally for recursion."
diff --git a/lisp/apropos.el b/lisp/apropos.el
index ec21296..6d7dc8a 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -682,7 +682,7 @@ the output includes key-bindings of commands."
        symbols apropos-do-all
        (concat
         (format-message
-                "Library ‘%s’ provides: %s\nand requires: %s"
+                "Library `%s' provides: %s\nand requires: %s"
                 file
                 (mapconcat 'apropos-library-button
                            (or provides '(nil)) " and ")
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 308d1ca..0351481 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -843,10 +843,10 @@ whose annotation is being edited.")
 The default annotation text is simply some text explaining how to use
 annotations."
   (concat (format-message
-           "#  Type the annotation for bookmark ‘%s’ here.\n"
+           "#  Type the annotation for bookmark `%s' here.\n"
            bookmark-name)
          (format-message
-           "#  All lines which start with a ‘#’ will be deleted.\n")
+           "#  All lines which start with a `#' will be deleted.\n")
          "#  Type C-c C-c when done.\n#\n"
          "#  Author: " (user-full-name) " <" (user-login-name) "@"
          (system-name) ">\n"
diff --git a/lisp/bs.el b/lisp/bs.el
index 6314bbb..1735c17 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -1314,7 +1314,7 @@ ALL-BUFFERS is the list of buffers appearing in Buffer 
Selection Menu."
   (format-mode-line mode-name nil nil start-buffer))
 
 (defun bs--get-file-name (_start-buffer _all-buffers)
-  "Return string for column ‘File’ in Buffer Selection Menu.
+  "Return string for column `File' in Buffer Selection Menu.
 This is the variable `buffer-file-name' of current buffer.
 If not visiting a file, `list-buffers-directory' is returned instead.
 START-BUFFER is the buffer where we started buffer selection.
diff --git a/lisp/button.el b/lisp/button.el
index 5fe5bf0..e7602dd 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -114,7 +114,7 @@ Mode-specific keymaps may want to use this as their parent 
keymap.")
   "Return the symbol used by button-type TYPE to store properties.
 Buttons inherit them by setting their `category' property to that symbol."
   (or (get type 'button-category-symbol)
-      (error "Unknown button type ‘%s’" type)))
+      (error "Unknown button type `%s'" type)))
 
 (defun define-button-type (name &rest properties)
   "Define a `button type' called NAME (a symbol).
@@ -208,7 +208,7 @@ changes to a supertype are not reflected in its subtypes)."
         (setq val (button-category-symbol val)))
        ((eq prop 'category)
         ;; Disallow updating the `category' property directly.
-        (error "Button ‘category’ property may not be set directly")))
+        (error "Button `category' property may not be set directly")))
   ;; Add the property.
   (cond ((overlayp button)
         (overlay-put button prop val))
@@ -333,7 +333,7 @@ Also see `insert-text-button'."
       (setq object beg beg 0 end (length object)))
     ;; Disallow setting the `category' property directly.
     (when (plist-get properties 'category)
-      (error "Button ‘category’ property may not be set directly"))
+      (error "Button `category' property may not be set directly"))
     (if (null type-entry)
        ;; The user didn't specify a `type' property, use the default.
        (setq properties (cons 'category (cons 'default-button properties)))
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el
index 2c588c1..2319c48 100644
--- a/lisp/calc/calc-aent.el
+++ b/lisp/calc/calc-aent.el
@@ -1034,7 +1034,7 @@ in Calc algebraic input.")
 
 (defun math-restore-placeholders (x)
   "Replace placeholders by the proper characters in the symbol x.
-This includes ‘#’ for ‘_’ and ‘'’ for ‘%’.
+This includes `#' for `_' and `'' for `%'.
 If the current Calc language does not use placeholders, return nil."
   (if (or (memq calc-language calc-lang-allow-underscores)
           (memq calc-language calc-lang-allow-percentsigns))
@@ -1057,7 +1057,7 @@ If the current Calc language does not use placeholders, 
return nil."
 (defun math-read-if (cond op)
   (let ((then (math-read-expr-level 0)))
     (or (equal math-expr-data ":")
-       (throw 'syntax "Expected ‘:’"))
+       (throw 'syntax "Expected `:'"))
     (math-read-token)
     (list 'calcFunc-if cond then (math-read-expr-level (nth 3 op)))))
 
@@ -1121,7 +1121,7 @@ If the current Calc language does not use placeholders, 
return nil."
                                   (math-read-expr-list))))
                       (if (not (or (equal math-expr-data calc-function-close)
                                    (eq math-exp-token 'end)))
-                          (throw 'syntax "Expected ‘)’"))
+                          (throw 'syntax "Expected `)'"))
                       (math-read-token)
                       (if (and (memq calc-language
                                       calc-lang-parens-are-subscripts)
@@ -1177,7 +1177,7 @@ If the current Calc language does not use placeholders, 
return nil."
                          (setq el (cdr el))))
                     (if (equal math-expr-data "]")
                         (math-read-token)
-                      (throw 'syntax "Expected ‘]’")))
+                      (throw 'syntax "Expected `]'")))
                   val)))))
          ((eq math-exp-token 'dollar)
           (let ((abs (if (> math-expr-data 0) math-expr-data (- 
math-expr-data))))
@@ -1246,7 +1246,7 @@ If the current Calc language does not use placeholders, 
return nil."
             (if (not (or (equal math-expr-data ")")
                          (and (equal math-expr-data "]") (eq (car-safe exp) 
'intv))
                          (eq math-exp-token 'end)))
-                (throw 'syntax "Expected ‘)’"))
+                (throw 'syntax "Expected `)'"))
             (math-read-token)
             exp))
          ((eq math-exp-token 'string)
diff --git a/lisp/calc/calc-embed.el b/lisp/calc/calc-embed.el
index 3f6e83e..d0efe53 100644
--- a/lisp/calc/calc-embed.el
+++ b/lisp/calc/calc-embed.el
@@ -333,7 +333,7 @@
          (message (concat
                     "Embedded Calc mode enabled; "
                     (if calc-embedded-quiet
-                        "Type ‘C-x * x’"
+                        "Type `C-x * x'"
                       "Give this command again")
                     " to return to normal")))))
   (scroll-down 0))    ; fix a bug which occurs when truncate-lines is changed.
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index 2442f02..cb6ab6f 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1957,7 +1957,7 @@ calc-kill calc-kill-region calc-yank))))
                  (desc
                   (if (symbolp func)
                       (if (= (logand kind 3) 0)
-                          (format-message "‘%c’ = %s" key name)
+                          (format-message "`%c' = %s" key name)
                         (if pos
                             (format "%s%c%s"
                                     (downcase (substring name 0 pos))
diff --git a/lisp/calc/calc-graph.el b/lisp/calc/calc-graph.el
index 8378b23..20b0249 100644
--- a/lisp/calc/calc-graph.el
+++ b/lisp/calc/calc-graph.el
@@ -958,7 +958,7 @@ This \"dumb\" driver will be present in Gnuplot 3.0."
          (define-key calc-dumb-map "\C-c\C-c" 'exit-recursive-edit)))
     (use-local-map calc-dumb-map)
     (setq truncate-lines t)
-    (message "Type ‘q’ or ‘C-c C-c’ to return to Calc")
+    (message "Type `q' or `C-c C-c' to return to Calc")
     (recursive-edit)
     (bury-buffer "*Gnuplot Trail*")))
 
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index 395b12d..444bb5e 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -240,7 +240,7 @@ C-w  Describe how there is no warranty for Calc."
                  (if (string-match "\\` +" prompts)
                      (setq prompts (substring prompts (match-end 0))))
                  (setq msg (format-message
-                            "%s:  %s%s‘%s’%s%s %s%s"
+                            "%s:  %s%s`%s'%s%s %s%s"
                             (if (string-match
                                  "\\`\\(calc-[-a-zA-Z0-9]+\\) *\\(.*\\)\\'"
                                  cmd)
@@ -345,7 +345,7 @@ C-w  Describe how there is no warranty for Calc."
   (calc-describe-thing var "Variable Index"))
 
 (defun calc-describe-thing (thing where &optional target not-quoted)
-  (message "Looking for ‘%s’ in %s..." thing where)
+  (message "Looking for `%s' in %s..." thing where)
   (let ((savewin (current-window-configuration)))
     (calc-info-goto-node where)
     (or (let ((case-fold-search nil))
@@ -361,7 +361,7 @@ C-w  Describe how there is no warranty for Calc."
           (if Info-history
               (Info-last))
          (set-window-configuration savewin)
-         (error "Can't find ‘%s’ in %s" thing where)))
+         (error "Can't find `%s' in %s" thing where)))
     (let (Info-history)
       (Info-goto-node (buffer-substring (match-beginning 1) (match-end 1))))
     (let* ((string-target (or target thing))
@@ -380,7 +380,7 @@ C-w  Describe how there is no warranty for Calc."
                 (re-search-forward quoted nil t)
                 (search-forward string-target nil t)))))
     (beginning-of-line)
-    (message "Found ‘%s’ in %s" thing where)))
+    (message "Found `%s' in %s" thing where)))
 
 (defun calc-view-news ()
   (interactive)
@@ -400,9 +400,9 @@ C-w  Describe how there is no warranty for Calc."
     (princ "GNU Emacs Calculator.\n")
     (princ "  By Dave Gillespie.\n")
     (princ (format "  %s\n\n" emacs-copyright))
-    (princ (format-message "Type ‘h s’ for a more detailed summary.\n"))
+    (princ (format-message "Type `h s' for a more detailed summary.\n"))
     (princ (format-message
-            "Or type ‘h i’ to read the full Calc manual on-line.\n\n"))
+            "Or type `h i' to read the full Calc manual on-line.\n\n"))
     (princ "Basic keys:\n")
     (let* ((calc-full-help-flag t))
       (mapc (function (lambda (x) (princ (format
@@ -417,10 +417,10 @@ C-w  Describe how there is no warranty for Calc."
                              (princ
                               (if (eq (nth 2 msgs) ?v)
                                    (format-message
-                                    "\n‘v’ or ‘V’ prefix (vector/matrix) keys: 
\n")
+                                    "\n`v' or `V' prefix (vector/matrix) keys: 
\n")
                                 (if (nth 2 msgs)
                                     (format-message
-                                     "\n‘%c’ prefix (%s) keys:\n"
+                                     "\n`%c' prefix (%s) keys:\n"
                                      (nth 2 msgs)
                                      (or (cdr (assq (nth 2 msgs)
                                                     calc-help-long-names))
diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el
index 70a9ff8..6b3b949 100644
--- a/lisp/calc/calc-lang.el
+++ b/lisp/calc/calc-lang.el
@@ -94,7 +94,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'c)
-   (message "‘C’ language mode")))
+   (message "C language mode")))
 
 (put 'c 'math-oper-table
   '( ( "u!"    calcFunc-lnot -1 1000 )
@@ -387,7 +387,7 @@
              math-exp-token 'end
              math-expr-data "\000")
        x)
-    (throw 'syntax "Unmatched closing ‘/’")))
+    (throw 'syntax "Unmatched closing `/'")))
 
 (defun math-parse-fortran-subscr (sym args)
   (setq sym (math-build-var-name sym))
@@ -695,7 +695,7 @@
 
 (defun math-parse-tex-sum (f val)
   (let (low high save)
-    (or (equal math-expr-data "_") (throw 'syntax "Expected ‘_’"))
+    (or (equal math-expr-data "_") (throw 'syntax "Expected `_'"))
     (math-read-token)
     (setq save math-exp-old-pos)
     (setq low (math-read-factor))
@@ -703,7 +703,7 @@
        (progn
          (setq math-exp-old-pos (1+ save))
          (throw 'syntax "Expected equation")))
-    (or (equal math-expr-data "^") (throw 'syntax "Expected ‘^’"))
+    (or (equal math-expr-data "^") (throw 'syntax "Expected `^'"))
     (math-read-token)
     (setq high (math-read-factor))
     (list (nth 2 f) (math-read-factor) (nth 1 low) (nth 2 low) high)))
@@ -1165,14 +1165,14 @@
     (while (assoc math-expr-data '(("ccol") ("lcol") ("rcol")))
       (math-read-token)
       (or (equal math-expr-data calc-function-open)
-         (throw 'syntax "Expected ‘{’"))
+         (throw 'syntax "Expected `{'"))
       (math-read-token)
       (setq vec (cons (cons 'vec (math-read-expr-list)) vec))
       (or (equal math-expr-data calc-function-close)
-         (throw 'syntax "Expected ‘}’"))
+         (throw 'syntax "Expected `}'"))
       (math-read-token))
     (or (equal math-expr-data calc-function-close)
-       (throw 'syntax "Expected ‘}’"))
+       (throw 'syntax "Expected `}'"))
     (math-read-token)
     (math-transpose (cons 'vec (nreverse vec)))))
 
@@ -1187,7 +1187,7 @@
                          (math-read-expr-list))))
              (if (not (or (equal math-expr-data calc-function-close)
                           (eq math-exp-token 'end)))
-                 (throw 'syntax "Expected ‘)’"))
+                 (throw 'syntax "Expected `)'"))
              (math-read-token)
              (cons (intern (format "calcFunc-%s'" (nth 1 x))) args)))
        (list 'var
@@ -1211,7 +1211,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'yacas)
-   (message "‘Yacas’ language mode")))
+   (message "Yacas language mode")))
 
 (put 'yacas 'math-vector-brackets "{}")
 
@@ -1427,7 +1427,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'maxima)
-   (message "‘Maxima’ language mode")))
+   (message "Maxima language mode")))
 
 (put 'maxima 'math-oper-table
      '(("+"    +               100  100)
@@ -1625,7 +1625,7 @@
   (interactive)
   (calc-wrapper
    (calc-set-language 'giac)
-   (message "‘Giac’ language mode")))
+   (message "Giac language mode")))
 
 (put 'giac 'math-oper-table
   '( ( "["    (math-read-giac-subscr) 250 -1 )
@@ -1817,7 +1817,7 @@ order to Calc's."
 (defun math-read-giac-subscr (x op)
   (let ((idx (math-read-expr-level 0)))
     (or (equal math-expr-data "]")
-       (throw 'syntax "Expected ‘]’"))
+       (throw 'syntax "Expected `]'"))
     (math-read-token)
     (list 'calcFunc-subscr x (calc-normalize (list '+ idx 1)))))
 
@@ -1954,7 +1954,7 @@ order to Calc's."
             (progn
               (math-read-token)
               (equal math-expr-data "]")))
-       (throw 'syntax "Expected ‘]]’"))
+       (throw 'syntax "Expected `]]'"))
     (math-read-token)
     (list 'calcFunc-subscr x idx)))
 
@@ -2237,7 +2237,7 @@ order to Calc's."
               (if (= sep ?\.)
                   (setq h (1+ h)))
               (if (= sep ?\])
-                  (math-read-big-error (1- h) v "Expected ‘)’"))
+                  (math-read-big-error (1- h) v "Expected `)'"))
               (if (= sep ?\))
                   (setq p (math-read-big-rec
                             (1+ math-rb-h1) math-rb-v1 (1- h) math-rb-v2 v))
@@ -2252,7 +2252,7 @@ order to Calc's."
                                                      0 1)
                                                  p))))
                       ((= (math-read-big-char (1- h) v) ?\])
-                       (math-read-big-error (1- h) v "Expected ‘)’"))
+                       (math-read-big-error (1- h) v "Expected `)'"))
                       ((= sep ?\,)
                        (or (and (math-realp (car p)) (math-realp (nth 1 p)))
                            (math-read-big-error
@@ -2280,7 +2280,7 @@ order to Calc's."
                        (setq h (math-read-big-balance (1+ hleft) v "["))
                        (if hright
                            (or (= h hright)
-                               (math-read-big-error hright v "Expected ‘]’"))
+                               (math-read-big-error hright v "Expected `]'"))
                          (setq hright h))
                        (setq p (cons (math-read-big-rec
                                       hleft v h (1+ v)) p))
@@ -2293,7 +2293,7 @@ order to Calc's."
                         (setq h (1+ h)))
                     (and (= (math-read-big-char h v) ?\])
                          (setq h (1+ h))))
-                  (math-read-big-error (1- h) v "Expected ‘]’"))
+                  (math-read-big-error (1- h) v "Expected `]'"))
               (if (= (math-read-big-char h vtop) ?\,)
                   (setq h (1+ h)))
               (math-read-big-emptyp math-rb-h1 (1+ v) (1- h) math-rb-v2 nil t)
@@ -2317,7 +2317,7 @@ order to Calc's."
             (setq widest (math-read-big-char (1- h) v))
             (if (or (memq widest '(?\; ?\)))
                     (and (eq widest ?\.) (cdr p)))
-                (math-read-big-error (1- h) v "Expected ‘]’"))
+                (math-read-big-error (1- h) v "Expected `]'"))
             (if (= widest ?\.)
                 (setq h (1+ h)
                       widest (math-read-big-balance h v "[")
@@ -2369,7 +2369,7 @@ order to Calc's."
                                  h widest)
                            (= (math-read-big-char (1- h) v) ?\,)))
                   (or (= (math-read-big-char (1- h) v) ?\))
-                      (math-read-big-error (1- h) v "Expected ‘)’"))
+                      (math-read-big-error (1- h) v "Expected `)'"))
                   (setq p (cons line (nreverse p))))
               (setq p (list 'var
                             (intern (math-remove-dashes p))
@@ -2433,7 +2433,7 @@ order to Calc's."
                                            math-rb-v2 baseline nil t)))
                 (or (= (math-read-big-char math-read-big-h2 baseline) ?\:)
                     (math-read-big-error math-read-big-h2 baseline
-                                          "Expected ‘:’"))
+                                          "Expected `:'"))
                 (setq p (list (nth 1 widest) p y
                               (math-read-big-rec
                                 (1+ math-read-big-h2) math-rb-v1 math-rb-h2 
math-rb-v2
@@ -2509,7 +2509,7 @@ order to Calc's."
       (if (>= h len)
          (if what
              (math-read-big-error nil v (format-message
-                                          "Unmatched ‘%s’" what))
+                                          "Unmatched `%s'" what))
            (setq count 0))
        (if (memq (aref line h) '(?\( ?\[))
            (setq count (1+ count))
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index e141589..aa0ccb7 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -217,7 +217,7 @@ Calc user interface as before (either C-x * C or C-x * K; 
initially C-x * C).
 (defun calc-help ()
   (interactive)
   (let ((msgs
-        '("Press ‘h’ for complete help; press ‘?’ repeatedly for a summary"
+        '("Press `h' for complete help; press `?' repeatedly for a summary"
           "Letter keys: Negate; Precision; Yank; Why; Xtended cmd; Quit"
           "Letter keys: SHIFT + Undo, reDo; Inverse, Hyperbolic, Option"
           "Letter keys: SHIFT + sQrt; Sin, Cos, Tan; Exp, Ln, logB"
@@ -953,7 +953,7 @@ Prompts for bug subject.  Leaves you in a mail buffer."
                                nil nil nil
                                "Please describe exactly what actions triggered 
the bug and the
 precise symptoms of the bug.  If possible, include a backtrace by
-doing ‘\\[toggle-debug-on-error]’, then reproducing the bug.
+doing `\\[toggle-debug-on-error]', then reproducing the bug.
 " )))
 ;;;###autoload
 (defalias 'calc-report-bug 'report-calc-bug)
diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el
index b5eef7f..3ed9612 100644
--- a/lisp/calc/calc-mode.el
+++ b/lisp/calc/calc-mode.el
@@ -110,11 +110,11 @@
      (setq n (and (not (eq calc-auto-why t)) (if calc-auto-why t 1))))
    (calc-change-mode 'calc-auto-why n nil)
    (cond ((null n)
-         (message "User must press ‘w’ to explain unsimplified results"))
+         (message "User must press `w' to explain unsimplified results"))
         ((eq n t)
-         (message "Automatically doing ‘w’ to explain unsimplified results"))
+         (message "Automatically doing `w' to explain unsimplified results"))
         (t
-         (message "Automatically doing ‘w’ only for unusual messages")))))
+         (message "Automatically doing `w' only for unusual messages")))))
 
 (defun calc-group-digits (n)
   (interactive "P")
@@ -272,7 +272,7 @@
         (vals (mapcar (function (lambda (v) (symbol-value (car v))))
                       calc-mode-var-list)))
      (unless calc-settings-file
-       (error "No ‘calc-settings-file’ specified"))
+       (error "No `calc-settings-file' specified"))
      (set-buffer (find-file-noselect (substitute-in-file-name
                                      calc-settings-file)))
      (goto-char (point-min))
@@ -572,8 +572,8 @@
    (calc-change-mode 'calc-auto-recompute arg nil t)
    (calc-refresh-evaltos)
    (message (if calc-auto-recompute
-               "Automatically recomputing ‘=>’ forms when necessary"
-             "Not recomputing ‘=>’ forms automatically"))))
+               "Automatically recomputing `=>' forms when necessary"
+             "Not recomputing `=>' forms automatically"))))
 
 (defun calc-working (n)
   (interactive "P")
diff --git a/lisp/calc/calc-prog.el b/lisp/calc/calc-prog.el
index 58d2b5c..57af0d2 100644
--- a/lisp/calc/calc-prog.el
+++ b/lisp/calc/calc-prog.el
@@ -597,9 +597,9 @@
         ",")
        ((equal name "#")
         (search-backward "#")
-        (error "Token ‘#’ is reserved"))
+        (error "Token `#' is reserved"))
        ((and unquoted (string-match "#" name))
-        (error "Tokens containing ‘#’ must be quoted"))
+        (error "Tokens containing `#' must be quoted"))
        ((not (string-match "[^ ]" name))
         (search-backward "\"" nil t)
         (error "Blank tokens are not allowed"))
@@ -610,7 +610,7 @@
        (quoted nil))
     (while (progn
             (skip-chars-forward "\n\t ")
-            (if (eobp) (error "Expected ‘%s’" eterm))
+            (if (eobp) (error "Expected `%s'" eterm))
             (not (looking-at term)))
       (cond ((looking-at "%%")
             (end-of-line))
@@ -618,7 +618,7 @@
             (forward-char 2)
             (let ((p (calc-read-parse-table-part "}" "}")))
               (or (looking-at "[+*?]")
-                  (error "Expected ‘+’, ‘*’, or ‘?’"))
+                  (error "Expected `+', `*', or `?'"))
               (let ((sym (intern (buffer-substring (point) (1+ (point))))))
                 (forward-char 1)
                 (looking-at "[^\n\t ]*")
@@ -650,7 +650,7 @@
                                              (match-end 1)))))))
             (goto-char (match-end 0)))
            ((looking-at ":=[\n\t ]")
-            (error "Misplaced ‘:=’"))
+            (error "Misplaced `:='"))
            (t
             (looking-at "[^\n\t ]*")
             (let ((end (match-end 0)))
@@ -673,7 +673,7 @@
   (or last-kbd-macro
       (error "No keyboard macro defined"))
   (setq calc-invocation-macro last-kbd-macro)
-  (message "Use ‘C-x * Z’ to invoke this macro"))
+  (message "Use `C-x * Z' to invoke this macro"))
 
 (defun calc-user-define-edit ()
   (interactive)  ; but no calc-wrapper!
@@ -1899,7 +1899,7 @@ Redefine the corresponding command."
                          `((and
                             (,chk ,var)
                             (math-reject-arg ,var ',qual)))))
-             (error "Unknown qualifier ‘%s’" qual-name))))))))
+             (error "Unknown qualifier `%s'" qual-name))))))))
 
 (defun math-do-arg-list-check (args is-opt is-rest)
   (cond ((null args) nil)
diff --git a/lisp/calc/calc-store.el b/lisp/calc/calc-store.el
index 4cf5b8c..3d8c865 100644
--- a/lisp/calc/calc-store.el
+++ b/lisp/calc/calc-store.el
@@ -443,7 +443,7 @@
         (calc-edit-mode (list 'calc-finish-stack-edit (list 'quote var))
                         t
                         (format-message
-                          "Editing variable ‘%s’" (calc-var-name var)))
+                          "Editing variable `%s'" (calc-var-name var)))
         (and value
              (insert (math-format-nice-expr value (frame-width)) "\n")))))
   (calc-show-edit-buffer))
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index d56c0b2..4373e52 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -1625,10 +1625,10 @@ If COMP or STD is non-nil, put that in the units table 
instead."
              (format-message
               (concat
                "(**) When in TeX or LaTeX display mode, the TeX specific 
unit\n"
-               "names will not use the ‘tex’ prefix; the unit name for a\n"
-               "TeX point will be ‘pt’ instead of ‘texpt’, for example.\n"
+               "names will not use the `tex' prefix; the unit name for a\n"
+               "TeX point will be `pt' instead of `texpt', for example.\n"
                "To avoid conflicts, the unit names for pint and parsec will\n"
-               "be ‘pint’ and ‘parsec’ instead of ‘pt’ and ‘pc’."))))
+               "be `pint' and `parsec' instead of `pt' and `pc'."))))
          (view-mode)
          (message "Formatting units table...done"))
        (setq math-units-table-buffer-valid t)
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index c7a3e716..cd15770 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -1618,13 +1618,13 @@ of two matrices is a matrix."
            (if (not (or (equal math-expr-data math-rb-close)
                         (equal math-expr-data ")")
                         (eq math-exp-token 'end)))
-               (throw 'syntax "Expected ‘]’")))
+               (throw 'syntax "Expected `]'")))
        (if (equal math-expr-data ";")
            (let ((math-exp-keep-spaces space-sep))
              (setq vals (cons 'vec (math-read-matrix (list vals))))))
        (if (not (or (equal math-expr-data math-rb-close)
                     (eq math-exp-token 'end)))
-           (throw 'syntax "Expected ‘]’")))
+           (throw 'syntax "Expected `]'")))
       (or (eq math-exp-token 'end)
          (math-read-token))
       vals)))
diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el
index cce0470..5694a4e 100644
--- a/lisp/calc/calc-yank.el
+++ b/lisp/calc/calc-yank.el
@@ -603,9 +603,9 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
     (insert (propertize
              (concat
               (or title title "Calc Edit Mode. ")
-              (format-message "Press ‘C-c C-c’")
+              (format-message "Press `C-c C-c'")
               (if allow-ret "" " or RET")
-              (format-message " to finish, ‘C-x k RET’ to cancel.\n\n"))
+              (format-message " to finish, `C-x k RET' to cancel.\n\n"))
              'font-lock-face 'italic 'read-only t 'rear-nonsticky t 
'front-sticky t))
     (make-local-variable 'calc-edit-top)
     (setq calc-edit-top (point))))
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index ea20986..b4b0ad8 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -989,11 +989,11 @@ Used by `calc-user-invocation'.")
 (defvar calc-last-kill nil
   "The last number killed in calc-mode.")
 (defvar calc-dollar-values nil
-  "Values to be used for ‘$’.")
+  "Values to be used for `$'.")
 (defvar calc-dollar-used nil
-  "The highest order of ‘$’ that occurred.")
+  "The highest order of `$' that occurred.")
 (defvar calc-hashes-used nil
-  "The highest order of ‘#’ that occurred.")
+  "The highest order of `#' that occurred.")
 (defvar calc-quick-prev-results nil
   "Previous results from Quick Calc.")
 (defvar calc-said-hello nil
@@ -1474,7 +1474,7 @@ commands given here will actually operate on the 
*Calculator* stack."
          (and calc-display-trail
               (= (window-width) (frame-width))
               (calc-trail-display 1 t)))
-       (message "Welcome to the GNU Emacs Calculator!  Press ‘?’ or ‘h’ for 
help, ‘q’ to quit")
+       (message "Welcome to the GNU Emacs Calculator!  Press `?' or `h' for 
help, `q' to quit")
        (run-hooks 'calc-start-hook)
        (and (windowp full-display)
             (window-point full-display)
@@ -1622,7 +1622,7 @@ See calc-keypad for details."
                    (stringp (nth 1 err))
                    (string-match "max-specpdl-size\\|max-lisp-eval-depth"
                                  (nth 1 err)))
-              (error "Computation got stuck or ran too long.  Type ‘M’ to 
increase the limit")
+              (error "Computation got stuck or ran too long.  Type `M' to 
increase the limit")
             (setq calc-aborted-prefix nil)
             (signal (car err) (cdr err)))))
       (when calc-aborted-prefix
@@ -3856,7 +3856,7 @@ Also looks for the equivalent TeX words, \\gets and 
\\evalto."
 (defun calc-user-invocation ()
   (interactive)
   (unless calc-invocation-macro
-    (error "Use ‘Z I’ inside Calc to define a ‘C-x * Z’ keyboard macro"))
+    (error "Use `Z I' inside Calc to define a `C-x * Z' keyboard macro"))
   (execute-kbd-macro calc-invocation-macro nil))
 
 ;;; User-programmability.
diff --git a/lisp/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/diary-lib.el b/lisp/calendar/diary-lib.el
index be542d6..a1370bb 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -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
@@ -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/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/pmake.el b/lisp/cedet/ede/pmake.el
index 1318fde..b494e27 100644
--- a/lisp/cedet/ede/pmake.el
+++ b/lisp/cedet/ede/pmake.el
@@ -599,7 +599,7 @@ Argument THIS is the target that should insert stuff."
            "It needs to be regenerated by EDE.\n"
            "address@hidden If you have not modified Project.ede, you can"
            (format-message
-             " use ‘touch’ to update the Makefile time stamp.\n")
+             " use `touch' to update the Makefile time stamp.\n")
            "address@hidden"
            "\n\n# End of Makefile\n")))
 
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 3192684..64c1f08 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -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/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/java.el b/lisp/cedet/semantic/java.el
index fc02d03..829eafa 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -369,7 +369,7 @@ That is @NAME."
 
 (defsubst semantic-java-doc-tag-name (tag)
   "Return name of the doc TAG symbol.
-That is TAG `symbol-name' without the leading address@hidden"
+That is TAG `symbol-name' without the leading `@'."
   (substring (symbol-name tag) 1))
 
 (defun semantic-java-doc-keyword-before-p (k1 k2)
diff --git a/lisp/cedet/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/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 f81b084..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
@@ -734,7 +734,7 @@ relevant to POS."
                 (when face
                   (insert (propertize " " 'display '(space :align-to 5))
                           "face: ")
-                  (insert (format-message "‘%s’\n" face))))))
+                  (insert (format-message "`%s'\n" face))))))
 
           (when composition
             (insert "\nComposed")
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index b580a08..1b69091 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -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 37d69e9..757190b 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -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")))))))
 
diff --git a/lisp/electric.el b/lisp/electric.el
index bef5bb9..4f24008 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -434,7 +434,7 @@ 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 '(?\' ?\`)))
@@ -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 9edb8d7..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))
@@ -2982,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"
@@ -2996,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)
@@ -3041,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))))
@@ -3129,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)))
@@ -3168,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))))
 
@@ -3184,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))))
 
@@ -3365,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.
@@ -3733,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)))))))
@@ -4107,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))))
 
@@ -4170,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
@@ -4189,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))
@@ -4222,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)))
@@ -4230,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))
@@ -4272,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))
@@ -4312,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))
@@ -4323,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")
@@ -4332,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
@@ -4355,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))
 
@@ -4363,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)
@@ -4435,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)
@@ -4567,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)
@@ -4680,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 30581e3..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)))
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/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 c47f7f9..a2f5f8a 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -547,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...
@@ -567,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
 
@@ -736,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 d6c27be..bf28f89 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
@@ -942,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
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/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 7eebb5e..2cd34e1 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -95,7 +95,7 @@ Each element has the form (WHERE BYTECODE STACK) where:
                (propertize (format "%s advice: " where)
                            'face 'warning)
                (let ((fun (advice--car flist)))
-                 (if (symbolp fun) (format-message "‘%S’" fun)
+                 (if (symbolp fun) (format-message "`%S'" fun)
                    (let* ((name (cdr (assq 'name (advice--props flist))))
                           (doc (documentation fun t))
                           (usage (help-split-fundoc doc function)))
@@ -176,7 +176,7 @@ WHERE is a symbol to select an entry in 
`advice--where-alist'."
           (advice--make-1 (aref main 1) (aref main 3)
                           (advice--car main) rest (advice--props main)))
       (let ((desc (assq where advice--where-alist)))
-        (unless desc (error "Unknown add-function location ‘%S’" where))
+        (unless desc (error "Unknown add-function location `%S'" where))
         (advice--make-1 (nth 1 desc) (nth 2 desc)
                         function main props)))))
 
@@ -461,7 +461,7 @@ otherwise it is named address@hidden'.
          (advice (cond ((null name) `(lambda ,lambda-list ,@body))
                        ((or (stringp name) (symbolp name))
                         (intern (format "address@hidden" symbol name)))
-                       (t (error "Unrecognized name spec ‘%S’" name)))))
+                       (t (error "Unrecognized name spec `%S'" name)))))
     `(prog1 ,@(and (symbolp advice) `((defun ,advice ,lambda-list ,@body)))
        (advice-add ',symbol ,where #',advice ,@(and props `(',props))))))
 
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 608bf73..81d0b83 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -296,7 +296,7 @@ destination, prompt for one."
             ((string-match "\\.tar\\'" file)
              (tar-mode) (package-tar-file-info))
             ((string-match "\\.el\\'" file) (package-buffer-info))
-            (t (error "Unrecognized extension ‘%s’"
+            (t (error "Unrecognized extension `%s'"
                       (file-name-extension file))))))
       (package-upload-buffer-internal pkg-desc (file-name-extension file)))))
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index f6583bb..b0d2ff9 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -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.
@@ -672,7 +672,7 @@ correspond to previously loaded files (those returned by
   (let* ((name (package-desc-name pkg-desc))
          (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)))
     (let* ((loaded-files-list (when reload
                                 (package--list-loaded-files pkg-dir))))
@@ -767,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)))))))
@@ -1484,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.
@@ -1514,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
@@ -1583,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
@@ -1612,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)
@@ -1785,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)
@@ -1926,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.
@@ -2001,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
@@ -2066,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
@@ -2087,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)
@@ -2116,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
@@ -2224,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)
@@ -2234,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)."))
@@ -2385,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)
@@ -2393,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)
@@ -2912,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)))))
 
@@ -3097,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)
@@ -3153,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))))))
 
@@ -3284,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 c7f0784..ea4f38a 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -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/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/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-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-button.el b/lisp/erc/erc-button.el
index 6139e93..0e4c709 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -512,7 +512,7 @@ Examples:
 (defun erc-nick-popup (nick)
   (let* ((completion-ignore-case t)
          (action (completing-read (format-message
-                                   "What action to take on ‘%s’? " nick)
+                                   "What action to take on `%s'? " nick)
                                   erc-nick-popup-alist))
          (code (cdr (assoc action erc-nick-popup-alist))))
     (when code
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index bb6e311..0a9932d 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -166,7 +166,7 @@ All values of the list must be uppercase strings.")
   "Return the first matching entry in `erc-dcc-list' which satisfies the
 constraints given as a plist in ARGS. Returns nil on no match.
 
-The property :nick is treated specially, if it contains a ‘!’ character,
+The property :nick is treated specially, if it contains a `!' character,
 it is treated as a address@hidden string, and compared with the :nick property
 value of the individual elements using string-equal. Otherwise it is
 compared with `erc-nick-equal-p' which is IRC case-insensitive."
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index b051645..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
@@ -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 9b67175..102795f 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -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-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/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 887d138..464c7c3 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -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 8e8c6eb..cec95bf 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1052,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/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/help-fns.el b/lisp/help-fns.el
index b247c5b..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,17 +353,17 @@ 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"))))
@@ -422,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.
@@ -444,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"))))
 
@@ -480,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")))))
@@ -549,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")
@@ -584,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 ".")
@@ -734,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)))
@@ -750,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))
@@ -876,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
@@ -885,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))
@@ -919,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"))))
 
@@ -942,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)
@@ -950,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 d9b0e18..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,7 +1352,7 @@ 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."
+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.
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index 24160a6..74cdfe1 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -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 028c991..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))
@@ -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/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/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/mail/feedmail.el b/lisp/mail/feedmail.el
index 14c45d1..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)
@@ -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/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/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-e.el b/lisp/mh-e/mh-e.el
index c89e71f..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"))
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.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 fdc5aee..b7c19a9 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -1757,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))))
diff --git a/lisp/msb.el b/lisp/msb.el
index b717dcc..0351bda 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -746,7 +746,7 @@ to the buffer-list variable in FUNCTION-INFO."
       (error (unless msb--error
               (setq msb--error
                     (format-message
-                     "In msb-menu-cond, error for buffer ‘%s’."
+                     "In msb-menu-cond, error for buffer `%s'."
                      (buffer-name buffer)))
               (error "%s" msb--error))))))
 
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 38b1604..bb83514 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -4626,7 +4626,7 @@ NEWNAME should be the name to give the new compressed or 
uncompressed file.")
            (format  "%s %s \"%s\""     ; remsh -l USER does not work well
                                        ; on a hp-ux machine I tried
                     remote-shell-program host command))
-      (ange-ftp-message "Remote command ‘%s’ ..." command)
+      (ange-ftp-message "Remote command `%s' ..." command)
       ;; Cannot call ange-ftp-real-dired-run-shell-command here as it
       ;; would prepend "cd default-directory" --- which bombs because
       ;; default-directory is in ange-ftp syntax for remote file names.
@@ -5978,7 +5978,7 @@ Other orders of $ and _ seem to all work just fine.")
 
 (defcustom ange-ftp-bs2000-special-prefix
   "X"
-  "Prefix used for filenames starting with ‘#’ or address@hidden"
+  "Prefix used for filenames starting with `#' or `@'."
   :group 'ange-ftp
   :type 'string)
 
diff --git a/lisp/net/imap.el b/lisp/net/imap.el
index cc53e04..b559ff6 100644
--- a/lisp/net/imap.el
+++ b/lisp/net/imap.el
@@ -851,14 +851,14 @@ t if it successfully authenticates, nil otherwise."
        (setq user (or imap-username
                       (read-from-minibuffer
                        (format-message
-                        "imap: username for %s (using stream ‘%s’): "
+                        "imap: username for %s (using stream `%s'): "
                         imap-server imap-stream)
                        (or user imap-default-user))))
        (setq passwd
              (or imap-password
                  (read-passwd
                   (format-message
-                   "imap: password for address@hidden (using authenticator 
‘%s’): "
+                   "imap: password for address@hidden (using authenticator 
`%s'): "
                    user imap-server imap-auth))))
        (when (and user passwd)
          (if (funcall loginfunc user passwd)
diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el
index 8a9236c..a73b4df 100644
--- a/lisp/net/mairix.el
+++ b/lisp/net/mairix.el
@@ -398,7 +398,7 @@ Overwrite existing entry? ")
                                (concat "\n\n" (make-string 65 ?=)
 "\nYou can now customize your saved Mairix searches by modifying\n\
 the variable mairix-saved-searches. Don't forget to save your\nchanges \
-in your .emacs by pressing ‘Save for Future Sessions’.\n"
+in your .emacs by pressing `Save for Future Sessions'.\n"
 (make-string 65 ?=) "\n")))
 
 (autoload 'mail-strip-quoted-names "mail-utils")
@@ -668,7 +668,7 @@ Fill in VALUES if based on an article."
             "    ^substring=  to match the substring at the beginning of a 
word.\n"))
     (widget-insert
      (format-message
-      "Whitespace will be converted to ‘,’ (i.e. AND).  Use ‘/’ for OR.\n\n"))
+      "Whitespace will be converted to `,' (i.e. AND).  Use `/' for OR.\n\n"))
     (setq mairix-widgets (mairix-widget-build-editable-fields values))
     (when (member 'flags mairix-widget-other)
       (widget-insert "\nFlags:\n      Seen:     ")
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 9277b09..6c80e62 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -848,8 +848,8 @@ Argument BUFFER is the buffer of the retrieval process."
                newsticker--error-headline
                (format-message
                 (concat "%s: Newsticker could not retrieve news from %s.\n"
-                        "Return status: ‘%s’\n"
-                        "Command was ‘%s’")
+                        "Return status: `%s'\n"
+                        "Command was `%s'")
                 (format-time-string "%A, %H:%M")
                 feed-name event command)
                ""
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el
index ef8507e..4eef580 100644
--- a/lisp/net/newst-treeview.el
+++ b/lisp/net/newst-treeview.el
@@ -1269,7 +1269,7 @@ Note: does not update the layout."
                    (file-exists-p newsticker-groups-filename)
                    (y-or-n-p
                     (format-message
-                     (concat "Obsolete variable ‘newsticker-groups-filename’ "
+                     (concat "Obsolete variable `newsticker-groups-filename' "
                              "points to existing file \"%s\".\n"
                              "Read it? ")
                      newsticker-groups-filename))
@@ -1281,7 +1281,7 @@ Note: does not update the layout."
          (file-exists-p newsticker-groups-filename)
         (y-or-n-p (format-message
                     (concat "Delete the file \"%s\",\nto which the obsolete "
-                            "variable ‘newsticker-groups-filename’ points ? ")
+                            "variable `newsticker-groups-filename' points ? ")
                     newsticker-groups-filename))
         (delete-file newsticker-groups-filename))
     (when buf
diff --git a/lisp/net/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/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/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/tpu-edt.el b/lisp/obsolete/tpu-edt.el
index adf6122..d16cd27 100644
--- a/lisp/obsolete/tpu-edt.el
+++ b/lisp/obsolete/tpu-edt.el
@@ -873,7 +873,7 @@ With argument, fill and justify."
   (set-frame-width (selected-frame) width))
 
 (defun tpu-toggle-newline-and-indent nil
-  "Toggle between ‘newline and indent’ and ‘simple newline’."
+  "Toggle between `newline-and-indent' and simple `newline'."
   (interactive)
   (cond (tpu-newline-and-indent-p
          (setq tpu-newline-and-indent-string "")
@@ -1313,7 +1313,7 @@ kill modified buffers without asking."
                (if tpu-regexp-p "en" "dis"))))
 
 (defun tpu-regexp-prompt (prompt)
-  "Read a string, adding ‘RE ’ to the prompt if tpu-regexp-p is set."
+  "Read a string, adding `RE ' to the prompt if tpu-regexp-p is set."
   (let ((re-prompt (concat (if tpu-regexp-p "RE ") prompt)))
     (read-from-minibuffer re-prompt nil nil nil 'tpu-regexp-prompt-hist)))
 
diff --git a/lisp/obsolete/vi.el b/lisp/obsolete/vi.el
index 2375eb5..081b229 100644
--- a/lisp/obsolete/vi.el
+++ b/lisp/obsolete/vi.el
@@ -832,7 +832,7 @@ Possible prefix-arg cases are nil, INTEGER, (nil . CHAR) or 
(INTEGER . CHAR)."
 
 (defun vi-goto-mark (mark-char &optional line-flag)
   "Go to marked position or line (if line-flag is given).
-Goto mark address@hidden means jump into and pop the top mark on the mark 
ring."
+Goto mark `@' means jump into and pop the top mark on the mark ring."
   (cond ((char-equal mark-char last-command-event)     ; `` or ''
         (exchange-point-and-mark) (if line-flag (back-to-indentation)))
        ((char-equal mark-char ?@)      ; jump and pop mark
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index ffc7df4..799e58b 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -1677,7 +1677,7 @@ If the point is not on a source block then return nil."
     (if point
         ;; taken from `org-open-at-point'
         (progn (org-mark-ring-push) (goto-char point) (org-show-context))
-      (message "source-code block ‘%s’ not found in this buffer" name))))
+      (message "source-code block `%s' not found in this buffer" name))))
 
 (defun org-babel-find-named-block (name)
   "Find a named source-code block.
@@ -1712,7 +1712,7 @@ org-babel-named-src-block-regexp."
     (if point
         ;; taken from `org-open-at-point'
         (progn (goto-char point) (org-show-context))
-      (message "result ‘%s’ not found in this buffer" name))))
+      (message "result `%s' not found in this buffer" name))))
 
 (defun org-babel-find-named-result (name &optional point)
   "Find a named result.
@@ -2207,7 +2207,7 @@ file's directory then expand relative links."
   "Make true to capitalize begin/end example markers inserted by code blocks.")
 
 (defun org-babel-examplize-region (beg end &optional results-switches)
-  "Comment out region using the inline ‘==’ or ‘: ’ org example quote."
+  "Comment out region using the inline `==' or `: ' org example quote."
   (interactive "*r")
   (let ((chars-between (lambda (b e)
                         (not (string-match "^[\\s]*$" (buffer-substring b 
e)))))
diff --git a/lisp/org/ob-fortran.el b/lisp/org/ob-fortran.el
index 0e6eb4f..aab7859 100644
--- a/lisp/org/ob-fortran.el
+++ b/lisp/org/ob-fortran.el
@@ -108,7 +108,7 @@ it's header arguments."
   "Wrap body in a \"program ... end program\" block if none exists."
   (if (string-match "^[ \t]*program[ \t]*.*" (capitalize body))
       (let ((vars (mapcar #'cdr (org-babel-get-header params :var))))
-       (if vars (error "Cannot use :vars if ‘program’ statement is present"))
+       (if vars (error "Cannot use :vars if `program' statement is present"))
        body)
     (format "program main\n%s\nend program main\n" body)))
 
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index 4abe7af..eb74f93 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -64,7 +64,7 @@ This will typically be either 'python or 'python-mode."
   :type 'string)
 
 (defcustom org-babel-python-None-to 'hline
-  "Replace ‘None’ in python tables with this before returning."
+  "Replace `None' in python tables with this before returning."
   :group 'org-babel
   :version "24.4"
   :package-version '(Org . "8.0")
diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el
index 472d3e6..3e79592 100644
--- a/lisp/org/ob-ref.el
+++ b/lisp/org/ob-ref.el
@@ -176,7 +176,7 @@ the variable."
            ;;       buffer (marker-buffer id-loc)
            ;;       loc (marker-position id-loc))
            ;; (move-marker id-loc nil)
-           (error "Reference ‘%s’ not found in this buffer" ref))
+           (error "Reference `%s' not found in this buffer" ref))
          (cond
           (lob-info (setq type 'lob))
           (id (setq type 'id))
diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el
index 419b9a6..7d8e23f 100644
--- a/lisp/org/ob-scheme.el
+++ b/lisp/org/ob-scheme.el
@@ -109,7 +109,7 @@ For a named session, the buffer name will be the session 
name.
 
 If the session is unnamed (nil), generate a name.
 
-If the session is ‘none’, use nil for the session name, and
+If the session is `none', use nil for the session name, and
 org-babel-scheme-execute-with-geiser will use a temporary session."
   (let ((result
         (cond ((not name)
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 9a64089..ae5a252 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -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"))
@@ -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
@@ -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
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-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-table.el b/lisp/org/org-table.el
index f05ab7a..478ad93 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -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 587d765..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)))
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 5d8e48e..4e3e0ef 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -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/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/etags.el b/lisp/progmodes/etags.el
index 83ee2a4..0d5fc3a 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -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/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/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index ce2f830..50ebadf 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -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)
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 9930d50..b524b76 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -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
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/python.el b/lisp/progmodes/python.el
index a952064..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
@@ -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 34ac599..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
@@ -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/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/startup.el b/lisp/startup.el
index 8778c61..9caf485 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -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
@@ -916,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
@@ -959,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)))
@@ -978,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!
@@ -1189,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) ": " "")
@@ -1330,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
@@ -2280,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)))))
@@ -2350,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")
@@ -2385,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.
@@ -2406,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
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/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/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/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/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/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/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 7d6a2b0..ccd3405 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -703,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.  */)
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"



reply via email to

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