2012-03-28 100 views
21

在emacs 24中,應用顏色主題的順序似乎很重要。這很明顯,如果你做M-X顏色主題選擇。您的訂單ic更改顏色主題Emacs 24 - 訂單問題

有沒有人對這個問題有所瞭解?

我希望能夠無需重新啓動下面的顏色主題之間切換:

  1. solarized光
  2. solarized暗
  3. zenburn
  4. railscasts

我想我需要相當於emacs的css-reset。 另外一個提示,是非常寶貴的是,如果你使用邪惡的,那麼你就需要這一行,否則你的光標停留黑,這是可怕的黑暗主題:

(setq evil-default-cursor t) 

這是一個相關的問題:Switching between color themes in Emacs (< v.24)。我正在使用Emacs 24.0。我發佈這個問題是因爲我正在尋找24.1之前的解決方法,或者24.1足夠穩定。

+0

emacs 24.0 ??。 'M-x display-about-screen'或'M-x emacs-version' – kindahero 2012-03-28 03:36:24

回答

17

在我看來,即使在Emacs 24上,您仍然在使用舊的(和未維護的)色彩主題包。 Emacs 24有一個內置的顏色主題基礎設施(主題像zenburnsolarized已被移植到它),我建議您使用它。有關deftheme和朋友的詳細信息,請看here

то回答有關顏色的主題特定問題 - 主題通常不會定義每一張臉,一個以前的主題可能會調整和導致你的問題。移動到主題之間的默認主題可能會被認爲類似於CSS重置。

+0

如何移動到交換機之間的默認主題? 非常感謝!如果我使用elpa,我應該確保我不安裝顏色主題?順便說一句,我愛zenburn,但我想也有railscasts的顏色,當我想在白天有一點對比度。任何關於日光處理過的自定義.X資源的意見? – justingordon 2012-03-28 09:29:09

+3

我想你已經安裝了一個依賴於'color-theme'的主題 - Marmalade上有很多這樣的主題。在Emacs 24 - 'M-x disable-theme'中(儘管我不確定你描述的問題會在那裏出現)。我有一段時間沒有使用'color-theme',所以我不能幫你解決這個問題。我個人不會自定義'.Xresources'(對於顏色主題)。你爲什麼想要這樣做? – 2012-03-28 10:22:05

+0

我在這裏爲.Xresources提供了建議:http://ethanschoonover.com/solarized。我認爲這可能與使用emacs顏色主題相沖突。 – justingordon 2012-03-29 08:36:54

3

正如其他人所說,切換到Emacs 24版本的主題。一旦你使用它,你可以用disable-theme「撤銷」一個主題。只要給你同樣的論點,你傳遞給load-theme,你應該回到一個空白的石板。然後加載新的主題。

+0

不,你***不能*撤消自定義主題*。你可以在大多數情況下撤銷一個* color *主題,恢復以前的非主題外觀。 「禁用」自定義主題僅與另一主題有關。 – Drew 2013-10-28 20:21:08

4

我寫了以前的Emacs切換到新的禁用當前主題的功能。

您可以下面的代碼片段粘貼到找你init.el和使用M-X l0ad主題。

https://github.com/maruks/.emacs.d

;; color themes 
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes") 

(setq current-t43m3 nil) 

(defun enab-theme (theme) 
    (if current-t43m3 (disable-theme current-t43m3)) 
    (setq current-t43m3 theme) 
    (load-theme theme t)) 

(defun disab-current-theme() 
    (if current-t43m3 (disable-theme current-t43m3)) 
    (setq current-t43m3 nil)) 

(global-set-key (kbd "C-c ltwo") '(lambda() (interactive) (enab-theme 'wombat))) 

(global-set-key (kbd "C-c ltze") '(lambda() (interactive) (enab-theme 'zenburn))) 

(global-set-key (kbd "C-c ltsd") '(lambda() (interactive) (enab-theme 'solarized-dark))) 

(global-set-key (kbd "C-c ltsl") '(lambda() (interactive) (enab-theme 'solarized-light))) 

(global-set-key (kbd "C-c ltne") '(lambda() (interactive) (enab-theme 'tomorrow-night-eighties))) 

(global-set-key (kbd "C-c ltni") '(lambda() (interactive) (enab-theme 'tomorrow-night))) 

(global-set-key (kbd "C-c ltnb") '(lambda() (interactive) (enab-theme 'tomorrow-night-bright))) 

(global-set-key (kbd "C-c ltto") '(lambda() (interactive) (enab-theme 'tomorrow))) 

(global-set-key (kbd "C-c ltta") '(lambda() (interactive) (enab-theme 'tango))) 

(global-set-key (kbd "C-c ltdb") '(lambda() (interactive) (enab-theme 'deeper-blue))) 

(global-set-key (kbd "C-c ltdi") '(lambda() (interactive) (enab-theme 'dichromacy))) 

(global-set-key (kbd "C-c dct") '(lambda() (interactive) (disab-current-theme))) 

(defun l0ad-theme (name) 
    (interactive 
    (list 
    (intern (completing-read "Load custom theme: " 
       (mapcar 'symbol-name (custom-available-themes)))))) 
    (enab-theme name)) 

(setq d3fault-theme (getenv "EMACS_DEFAULT_THEME")) 

(when d3fault-theme 
    (enab-theme (intern d3fault-theme))) 
9

要自動禁用當前主題之前加載新的,你也可以使用建議:

(defadvice load-theme 
    (before theme-dont-propagate activate) 
    (mapcar #'disable-theme custom-enabled-themes)) 
5

在你的.emacs/init.el插入下面的代碼, 我必將的Ct以循環按照指定的順序主題的固定列表。這與Emacs 24兼容。

;;;;; Theme ;;;;; 
;; Cycle through this set of themes 
(setq my-themes '(solarized-light solarized-dark zenburn railscast)) 

(setq my-cur-theme nil) 
(defun cycle-my-theme() 
    "Cycle through a list of themes, my-themes" 
    (interactive) 
    (when my-cur-theme 
    (disable-theme my-cur-theme) 
    (setq my-themes (append my-themes (list my-cur-theme)))) 
    (setq my-cur-theme (pop my-themes)) 
    (load-theme my-cur-theme t)) 

;; Switch to the first theme in the list above 
(cycle-my-theme) 

;; Bind this to C-t 
(global-set-key (kbd "C-t") 'cycle-my-theme) 
+0

什麼是(kb「C-t」)?爲什麼而不是(kbd「C-t」)?對不起,只是一個錯字? – ericx 2015-01-31 01:48:54

+0

這不是一個錯字,但在這種情況下,您可以使用(kbd「C-t」)。我有一個'kb'宏的原因是因爲另一段代碼一次執行多個鍵綁定:'(dolist(pair'((「Ck」kill-whole-line)(「Cz」undo)) )((global-set-key(kb(car pair))(cadr pair)))'如果我使用'kbd'而不是我自己的'kb'宏:'(defun kb(k)宏'k)),它會抱怨'kbd'是一個宏而不是函數,或者類似的東西,愚蠢的小解決方法,我已經在上面的代碼中將'kb'固定到'kbd'中,所以謝謝! – 2015-02-02 23:48:10

2

您可以使用其中任一這些庫的定製或顏色主題週期:

  • Do Re Mi,命令doremi-custom-themes+doremi-color-themes+。你需要doremi-cmd.el

  • Icicles,多指令icicle-custom-themeicicle-color-theme

隨着冰柱命令也可以縮小一組主題中循環的,並且可以以各種方式(即改變週期順序)排序。