Emacs org-babel с ob-julia.el больше не работает с Julia V1.0 - PullRequest
0 голосов
/ 27 августа 2018

Я использую ob-julia.el для создания моих ноутбуков Julia под Emacs. Однако с новым выпуском 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

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Это нарушает сборку нескольких пакетов Джулии для меня. В качестве обходного пути я переместил код Пикадо в ~/.julia/config/startup-babel.jl.

UPDATE:

Эта настройка больше не работает. Этот работает для меня. Сделай M-x custom-apropos и поищи Юлию. Найдите Org Babel Julia Command и задайте для него значение (вы, конечно, можете указать свой собственный путь к Джулии):

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
0 голосов
/ 27 августа 2018

Причина в том, что пакет 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 выпуск . Однако есть возможность быстрого и грязного исправления, если вы все еще хотите использовать 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

как и ожидалось.

...