2011-04-17 112 views
4

我有一個函數將Emacs的顏色主題設置爲我自己定義的主題。在這個函數中我做的:更改Emacs的背景顏色

(set-face-attribute 'default cur-frame :foreground fg-color :background bg-color) 

我然後設置背景色,前景色,併爲default-frame-alistinitial-frame-alistspecial-display-frame-alist光標顏色。

所有這些在我的Mac上都能正常工作。但是,當我用這個在Linux上,它看起來罰款已經被打開的所有幀,但在新創建的框架,它看起來像這樣:

background color issue

我沒有這個問題與新的框架,如果使用set-background-color/set-foreground-color函數代替(set-face-attribute 'default ...)。但如果我這樣做,我必須手動重置已打開的每個幀的顏色。

我在Mac和Ubuntu上都使用Emacs版本23.3。

爲了澄清,這是主題文件我用:

my-color.el

+0

做了'C-l'油漆顏色是否正常? – vpit3833 2011-04-17 22:45:22

+0

@ vpit3833沒有。它向下滾動窗口,但沒有任何變化。 – sudo 2011-04-17 23:05:04

+0

爲什麼你不使用顏色主題模式? – 2011-04-18 05:11:28

回答

3
(if (eq system-type 'darwin) 
    ;; mac os x settings 
    (if (eq system-type 'gnu/linux) 
    (setq default-frame-alist '((background-color . "black") 
           (foreground-color . "gray"))))) 

這樣的事情應該可以幫助你保持每操作系統設置。

+0

其實,我已經有了,如果您有興趣嘗試一下,這是我在[bitbucket](https://bitbucket.org/brownstone/emacs_configuration)上配置的emacs配置,它是在名爲my-color.el的文件中。問題是,如果我使用set-face-attributes作爲默認值,即使設置了default-frame-alist,新幀也會混亂。沒有它,他們會很好,但我必須手動設置每個其他打開的幀一個接一個。雖然通常不會有這麼多的幀,但我仍然想用一個命令來做出改變。 – sudo 2011-04-18 04:53:28

4

set-face-attribute顧名思義,設置面部的屬性(即與字體有關的屬性),而不是框架的屬性。使用

(add-to-list 'default-frame-alist '(background-color . "lightgray"))

和類似改變幀相關的屬性。

+0

這似乎工作正常,直到我調整窗口的大小,之後顏色再次被打破(emacs 24.4.1)。 – 2015-07-08 08:44:41

1

看來,這是更好地使用

(custom-set-faces 
    '(default ...) 
    '(region ...) 
    .... 
) 

風格設置的面孔,這樣就不會存在這樣的問題。

0

Emacs使用1)(或不覆蓋)更新的Emacs版本中的Gtk3.0主題背景。使用例如改變背景set-background-colordefault-frame-alist只能在調整窗口大小之後才能使用,之後Gtk主題背景會再次「閃耀」。

我還沒能弄清楚如何讓emacs的總是油漆過的GTK主題背景,但至少我已經找到一種方法如何改變GTK主題背景色,只Emacs的:https://superuser.com/questions/699501/emacs-showing-grey-background-where-there-are-no-characters/937749#937749

因此,這並不能完全解決切換主題時更改背景顏色,但至少可以擺脫打開新幀時所體驗到的黑白對比。

我的機器上1)至少:)