Как изменить лицо шрифта Emacs для строк документации Python?

Я только начинаю изучать Python и использую Emacs в качестве моего редактора. В настоящее время Emacs использует один и тот же цвет для обычных строк (одинарные кавычки) и строк документации (тройные кавычки). Я хочу, чтобы строки документации были другого цвета, поэтому я использовал опцию меню "Параметры-> Настроить Emacs", чтобы изменить "font-lock-doc-face" на новый цвет и сохранить изменения. Однако Emacs продолжает сохранять строки документов того же цвета, что и обычные строки. Изменение цвета обычных строк также применяет изменение к строкам документов.

Казалось бы, Emacs рассматривает строки документов и обычные строки как одно и то же. Есть ли способ заставить Emacs правильно найти и раскрасить строки документации Python отдельно от обычных строк?

Изменить: я использую Emacs 23.1.1 (пакет Kubuntu 10.10) с настройками режима Python по умолчанию. Я также использую пакет цветовой темы с темой полуночи.

2 ответа

Решение

Интересно. Я собирался сказать, что из-за того, как работает таблица синтаксиса emacs, Emacs считает, """ а также ''' представляет пустую строку, сопровождаемую началом новой строки.

Вы можете легко проверить это в своей копии emacs, вставив следующий код в буфер python:

class MrsRobinson(object):
    '''
    What's that you say?
    '''
    pass

В emacs 23.1.1 [ update: и, очевидно, в stackoveflow!] Это полностью нарушает подсветку синтаксиса для остальной части файла.

Я всегда использую """ специально, чтобы избежать проблем с апострофом в строках документации, поэтому я не заметил до этого момента, что в emacs 23.2.1 это как-то окончательно исправлено...

(Да, есть новая функция под названием python-quote-syntax в python.el)

Итак: в вашей версии emacs это невозможно, потому что строки не анализируются правильно. Если вы обновитесь до последних версий emacs, вы сможете сделать это, изменив эту функцию в python.el, чтобы по-разному относиться к ним.

Мне удалось это сделать:

При выполнении M-x customize-face и введите:.

Причина, по которой они оба одного цвета, заключается в том, что font-lock-doc-face наследуется от:

Я обновил font-lock-string-face к font-lock-comment-face(поскольку я предпочитаю, чтобы мои строки документов были того же цвета, что и мои комментарии). Вы можете сделать то же самое или выбрать «Показать все атрибуты», чтобы выбрать свои.

Другие вопросы по тегам