2012-06-21 12 views
11

Sto usando il leopardo delle nevi delle nevi, per la cronaca.Come preservare i colori di emacs dal normale terminale allo schermo di gnu

Quando uso emacs direttamente dal terminale, ho un set di colori (ad esempio per c/C++) di cui sono molto soddisfatto --- verde su nero, commenti rossi, parole chiave colorate ... ecc. Ecc. Alcuni di questi sono impostati nelle mie "preferenze del terminale" e alcuni sono nel mio file ~/.emacs (vedi sotto). Quando eseguo emacs dallo schermo, la combinazione di colori di base è la stessa (verde su nero), ma la colorazione è diversa (ad esempio i caratteri di commento sono rossi, ma non i commenti interi) - e davvero fastidiosa.

Qualsiasi aiuto sarebbe apprezzato!

Nel mio file '.emacs' (questo smette di funzionare in emacs GNU-schermo):

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

Nel mio file' 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 

ho pensato che il comando' shell - $ SHELL 'nel mio file .screenrc ha reso il prompt dei comandi sullo schermo uguale al default --- it fa rendere la mia riga di comando dire' nomecomputer:/DIR/username $ 'invece di solo' bash-3.2 $ '

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

Soluzione: Grazie a Greg E.

avevo bisogno di impostare il mio emulatore di terminale a schermo per corrispondere a quello del mio shell normale. Per fare questo, ho aggiunto

export TERM='xterm-color' 

a ~/.bash_profile

Per qualche ragione, 'termine xterm-color' nel file '~/.screenrc' non ha funzionato.

+1

NOTA: su Mac OS X 10.7 Lion e versioni successive, l'utilizzo di 'xterm-color' non è consigliato. Rappresenta un ramo più vecchio di xterm. In Lion, Terminal è abbastanza compatibile con il moderno xterm che dovresti usare 'xterm-256color' (predefinito) o una variazione, ad esempio' xterm-16color'. –

+0

Grazie per il suggerimento @ChrisPage – DilithiumMatrix

risposta

7

Il mio sospetto è che, mentre il terminale può essere compilato con supporto per oltre i 16 colori standard, la tua versione specifica dello schermo GNU potrebbe non esserlo. Non ho molta familiarità con OSX, ma su Linux controllerei se l'output di tput colors differisce tra un terminale semplice e uno schermo in esecuzione (mi aspetto che ci sia un equivalente OSX se tput non è disponibile). In tal caso, potrebbe essere necessario installare (o compilare manualmente) una diversa build di schermo che include il supporto per colori aggiuntivi (normalmente, 256 è il massimo, ma 88 è anche comune, mentre 16 è il minimo predefinito).

Modifica: In definitiva, la soluzione corretta ha dimostrato di impostare manualmente la variabile di ambiente $TERM (vedere i commenti di seguito).

+1

Idea interessante; Ho provato 'tput colors' (che funziona), e ha risposto '8' sia sul terminale normale che sullo schermo ....:/ – DilithiumMatrix

+0

@zhermes, qual è il valore corrente di '$ TERM' e quale emulatore di terminale sei usando? Un output di 8 significa che il tuo terminale, come è attualmente configurato, non ha supporto per nient'altro che gli 8 colori ANSI di base (e le loro controparti luminose/in grassetto, per un totale di 16). Quindi, un colore come "pomodoro" probabilmente verrebbe risolto in modo intelligente in "rosso".Prendi in considerazione l'installazione di 'xterm' con supporto a 256 colori, se possibile. Inoltre, [questa pagina] (http://www.frexx.de/xterm-256-notes/) potrebbe essere utile. Si potrebbe provare a impostare diversi valori '$ TERM' e vedere se l'output' tput colors' cambia. –

+0

Interessante ... il mio dubbio è che entrambi dicono "8", mentre l'unico problema è in uno di essi. Quindi forse ci sono diversi algoritmi per convertire giù 'pomodoro'? 'echo $ TERM' produce "xterm-color", e quando faccio lo stesso nello schermo dice solo 'schermo' ... Ecco dove mostro il mio stupido, pensavo di * usare * il terminale, non un emulatore . ? – DilithiumMatrix

Problemi correlati