用文学编程写Emacs配置文件

文学编程(Literate programming)由高德纳提出一种编程方法——用写文字作品一样的方式来表达代码逻辑。

这种方式尤其适合写Emacs配置文件——如果你的配置文件杂乱无章。它比单纯的注释更好——更易读、内容更丰富,并且内容的逻辑性更强。配置文件最终不再是单纯的配置文件,同时也是一篇表达你定制Emacs想法的文章。

Emacs里靠Orgmode就可以轻松把配置文件写得像一篇文档一样,只要两个步骤:

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时:

  1. 通过org库的org-babel-load-file函数加载startup.org文件;
  2. 提取 #+BEGIN_SRC emacs-lisp ... #+END_SRC 之间的Emacs Lisp代码;
  3. 把提取的代码写到startup.el中。

下次启动时,先检测startup.org内容有无变化,无变化就直接加载startup.el内容;否则重复以上步骤。

更多的参考,不妨去Github搜索“org-babel-load-file”,看看别人是怎么写。