0

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
4

2 に答える 2

2

その理由は、Emacs パッケージob-julia.elが最新の v1.0 Julia リリースをサポートするようにアップグレードされていないためです。

この 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 

これにより、関数readcsvwritecsv関数が再定義され、ob-julia.el が再び機能するようになります。

この修正により、次のようになりました。

#+BEGIN_SRC julia
1+2
#+END_SRC

#+RESULTS:
: 3

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

#+RESULTS:
: 3

予想通り。

于 2018-08-27T16:47:07.837 に答える