我目前正在为emacs 24使用新的customtheme工具,我希望能够通过按键(例如f12)来循环自定义主题。
下面的代码听起来就像我想要它做的那样,但它使用了颜色主题,我不想这样做。我不熟悉Lisp还没有自己编写或者从旧版本转换为新版本。是否有人可以使用新的内置load-theme命令帮助我将相同的功能添加到emacs 24中?
此外,基于this discussion,我可能需要在每次调用函数时调用disable-theme。
非常感谢任何帮助。
这是使用color-theme
的旧解决方案(defun my-theme-set-default () ; Set the first row
(interactive)
(setq theme-current my-color-themes)
(funcall (car theme-current)))
(defun my-describe-theme () ; Show the current theme
(interactive)
(message "%s" (car theme-current)))
; Set the next theme (fixed by Chris Webber - tanks)
(defun my-theme-cycle ()
(interactive)
(setq theme-current (cdr theme-current))
(if (null theme-current)
(setq theme-current my-color-themes))
(funcall (car theme-current))
(message "%S" (car theme-current)))
(setq theme-current my-color-themes)
(setq color-theme-is-global nil) ; Initialization
(my-theme-set-default)
(global-set-key [f12] 'my-theme-cycle)
答案 0 :(得分:3)
FWIW,这里有两个现成的方式(使用冰柱或 Do Re Mi )到cycle Emacs custom themes(你是什么人)为Emacs 24调用颜色主题,但它们是自定义主题,而不是颜色主题)。同一页面解释了颜色主题和自定义主题之间的差异。
答案 1 :(得分:1)
这里有一些类似于JakubHozak代码的代码,但切换速度不如颜色主题快。我完全不明白为什么,但它似乎是由自定义主题和颜色主题之间的差异引起的。虽然如果你将自行车限制在emacs附带的主题上,它似乎更可忍受。
(setq my-themes (list 'tango 'solarized-dark 'solarized-light 'alect-dark)) ;;the themes I cycle among
(setq curr-theme my-themes)
(defun my-theme-cycle ()
(interactive)
(disable-theme (car curr-theme)) ;;Nee flickeringded to stop even worse
(setq curr-theme (cdr curr-theme))
(if (null curr-theme) (setq curr-theme my-themes))
(load-theme (car curr-theme) t)
(message "%s" (car curr-theme))
)
(global-set-key [f12] 'my-theme-cycle)
(setq curr-theme my-themes)
(load-theme (car curr-theme) t)