分享一种基于 org 跨文件 noweb/tangle 的系统配置文件管理方式 个人已经尝试(踩坑)了大半年,觉得还挺顺手。
主要目的是为了能把软件配置和对软件的笔记放在一起,比如把 emacs-rime 的配置和 rime 的笔记放在同一个 org 的不同 header 下,evil 的配置和 vim 的配置也放在同一个 org 下便于对比。把配置当作知识用 roam 来管理查询,同时可以方便导出供软件进行加载。
分享一种基于 org 跨文件 noweb/tangle 的系统配置文件管理方式 个人已经尝试(踩坑)了大半年,觉得还挺顺手。
主要目的是为了能把软件配置和对软件的笔记放在一起,比如把 emacs-rime 的配置和 rime 的笔记放在同一个 org 的不同 header 下,evil 的配置和 vim 的配置也放在同一个 org 下便于对比。把配置当作知识用 roam 来管理查询,同时可以方便导出供软件进行加载。
这种管理最大的缺点就是做了改动之后需要tangle后才能运行, 会有点卡手.
楼主是怎么用 helm 的?可否详细介绍一下你的经验?
这个确实是代价,emacs 本来是直接对 init.el 进行解释,但把代码放在 org 后,org 是无法直接被 emacs 解释的,这就就相当于把 org 当作源代码,tangle/make 是编译构建的过程了。类似从解释型语言换成编译型的代价
但如果是尝试新的包或者做一些实验性的修改,我一般直接改 init.el ,然后启动新的 emacs 验证没问题了再把代码加到对应的 org 文件里。这两个过程目的是不一样的,修改 init.el 是为了使得 emacs 启动后有某个新的功能,但把这个代码放到哪个 org 文件里,实际是思考这个修改和整个 roam 知识库里哪些节点有关,更多是知识管理的层面。
我没有用 helm,minibuffer 补全用的是 ivy, 只是为了能比较方便执行 make, 所以安装了 helm-make (应该是自动依赖了 helm), 我的配置里和 helm 有关的就只有一句:
(use-package helm-make)
樓主你用的那個配置方法,不知道有沒簡單的demo可以參考一下
给配置 org 文件设置个保存时自动 tangle 即可
要能够跨文件调用 elisp src block ,只需要在 org-babel-load-languages 里加上 org 就行:
(org-babel-do-load-languages
'org-babel-load-languages
'(
(emacs-lisp . t)
(org . t) # 这一句
(jupyter . t)
))
如果要在 emacs 里执行 make 就加上:
(use-package helm-make)
应该没有额外的要写在 init.el 里的配置了。其他都是外部脚本,用来给不同配置(vim, emacs, bash 等)进行 tangle 用的,核心代码在 blog 里都有给出。
有疑问的话,可以问得具体一点,我也更容易回忆起来,好几个月没改过这部分了
好的,先謝啦。我自己先研究一番,感謝