]> code.delx.au - gnu-emacs-elpa/blob - README.md
Remove automatic theming.
[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 - Very fast for files under 1000 lines.
19 - Emacs Lisp support:
20 - `defun`, `lambda`, `let`, `let*`, `cond`, `condition-case`, `defadvice`,
21 `dolist`, `quote`, `backquote` and backquote splicing.
22 - Instantaneous lazy coloring, 8000 lines-per-second full coloring.
23 - Works in `eval-expression` too.
24
25 ## Installation
26
27 Requires Emacs 24.3+. JavaScript language support requires
28 [js2-mode](https://github.com/mooz/js2-mode).
29
30 `M-x package-install RET context-coloring RET` and add the following to your
31 init file:
32
33 ```lisp
34 ;; JavaScript:
35 (add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
36 (add-hook 'js2-mode-hook #'context-coloring-mode)
37
38 ;; Emacs Lisp:
39 (add-hook 'emacs-lisp-mode-hook #'context-coloring-mode)
40
41 ;; eval-expression:
42 (add-hook 'minibuffer-setup-hook #'context-coloring-mode)
43 ```
44
45 ## Color Schemes
46
47 There is *no default color scheme*. Define the colors according to your liking
48 by setting the appropriate custom faces and the maximum face:
49
50 ```lisp
51 (custom-theme-set-faces
52 'zenburn
53 '(context-coloring-level-0-face ((t :foreground "#dcdccc")))
54 '(context-coloring-level-1-face ((t :foreground "#93e0e3")))
55 '(context-coloring-level-2-face ((t :foreground "#bfebbf")))
56 '(context-coloring-level-3-face ((t :foreground "#f0dfaf")))
57 '(context-coloring-level-4-face ((t :foreground "#dfaf8f")))
58 '(context-coloring-level-5-face ((t :foreground "#cc9393")))
59 '(context-coloring-level-6-face ((t :foreground "#dc8cc3")))
60 '(context-coloring-level-7-face ((t :foreground "#94bff3")))
61 '(context-coloring-level-8-face ((t :foreground "#9fc59f")))
62 '(context-coloring-level-9-face ((t :foreground "#d0bf8f")))
63 '(context-coloring-level-10-face ((t :foreground "#dca3a3"))))
64 (setq context-coloring-maximum-face 10)
65 ```
66
67 [See here](https://gist.github.com/jacksonrayhamilton/6b89ca3b85182c490816) for
68 some color schemes for popular custom themes.
69
70 ## Options
71
72 - `context-coloring-syntactic-comments` (default: `t`): If non-nil, also color
73 comments using `font-lock`.
74 - `context-coloring-syntactic-strings` (default: `t`): If non-nil, also color
75 strings using `font-lock`.
76 - `context-coloring-default-delay` (default: `0.25`): Default delay between a
77 buffer update and colorization.
78 - `context-coloring-javascript-block-scopes` (default: `nil`): If non-nil, also
79 color block scopes in the scope hierarchy in JavaScript.