VSCodeでOCaml周りの設定をしていた話
1
以前はAtomとNuclidを使っていたんだけどこの前の初期化の際にVSCodeにしてから設定していなかったのでしようとした
今の設定は以下のようになっていて
使おうとしているpluginは reasonml-editor/vscode-reasonm
nix-darwin
で諸々の依存を入れたので、
"reason.diagnostics.tools": [ "bsb" ], "reason.path.ocamlmerlin": "/run/current-system/sw/bin/ocamlmerlin", "reason.path.ocamlfind": "/run/current-system/sw/bin/ocamlfind", "reason.path.ocpindent": "/run/current-system/sw/bin/ocp-indent", "reason.codelens.enabled": true
という感じの設定にした。
2
しかしBuckleScript周りが悲しいことに以下のようになる
これはIssueに上がっているみたいだった
最初merlinの設定がおかしいのかと思ったが、
Merlin doesn't provide syntax highlighting nor indentation.
どうやら非対応らしい
自分の認識ではBuckleScript中のjsとの間をいい感じにしてくれる [@@bs.deriving abstract]
などはppxの構文の範囲だと認識しているのでいい感じにやって欲しい
ここら辺Atom+Nuclidでは問題がなかったように記憶しているので少し悲しい。
BuckleScriptのweb上でのPlaygroundはbsc.exe
をjs_of_ocamlでコンパイルしたものが使われていたはずで、同じようなノリでbsc中のparser部分だけどpluginに持ってくることは可能に思えるがかなりめんどくさそうだ。
ていうかreasonだと問題起きなさそうなのが悲しい。
3
実はまだファイルをまたいだ依存関係がうまく設定できていない。
Module A中でModule Bに飛びたい時に同一ファイルでは飛べるのにファイルをまたいでは飛べない。
ハイライトがぶっ壊れているのは関係はなさそう
####{BSB GENERATED: NO EDIT FLG -ppx /Users/hiroqn/.dev/bs-winston/node_modules/bs-platform/lib/bsppx.exe S /Users/hiroqn/.dev/bs-winston/node_modules/bs-platform/lib/ocaml B /Users/hiroqn/.dev/bs-winston/node_modules/bs-platform/lib/ocaml FLG -nostdlib -color always FLG -w -30-40+6+7+27+32..39+44+45+101 S src B lib/bs/src ####BSB GENERATED: NO EDIT}
merlinの設定がおかしい可能性もあるがatom時に問題が起きたことはなかったのと .merlin
自体が自動生成なのでその可能性は低そうである。
4
という感じでいまいち設定がうまくいかなかったのでAtomに戻ることになってしまいそう。
5 追記
今さっき.merlin
がどのコンパイラを使うか指定がないことに気づき、急いでmerlin
などをbucklescriptにあるocamlでビルドし直したところ動きましたわ〜
{ "reason.path.ocamlfind": "/nix/store/jgd4fwcg1d58kghgmfdfdck5fqn0mwi0-ocaml-findlib-1.8.0/bin/ocamlfind", "reason.path.ocpindent": "/nix/store/hg8rvg4x6hd2058wcfnwprs9d379gdv3-ocaml4.02.3-ocp-indent-1.6.1/bin/ocp-indent", "reason.path.ocamlmerlin": "/nix/store/bz5qmz0d8gqlvhv7m9x8yi5c7dr94bfk-ocaml4.02.3-merlin-3.2.2/bin/ocamlmerlin" }
こんな感じね
まだハイライトぶっ壊れたままだけど