我的配置本来是用org整理的,在 init.el
里面加入 (org-babel-load-file "~/.emacs.d/config.org")
就可以直接剥离加载 config.org
里面的elisp代码,之前开始用这种方式的时候感觉挺方便挺整洁,配置也容易分类查找,结果今天开始清理更新配置文件,各种重复的代码,听都没听说过的插件,完全不记得自己为什么设置了的快捷键,以及当初刚开始用emacs的时候乱设的十来个global-set-key
…
最严重的问题就是插件设置过于分散,这边一个require
加七八行setq
, 那边一块use-package
, 快捷键设置重复甚至矛盾,最严重的一个函数总共设置了三个快捷键…想想自己的emacs每天还能如同奇迹一般正常启动稳定工作实在是五味杂陈…
整理到一半实在整理不动了,过来问问大家有没有什么整理init.el
或 init.org
的好方法,把各种代码都按照一种规则分门别类整理好,以供未来修改或添加的时候既具效率又不失灵活性。或者也可以贴一下自己配置文件的整理架构。
1 个赞
帮顶+围观
我刚开始用 Emacs,还没有攒自己的屎山
4 个赞
参考purcell配置,每一个文件都对应一个插件的配置,
init.el … 集成所有需要的包以及需要对应的配置
其中,elpa-27.2文件夹储存具体的elpa包 lisp文件夹储存purcell对他们的配置
(注意,如果个人在lisp文件夹编写了init-local.el 那么也会被加载进入 purcell配置以此实现了个人自定义拓展)
mezi
5
我用straight + leaf。
- 一个功能的配置尽可能包含在一个leaf块当中
- 包分为核心包和非核心包。核心包一定会加载,非核心包可选择性加载相应的配置。
- 做了个
--mini
的自定义命令参数,加载最少的功能。确保配置出问题时,至少可以启动Emacs去修改。
- autoload文件单独存放,调用时再自动加载。
- lisp文件夹下存放拆分的配置文件。
- contrib文件夹下是自己hack的一些package,用straight加载。
- 通用工具宏在 library.el 中。
- 用 Radian(straight.el作者的配置) 的做法,主配配置和自己的local配置,在编译时全部编译成一个文件加载。
不过论最简洁清晰的结构还是 purcell 的配置,doom的黑魔法太多。
也可以参考下Modus-theme作者的配置结构也算比较清晰。
4 个赞
org文件中写配置,我原来用了很长时间,但是启动速度太慢了,每次改了org文件,会自动扫描重新提取里面的lisp配置代码,启动就更慢了,不如直接在lisp文件中配置了。
我也是org管理的,不过每个插件都标注下是为啥加进来的。。。感觉还可以
2 个赞
如果用 use-package 的话,感觉放在一个 init.el 文件就够了,use-packge 这个包的目的就是用来管理配置文件的,修改配置的时候通过 isearch,consult-imenu,或者 consult-line 就可以快速导航到 init.el 文件的各个位置。
配置切的很碎的话,在 Windows 系统下会明显增加启动时间,在 Linux 和 macOS 没那么明显。
包的安装可以选择 package.el,straight 或者 git submodule(我用 borg实现半手动)
2 个赞
所以我用doom,自己没力气去清用社区清好的,自己只负责一点点不同的部分就好了
2 个赞
以前有用过 org-mode 组织配置,不过那个时候感觉用的很呆,最后发现不如直接写 el 方便。
最近有了些新的想法。
- org-mode 里面可以用
M-;
去 comment 整个 section,然后 tangle 的时候就忽略了。用这个方式在多个方案中选择很方便。
- 配置应该高度模块化,比如说第一级的 section 是分类的话,那么第二级就是模块。每个模块应该都可以随意的去除,不影响其它部分。比如说去掉 meow 就只是把 editor 里面的 Meow 这个 section 去掉。
微服务在Emacs(笑)
不过话说回来了,有些模块实在是无法微服务化,比如company(因为它本身就是对模块的集成)
牵一发而动全身(叹气)
不会啊,你看我的配置里面 company 就是一个独立的 section 就搞定了。
如果你把这个 section comment 掉,所有的补全就会回到内置的 completion-at-point.
其它所有的地方,都和 company 是无关的。实际上这套配置里面,每一个模块都可以独立的加减。
1 个赞
SPQR
14
用use-package的话,尽量多用use-packge,把相关配置尽量放到同一个use-package代码块里面,use-package的keyword非常多,,如果你以后要lazy-load配置,对配置加载顺序还是很敏感的,用use-package可以方便debug;就算不用use-package,手动去require,with-eval-after-load,写autoload,也建议这样。
2 个赞
zhscn
15
这个情况从头配还省事点(顺便还能试试最近比较流行的新插件
我是核心用的包,函数都放在 core/core-xx.el里直接加载。
然后其他不重要的包的配置都放在lisp/pkg-xx.el(xx用包名替代),在这个文件里写文档,配置,require该包,做好 autoload。
然后init.el里写
(straight-use-package
`(my-lisp-autoload
:local-repo "~/.emacs.d/lisp/"
:build (autoloads)
:files ("pkg*.el")
))
我也是这样的想法,但是有些时候不知道具体该如何实现:
假设我同时使用Python和C,分别配置了python.el
和cc.el
;接下来写了两个钩子,利用eglot分别调用pyls和ccls,那么钩子相应的代码同时放到eglot.el
,还是前述两个文件呢?
请问狗哥的处理逻辑是什么?
很多方式,比如说在 python.el 做 eglot 的 with-eval-after-load.
我的意思是说,这部分配置及代码,要不要形成一个单独的文件,及其组织架构的逻辑。具体有哪些想法?不是强调实现的方法