2012-06-21 9 views
11

Estoy usando OSX Snow Leopard, para el registro.Cómo preservar los colores de emacs de la pantalla de terminal regular a gnu

Cuando uso emacs directamente desde el terminal, tengo un conjunto de colores (por ejemplo, para c/C++) con los que estoy muy contento --- verde sobre negro, comentarios rojos, palabras clave coloreadas ... etc. Parte de esto se configura en mis 'preferencias de terminal', y parte está en mi archivo ~/.emacs (ver a continuación). Cuando ejecuto emacs desde la pantalla, el esquema de color básico es el mismo (verde sobre negro), pero el color es diferente (por ejemplo, los caracteres de comentario son rojos, pero no los comentarios completos), y realmente molesto.

¡Cualquier ayuda sería apreciada!

En mi archivo '.emacs' (esto deja de funcionar en emacs-GNU Screen):

(global-font-lock-mode t) 
(custom-set-faces 
'(font-lock-comment-face 
    ((((class color) (background light)) 
    :foreground "tomato") 
    ))) 

En mi archivo' .screenrc ':

shell -$SHELL   # colors still don't work without this 
#term xterm-256color # using this doesn't fix the colors (suggested on some forums) 

altscreen on 
startup_message off 

pensé que el comando' shell - $ SHELL 'en mi archivo .screenrc hizo que el símbolo del sistema en la pantalla sea el mismo que el predeterminado --- hace hacer que mi línea de comando diga' nombre de equipo:/DIR/nombre de usuario $ 'en lugar de solo' bash-3.2 $ '

============================================= =================

Solución: Gracias a Greg E.

que tenía que poner mi emulador de terminal en la pantalla para que coincida con la de mi concha normal. Para ello, añadí

export TERM='xterm-color' 

a ~/.bash_profile

Por alguna razón, 'término xterm-color' en el fichero '~/.screenrc' no funcionó.

+1

NOTA: en Mac OS X 10.7 Lion y posterior, no se recomienda el uso de 'xterm-color'. Representa una rama más antigua de xterm. En Lion, Terminal es lo suficientemente compatible con xterm moderno que debe utilizar 'xterm-256color' (el valor predeterminado) o una variación, por ejemplo,' xterm-16color'. –

+0

Gracias por la sugerencia @ChrisPage – DilithiumMatrix

Respuesta

7

Mi sospecha es que, aunque su terminal puede compilarse con soporte para más de 16 colores estándar, su versión particular de la pantalla GNU puede no serlo. No estoy muy familiarizado con OSX, pero en Linux verificaría si la salida de tput colors difiere entre un terminal plano y una pantalla en ejecución (esperaría que hubiera algún equivalente OSX si tput no está disponible). Si lo hace, es posible que necesite instalar (o compilar manualmente) una compilación de pantalla diferente que incluya compatibilidad con colores adicionales (normalmente, 256 es el máximo, pero 88 también es común, mientras que 16 es el mínimo predeterminado).

Editar: En última instancia, la solución correcta fue la configuración manual de la variable de entorno $TERM (ver comentarios a continuación).

+1

Interesante idea; Intenté 'tput colors' (que funciona), y respondió '8' tanto en la terminal regular como en la pantalla ....:/ – DilithiumMatrix

+0

@zhermes, ¿cuál es el valor actual de '$ TERM' y qué emulador de terminal es usted ¿utilizando? Una salida de 8 significa que su terminal, como está configurado actualmente, no admite nada más que los 8 colores ANSI básicos (y sus homólogos brillantes/audaces, lo que hace un total de 16). Por lo tanto, un color como '" tomate "' probablemente se resuelva de manera inteligente hasta '" rojo "'.Considere instalar 'xterm' con soporte de 256 colores, si es posible. Además, [esta página] (http://www.frexx.de/xterm-256-notes/) podría ser útil. Podría intentar establecer diferentes valores '$ TERM' y ver si la salida' tput colors' cambia. –

+0

Interesante ... mi duda es que ambos dicen '8', mientras que el único problema está en uno de ellos. Entonces, ¿tal vez hay diferentes algoritmos para convertir 'tomate'? 'echo $ TERM' produce "xterm-color", y cuando hago lo mismo en pantalla solo dice 'pantalla' ... Aquí es donde le muestro a mi tonto, pensé que estaba * usando * terminal, no un emulador . ? – DilithiumMatrix

Cuestiones relacionadas