Julia - VSCode で Julia 1.0 を使う (仮)

現状、VSCode の Marketplace から入れることの出来る Julia の拡張機能を使うと、Julia 1.0 では REPL を起動することができません。

Julia 拡張の Wiki には一応 Julia 1.0 でのやり方も書いてあるのですが、初見では私にはさっぱりわかりませんでした*1。 この点に関しては調べたらすぐに解決したのでよいのですが、Plot Pane にプロットを表示させる方法はソースコードを読まないと解決できないと思うので記録として残しておきます。*2

github.com

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 に表示されます。

f:id:goropikarikun:20181013175713p:plain

何故 popdisplay() すると上手くいくのか気になる人は Plots.jl と Julia 本体のソースコードを読んでください。

参考

*1:私は JavaScript 使ったことありません

*2:issue 出したので現在はすぐに解決策見つかりますけど。

*3:私は VSCode 使ったことがなく、設定の仕方等は一切わからないので単純に設定を変えれば動く可能性はあります。