在emacs 24中,应用颜色主题的顺序似乎很重要。如果你做M-x color-theme-select,这很明显。您的订单
有人对此问题有任何了解吗?
我希望能够在不重新启动的情况下切换以下颜色主题:
我想我需要相当于emacs的css-reset。 另一个非常宝贵的提示是,如果你使用邪恶,那么你需要这条线,否则你的光标会保持黑色,这对于黑暗主题来说太可怕了:
(setq evil-default-cursor t)
这是一个相关问题:Switching between color themes in Emacs ( < v.24)。我使用的是Emacs 24.0。我发布这个问题是因为我正在寻找24.1之前的解决方法,或者如果24.1足够稳定可能会提供建议。
答案 0 :(得分:17)
在我看来,即使在Emacs 24上,你仍然使用旧的(并且没有维护的)颜色主题包。 Emacs 24有一个内置的颜色主题基础设施(以及zenburn和solarized之类的主题已被移植到它),我建议你使用它。有关deftheme
和朋友的详细信息,请查看here。
Т®回答您关于颜色主题的特定问题 - 主题通常不会定义以前主题可能已调整的每个面孔并导致您的问题。移动到主题之间的默认主题可能被认为类似于css重置。
答案 1 :(得分:10)
要在加载新主题之前自动禁用当前主题,您还可以使用建议:
(defadvice load-theme
(before theme-dont-propagate activate)
(mapcar #'disable-theme custom-enabled-themes))
答案 2 :(得分:5)
在.emacs / init.el中插入以下代码, 我绑定 C-t 以指定的顺序循环浏览固定的主题列表。这与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)
答案 3 :(得分:4)
我写了一个函数,在emacs切换到新主题之前禁用当前主题。
您可以将以下代码段粘贴到您的init.el中并使用M-x l0ad-theme。
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)))
答案 4 :(得分:3)
正如其他人所说,切换到Emacs 24版本的主题。使用后,您可以使用disable-theme
“撤消”主题。只要给它传递给load-theme
的相同参数,你应该回到一个空白的板块。然后只需加载新主题。
答案 5 :(得分:2)
您可以使用以下任一库在自定义或颜色主题之间循环:
Do Re Mi,命令doremi-custom-themes+
和doremi-color-themes+
。您需要doremi-cmd.el
。
Icicles,多命令icicle-custom-theme
和icicle-color-theme
。
使用Icicles命令,您还可以缩小主题集以在其中循环,并且可以以各种方式对其进行排序(即,更改循环顺序)。