Function: startup--setup-quote-display
startup--setup-quote-display is a byte-compiled function defined in
startup.el.gz.
Signature
(startup--setup-quote-display &optional STYLE)
Documentation
If needed, display ASCII approximations to curved quotes.
Do this by modifying standard-display-table. Optional STYLE
specifies the desired quoting style, as in text-quoting-style(var)/text-quoting-style(fun).
If STYLE is nil, display appropriately for the terminal.
Source Code
;; Defined in /usr/src/emacs/lisp/startup.el.gz
(defun startup--setup-quote-display (&optional style)
"If needed, display ASCII approximations to curved quotes.
Do this by modifying `standard-display-table'. Optional STYLE
specifies the desired quoting style, as in `text-quoting-style'.
If STYLE is nil, display appropriately for the terminal."
(let ((repls (let ((style-repls (assq style '((grave . "`'\"\"")
(straight . "''\"\"")))))
(if style-repls (cdr style-repls) (make-vector 4 nil))))
glyph-count)
;; REPLS is a sequence of the four replacements for "‘’“”", respectively.
;; If STYLE is nil, infer REPLS from terminal characteristics.
(unless style
;; On a terminal that supports glyph codes,
;; GLYPH-COUNT[i] is the number of times that glyph code I
;; represents either an ASCII character or one of the 4
;; quote characters. This assumes glyph codes are valid
;; Elisp characters, which is a safe assumption in practice.
(when (integerp (internal-char-font nil (max-char)))
(setq glyph-count (make-char-table nil 0))
(dotimes (i 132)
(let ((glyph (internal-char-font
nil (if (< i 128) i (aref "‘’“”" (- i 128))))))
(when (<= 0 glyph)
(aset glyph-count glyph (1+ (aref glyph-count glyph)))))))
(dotimes (i 2)
(let ((lq (aref "‘“" i)) (rq (aref "’”" i))
(lr (aref "`\"" i)) (rr (aref "'\"" i))
(i2 (* i 2)))
(unless (if glyph-count
;; On a terminal that supports glyph codes, use
;; ASCII replacements unless both quotes are displayable.
;; If not using ASCII replacements, highlight
;; quotes unless they are both unique among the
;; 128 + 4 characters of concern.
(let ((lglyph (internal-char-font nil lq))
(rglyph (internal-char-font nil rq)))
(when (and (<= 0 lglyph) (<= 0 rglyph))
(setq lr lq rr rq)
(and (= 1 (aref glyph-count lglyph))
(= 1 (aref glyph-count rglyph)))))
;; On a terminal that does not support glyph codes, use
;; ASCII replacements unless both quotes are displayable.
(and (char-displayable-p lq)
(char-displayable-p rq)))
(aset repls i2 lr)
(aset repls (1+ i2) rr)))))
(dotimes (i 4)
(let ((char (aref "‘’“”" i))
(repl (aref repls i)))
(if repl
(aset (or standard-display-table
(setq standard-display-table (make-display-table)))
char (vector (make-glyph-code repl 'homoglyph)))
(when standard-display-table
(aset standard-display-table char nil)))))))