我正在使用ob-julia.el在Emacs下创建我的Julia笔记本。但是,对于新的Julia v1.0 版本,它不再起作用。
例如,像这样的基本组织模式文档:
#+BEGIN_SRC julia :exports both :session mySession
1+2
#+END_SRC
现在返回一个空的#+RESULT
如果我查看 mySession 缓冲区,则会看到此错误消息
julia> ERROR: UndefVarError: writecsv not defined
Stacktrace:
[1] top-level scope at none:0
答案 0 :(得分:2)
原因是Emacs软件包ob-julia.el尚未升级为支持最新的Julia v1.0版本。
在此v1.0版本中,readcsv
和writecsv
函数不再存在。它们已被DelimitedFiles.readdlm和DelimitedFiles.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 issue。但是,如果您现在仍想使用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
这将重新定义readcsv
和writecsv
函数,并使ob-julia.el重新工作。
有了此修复程序,我现在得到:
#+BEGIN_SRC julia
1+2
#+END_SRC
#+RESULTS:
: 3
#+BEGIN_SRC julia :session mySession
1+2
#+END_SRC
#+RESULTS:
: 3
符合预期。
答案 1 :(得分:1)
这将中断为我构建几个Julia程序包的过程。作为一种变通办法,我将Picaud的代码移至了~/.julia/config/startup-babel.jl
。
更新:
自定义似乎不再起作用。这对我有用。进行M-x自定义apropos并搜索julia。找到Org Babel Julia Command
并将其设置为(当然,您可能想要在其中找到Julia的路径):
julia -e 'include("$(ENV["HOME"])/.julia/config/startup-babel.jl")' -i
旧的自定义功能不再适用于我:
然后我将Ess Julia
的{{1}}变量自定义为
Inferior Julia Args