Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

そろそろ関数型やるかー、って感じで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で書くようにすればとりあえず問題はないです。

frost_star
まだまだ半人前プログラマー。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした