Function: whitespace-color-on
whitespace-color-on is a byte-compiled function defined in
whitespace.el.gz.
Signature
(whitespace-color-on)
Documentation
Turn on color visualization.
Source Code
;; Defined in /usr/src/emacs/lisp/whitespace.el.gz
(defun whitespace-color-on ()
"Turn on color visualization."
(when (whitespace-style-face-p)
;; save current point and refontify when necessary
(setq-local whitespace-point (point))
(setq whitespace-point--used
(let ((ol (make-overlay (point) (point) nil nil t)))
(delete-overlay ol) ol))
(setq-local whitespace-bob-marker (point-min-marker))
(setq-local whitespace-eob-marker (point-max-marker))
(whitespace--update-bob-eob)
(setq-local whitespace-buffer-changed nil)
(add-hook 'post-command-hook #'whitespace-post-command-hook nil t)
(add-hook 'before-change-functions #'whitespace-buffer-changed nil t)
(add-hook 'after-change-functions #'whitespace--update-bob-eob
;; The -1 ensures that it runs before any
;; `font-lock-mode' hook functions.
-1 t)
(add-hook 'clone-buffer-hook #'whitespace--clone nil t)
(add-hook 'clone-indirect-buffer-hook #'whitespace--clone nil t)
;; Add whitespace-mode color into font lock.
(setq
whitespace-font-lock-keywords
`(
(whitespace-point--flush-used)
,@(when (memq 'spaces whitespace-active-style)
;; Show SPACEs.
`((,whitespace-space-regexp 1 whitespace-space t)
;; Show HARD SPACEs.
(,whitespace-hspace-regexp 1 whitespace-hspace t)))
,@(when (memq 'tabs whitespace-active-style)
;; Show TABs.
`((,whitespace-tab-regexp 1 whitespace-tab t)))
,@(when (memq 'trailing whitespace-active-style)
;; Show trailing blanks.
`((,#'whitespace-trailing-regexp 1 whitespace-trailing t)))
,@(when (or (memq 'lines whitespace-active-style)
(memq 'lines-tail whitespace-active-style)
(memq 'lines-char whitespace-active-style))
;; Show "long" lines.
`((,#'whitespace-lines-regexp
,(cond
;; whole line
((memq 'lines whitespace-active-style) 0)
;; line tail
((memq 'lines-tail whitespace-active-style) 2)
;; first overflowing character
((memq 'lines-char whitespace-active-style) 3))
whitespace-line prepend)))
,@(when (or (memq 'space-before-tab whitespace-active-style)
(memq 'space-before-tab::tab whitespace-active-style)
(memq 'space-before-tab::space whitespace-active-style))
`((,whitespace-space-before-tab-regexp
,(cond
((memq 'space-before-tab whitespace-active-style)
;; Show SPACEs before TAB (indent-tabs-mode).
(if indent-tabs-mode 1 2))
((memq 'space-before-tab::tab whitespace-active-style)
1)
((memq 'space-before-tab::space whitespace-active-style)
2))
whitespace-space-before-tab t)))
,@(when (or (memq 'indentation whitespace-active-style)
(memq 'indentation::tab whitespace-active-style)
(memq 'indentation::space whitespace-active-style))
`((,#'whitespace--indentation-matcher
1 whitespace-indentation t)))
,@(when (memq 'big-indent whitespace-active-style)
;; Show big indentation.
`((,whitespace-big-indent-regexp 1 'whitespace-big-indent t)))
,@(when (memq 'empty whitespace-active-style)
;; Show empty lines at beginning of buffer.
`((,#'whitespace--empty-at-bob-matcher
0 whitespace-empty t)
;; Show empty lines at end of buffer.
(,#'whitespace--empty-at-eob-matcher
0 whitespace-empty t)))
,@(when (or (memq 'space-after-tab whitespace-active-style)
(memq 'space-after-tab::tab whitespace-active-style)
(memq 'space-after-tab::space whitespace-active-style))
`((,(cond
((memq 'space-after-tab whitespace-active-style)
;; Show SPACEs after TAB (indent-tabs-mode).
(whitespace-space-after-tab-regexp))
((memq 'space-after-tab::tab whitespace-active-style)
;; Show SPACEs after TAB (SPACEs).
(whitespace-space-after-tab-regexp 'tab))
((memq 'space-after-tab::space whitespace-active-style)
;; Show SPACEs after TAB (TABs).
(whitespace-space-after-tab-regexp 'space)))
1 whitespace-space-after-tab t)))
,@(when (memq 'missing-newline-at-eof whitespace-active-style)
;; Show missing newline.
`((".\\'" 0
;; Don't mark the end of the buffer if point is there --
;; it probably means that the user is typing something
;; at the end of the buffer.
(and (/= whitespace-point (point-max))
'whitespace-missing-newline-at-eof)
prepend)))))
(font-lock-add-keywords nil whitespace-font-lock-keywords 'append)
(font-lock-flush)))