今天看到 org2blog 有最新版本,就更新了一下,然后在使用 org2blog 的时候,就提示说需要升级到 orgmode 8.x 版本。于是我从源里安装了最新的 orgmode,可是依然提示这个 orgmode 版本不对的问题。我用的是 Emacs 24.3 版本(里面自带是 7.x orgmode 版本),于是我下了一个最新的 Emacs 24.4 版本(里面自带的是 org mode 8.2.10 版本),这时再使用 org2blog,则提示如下错误:

File error: Cannot open load file, org-publish

仔细找了一找,原来是 org mode 升到到 8.x 版本后,有大量的函数或是变量名称被修改了,从而导致原来适用于 orgmode 7.x 版本的配置文件需要进行修改。在我的配置文件里,主要存在以下几种修改:

1. 针对 org-publish 函数的修改

如果你的 org 配置文件提示如下错误(针对 Emacs 24.3):

File error: Cannot open load file, org-publish

或是如下错误(针对 Emacs 24.4):

File error: Cannot open load file, no such file or directory, org-publish

则你需要把代码里的

(require 'org-publish)

修改为

(require 'ox-publish)

2. org-publish-org-to-html 函数的修改

如果你和我一样,使用 org mode 来导出笔记为 html 文档以方便阅读,则在升级到 orgmode 8.x 后用 M-x org-publish-current-project 来发布当前工程时,一定会碰到类似下面的错误:

Debugger entered--Lisp error: (void-function org-publish-org-to-html)

这时,记得把配置文件里的 org-publish-org-to-html 这个函数修改为 org-html-publish-to-html 这个新函数名称。

如果你需要把 org 文件发布成 LaTeX,同样也有类似的函数需要更新。

3. 在配置文件里内置 style 的修改

如果你和我一样,为了方便,让生成的本地 html 文件使用了 :style 关键字来指定 html 的样式,则需要把 :style 修改为 :html-head

To specify a style for the project :style keyword changes to :html-head

4. 吐槽

Emacs 界是不是从来不关心向下兼容的问题?起码我感觉我经常在升级的过程中,碰到一些莫名其妙的配置文件错误。