Emacs 27 配置路径

今天在 Linux 中升级了 Emacs 27到最新版本,发现user-init-file默认值居然变了,是~/.config/emcas/init.el,而不是以前的~/.emacs.d/init.el。搜索 chang log 没找到相关内容。有同学碰到吗?

1 个赞

好像是这样,我在irc里看到人们正说这个

是什么原因呢?闲着没事改这个干嘛呢?

不知道,反正我电脑里好多软件的配置文件貌似都放到.config里了,另外还有个目录.local,一些生成的文件比如缓存索引也统一到这个目录里。莫非是有新的规范?

https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00624.html

应该是一个maintainer自作主张推上去的。估计会被revert

2 个赞

我也认为很无厘头,也没有必要。其他 OS 上又没有这样的习惯,会造成不一致。maillist 里这位说得很客观,应该改回去才是。

可以暂时在early-init改回去

NEWS mentioned this change. https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS#L147

如果这个环境变量是 shell 登录时才读取的话,那么通过 xsession 启动的 emacs 读不到这个环境变量。

看起来是一位冲动型的 maintaner,想干就干,不计后果。

后边还有一位指出,其实改得不彻底,启动时依然会创建 ~/.emacs.d :joy:

1 个赞

是啊,关键是不讨论就 merge 了,实在有点无语

我记得这个是没有.emacs.d的时候才改成.config

感觉Emacs的开发还有待规范化, 比如这个bug https://lists.gnu.org/archive/html/emacs-devel/2019-09/msg00026.html

这个补丁的作者在添加noinline功能的时候忘记常规函数不能直接被setf展开,需要额外定义setter,结果导致用noinline定义的struct的accessor没法用setf来赋值。

这种情况如果有写测试,CI跑一下立刻就能发现,引入这个bug的提交是4月份的,结果现在9月份,我闲的无聊用macrostep看cl-defstruct的时候才发现。

救救FSF

3 个赞

最后那句话不用划掉

在cireu的链接里偶然点到一封教主的mail,里面贴了个有趣的链接:

https://sanctum.geek.nz/why-not-github.html

EEE骚操作是真的很effective

教主反对一切中心化的项目,github也不例外,哈哈

因为我没钱,只能喊口号,但是又觉得慷他人之慨不妥

3 个赞

他 改 变 了 init 文 件 位 置

  • 首先假定目录为~/.config/emacs
  • 如果存在环境变量XDG_CONFIG_HOME用这个代替~/.config
  • 如果从XDG convention找不到emacs/init.el,那么寻找传统的home目录下的~/.emacs.d/init.el或者~/.emacs,另外emacs现在还会把~/.emacs.el纳入考虑
  • 如果都找不到,使用XDG convention的目录建立配置文件夹

另外,现在允许用户在early-init.el任意修改emacs配置文件夹变量

我觉得这人就是闲着没事干,不如改进改进其他的地方 :joy: