如果你的org-mode babel和export出现迷之问题

比如你的org-mode出现:

  • 提示不能运行代码块,提示 evaluation of code-blocks xxx is disabled.,然而你100%保证配置没问题
  • 导出的时候不能导出,出现错误貌似是那句代码执行的类型不对,然而你也100%保证配置没问题

当然,你不是一个人,这里有很多和你一样头痛的老哥们:

答案是有可能是你的.elc文件在搞鬼!!!我也不知道这个坑爹的问题是怎么来的,但是建议你们在升级org-mode之后,执行命令:

:spacemacs/recompile-elpa

重新编译.elc文件。

1 个赞

因为 Emacs 自带的旧版本 Org 在第一次编译的时候被加载导致编译字节码的时候出问题。

暗日 @lujun9972 的博客上有解释。然而忘了具体是哪个博客了

执行代码块时提示"Evaluation of this XXXX code-blockis disabled."

出现这个问题的原因是在新版本的org-mode中"org-babel-check-confirm-evaluate"从一个宏变成了函数.

但在编译新org-mode时,若加载了旧org-mode,则会将"org-babel-check-confirm-evaluate"看成宏而不是函数.

解决的方法是删掉org或org-plus-contrib中的所有elc文件,并用 byte-recompile-directory 重新编译一次.

2 个赞

重启 Emacs,然后 M-x package-reinstall 应该也可以。关键是要确保安装前不要打开 Org 文件,(org) Installation 中有一些说明

Important: you need to do this in a session where no .org file has been visited, i.e., where no Org built-in function have been loaded. Otherwise autoload Org functions will mess up the installation.

dired/ranger 里面 M-: (byte-recompile-directory "." nil t) 最方便,既不用手动删除 elc 文件,也不用把所有 package 都重现编译一遍。

1 个赞

这个目录在 win7里在那呢? 我只找到了这个

c:\Users\Administrator.emacs.d\layers+tools\ranger\

……… 这不是目录啊…… dired 和 ranger 都是 Emacs 的文件管理器……

要说目录的话,就是安装 org-mode 的那个目录。