带有ob-julia.el的Emacs org-babel在Julia V1.0中不再工作



我正在使用ob-julia.el在Emacs下创建我的Julia笔记本。但是,在新的Juliav1.0版本中,它不再起作用。

例如,像这样的基本组织模式文档:

#+BEGIN_SRC julia :exports both :session mySession
1+2
#+END_SRC

现在返回一个空#+RESULT

如果我查看我的会话缓冲区,我会看到此错误消息

julia> ERROR: UndefVarError: writecsv not defined
Stacktrace:
[1] top-level scope at none:0

原因是 Emacs 软件包 ob-julia.el 尚未升级以支持最新的 v1.0 Julia 版本。

在此 v1.0 版本中,readcsvwritecsv函数不再存在。它们已被 DelimitFiles.readdlm 和 DelimitFiles.writedlm 函数重新放置。

然而,ob-julia.el仍然使用它们:

(defvar org-babel-julia-write-object-command "writecsv("%s",%s)")

(format "%s = readcsv("%s")" name file)
(format "%s = readcsv("%s")"
name file))))

我已经提交了一个ob-julia.el问题。但是,如果您现在仍想使用ob-julia.el,则可能有一个快速而肮脏的修复程序。只需在~/.julia/config/startup.jl文件中添加以下行:

import DelimitedFiles
function writecsv(filename::AbstractString,ans)
DelimitedFiles.writedlm(filename,ans,',')
end
function readcsv(filename::AbstractString)
DelimitedFiles.readdlm(filename,',')
end 

这将重新定义readcsvwritecsv功能,并使ob-julia.el再次工作。

通过此修复程序,我现在得到:

#+BEGIN_SRC julia
1+2
#+END_SRC
#+RESULTS:
: 3
#+BEGIN_SRC julia :session mySession
1+2
#+END_SRC
#+RESULTS:
: 3

不出所料。

这为我构建了几个 Julia 包。作为一种解决方法,我将 Picaud 的代码移动到~/.julia/config/startup-babel.jl

更新:

这种自定义似乎不再有效。这个对我有用。做M-x定制并搜索朱莉娅。找到Org Babel Julia Command并将其设置为(当然,您可能希望自己的通往 Julia 的路径(:

julia -e 'include("$(ENV["HOME"])/.julia/config/startup-babel.jl")' -i

不再适合我的旧自定义:

然后我自定义了Ess JuliaInferior Julia Args变量

-e include("$(ENV["HOME"])/.julia/config/startup-babel.jl") -i

最新更新