尝试移除 yasnippet 时遇到的奇特问题

平时几乎不用 yas , 最近发现了一个更轻量级的 tempel 就决定改用它了。鼓捣了一下配置之后,顺手把 elpa/ 删了,打算把所有包的重新安装一下。

然后重启 emacs 安装包的时候傻了,报了一大堆依赖错误,很多八杆子打不着的包都说找不到 yasnippet,比如 vterm, magit, jinx 之类的。类似的问题以前在用 doom 的时候也遇到过,当时重启几次把中断的安装进程继续下去一般就会神奇地好了。然而我重启了几次之后虽然没弹 error 了,但是在执行某些命令的时候都会出现奇怪的错误,比如第一次执行 list-packages 居然会提示创建一个莫名其妙的文件。

于是去看 *message* buffer,果然有一堆错误,一连串的包安装之后居然没有生成 autoloads 文件。于是决定去二分 init.el ,结果连这也打不开了,提示找不到 yasnippet??

谜底揭晓

debug-on-error 之后才发现是 lsp-bridge 的 prog-mode 钩子的问题,之前我以为用 (setq acm-enable-yas nil) 就不使用 yasnippet 了。在安装包之后生成 autoloads 文件时会触发 lsp-bridge ,然而它依赖 yas 于是就导致创建失败,这就导致了各种各样奇特的错误。

不要追求所谓的轻量,那是折腾。

tempel根本就不成熟。

emacs的很多包,作者都以轻量为卖点,但是大多数轻量的包性能并不好,也不成熟,完全是为了折腾而折腾。

1 个赞

确实是,我前段时间也换回 Yasnippet了

1 个赞

可能最后还是不得不回去用 yas :sweat_smile:

主要是看到 tempel 用法很简明,而以前在用 yas 的时候给我造成的麻烦比用处多,感觉它对我来说太复杂了

补全我是用tempel实现yas的功能,需要自己创建一个yasnippet.el里面加句(provide 'yasnippet)。其它配置参考: .emacs.d/settings/package_extra.el at f47a7a753caa7f3a4c2e9d09631a36a3b27c9159 · lynnux/.emacs.d · GitHub 仅供参考,我的hack一般是比较多的。 tempel模板在 .emacs.d/packages/tempel_templates at master · lynnux/.emacs.d · GitHub 用了很久了,除了偶尔会多需要按下tab把状态重置,没什么大问题。

1 个赞