15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCodeの拡張:CalvaでClojureの開発環境を整える

Last updated at Posted at 2018-07-06

そろそろ関数型やるかー、って感じでClojureを触り始めました。
VSCodeでやりたかったので環境構築手順についてまとめ。

いれるもの

  • Leiningen(いろいろやってくれるやつ)
  • Joker(linter)
  • Calva(VSCodeのClojure拡張)

VSCodeはインストール済みの前提です。

インストール

Leiningen

LeiningenはClojureのビルドツールです。
コンパイルとかREPLの起動とかいろいろやってくれます。
Windowsのインストーラが用意されているので、それを使います。
https://djpowell.github.io/leiningen-win-installer/

インストーラ使うと環境変数とかもろもろ設定してくれますが、プログラム本体のダウンロードはコマンドでやる必要があるようです。
PowerShell使って以下のコマンドを実行します。

lein self-install

環境によっては、PowerShellのダウンロードがうまくいかないようで、wgetかcurlを使えと言われます。
Leiningenインストールしたときにcurlも一緒に入ってきてたようなので、それを使うように環境変数HTTP_CLIENTcurl -f -L -k -oを設定します。
設定したら、再度self-installコマンドを実行してインストールをします。

以下のコマンドでバージョンが確認できれば問題なくインストールができています。

lein version

以下のコマンドでREPLが起動するので、とりあえずClojureを試してみるのもよいでしょう。

lein repl

Joker

JokerはClojureのlinter(構文解析ツール)です。
GitHubで各OS向けのバイナリが公開されているのでダウンロードしてきて、パスが通っているところに入れます。
Leiningenのインストールフォルダのbinの中に突っ込むのがわかりやすいかと。
https://github.com/candid82/joker

Calva

CalvaはVSCodeの拡張です。
今まで入れたLeiningenやJokerをVSCode上から動かすことができます。
Calvaを入れると、Calva Formatterという拡張もインストールされます。

Calva Formatterは改行時に自動でインデント入れてくれるやつです。
オプション見る限り、行末改行削除とかもできそうなんですがいまいち動かない(未実装?)ようです。
割とできたばかりのプロジェクトみたいなので、今後に期待。

Calvaを使う

REPLへ接続

Calvaの多くの機能を使うためにはまずReplに接続する必要があります。
lein replコマンドであらかじめREPLを起動されていれば、Ctrl+Alt+V Cで接続できます。
画面の左下に以下のように表示されていればREPLへ接続がされています。

image.png

評価結果をVSCode上で表示する

評価したい式を選択して、Ctrl+Alt+V Eでその式を評価することができます。
image.png

別ファイルのネームスペースを使いたい場合、使いたいファイルに移動してCtrl+Alt+V Alt+Nで現在のファイルをREPLに読み込めば使えるようになります。

Jokerを使う

Ctrl+Alt+V LでJokerによる構文解析を実行することができます。
これだと、いちいち実行しないとないので、設定のcalva.lintOnSaveをtrueにしてあげると保存時に自動的に構文解析を行ってくれます。

解決したい疑問

定義された情報の参照がうまくできていません(右クリックメニューのPeek Defenitionとか)。
バグなのか、設定がうまくいってないのか…。

(7/8追記)
あと、jokerのほうの問題っぽいんですが、:useでほかのネームスペースの関数を使うように宣言しても構文解析でエラーが出てしまいます。
:requireにすればエラーが出ないので、すべて:requireで書くようにすればとりあえず問題はないです。

15
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?