代码之家  ›  专栏  ›  技术社区  ›  Picaud Vincent

带有ob-julia.el的Emacs org babel不再适用于julia V1.0

  •  0
  • Picaud Vincent  · 技术社区  · 8 年前

    我正在使用 ob-julia.el 在Emacs下创建我的Julia笔记本。但是新的朱莉娅 释放它不再工作了。

    例如,基本组织模式文档如下:

    #+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
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Picaud Vincent    8 年前

    ob-julia.el 尚未升级以支持最新的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

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

    正如所料。

        2
  •  1
  •   Bill Burdick    7 年前

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

    更新:

    Org Babel Julia Command 并将其设置为(当然,您可能希望在其中找到Julia):

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

    然后我定制了 Ess Julia 的 Inferior Julia Args 可变到

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