2009-05-17 3 views

Antwort

6

Sie können dedizierte Modi wie django-mode oder MuMaMo verwenden.

Wenn Sie etwas sehr einfach wollen, und vorausgesetzt, Sie in html-mode bearbeiten, könnten Sie versuchen, die folgenden:

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

(Fügen Sie einfach die obigen Zeilen zu Ihrem .emacs oder init.el und eval es oder Neustart Emacs).

+0

Das ist genau das, was ich wollte, danke! –

+1

Seien Sie jedoch gewarnt, wenn Sie während der Bearbeitung neue Tags hinzugefügt haben, müssen Sie die Funktion (M-x django-highlight-comments) neu bewerten, damit die neuen Tags hervorgehoben werden. Das Hinzufügen eines Font-Lock-Schlüsselwortes zum HTML-Modus scheint eine bessere Wahl zu sein. – polyglot

+0

Zumindest auf Emacs 23 Vortest (23.0.93.1, wo ich die Lösung getestet habe), _no_ Neubewertung ist erforderlich. Alle vollständigen Kommentare wie {% ...%}, die später eingegeben werden, werden ebenfalls sofort hervorgehoben. Allerdings stimme ich Ihrem Punkt zu: als langfristige Lösung ist es definitiv besser, Schlüsselwörter zu definieren oder einen "richtigen" Modus (Django, MuMaMo, etc.) zu verwenden, der die Syntax erkennt. –

1

Herearesomelinks. Ich habe sie auf Google gefunden. Es scheint, dass es für dieses Problem keine vollständig vollständige und "offizielle" Lösung gibt, sondern eine Anzahl von möglicherweise durchaus brauchbaren Substituten.

3

Hier ist was ich mache. Es ist etwas allgemeiner als der obige Code und verwendet die eingebauten Font-Lock-Mechanismen.

(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: Dies ist die systematischere Lösung. –

+0

Ist Defvar notwendig? können wir Gesichtssymbole direkt wie in http://stackoverflow.com/questions/756666/match-regular-expression-as-keyword-in-define-generic-mode/756927#756927 verwenden – Yoo

Verwandte Themen