smalltalk-tng
view experiments/tng2.el @ 321:c4a0718c2d3c
Sketch of dependencies
| author | Tony Garnock-Jones <tonygarnockjones@gmail.com> |
|---|---|
| date | Sat Oct 08 15:36:03 2011 -0400 (7 months ago) |
| parents | |
| children |
line source
1 (defconst tng2-mode-file-extension-regexp "\\.tng2\\'")
2 (let ((cell (assoc tng2-mode-file-extension-regexp auto-mode-alist)))
3 (if cell
4 (rplacd cell 'tng2-mode)
5 (setq auto-mode-alist (cons `(,tng2-mode-file-extension-regexp . tng2-mode) auto-mode-alist))))
7 (defun tng2-mode ()
8 "Major mode for editing TNG2 programs (tonyg)."
9 (interactive)
10 (kill-all-local-variables)
11 (setq major-mode 'tng2-mode)
12 (setq mode-name "Smalltalk-TNG Experimental Syntax 2 Mode")
13 (set-syntax-table tng2-mode-syntax-table)
14 (make-local-variable 'font-lock-defaults)
15 (setq font-lock-defaults '(tng2-font-lock-keywords nil nil () ()))
16 (make-local-variable 'tab-stop-list)
17 (setq tab-stop-list (let ((x '()))
18 (dotimes (i 60) (push (* 2 (+ i 1)) x))
19 (reverse x)))
20 (font-lock-fontify-buffer))
22 (defconst tng2-font-lock-keywords
23 '(
24 ; ("\\<%%primitive\\.[0-9]+\\.[0-9]+" . font-lock-function-name-face)
25 ; ("\\<%%machine-code\\>" . font-lock-warning-face)
26 ; ("\\<define\\s-+\\(\\(\\w\\|\\s_\\)+\\)\\>" 1 font-lock-variable-name-face)
27 ("\\<\\([A-Z]\\w*\\)\\>" 0 font-lock-type-face)
28 ("\\<\\(\\(\\w\\|\\s_\\)+:\\)" 1 font-lock-function-name-face)
29 ("\\$" 0 font-lock-function-name-face)
30 ("!\\s-*\\(\\(\\w\\|\\s_\\)+\\)\\>" 1 font-lock-variable-name-face)
31 ("\\s-*\\(\\(\\w\\|\\s_\\)+\\)\\s-+:=" 1 font-lock-variable-name-face)
32 ("\\<\\(meta\\)\\>" 1 font-lock-keyword-face)
33 ))
35 (defvar tng2-mode-syntax-table nil
36 "Syntax table used while in TNG2 mode.")
38 (if tng2-mode-syntax-table
39 ()
40 (setq tng2-mode-syntax-table (make-syntax-table))
41 (modify-syntax-entry ?\' "\" " tng2-mode-syntax-table)
42 (modify-syntax-entry ?\" "! " tng2-mode-syntax-table)
43 (modify-syntax-entry ?? "_ " tng2-mode-syntax-table)
44 (modify-syntax-entry ?- "_ " tng2-mode-syntax-table)
45 (modify-syntax-entry ?: "_ " tng2-mode-syntax-table)
46 (modify-syntax-entry ?\( "()" tng2-mode-syntax-table)
47 (modify-syntax-entry ?\) ")(" tng2-mode-syntax-table)
48 (modify-syntax-entry ?\[ "(]" tng2-mode-syntax-table)
49 (modify-syntax-entry ?\] ")[" tng2-mode-syntax-table)
50 (modify-syntax-entry ?\{ "(}" tng2-mode-syntax-table)
51 (modify-syntax-entry ?\} "){" tng2-mode-syntax-table)
52 )
