2011-04-08 16 views
5

Estoy usando Emacs 23.2.1 desde Ubuntu 11.04. He instalado purcell's port of the Solarized color-theme, pero me gustaría ajustar algunas de las caras para hacer que mis búferes de Python se parezcan más a the Solarized Vim screenshot. Es bastante fácil editar el tema de color para que mis colores preferidos siempre se usen, pero eso también los cambiaría en modo C y quiero evitar eso.¿Puedo hacer ajustes a un tema de color por modo?

En concreto, este es el valor predeterminado para la orden interna cara:

(font-lock-builtin-face ((t (:foreground ,green)))) 

En el modo de Python - y sólo el modo de Python - Me gustaría utilizar esto en su lugar:

(font-lock-builtin-face ((t (:foreground ,blue)))) 

I' Idealmente, me gustaría hacer este cambio al aplicar alguna lógica en la definición del tema de color para poder enviar mis ajustes en sentido ascendente con una nota que dice "esto cambia solo resaltando Python". De lo contrario, me conformaría con algo en mi init.el. Preferiría tenerlo empaquetado con el tema de color principal, sin embargo.

¿Esto es posible? Rasca eso. Este es Emacs; I saber ¡es posible! ¿Pero cómo puedo hacerlo?

Respuesta

5

Esto debería ser posible usando Face Remapping. A pesar de que prefiere arreglar la definición del color-tema, yo diría algo así como para poner las siguientes líneas en el archivo de init.el, ya que es una forma más "estándar" de hacer las cosas:

(add-hook 'python-mode-hook 'remap-builtin-face-blue) 

(defun remap-builtin-face-blue() 
    (let ((blue "#2075c7")) 
    (set (make-local-variable 'face-remapping-alist) 
     `((font-lock-builtin-face :foreground ,blue))))) 
+0

Eso funciona muy bien! Gracias. El objetivo detrás de la integración con el tema de color es que pueda funcionar "de fábrica" ​​para cualquiera que instale el tema, sin que sea necesario modificar su init.el. Si eso no es factible, al menos esto hace el trabajo. –

+0

@Kirk: Buen punto, pero no todos querrán cambiar la fuente de esta manera. Por lo tanto, tendría que agregar una opción personalizable o algo al tema, y ​​luego tampoco estaría "fuera de la caja". Creo que agregar cosas a tu 'init.el' es algo muy común que hacer, y el usuario de Emacs está familiarizado con él. Después de todo, es solo copiar y pegar. – Thomas

+0

Es cierto, y quizás solo incluir un archivo Léame podría ser el mejor enfoque. –

Cuestiones relacionadas