Ich programmiere Django/Python in Emacs und möchte, dass Dinge wie {% comment%} FOO {% endcomment%} orange werden.Wie kann ich bestimmte Dinge in Emacs färben?
Wie kann ich einige Farben für wichtige Django Template-Tags einrichten?
Ich programmiere Django/Python in Emacs und möchte, dass Dinge wie {% comment%} FOO {% endcomment%} orange werden.Wie kann ich bestimmte Dinge in Emacs färben?
Wie kann ich einige Farben für wichtige Django Template-Tags einrichten?
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).
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)))
+1: Dies ist die systematischere Lösung. –
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
Das ist genau das, was ich wollte, danke! –
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
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. –