我本来用的是 package.el 和 quelpa 组合的方式管理包;仿照doom-emacs的形式,用make file安装/更新包。package.el 和 quepla 的组合有这么几个痛点:
- 包更新的函数基本上是一个大hack。
- 一边使用一边开发包很麻烦
因为 2. 我尝试了straight.el,和el-get,问题:
- 系统都比较复杂,尤其是el-get,我看了一周末才搞清楚怎么用
- 都有几个包装不上,因为系统复杂,我死活搞不清楚怎么回事
- straight.el不能shadow clone,而且org-mode还有bug
懒猫说他都是手动管理包,一开始我觉的这得多麻烦啊,不过实际上这样有几个好处(对我来说)
- 直接git clone,一边开发一边用就很方便
- 我的配置承担了autoload和load-path的配置,我不需要其他包管理器的这些功能,我只要把包下下来就够了
- 不用跟包管理器较劲,减轻心智负担
- 配置少一个外部依赖
- 可以shadow clone
我觉得这个吼的呀,我不用像懒猫一样纯手动用git submodule(工作量有点大),我可以写个小函数帮我把所有包直接clone下来。然后就完了,so easy。
唯一有点麻烦的是记录所有我用到的包的recipe,不过很快就写完了。
结果是cowboy.el,一共有三个函数:cowboy-install
cowboy-update
cowboy-delete
。一共一百多行代码吧,很简单但是用起来还行。目前只支持github。
这里是代码:cowboy.el
你们对半手动管理包怎么看?我觉得这种方法唯一的缺点可能是不能支持很复杂的build,我的计划是太复杂的就直接手动装。这样的话可以尽量把包管理简单化和透明化,出问题也好解决。