用文学编程写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时:
- 通过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”,看看别人是怎么写。