求教一个详细的git submodule管理插件的步骤说明

在init.el重新定义user-emacs-directory, 这个方法不错,试试

更新:在这几天组织配置的过程下,目前采取的方案是以git submodule为主,一些包在github没有找到的直接去elpa和melpa下载直接package-install-from-buffer,后面还要想办法用回use-package,因为确实还是方便

其实用 git submodules 管理给我的最大感觉就是 自由

一个包什么时候加载,如何加载,加载时干什么,这些都是完全由你自己控制的,不用再去为 use-package 的各种用法操心,只需要掌握最基础的 elisp 语法就行了

(纯属个人观点,请理性讨论)

1 个赞

主要也是因为之前有人说use-package用着方便,这几天只不过是手写这些配置,use-package本身只是个宏,到时候也要展开执行

git submodule 和 use-package 并不矛盾,两者可以同时使用。

反正现在的配置其实够用了,后面再说了就

来自两个月后的回复:您的折腾Emacs插件的文章目前已经404,可以更新一下相关文章链接了

猫大中间迁移过一次好像。

对应文章地址现在是: https://manateelazycat.github.io/2022/11/07/how-i-use-emacs/

他站里其他文章也适合读,可以直接读emacs相关标签: https://manateelazycat.github.io/tags.html#Emacs

已经更新了, 因为之前 jekyll 默认的文章连接和分类挂钩, 导致每次更换分类就会导致文章404, 所以前几个月更新了一下策略, 文章连接只和日期和名称有关系。

use-package 有个 pin 你可以看看,可以方便让你从melpa install

妙啊,我也是用基于git的插件管理方式,不过我使用subtree而不是submodule,我选择subtree的原因主要是:

  • 不用依赖特定runtime,独立执行
  • 安装插件的时候,只需要一个clone即可,而不需要git submodule update,也因此不会因为submodule的remote在github、gitlab、sourcehut等地方带来的网络不畅问题。
  • 可以控制插件版本

缺点也很明显:repo可能比较大,而且为某个plugin切换commit不方便,需要手动维护依赖。惭愧,我的管理工具是makefile+python糊的。

不过我觉得追求完美不如追求实效,我见有说法“emacs is all about choice”,深感赞同。我也套用下“it is all about trade-off”

1 个赞

补充一个问题:使用git submodule安装插件后,如何实现插件的按需加载?

按键自动绑定到autoload或者添加mode hook

可以结合 use-package 使用,bind commands hook 都可以做到按需加载。

请问如果某天 .gitmodules 指定的 url 失效了怎么办?

如果用 git submodule 管理插件,有没有比较好的规避这一问题的解决方案

谢谢~

另外请问如果使用 git submodule 记录了一个需要编译的插件

比如 treemacs,该怎样处理这个编译过程

手动处理即可

1 个赞

换个可用的 url 即可。

调用 magit-remote 换 remote url

1 个赞

近期新动态更新:暂时把 git submodule 管理插件的方案搁置下来,后面等研究好 Evil 和 use-package 在配置使用 Org-mode 上后,再会先实验性使用,后正式使用

推荐用use-package + straight ,应该能满足绝大多数场景。考虑稳定性的话尽量用melpa甚至 melpa-stable package。git-submodule也能管理,使用中不熟悉的话前期还是比较麻烦的,毕竟存在很多手工成分在。当然,对于大佬可以无视,哪种方案都可行,无非是习惯罢了。