2012-03-28 53 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

随着冰柱命令也可以缩小一组主题中循环的,并且可以以各种方式(即改变周期顺序)排序。