用文学编程写 Emacs 配置文件
文学编程(Literate programming)由高德纳提出一种编程方法——用写文字作品一样的方式来表达代码逻辑。
这种方式尤其适合写 Emacs 配置文件——如果你的配置文件杂乱无章。它比单纯的注释更好——更易读、内容更丰富,并且内容的逻辑性更强。配置文件最终不再是单纯的配置文件,同时也是一篇表达你定制 Emacs 想法的文章。
Emacs 里靠 Org mode 就可以轻松把配置文件写得像一篇文档一样,只要两个步骤:
1、在 Emacs 配置文件(~/.emacs.d/init.el)中加入:
(require 'org) (org-babel-load-file "~/.emacs.d/startup.org")
2、像写文档一样写编写 ~/.emacs.d/startup.org,比如截取我的其中一部分内容:
* 包管理配置 Emacs 首先加载配置文件(~/.emacs 或 ~/.emacs.d/init.el),然后再加载 ELPA,但配置文件中依赖 ELPA,所以配置文件中手动加载: #+BEGIN_SRC emacs-lisp (setq package-enable-at-startup nil) (package-initialize) #+END_SRC 使用三方的软件源,有更丰富的插件: #+BEGIN_SRC emacs-lisp (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "https://melpa.org/packages/") ("melpa-stable" . "https://stable.melpa.org/packages/"))) #+END_SRC
背后的原理:
首次启动 Emacs 时:
- 通过 org 库的 org-babel-load-file 函数加载 startup.org 文件;
- 提取
#+BEGIN_SRC emacs-lisp ... #+END_SRC
之间的 Emacs Lisp 代码; - 把提取的代码写到 startup.el 中。
下次启动时,先检测 startup.org 内容有无变化,无变化就直接加载 startup.el 内容;否则重复以上步骤。
更多的参考,不妨去 GitHub 搜索“org-babel-load-file”,看看别人是怎么写。