Emacs 看到具有新 org-mode 版本的目录,但加载旧版本

Emacs sees the directory with the new org-mode version, but loads the old version

我的 Emacs (24.5.2) 版本附带的 org-mode 版本是 8.2.10。我已经从 ELPA 安装了 8.3.1 版本并将其添加到我的初始文件中:

(add-to-list 'load-path "~/.emacs.d/org-20150803")
(require 'org)

当我在 Emacs 中检查 org 的版本时,它显示:

Org-mode version 8.2.10 (release_8.2.10 @ /home/meir/.emacs.d/elpa/org-20150803/)

即报旧版本和新目录...(内置版本位于/usr/local/share/emacs/24.5/lisp/org

我已经尝试了建议的解决方案 here and here

这是我的初始化文件的相关部分(这部分之前没有任何内容):

(require 'cl)

;; Org-mode that was shipped with Emacs
(setq load-path (remove-if (lambda (x) (string-match-p "org$" x)) load-path))
;; ELPA
(setq load-path (remove-if (lambda (x) (string-match-p "org-20" x)) load-path))

(add-to-list 'load-path "~/.emacs.d/org-20150803")

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

(require 'org)

如何让 Emacs 加载新版本的 org-mode

更新:我将 /usr/local/share/emacs/24.5/lisp/org 重命名为 /usr/local/share/emacs/24.5/lisp/org1,所以 Emacs 肯定看不到内置版本。但是,它仍然显示旧版本号!..

我建议您通过删除任何个人安装的 org 版本重新开始:

rm -rf ~/.emacs.d/elpa/org-* # your installation path _may_ vary.

然后

  • 确保当你从 elpa 构建 org 时你还没有加载 org.
  • 决定你想要哪个版本的 org 以及它来自哪个包存档。

例如,如果您像我一样想要 http://orgmode.org/elpa 的 org-plus-contrib,首先您应该:

> emacs -Q -batch -eval "(progn (require 'package) (add-to-list 'package-archives '(\"org\" . \"http://orgmode.org/elpa/\"))  (package-initialize) (package-refresh-contents) (package-install 'org-plus-contrib))"

然后,通过退出 emacs 并重新启动来确认成功:

> emacs -q -eval "(progn (require 'package) (package-initialize))" 
meta-x org-version

备注:

  • 如果您不包含 -eval "(progn (require 'package) (package-initialize))" 那么 org-version 可能会从您在 .../site-lisp 中安装的任何内容自动加载 - 可能是旧版本
  • 常规的 'org 包也可在 http://orgmode.org/elpa - c.f 获得。 http://orgmode.org/elpa.html 差异