annotate contrib/hg-test-mode.el @ 25185:bf6b476f3b36

treemanifest: cache directory logs and manifests Since manifests instances are cached on the manifest log instance, we can cache directory manifests by caching the directory manifest logs. The directory manifest log cache is a plain dict, so it never expires; we assume that we can keep all the directories in memory. The cache is kept on the root manifestlog, so access to directory manifest logs now has to go through the root manifest log. The caching will soon not be only an optimization. When we start lazily loading directory manifests, we need to make sure we don't create multiple instances of the log objects. The caching takes care of that problem.
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 10 Apr 2015 23:12:33 -0700
parents 7fce964be27d
children b6a757de2fff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22081
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
1 ;; hg-test-mode.el - Major mode for editing Mercurial tests
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
2 ;;
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
3 ;; Copyright 2014 Matt Mackall <mpm@selenic.com>
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
4 ;; "I have no idea what I'm doing"
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
5 ;;
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
6 ;; This software may be used and distributed according to the terms of the
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
7 ;; GNU General Public License version 2 or any later version.
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
8 ;;
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
9 ;; To enable, add something like the following to your .emacs:
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
10 ;;
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
11 ;; (if (file-exists-p "~/hg/contrib/hg-test-mode.el")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
12 ;; (load "~/hg/contrib/hg-test-mode.el"))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
13
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
14 (defvar hg-test-mode-hook nil)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
15
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
16 (defvar hg-test-mode-map
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
17 (let ((map (make-keymap)))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
18 (define-key map "\C-j" 'newline-and-indent)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
19 map)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
20 "Keymap for hg test major mode")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
21
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
22 (add-to-list 'auto-mode-alist '("\\.t\\'" . hg-test-mode))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
23
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
24 (defconst hg-test-font-lock-keywords-1
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
25 (list
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
26 '("^ \\(\\$\\|>>>\\) " 1 font-lock-builtin-face)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
27 '("^ \\(>\\|\\.\\.\\.\\) " 1 font-lock-constant-face)
22125
7fce964be27d hg-test-mode: make exit code highlight work again
Matt Mackall <mpm@selenic.com>
parents: 22109
diff changeset
28 '("^ \\([[][0-9]+[]]\\)$" 1 font-lock-warning-face)
22109
feab93a24e81 hg-test-mode: don't highlight variables in output
Matt Mackall <mpm@selenic.com>
parents: 22092
diff changeset
29 '("^ \\(.*?\\)\\(\\( [(][-a-z]+[)]\\)*\\)$" 1 font-lock-string-face)
22092
6e5ff8e26af6 hg-test-mode: colorize HGFOO and TESTFOO environment variables
Matt Mackall <mpm@selenic.com>
parents: 22081
diff changeset
30 '("\\$?\\(HG\\|TEST\\)\\w+=?" . font-lock-variable-name-face)
22081
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
31 '("^ \\(.*?\\)\\(\\( [(][-a-z]+[)]\\)+\\)$" 2 font-lock-type-face)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
32 '("^#.*" . font-lock-preprocessor-face)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
33 '("^\\([^ ].*\\)$" 1 font-lock-comment-face)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
34 )
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
35 "Minimal highlighting expressions for hg-test mode")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
36
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
37 (defvar hg-test-font-lock-keywords hg-test-font-lock-keywords-1
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
38 "Default highlighting expressions for hg-test mode")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
39
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
40 (defvar hg-test-mode-syntax-table
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
41 (let ((st (make-syntax-table)))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
42 (modify-syntax-entry ?\" "w" st) ;; disable standard quoting
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
43 st)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
44 "Syntax table for hg-test mode")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
45
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
46 (defun hg-test-mode ()
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
47 (interactive)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
48 (kill-all-local-variables)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
49 (use-local-map hg-test-mode-map)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
50 (set-syntax-table hg-test-mode-syntax-table)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
51 (set (make-local-variable 'font-lock-defaults) '(hg-test-font-lock-keywords))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
52 (setq major-mode 'hg-test-mode)
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
53 (setq mode-name "hg-test")
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
54 (run-hooks 'hg-test-mode-hook))
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
55
ed426b011612 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
56 (provide 'hg-test-mode)