Я программирую Django/Python в emacs, и мне бы хотелось, например, {% comment%} FOO {% endcomment%} сделать оранжевым.Как я могу покрасить некоторые вещи в Emacs?
Как настроить некоторые цвета для важных тегов шаблонов Django?
Я программирую Django/Python в emacs, и мне бы хотелось, например, {% comment%} FOO {% endcomment%} сделать оранжевым.Как я могу покрасить некоторые вещи в Emacs?
Как настроить некоторые цвета для важных тегов шаблонов Django?
Вы можете использовать специальные режимы, такие как 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).
Вот что я делаю. Это немного более общий, чем код выше, и он использует встроенные механизмы блокировки шрифтов.
(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: Это более систематическое решение. –
Необходим ли defvar? мы можем использовать символы лица непосредственно, как в http://stackoverflow.com/questions/756666/match-regular-expression-as-keyword-in-define-generic-mode/756927#756927 – Yoo
Это именно то, что я хотел, спасибо! –
Будьте осторожны, если вы добавили новые теги во время редактирования, вам нужно будет переоценить функцию (M-x django-highlight-comments), чтобы выделить новые теги. Добавление ключевого слова font-lock в html-режим кажется лучшим выбором. – polyglot
По крайней мере, на предварительном тестировании Emacs 23 (23.0.93.1, где я тестировал решение), необходима _no_ переоценка. Любые полные комментарии, такие как {% ...%}, которые вводятся позже, также подсвечиваются немедленно. Однако я согласен с вашей точкой зрения: в качестве долгосрочного решения определенно лучше определить ключевые слова или использовать «правильный» режим (django, MuMaMo и т. Д.), Который распознает синтаксис. –