PureScript IDE (Visual Studio Code 拡張) の紹介

この記事は [(bouzuya) PureScript Advent Calendar 2016](http://www.adventar.org/calendars/1494) の 9 日目だ。 (bouzuya) PureScript Advent Calendar 2016 は bouzuya の PureScript 学習の記録だ。

- ← 8 日目『 [PureScript by Example 3 章の後半を読む - Qiita][2016-12-08] 』
- → 10 日目『 [PureScript by Example 4 章の前半を読む - Qiita][2016-12-10] 』

## 概要

今日は [PureScript by Example][purescript-by-example] をお休みして、PureScript IDE の話を書く。

## Wiki の Editor and tool support

PureScript に対するエディタやツールのサポートは [Wiki - Editor and tool support][wiki-editor-and-tool-support] にまとめられている。

ざっと眺めてみる。

ぼくは `pulp` を npm run-scripts 経由で使っているのと、 VS Code: Visual Studio Code の拡張として PureScript IDE と PureScript Language Support を使っている。

各種エディタ用のものが挙げられている。ほかにもいくつか挙げられている。

- Grunt は DEPRECATED 。
- Gulp は npm run-scripts と `pulp` で足りなくなったら。
- psvm-js Version Manager 。 `npm i -g purescript` を避けて project local なので不要。
- purs-loader WebPack の Loader 。たぶん JavaScript + Source Map を食わせれば十分なので不要。
- psc-pane よく分からない。
- purescript-psa よく分からない。
- pscid ウォッチャー。`npm` にあるものを使うので、とりあえずは不要。

`psc-package` などを中心として `npm` を捨てたら状況が変わってきそう。

## PureScript IDE (VS Code)

ぼくが使っている VS Code の拡張は次のとおりだ。

- [nwolverson/vscode-ide-purescript][] / [PureScript IDE][vscode-ide]
- [nwolverson/vscode-language-purescript][] / [PureScript Language Support][vscode-language-support]

PureScript IDE は PureScript Language Support に依存しているので、 PureScript IDE だけを気にすれば良さそうだ。

設定は `"purescript.addNpmPath": true,` だけ入れている。 `npm i -g purescript` を避けているので、 `$(npm bin)` を PATH に入れてもらえないと困る。

Mac OS X で使っている範囲だと Ctrl+Space を押すといい感じに補完してくれる。`import` すべき候補を挙げてくれたりする。ツールチップも出るし、Cmd+Click で定義にジャンプできたりもする。内部的には、元は [kRITZCREEK/psc-ide][] 、現在は [purescript/purescript][] に統合された `psc-ide-server` / `psc-ide-client` を使っているようだ。

Pursuit や PSCI のサポートは特にない。気が向いたら開発に参加するかも。

## まとめ

ちょっと手を抜いて、 VS Code での PureScript IDE という拡張を紹介した。

## 参考

- [Wiki - Editor and tool support][wiki-editor-and-tool-support]
- [nwolverson/vscode-ide-purescript][]
- [nwolverson/vscode-language-purescript][]
- [Visual Studio Marketplace - PureScript IDE][vscode-ide]
- [Visual Studio Marketplace - PureScript Language Support][vscode-language-support]
- [purescript/purescript][]
- [kRITZCREEK/psc-ide][]

## 次回以降の TODO

- PureScript by Example & PureScript Language Guide を読み進める
- Tagged Unions / Newtype
- `psc-package`
- [24 Days of PureScript, 2016][paf31/24-days-of-purescript-2016]
- [24 Days of PureScript, 2014](https://gist.github.com/paf31/8e9177b20ee920480fbc)
- 某氏の記事の紹介
- [github.com/purescript](https://github.com/purescript/) のコードを読む
- [github.com/purescript-node](https://github.com/purescript-node) のコードを読む
- [github.com/purescript-contrib](https://github.com/purescript-contrib) のコードを読む

[2016-12-01]: http://qiita.com/bouzuya/items/a5be85ec3e496e5bf436
[2016-12-02]: http://qiita.com/bouzuya/items/806335ea74ead0e33d95
[2016-12-03]: http://qiita.com/bouzuya/items/86cc9aaaddcc1aa790cf
[2016-12-04]: http://qiita.com/bouzuya/items/b2b80c22c50d0c1e739c
[2016-12-05]: http://qiita.com/bouzuya/items/f19ee0b86e9aec3f0afa
[2016-12-06]: http://qiita.com/bouzuya/items/4694ac25f68931115319
[2016-12-07]: http://qiita.com/bouzuya/items/62c6ad30ecba3c68a7a3
[2016-12-08]: http://qiita.com/bouzuya/items/7224535dd053c41748ed
[2016-12-10]: http://qiita.com/bouzuya/items/1a54ba3702f9818527a5
[kRITZCREEK/psc-ide]: https://github.com/kRITZCREEK/psc-ide
[language-guide]: https://github.com/purescript/purescript/wiki/Language-Guide
[nwolverson/vscode-ide-purescript]: https://github.com/nwolverson/vscode-ide-purescript
[nwolverson/vscode-language-purescript]: https://github.com/nwolverson/vscode-language-purescript
[paf31/24-days-of-purescript-2016]: https://github.com/paf31/24-days-of-purescript-2016
[paf31/purescript-book]: https://github.com/paf31/purescript-book/tree/8ad7d2af75ad4c795d5075018e9ee45005799e6f
[purescript-by-example]: https://leanpub.com/purescript/read
[purescript/purescript]: https://github.com/purescript/purescript
[pursuit]: https://pursuit.purescript.org/
[vscode-ide]: https://marketplace.visualstudio.com/items?itemName=nwolverson.ide-purescript
[vscode-language-support]: https://marketplace.visualstudio.com/items?itemName=nwolverson.language-purescript
[wiki-editor-and-tool-support]: https://github.com/purescript/purescript/wiki/Editor-and-tool-support