经常被突然出现的编译打断,尤其是更新过插件后,想问一下有什么不会被打断的方案吗? 哪怕初始编译的时间久一点。
尝试搜索过几个选项,例如 native-comp-always-compile t
好像并没有起到效果。
感谢🙏
经常被突然出现的编译打断,尤其是更新过插件后,想问一下有什么不会被打断的方案吗? 哪怕初始编译的时间久一点。
尝试搜索过几个选项,例如 native-comp-always-compile t
好像并没有起到效果。
感谢🙏
可以使用 native-compile-async
编译
编译的时候加上 NATIVE_FULL_AOT=1
package 更新之后总得编译一次的. 不过 package.el 应该有个 package-native-comp
变量, 打开之后会在 install 的时候就编译, 可能有点帮助吧.
感谢大家回复,目前重新用 NATIVE_FULL_AOT=1
编译了 emacs28,正在重新编译所有的 packages, 还没结束。
看了下 package-native-comp
确实有帮助。
写个攻略?让大家学习下,哈哈哈哈哈
可不敢在各位大佬面前班门弄斧,只能分享下折腾的经历,说错的地方还请指正!
通过 NATIVE_FULL_AOT=1
重新编译 Emacs 后再启动会进入一个比较漫长的 native comp 阶段,可能是编译之前没用过的依赖。 按照 EmacsWiki 的解释,这个是 ahead-of-time compile Emacs distribution.
package-native-comp
是一直在寻找的配置选项,之前搜索 ^native-comp
完全忽略了这个选项。启用后,当某个包(例如 magit)更新完毕后直接开始编译,下次就不会在使用 git 时被突然冒出来的 magit 编译过程打断了。
按照 EmacsWiki 的提示,估计是 use-package 没有处理这个方面,而 straight.el 会默认在包更新完毕后开始编译。以后时间充裕了再去尝试 straight.el。
最后,写了个方法以备不时之需:
(defun my/aot-compile-all ()
(interactive)
(native-compile-async "~/.emacs.d/elpa" 'recursively))
目前半天用下来,还没有遇到突然编译的情况,好像个别几个依赖会在后台编译,但不会提示,突然卡手一下然后很快又恢复流畅。
用 gccemacs 还有一个问题,升级包之后eln文件不会删除,导致缓存中有一大堆eln文件。删除包再重新安装就会删除老的eln文件。
是不是跟这个变量package-native-compile
有关系?
可以用 native-compile-prune-cache
删除不需要的 eln 目录。
不是目录,是想删除不需要的eln文件。这条命令行吗?
为什么要自动编译? gccemacs 再快都不应该自动编译, 是否编译要交给用户自己去控制, 自动编译的设计真的是非常干扰第一次安装和日常使用。
应该不行。看了下 comp.el
,没有找到相关的函数。
其实,我认为这是bug。。。
straight.el 应该是自己实现了这个功能,没有直接配置这个变量
日常使用确实被影响到了,等到月底就有时间去折腾下 straight.el
刚才试了下,在 emacs master
里编译新的文件时会替换掉旧的。不知道什么时候修复的这个 bug