region background 随时间变化

用的 Emacs 默认主题,region 的 background 会随着时间而变化,感觉有些神奇。 

 上图是白天时候的背景色

这第二张图片是晚上的(大概是在 22 或 23点后,没留意具体时间)

(face-attribute 'region :background)
;; 返回 "ns_selection_bg_color"

网上查了下这个 ns_selection_bg_color,也没找到有用信息,不知道有没有道友遇到过这种情况?怎么取消这个变化?(emacs -Q 也能复现)

https://emacsformacosx.com/ 是在这里下的 Emacs,一些版本信息

GNU Emacs 27.1 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G95)) of 2020-08-12
macOS 10.15.7 (19H2)

看起来感觉是个 BUG 啊,下面那个颜色有点丑啊。

晚上那个是有些丑,所以才来发帖子问问,话说你们的 Emacs 都是哪里下载的?打算换个版本试试看

我记得好像是 mac 上的特性, ns_ 开头的颜色会跟随系统夜间模式之类的东西更改

1 个赞

看了下这里的说明,确实是随着操作系统的模式来的,先参考那里的方式解决了

(when (and (equal (face-attribute 'region :distant-foreground)
                  "ns_selection_fg_color")
           (equal (face-attribute 'region :background)
                  "ns_selection_bg_color"))
  (set-face-attribute
   'region nil
   :distant-foreground 'unspecified
   :background "#BAD6FC"))

On Mac OS, Emacs uses ns_selection_fg_color and ns_selection_bg_color to determine the colors for the region face. When Mac OS activates dark mode, these colors change to dark blue, but they don’t change back when dark mode is deactivated (at least not in Emacs). So we avoid using these and instead use specific colors.

原文是说不能随着主题变化切换回来,我这是是能切换的,估计新版本修了这个 BUG。 但是这个夜间的背景色也确实太丑了,这算不算 BUG 呢?:joy:

Update:

/* This is to match emacs on other platforms, ugly though it is. */

1 个赞