Function: whitespace-display-char-on
whitespace-display-char-on is a byte-compiled function defined in
whitespace.el.gz.
Signature
(whitespace-display-char-on)
Documentation
Turn on character display mapping.
Source Code
;; Defined in /usr/src/emacs/lisp/whitespace.el.gz
(defun whitespace-display-char-on ()
"Turn on character display mapping."
(when (and whitespace-display-mappings
(whitespace-style-mark-p))
(let (vecs vec)
;; Remember whether a buffer has a local display table.
(unless whitespace-display-table-was-local
(setq whitespace-display-table-was-local t)
(unless (or whitespace-mode global-whitespace-mode)
(setq whitespace-display-table
(copy-sequence buffer-display-table)))
;; Assure `buffer-display-table' is unique
;; when two or more windows are visible.
(setq buffer-display-table
(copy-sequence buffer-display-table)))
(unless buffer-display-table
(setq buffer-display-table (make-display-table)))
(dolist (entry whitespace-display-mappings)
;; check if it is to display this mark
(when (memq (car entry) whitespace-style)
;; Get a displayable mapping.
(setq vecs (cddr entry))
(while (and vecs
(not (whitespace-display-vector-p (car vecs))))
(setq vecs (cdr vecs)))
;; Display a valid mapping.
(when vecs
(setq vec (copy-sequence (car vecs)))
;; NEWLINE char
(when (and (eq (cadr entry) ?\n)
(memq 'newline whitespace-active-style))
;; Only insert face bits on NEWLINE char mapping to avoid
;; obstruction of other faces like TABs and (HARD) SPACEs
;; faces, font-lock faces, etc.
(dotimes (i (length vec))
(or (eq (aref vec i) ?\n)
(aset vec i
(make-glyph-code (aref vec i)
whitespace-newline)))))
;; Display mapping
(aset buffer-display-table (cadr entry) vec)))))))