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

时间:2011-09-25 21:40:27

标签: emacs org-mode org-babel

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

(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)))

我不知道为什么会这样。在我重新开始之前,我已经让巴贝尔与R一起工作了。现在我收到消息:

  

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

我grep'd目录中提到org-babel的任何内容,只有上面的表达式出现了。再加上我摆脱它时我的其他init文件代码加载的事实让我觉得这个代码就是问题所在。但是为什么org-mode会引用我没有的函数?

运行emacs --debug-init给出:

  

调试器输入 - Lisp错误:(void-function org-babel-do-load-languages)     (org-babel-do-load-languages(引用org-babel-load-languages)(引用(...... ...... ...... ...... ......)))     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)     负载( “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”t t)     load(“/ home / kca / .emacs.d / init”t t)     #[nil“\ 205 \ 264

我试图检查是否正在加载正确的组织模式:

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 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:2)

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

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

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

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

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

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

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