UP | HOME

▼ 本文更新于 [2025-11-28 五 19:47]

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-colorsef-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)))

© Published by Emacs 31.0.50 (Org mode 9.8-pre) | RSS English-Index