I copy and paste text between lots of different applications. Whitespace mode makes it easy to see all the non printing characters that different apps use to format their notes: Evernote, for example, has a habit of insert non breaking spaces in its notes. Unfortunately, Doom Emacs uses whitespace mode for tab indents only. In order to restore functionality, I had to read up on whitespace mode. Here are my notes, so you don't have to do the same. # Whitespace Whitespace uses two ways to visualize blanks: [Face](https://www.emacswiki.org/emacs/Face)s and [Display Tables](https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Tables.html). - Faces are used to highlight the background with a color. Whitespace uses font-lock to highlight blank characters. (FontLockMode, rather confusingly, is used for syntax highlighting.) - Display table changes the way a character is displayed. For example whitespace-mode uses $ by default to show end of lines. The `whitespace-style` variable selects which way blanks are visualized. ## Whitespace-style List containing various values. The first is `face` which enables visualisation using faces The following will highlight any part of lines > 80 characters ```lisp (setq whitespace-line-column 80) ;; limit line length (setq whitespace-style '(face lines-tail)) ``` ## Whitespace-display-mappings Specify an alist of mappings for displaying characters. Each element has the following form: (KIND CHAR VECTOR…) Where: KIND is the kind of character. It can be one of the following symbols: **tab-mark** for TAB character **space-mark** for SPACE or HARD SPACE character **newline-mark** for NEWLINE character CHAR is the character to be mapped. VECTOR is a vector of characters to be displayed in place of CHAR. The first display vector that can be displayed is used; if no display vector for a mapping can be displayed, then that character is displayed unmodified. The NEWLINE character is displayed using the face given by whitespace-newline variable. ```lisp (newline-mark ?\\n \[?\\$ ?\\n\]) ;; Standard emacs $ for EOL (newline-mark ?\\n \[182 ?\\n\]) ;; Unicode for Pilcrow sign ``` # Doom Emacs Config Doom Emacs uses Whitespace mode for tab indents only. The following restores functionality. (Solution adopted from [this post](https://github.com/doomemacs/doomemacs/issues/2673)) ```lisp (use-package! whitespace :config (setq whitespace-style '(face tabs tab-mark spaces space-mark trailing newline newline-mark) whitespace-display-mappings '( (space-mark ?\\ \[?\\u00B7\] \[?.\]) (space-mark ?\\xA0 \[?\\u00A4\] \[?\_\]) (newline-mark ?\\n \[182 ?\\n\]) (tab-mark ?\\t \[?\\u00BB ?\\t\] \[?\\\\ ?\\t\]))) (global-whitespace-mode +1)) ``` # Whitespace Commands - **M-x whitespace-mode** - **M-x global-whitespace-mode** - **M-x whitespace-newline-mode** - **M-x whitespace-toggle-options** ]- **M-x whitespace-report Very handy** # Related Posts - [[Emacs Characters]] - [[Emacs Characters 2]] - [[Emacs Characters 3]]