Emacs组织模式gnuplot:运行计时器时出错:(无效变量数据文件)

Emacs组织模式gnuplot:运行计时器时出错:(无效变量数据文件),emacs,gnuplot,org-mode,Emacs,Gnuplot,Org Mode,每当我在emacs org模式下调用命令org plot/gnuplot,我都会得到相同的错误error running timer:(void variable data file)。我在Debian Jessie中使用emacs 24.4.1,在Mac Os上使用emacs 24.5。两个系统都有一个工作版本的gnuplot。我甚至在没有.emacs文件的情况下运行emacs时尝试了这个命令,但仍然得到了相同的错误 编辑:找到了!见下面的原始答案。在其中,我找到了引用数据文件的行。原始源文件

每当我在emacs org模式下调用命令
org plot/gnuplot
,我都会得到相同的错误
error running timer:(void variable data file)
。我在Debian Jessie中使用emacs 24.4.1,在Mac Os上使用emacs 24.5。两个系统都有一个工作版本的gnuplot。我甚至在没有.emacs文件的情况下运行emacs时尝试了这个命令,但仍然得到了相同的错误

编辑:找到了!见下面的原始答案。在其中,我找到了引用
数据文件
的行。原始源文件中关于这一行的注释提到,对gnuplot4进行了修改。再加上@vu nguyen的评论,我下载并编译了这本书

我编译并安装了它,因此:

./configure --with-cwdrc --with-readline=gnu --enable-backwards-compatibility
make
sudo make install
它开始工作了

原始答案 我删除了我的
elpa
文件夹,并重新安装了我的elpa软件包,以确保我没有使用“脏”软件包文件夹。编辑:我甚至卸载了最新版本的
gnuplot
软件包,并安装了较旧的版本(
20140317
0.6.6
),但没有任何帮助

看起来唯一谈论数据文件的包是gnuplot:

gnuplot.el:2820:(“(gnuplot)数据文件“nil”[\u a-zA-Z0-9]+)


也许是个bug?

是个bug。函数org plot/gnuplot(在org plot.el中)尚未更新以说明词汇范围的变量。通过首先查找org-plot.el源文件(一种方法是

m-x apropos ^org-plot/gnuplot$ 
然后单击结果顶部的文件链接)并替换org plot/gnuplot函数中的最后一个表达式(使用c-m-f快速结束)

改读

(run-with-idle-timer 0.1 nil (lambda (data-file) (delete-file data-file)) data-file)
最初的代码期望lambda关闭动态数据文件变量,但现在它是词法的。我的替换代码将值直接传递到lambda中

您必须保存修改后的文件,然后使用

m-x byte-compile-file
或者,您只会看到一条警告,说明.el文件较新(但它仍将使用旧代码加载.elc)


如果这在较新版本的org中得到修复,我不会感到惊讶,但我还没有检查。

显示您的代码。从
emacs-Q
开始,给出你正在做的事情的配方。打开“错误时调试”,并显示回溯。还有一种猜测是,您评估了一些使用词法变量(
数据文件
)的代码(例如lambda表单),方法是从一个由局部变量声明打开词法绑定的文件中取出它。谢谢,-Q选项让我能够找出关于gnuplot的某些内容没有正确编译。虽然仍然无法解决问题。也遇到了相同的错误。
m-x byte-compile-file