emacs-更改配色方案
: 由于 ef-themes 现在基于 modus-themes ,因此有许多改变。
: 改用 seq-random-elt 函数来从列表中随机取值。
这两天将emacs的配色方案由用了接近10年的gruvbox-light-soft换到了随机切换的ef-themes。
1. 随机切换主题
我挑选了几个自己看得比较顺眼的 ef-themes 主题,参考官方配置设置启动Emacs时随机切换,放到 init.el 中。
(use-package modus-themes)
(use-package ef-themes
:init
;; 仅使用ef-themes
(ef-themes-take-over-modus-themes-mode 1)
:config
;; 取消org标题的粗体
(setq modus-themes-headings ; read the manual's entry or the doc string
'((0 . (regular 1))
(1 . (regular 1))
(2 . (regular 1))
(3 . (regular 1))
(4 . (regular 1))
(5 . (regular 1)) ; absence of weight means `bold'
(6 . (regular 1))
(7 . (regular 1))
(t . (regular 1))))
;; 禁用粗体、斜体
(setq modus-themes-mixed-fonts t
modus-themes-variable-pitch-ui nil
modus-themes-bold-constructs nil
modus-themes-italic-constructs nil)
;; ;; Disable all other themes to avoid awkward blending:
;; (mapc #'disable-theme custom-enabled-themes)
;; Random load the theme of choice:
(modus-themes-load-theme (seq-random-elt '(ef-arbutus ef-cyprus ef-day ef-eagle ef-elea-light ef-frost ef-kassio ef-light ef-maris-light ef-melissa-light ef-reverie ef-spring ef-summer ))))
2. 配置自动取色
利用 modus-themes-get-color-value 宏,获取色彩原始字符串。色彩名称可通过 ef-themes-list-colors 或 ef-themes-list-colors-current 查看。
2.1. nano-modeline配色
(use-package nano-modeline
:demand t
:custom-face
;; 自定义nano-modeline的配色
(nano-modeline-status ((t (:background ,(modus-themes-get-color-value 'fg-alt) :foreground ,(modus-themes-get-color-value 'bg-main)))))
(nano-modeline-inactive ((t (:background ,(modus-themes-get-color-value 'bg-inactive) :foreground ,(modus-themes-get-color-value 'fg-dim)))))
(nano-modeline-active ((t (:background ,(modus-themes-get-color-value 'bg-alt) :foreground ,(modus-themes-get-color-value 'fg-main))))))
2.2. sis的光标颜色
初始英文状态下为深灰色,中文状态下为特殊颜色,与nano-modeline的配色一致。
(use-package sis
:demand t
:config
(setq sis-other-cursor-color (modus-themes-get-color-value 'fg-alt))
(setq sis-default-cursor-color (modus-themes-get-color-value 'border)))