julia-vscode v0.11.0 から Julia 1.0 に対応したのでこの記事を読む必要はありません。master ブランチのものを入れたい場合は手順だけ参考になるかもしれません。(2019/1/29)
現状、VSCode の Marketplace から入れることの出来る Julia の拡張機能を使うと、Julia 1.0 では REPL を起動することができません。
Julia 拡張の Wiki には一応 Julia 1.0 でのやり方も書いてあるのですが、初見では私にはさっぱりわかりませんでした*1。 この点に関しては調べたらすぐに解決したのでよいのですが、Plot Pane にプロットを表示させる方法はソースコードを読まないと解決できないと思うので記録として残しておきます。*2
Julia 拡張の README に書いてある以下の機能の内 syntax highlighting, snippets, integrated julia REPL の3つは使えました。*3
- syntax highlighting
- snippets
- latex snippets
- julia specific commands
- integrated julia REPL
- code completion
- hover help
- a linter
- code navigation
- tasks for running tests, builds, benchmarks and build documentation
環境
- OS: ArchLinux
- Julia 1.0.1
- npm 6.4.1
- typescript 3.1.1
- VSCode 1.28.1
julia extension を入れる
Wiki には julia-vscode を開発している方のリポジトリを使うようにとありますが、 現在の julia-vscode の master ブランチにはその方の PR がマージされているので本家の master を使います。 すでに過去の Julia 拡張をインストールしてある場合はそれを消去してください。
sudo pacman -S npm typescript # Ubuntu の場合は sudo apt install npm node-typescript cd ~/.vscode/extensions git clone https://github.com/JuliaEditorSupport/julia-vscode cd julia-vscode npm run update2latest
これだけで REPL は使えるようになると思います。適当な Julia のファイルを開いて Ctrl-Enter をすれば REPL 上で実行されるはずです。
Plots.jl での描写を Plot Pane に出力する
私の環境では何も考えずに Julia 1.0 で
using Plots
plot(sin)
とすると、backend に PyPlot を指定した場合は、
/usr/lib/python3.7/site-packages/matplotlib/figure.py:457: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure "matplotlib is currently using a non-GUI backend, "
と出るだけでプロットは表示されず、GR を使った場合は別枠のウィンドウが開きました。
Julia 0.7 だとちゃんと Plot Pane にプロットされるんですけどね。不思議です。
using Plots
popdisplay()
plot(sin)
とするとちゃんと Plot Pane に表示されます。
何故 popdisplay()
すると上手くいくのか気になる人は Plots.jl と Julia 本体のソースコードを読んでください。
参考
- J0.7/1.0 update by ZacLN · Pull Request #541 · JuliaEditorSupport/julia-vscode · GitHub
- Plots.jl/init.jl at 1e83bc05ee791e84d038248c5bfe9b8ab424bfd1 · JuliaPlots/Plots.jl · GitHub
- julia/multimedia.jl at eabb601ec8cccb4ff40f18eb4f046ab4608f1840 · JuliaLang/julia · GitHub
*1:私は JavaScript 使ったことありません
*2:issue 出したので現在はすぐに解決策見つかりますけど。