root/hacks/trunk/django-mode.el

Revision 113, 2.0 kB (checked in by verbosus, 10 months ago)

Added Michael Demmer patch to django-mode.el

Line 
1; A (rather minimal) major mode for Emacs to edit Django templates
2; by Antonio Cavedoni <http://cavedoni.com/>
3;
4; Hacked together following instructions from the awesome:
5; http://two-wugs.net/emacs/mode-tutorial.html
6;
7; Acknowledgements:
8;
9;   - Patrick Quinn <http://www.patrickquinn.net/>
10;     for the font-locking patch for HTML syntax
11;
12;   - Alessandro Guido
13;     for the sgml-mode include patch
14;
15;   - Michael Demmer
16;     for the regexp order issue
17
18(require 'sgml-mode)
19
20(defvar django-mode-hook nil)
21
22(defvar django-mode-map
23  (let ((django-mode-map (make-keymap)))
24    (define-key django-mode-map "\C-j" 'newline-and-indent)
25    django-mode-map)
26  "Keymap for Django major mode")
27
28(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . django-mode))
29
30(defconst django-font-lock-keywords-1
31  (list
32   '("{% ?comment ?%}\\(\n?.*?\\)+?{% ?endcomment ?%}" . font-lock-comment-face)
33   '("{% ?\\(\\(end\\)?\\(extends\\|for\\|cycle\\|filter\\|firstof\\|debug\\|if\\(changed\\|equal\\|notequal\\|\\)\\|include\\|load\\|now\\|regroup\\|spaceless\\|ssi\\|templatetag\\|widthratio\\|block\\)\\) ?.*? ?%}" . 1)
34   '("{{ ?\\(.*?\\) ?}}" . (1 font-lock-variable-name-face))
35   '("{%\\|\\%}\\|{{\\|}}" . font-lock-builtin-face)
36   "Minimal highlighting expressions for Django mode"))
37
38(defvar django-font-lock-keywords
39  (append sgml-font-lock-keywords django-font-lock-keywords-1)
40  "Default highlighting expressions for Django mode")
41
42(defvar django-mode-syntax-table
43  (let ((django-mode-syntax-table (make-syntax-table)))
44    django-mode-syntax-table)
45  "Syntax table for django-mode")
46
47(defun django-mode ()
48  "Major mode for editing Django templates"
49  (interactive)
50  (kill-all-local-variables)
51  (set-syntax-table django-mode-syntax-table)
52  (use-local-map django-mode-map)
53  (html-mode)
54  (set (make-local-variable 'font-lock-defaults) '(django-font-lock-keywords))
55  (setq major-mode 'django-mode)
56  (setq mode-name "Django")
57  (run-hooks 'django-mode-hook))
58
59(provide 'django-mode)
Note: See TracBrowser for help on using the browser.