Emacs org-babel с ob-julia.el больше не работает с Julia V1.0
Я использую ob-julia.el для создания своих ноутбуков Julia под Emacs. Однако с новым выпуском Julia v1.0 он больше не работает.
Например, базовый документ в режиме org:
#+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
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. Однако есть возможность быстрого и грязного исправления, если вы все еще хотите использовать 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
как и ожидалось.
Это нарушает сборку нескольких пакетов Джулии для меня. В качестве обходного пути я переместил код Пикадо в ~/.julia/config/startup-babel.jl
, Тогда я настроил Ess Julia
"s Inferior Julia Args
переменная к
-e include("$(ENV["HOME"])/.julia/config/startup-babel.jl") -i