视频里主要讲,在长期使用 Emacs 之后,配置变得超长,Emacs 也开始变得难用。Up 主分享了自己后来是如何摆脱这个这种情况。
这个 Up 主的分享都挺有料的,可惜中间断了 2 年没有分享。但最近的分享都不错,他成功地激发了我想尝试在终端使用 Emacs 的兴趣。
视频里主要讲,在长期使用 Emacs 之后,配置变得超长,Emacs 也开始变得难用。Up 主分享了自己后来是如何摆脱这个这种情况。
这个 Up 主的分享都挺有料的,可惜中间断了 2 年没有分享。但最近的分享都不错,他成功地激发了我想尝试在终端使用 Emacs 的兴趣。
我从一开始就是手动攒的emacs配置,中间改用org配置之后时不时就会回头重看一次
前几天还在 EmacsWiki 上看到了这个词:
但 wiki 里是 .emacs (dot emacs) bankruptcy;Emacs backruptcy 听起来显然更可怕一点。
梭哈org literate startup是对的
我的建议是:
第一,当某个配置是巨量且成熟的,把它独立成一个包。即使没成熟也可以向某个包倾斜改造。
第二,配置本身如果没有特别大的作用就放弃配置。
第三,别想着solo,比如 GitHub - LionyxML/emacs-solo: A Pure Emacs (no external packages) IDE like configuration. 这种,看起来不安装第三方包,轻量化了,实质上又重新造了一堆。。。
之前没听说过这个solo,不过我目前正在把自己的配置往尽量使用内置包的方向改造,我个人感觉如果你是本身安装插件就很少的那种还是可以考虑的,比如我在solo化之前只安装了50+个包,这个时候即使只用内置功能替换掉5个包也意味着有至少10% 的配置现在依赖于更加稳定的elisp代码。
你说的另外两条我非常赞同,我的emacs配置最多的时候是120+包,7k行init.el,把一些常用功能写成minor-mode然后删除一大堆可有可无的包之后锐减到50+包,3k行init.el,目前我是32个包,2k行init.el,维护成本很低
其实改造内置的包这件事很好,但是以此为某种噱头,我个人不太认同,他单个文件六千八百多行。。
我非常同意这点。很多功能的复杂性和全面性本身就是决定了代码量不可能少。自己造轮子就代表了你的实现的功能很多时候是不完善的,只是恰好没遇到不满足的需求或者 edge case 而已。做的很多工作仅仅只是为了不引入第三方包而不引入而已。甚至有些 emacs 的内置包比起第三方的包都是这样的。比如 eglot 代码量要比 lsp-mode 少很多,但是 eglot 到现在都做不出来多个 lsp attach 到同一个 buffer,但是 lspmode 从第一天就能做到这个。当然要是不写 js,python 之类的语言可能不需要多 server。但是很多时候用户就是需要这个多 lsp 的支持的。这个时候第三方包是不得不用,为了用内置而用根本没意义。
至于说功能的稳定性,有 straight 的 lockfle,有自建 elpa-archive,有用 borg 以 submodule 的方式来进行包管理,都能保证可重复性的构建。并不是说用了第三方包就不会不稳定。而且也不是说只要是内置包就一定稳定不会被 breaking change。xwidget-webkit 就是内置包,但是上游 gtk 破坏了兼容性,社区没有人有能力修补丁,一样用不了了。
很多包或者配置都是看着好玩就加进去了,适时整理就问题不大。 关键还是看需求。
Eglot 作者目前在搞这个多后端支持了。不过不是直接在 Eglot 中支持,而是搞了个外部的程序实现多个后面合到一起,最后给 eglot 用。目前已经用 Python 写了个原型:
org-babel 拯救了我的配置