]> code.delx.au - gnu-emacs-elpa/blob - README.md
Minutia.
[gnu-emacs-elpa] / README.md
1 # Context Coloring [![Build Status](https://travis-ci.org/jacksonrayhamilton/context-coloring.png?branch=master)](https://travis-ci.org/jacksonrayhamilton/context-coloring) [![Coverage Status](https://coveralls.io/repos/jacksonrayhamilton/context-coloring/badge.svg?branch=master)](https://coveralls.io/r/jacksonrayhamilton/context-coloring?branch=master)
2
3 <p align="center">
4 <img alt="Screenshot of JavaScript code highlighted by context." src="screenshot.png" title="Screenshot">
5 </p>
6
7 Highlights code by scope. Top-level scopes are one color, second-level scopes
8 are another color, and so on. Variables retain the color of the scope in which
9 they are defined. A variable defined in an outer scope referenced by an inner
10 scope is colored the same as the outer scope.
11
12 By default, comments and strings are still highlighted syntactically.
13
14 ## Features
15
16 - JavaScript support:
17 - Script, function and block scopes (and even `catch` block scopes).
18 - Emacs Lisp support:
19 - `defun`, `lambda`, `let`, `let*`, `cond`, `condition-case`, `defadvice`,
20 `dolist`, `quote`, `backquote` and backquote splicing.
21 - Works in `eval-expression` too.
22
23 ## Installation
24
25 Requires Emacs 24.3+. JavaScript language support requires
26 [js2-mode](https://github.com/mooz/js2-mode).
27
28 To install, run the command `M-x package-install RET context-coloring RET`, and
29 then add the following to your init file:
30
31 ```lisp
32 ;; JavaScript:
33 (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
34 (add-hook 'js2-mode-hook #'context-coloring-mode)
35
36 ;; Emacs Lisp:
37 (add-hook 'emacs-lisp-mode-hook #'context-coloring-mode)
38
39 ;; eval-expression:
40 (add-hook 'minibuffer-setup-hook #'context-coloring-mode)
41 ```
42
43 ## Color Schemes
44
45 There is *no default color scheme*. Define the colors according to your liking
46 by setting the appropriate custom faces and the maximum face:
47
48 ```lisp
49 (custom-theme-set-faces
50 'zenburn
51 '(context-coloring-level-0-face ((t :foreground "#dcdccc")))
52 '(context-coloring-level-1-face ((t :foreground "#93e0e3")))
53 '(context-coloring-level-2-face ((t :foreground "#bfebbf")))
54 '(context-coloring-level-3-face ((t :foreground "#f0dfaf")))
55 '(context-coloring-level-4-face ((t :foreground "#dfaf8f")))
56 '(context-coloring-level-5-face ((t :foreground "#cc9393")))
57 '(context-coloring-level-6-face ((t :foreground "#dc8cc3")))
58 '(context-coloring-level-7-face ((t :foreground "#94bff3")))
59 '(context-coloring-level-8-face ((t :foreground "#9fc59f")))
60 '(context-coloring-level-9-face ((t :foreground "#d0bf8f")))
61 '(context-coloring-level-10-face ((t :foreground "#dca3a3"))))
62 (setq context-coloring-maximum-face 10)
63 ```
64
65 [See here](https://gist.github.com/jacksonrayhamilton/6b89ca3b85182c490816) for
66 some color schemes for popular custom themes.
67
68 ## Options
69
70 - `context-coloring-syntactic-comments` (default: `t`): If non-nil, also color
71 comments using `font-lock`.
72 - `context-coloring-syntactic-strings` (default: `t`): If non-nil, also color
73 strings using `font-lock`.
74 - `context-coloring-javascript-block-scopes` (default: `nil`): If non-nil, also
75 color block scopes in the scope hierarchy in JavaScript.