2013-09-27 22 views
10

Mi piacerebbe che emacs non abbia un colore di sfondo quando apro un frame nel terminale. Sto usando un terminale con uno sfondo traslucido, e i caratteri con un colore di sfondo non sono "trasparenti". TERM è impostato su "xterm-256color".Emacs: disabilita il colore di sfondo del tema nel terminale

Come posso ottenere emacs per utilizzare il colore di sfondo predefinito (nessun colore), quando il frame non è grafico?

Edit: ce l'ho, una sorta di:

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes") 
(load-theme 'my-awesome-theme t) 

(defun on-frame-open (frame) 
    (if (not (display-graphic-p frame)) 
    (set-face-background 'default "unspecified-bg" frame))) 
(on-frame-open (selected-frame)) 
(add-hook 'after-make-frame-functions 'on-frame-open) 

ho messo il codice di cui sopra nel mio file di inizializzazione, ma sopprime solo lo sfondo quando si apre un emacsclient in un terminale, e non emacs stesso (cioè solo se invocato con emacsclient -t e non quando invocato con emacs). Aggiungere un extra (unless window-system (set-face-background 'default "unspecified-bg" (selected-frame))) non funziona e confonde solo i frame grafici.

Qualche idea sul perché questo potrebbe accadere?

risposta

16
(defun on-after-init() 
    (unless (display-graphic-p (selected-frame)) 
    (set-face-background 'default "unspecified-bg" (selected-frame)))) 

(add-hook 'window-setup-hook 'on-after-init) 

In combinazione con il codice nella modifica, ha funzionato bene per me sia per gli emacsterms che per gli emacsen appena avviati. Per quanto riguarda il motivo per cui window-setup-hook: http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(. Nessuno dei ganci precedenti sembrava funzionare, tranne per questo)

+0

Grazie, questo è il trucco perfetto. –

+0

Fantastico! Questo ha funzionato perfettamente per me con il tema iTerm2 + Emacs 24 + Base 16. –

+0

Grande piccolo trucco. L'ho usato per applicare un tema 'wombat' solo al terminale di Emacs e non alla versione con finestra dove non sembra così bello. –

2

ho provato il metodo che è stato suggerito nel this answer ma non ho avuto fortuna a farla funzionare. questo frammento funziona per me però

(defun on-frame-open (&optional frame) 
    "If the FRAME created in terminal don't load background color." 
    (unless (display-graphic-p frame) 
    (set-face-background 'default "unspecified-bg" frame))) 

(add-hook 'after-make-frame-functions 'on-frame-open) 

Anche se ha una battuta d'arresto, se il terminale ha un diverso impostazioni dello sfondo rispetto al tema che uso (scura contro la luce), volti a tema di default vengono utilizzati, che non può sembrare buona sullo sfondo chiaro o scuro. ma nel mio caso, che sia il terminale che il tema sono scuri, funziona bene.

+1

Questo ha funzionato per me, mentre quello accettato no. – terje

Problemi correlati