¿Cómo cambio la fuente de Emacs para las cadenas de documentación de Python?

Estoy empezando a aprender Python y usar Emacs como mi editor. Actualmente, Emacs usa el mismo color para cadenas normales (comillas simples) y cadenas de documentos (comillas triples). Quiero que las cadenas de documentos sean de un color diferente, así que usé la opción de menú ‘Opciones-> Personalizar Emacs’ para cambiar ‘font-lock-doc-face’ a un nuevo color y guardé los cambios. Sin embargo, Emacs continúa manteniendo las cadenas de documentos del mismo color que las cadenas normales. Cambiar el color de las cadenas normales también aplica el cambio a las cadenas de documentación.

Parece que Emacs está tratando las cadenas de documentos y las cadenas normales de la misma manera. ¿Hay alguna manera de hacer que Emacs encuentre y colore correctamente las cadenas de documentación de Python por separado de las cadenas normales?

Edición: Estoy usando Emacs 23.1.1 (paquete Kubuntu 10.10) con la configuración predeterminada del modo Python. También utilizo el paquete de temas de color con el tema de la medianoche.

Interesante. Iba a decir que debido a la forma en que funciona la tabla de syntax de emacs, emacs piensa que """ y ''' representan una cadena vacía seguida por el inicio de una nueva cadena.

Puedes verificar esto fácilmente en tu copia de emacs pegando el siguiente código en un búfer de python:

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

En emacs 23.1.1 [ actualización: y aparentemente en stackoveflow!] Esto rompe completamente el resaltado de syntax para el rest del archivo.

Siempre uso """ específicamente para evitar problemas de apóstrofes en las cadenas de documentación, por lo que no me di cuenta hasta este momento que en Emacs 23.2.1, esto de alguna manera finalmente se solucionó …

(Sí, hay una nueva función llamada python-quote-syntax en python.el)

Entonces: en tu versión de emacs, esto es imposible porque las cadenas no se analizan correctamente. Si actualiza a la última versión de emacs, es posible que pueda hacer que suceda modificando esa función en python.el para tratarlos de manera diferente.