Show More
@@ -0,0 +1,55 b'' | |||
|
1 | ;; hg-test-mode.el - Major mode for editing Mercurial tests | |
|
2 | ;; | |
|
3 | ;; Copyright 2014 Matt Mackall <mpm@selenic.com> | |
|
4 | ;; "I have no idea what I'm doing" | |
|
5 | ;; | |
|
6 | ;; This software may be used and distributed according to the terms of the | |
|
7 | ;; GNU General Public License version 2 or any later version. | |
|
8 | ;; | |
|
9 | ;; To enable, add something like the following to your .emacs: | |
|
10 | ;; | |
|
11 | ;; (if (file-exists-p "~/hg/contrib/hg-test-mode.el") | |
|
12 | ;; (load "~/hg/contrib/hg-test-mode.el")) | |
|
13 | ||
|
14 | (defvar hg-test-mode-hook nil) | |
|
15 | ||
|
16 | (defvar hg-test-mode-map | |
|
17 | (let ((map (make-keymap))) | |
|
18 | (define-key map "\C-j" 'newline-and-indent) | |
|
19 | map) | |
|
20 | "Keymap for hg test major mode") | |
|
21 | ||
|
22 | (add-to-list 'auto-mode-alist '("\\.t\\'" . hg-test-mode)) | |
|
23 | ||
|
24 | (defconst hg-test-font-lock-keywords-1 | |
|
25 | (list | |
|
26 | '("^ \\(\\$\\|>>>\\) " 1 font-lock-builtin-face) | |
|
27 | '("^ \\(>\\|\\.\\.\\.\\) " 1 font-lock-constant-face) | |
|
28 | '("^ \\([[][0-9]+[]]\\)$" 1 font-lock-warning-face) | |
|
29 | '("^ \\(.*?\\)\\(\\( [(][-a-z]+[)]\\)+\\)$" 2 font-lock-type-face) | |
|
30 | '("^ \\(.*?\\)\\(\\( [(][-a-z]+[)]\\)*\\)$" 1 font-lock-string-face) | |
|
31 | '("^#.*" . font-lock-preprocessor-face) | |
|
32 | '("^\\([^ ].*\\)$" 1 font-lock-comment-face) | |
|
33 | ) | |
|
34 | "Minimal highlighting expressions for hg-test mode") | |
|
35 | ||
|
36 | (defvar hg-test-font-lock-keywords hg-test-font-lock-keywords-1 | |
|
37 | "Default highlighting expressions for hg-test mode") | |
|
38 | ||
|
39 | (defvar hg-test-mode-syntax-table | |
|
40 | (let ((st (make-syntax-table))) | |
|
41 | (modify-syntax-entry ?\" "w" st) ;; disable standard quoting | |
|
42 | st) | |
|
43 | "Syntax table for hg-test mode") | |
|
44 | ||
|
45 | (defun hg-test-mode () | |
|
46 | (interactive) | |
|
47 | (kill-all-local-variables) | |
|
48 | (use-local-map hg-test-mode-map) | |
|
49 | (set-syntax-table hg-test-mode-syntax-table) | |
|
50 | (set (make-local-variable 'font-lock-defaults) '(hg-test-font-lock-keywords)) | |
|
51 | (setq major-mode 'hg-test-mode) | |
|
52 | (setq mode-name "hg-test") | |
|
53 | (run-hooks 'hg-test-mode-hook)) | |
|
54 | ||
|
55 | (provide 'hg-test-mode) |
General Comments 0
You need to be logged in to leave comments.
Login now