2009-05-17 3 views

ответ

6

Вы можете использовать специальные режимы, такие как django-mode или MuMaMo.

Если вы хотите что-то очень простое, и при условии, что вы редактируете в html-mode, вы можете попробовать следующее:

(defun django-highlight-comments() 
    (interactive "p") 
    (highlight-regexp "{%.*?%}" 'hi-orange)) 
(add-hook 'html-mode-hook 'django-highlight-comments) 

(Просто добавьте вышеуказанные строки в .emacs или init.el и Eval его или перезагрузки Emacs).

+0

Это именно то, что я хотел, спасибо! –

+1

Будьте осторожны, если вы добавили новые теги во время редактирования, вам нужно будет переоценить функцию (M-x django-highlight-comments), чтобы выделить новые теги. Добавление ключевого слова font-lock в html-режим кажется лучшим выбором. – polyglot

+0

По крайней мере, на предварительном тестировании Emacs 23 (23.0.93.1, где я тестировал решение), необходима _no_ переоценка. Любые полные комментарии, такие как {% ...%}, которые вводятся позже, также подсвечиваются немедленно. Однако я согласен с вашей точкой зрения: в качестве долгосрочного решения определенно лучше определить ключевые слова или использовать «правильный» режим (django, MuMaMo и т. Д.), Который распознает синтаксис. –

1

Herearesomelinks. Я нашел их в Google. Похоже, что нет ни одного полностью полного и «официального» решения этой проблемы, но имеется ряд вполне пригодных для использования заменителей.

3

Вот что я делаю. Это немного более общий, чем код выше, и он использует встроенные механизмы блокировки шрифтов.

(defvar django-tag-face (make-face 'django-tag-face)) 
(defvar django-variable-face (make-face 'django-variable-face)) 
(set-face-background 'django-tag-face "Aquamarine") 
(set-face-foreground 'django-tag-face "Black") 
(set-face-background 'django-variable-face "Plum") 
(set-face-foreground 'django-variable-face "Black") 


(font-lock-add-keywords 
'html-mode 
'(("\\({%[^%]*%}\\)" 1 django-tag-face prepend) 
    ("\\({{[^}]*}}\\)" 1 django-variable-face prepend))) 
+0

+1: Это более систематическое решение. –

+0

Необходим ли defvar? мы можем использовать символы лица непосредственно, как в http://stackoverflow.com/questions/756666/match-regular-expression-as-keyword-in-define-generic-mode/756927#756927 – Yoo