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

10

我之前使用 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配合使用。现在我收到以下消息:
byte-code: Symbol's value as variable is void: org-babel-tangle-lang-exts
我在目录中搜索了所有提到org-babel的内容,只有上述表达式出现了。除此之外,当我删除它时,我的其余init-files代码都可以加载,这让我认为这段代码是问题所在。但是,为什么org-mode会引用我没有的函数呢?
运行emacs --debug-init后得到以下结果:
Debugger entered--Lisp error: (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) ; Reading at buffer position 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) ; Reading at buffer position 1464 load-with-code-conversion("/home/kca/.emacs.d/init.el" "/home/kca/.emacs.d/init.el" t t) load("/home/kca/.emacs.d/init" t t) #[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。感谢您的帮助!

2个回答

12

实际上,我遇到了麻烦,因为我不理解org手册的说明。 显然,为了获得文学编程功能,我确实需要在我的初始文件中加入(require 'org-install)(require 'ob-tangle)。 虽然我不确定之前是如何在babel中使R工作的。 哦,好吧,现在它能用了! 感谢#org-mode irc频道中的edenc。


2

尝试重新启动。 如果这没有帮助,请阅读以下内容...

使用二进制搜索您的init文件,以确定正在加载的代码是问题所在。

确保为有问题的代码加载源代码(*.el而不是*.elc)。

debug-on-error设置为非nil,这样您就可以获得关于错误上下文的回溯信息。

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

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

希望这有助于您开始查找问题的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接