2013-09-27 17 views
10

Chciałbym, aby emacs nie miał koloru tła po otwarciu ramki w terminalu. Używam terminala z półprzezroczystym tłem, a postacie z kolorem tła nie są "przezroczyste". TERM jest ustawione na "xterm-256color".Emacs: wyłącz kolor tła motywu na terminalu

Jak ustawić emacs, aby używał domyślnego koloru tła (bez koloru), gdy ramka nie jest graficzna?

Edit: Mam go, rodzaj:

(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) 

umieścić powyższy kod w moim pliku init, ale tylko tłumi tle podczas otwierania emacsclient w terminalu, a nie emacs sam (tj. tylko wtedy, gdy wywołany z emacsclient -t, a nie po wywołaniu z emacs). Dodanie dodatkowego (unless window-system (set-face-background 'default "unspecified-bg" (selected-frame))) nie działa i myl tylko ramki graficzne.

Jakieś pomysły, dlaczego tak się może stać?

Odpowiedz

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) 

połączeniu z kodem w swojej edycji, to działało dobrze dla mnie i dla obu emacsterms nowo rozpoczęty emacsen. Jak, dlaczego window-setup-hook: http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(. Żadna z wcześniejszych haków wydawało się do pracy z wyjątkiem tego jednego)

+0

Dzięki, to doskonale działa. –

+0

Awesome! To zadziałało idealnie dzięki motywowi iTerm2 + Emacs 24 + Base 16. –

+0

Świetna mała sztuczka. Użyłem go do zastosowania motywu 'wombat' tylko do terminalu Emacs, a nie wersji okienkowej, w której nie wygląda tak ładnie. –

2

Próbowałem metodę sugerowano w this answer ale nie miałem szczęścia uzyskiwanie go do pracy. Ten fragment działa na mnie chociaż

(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) 

chociaż ma regres, jeśli terminal ma różne ustawienia tła niż motywu używam (ciemny vs. światła), domyślne twarze tematyczne są używane, które nie mogą wydawać się dobre na jasnym lub ciemnym tle. ale w moim przypadku zarówno terminal, jak i motyw są ciemne, działa dobrze.

+1

To zadziałało dla mnie, podczas gdy zaakceptowany nie. – terje