9

我让 Emacs 工作得很好,然后我重新启动了我的电脑。现在这段代码阻止我加载我的初始化文件:

(require 'ob-clojure)
(org-babel-do-load-languages
     'org-babel-load-languages
     '((emacs-lisp . nil)
       (R . t)
       (python . t)
       (js . t)
       (scheme . t)
       (C . t)
       (clojure . t)
       (lilypond . t)
       (octave . t)))

我不知道为什么会这样。在我重新启动之前,我已经让 babel 与 R 一起正常工作。现在我收到消息:

字节码:符号作为变量的值是 void:org-babel-tangle-lang-exts

我在目录中找到了任何提到 org-babel 的内容,只出现了上面的表达式。再加上当我摆脱它时加载了我的其余初始化文件代码这一事实让我认为这段代码是问题所在。但是为什么 org-mode 会引用我没有的功能呢?

运行 emacs --debug-init 给出:

调试器进入--Lisp 错误: (void-function org-babel-do-load-languages) (org-babel-do-load-languages (quote org-babel-load-languages) (quote (... ... ... ... ... ... ...))) eval-buffer(#load<2>> nil "/home/kca/.emacs.d/init-org.el" nil t) ; 在缓冲区位置读取 3080 load-with-code-conversion("/home/kca/.emacs.d/init-org.el" "/home/kca/.emacs.d/init-org.el" nil nil) load("init-org") eval-buffer(# nil "/home/kca/.emacs.d/init.el" nil t) ; 读取缓冲区位置 1464 load-with-code-conversion("/home/kca/.emacs.d/init.el" "/home/kca/.emacs.d/init.el" tt) load("/home /kca/.emacs.d/init" tt) #[nil "\205\264

我试图检查是否正在加载正确的 org-mode 版本:

M-x load-library
org
M-x org-version
=> Org-mode version 7.7

这是加载它的 init.el 中的代码:

(add-to-list 'load-path (concat conf-dir "org-7.7/lisp"))
(add-to-list 'load-path (concat conf-dir "org-7.7/contrib/lisp"))

我正在使用 Emacs 23.2 和 Org-7.7。谢谢你的帮助!

4

2 回答 2

11

实际上,问题在于我不理解组织手册的说明。显然,我确实需要将(require 'org-install)(require 'ob-tangle)放入我的 init 文件中才能获得有文化的编程功能。不过,我不确定我之前是如何让 R 在 babel 中工作的。哦,现在可以了!#org-mode irc 频道中的 edenc 提示。

于 2011-09-29T04:05:11.927 回答
2

再次尝试重新启动。然后在这里阅读其余部分,如果这没有帮助......

使用您的初始化文件的二进制搜索来确定您正在加载的代码是什么问题。

确保为有问题的代码加载源代码(*.el, not *.elc)。

设置debug-on-error为 non- nil,因此您会得到一个回溯,告诉您有关错误上下文的一些信息。

如果错误完全包含在某个外部包中,请确保该包的所有文件都用于相同的包版本。

如果您唯一更改的是重新启动,那么问题可能出在环境变量中。一种猜测是,由于某种原因,您的变量load-path没有正确的值,因此它没有加载您需要的所有文件。或者,也许您移动了该软件包的一些代码?

HTH。应该让您开始了解有关该问题的更多信息。

于 2011-09-26T01:11:17.797 回答