summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/lispref/display.texi8
-rw-r--r--doc/lispref/help.texi4
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/startup.el24
4 files changed, 29 insertions, 12 deletions
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 9d82edc9a98..14e2cd363a4 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -6531,8 +6531,12 @@ no buffer display table.
The value of this variable is the standard display table, which is
used when Emacs is displaying a buffer in a window with neither a
window display table nor a buffer display table defined, or when Emacs
-is outputting text to the standard output or error streams. Its
-default is @code{nil}.
+is outputting text to the standard output or error streams. Although its
+default is typically @code{nil}, in an interactive session if the
+locale cannot display curved quotes, or if the initial value of
+@code{text-quoting-style} specifies a preference for ASCII, its
+default maps curved quotes to ASCII approximations. @xref{Keys in
+Documentation}.
@end defvar
The @file{disp-table} library defines several functions for changing
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 44c09a2085a..89339ffe575 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -345,7 +345,9 @@ quotes. If the variable's value is @code{curve}, the style is
apostrophes. If the value is @code{grave}, the style is @t{`like
this'} with grave accent and apostrophe. The default value @code{nil}
acts like @code{curve} if curved single quotes are displayable, and
-like @code{grave} otherwise.
+like @code{grave} otherwise. To use the traditional @code{grave}
+style, put the line @code{(setq text-quoting-style 'grave)} into your
+@file{~/.emacs} file.
@end defvar
@defun substitute-command-keys string
diff --git a/etc/NEWS b/etc/NEWS
index c664e026d47..c2828c9db51 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1113,8 +1113,9 @@ integers.
** New function `set-binary-mode' allows to switch a standard stream
of the Emacs process to binary I/O mode.
-** In locales that cannot display curved quotes, ASCII approximations
-are installed in standard-display-table.
+** ASCII approximations to curved quotes are put in standard-display-table
+if the locale cannot display curved quotes, or if text-quoting-style
+initially specifies a preference for ASCII.
** Standard output and error streams now transliterate characters via
standard-display-table, and encode output using locale-coding-system.
diff --git a/lisp/startup.el b/lisp/startup.el
index b5e258f56c0..c152e0122ae 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -804,13 +804,18 @@ to prepare for opening the first frame (e.g. open a connection to an X server)."
(defvar server-process)
(defun startup--setup-quote-display ()
- "If curved quotes don't work, display ASCII approximations."
- (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?” . ?\")))
- (when (not (char-displayable-p (car char-repl)))
- (unless standard-display-table
- (setq standard-display-table (make-display-table)))
- (aset standard-display-table (car char-repl)
- (vector (make-glyph-code (cdr char-repl) 'shadow))))))
+ "Display ASCII approximations on user request or if curved quotes don't work."
+ (when (memq text-quoting-style '(nil grave straight))
+ (dolist (char-repl '((?‘ . ?\`) (?’ . ?\') (?“ . ?\") (?” . ?\")))
+ (let ((char (car char-repl))
+ (repl (cdr char-repl)))
+ (when (or text-quoting-style (not (char-displayable-p char)))
+ (when (and (eq repl ?\`) (eq text-quoting-style 'straight))
+ (setq repl ?\'))
+ (unless standard-display-table
+ (setq standard-display-table (make-display-table)))
+ (aset standard-display-table char
+ (vector (make-glyph-code repl 'shadow))))))))
(defun command-line ()
"A subroutine of `normal-top-level'.
@@ -1234,6 +1239,11 @@ the ‘--debug-init’ option to view a complete error backtrace."
;; unibyte (display table, terminal coding system &c).
(set-language-environment current-language-environment)))
+ ;; Setup quote display again, if the init file sets
+ ;; text-quoting-style to a non-nil value.
+ (when (and (not noninteractive) text-quoting-style)
+ (startup--setup-quote-display))
+
;; Do this here in case the init file sets mail-host-address.
(if (equal user-mail-address "")
(setq user-mail-address (or (getenv "EMAIL")