Edited at

ClojureのREPLでよく使うvarを短縮する

More than 3 years have passed since last update.

REPL上で、ファイルの変更を反映するのに毎回↓するの、長いですね。

(use '[clojure.tools.namespace.repl :only (refresh)])

(refresh)

lein-shorthandプラグインを使うとこう↓なります。楽ですね。

(./r)


lein-shorthand

任意の完全修飾シンボル名に対して、別名を付けることができます。


上記の例で言えば、clojure.tools.namespace.repl/refreshという完全修飾シンボル名に./rという別名を付けています。


もっと分解すると、clojure.tools.namespace.repl名前空間のrefreshというシンボルに、.1という名前空間のrというシンボルを付けています。


Configuration



  1. project.clj2:pluginsキーにcom.palletops/lein-shorthandを追加します。

  2. さらに:shorthandというキーに{<名前空間> [完全修飾シンボル名...]}を書きます。


Example

自分のprofiles.cljは↓のようにしてみました。

{:user {:plugins [

; ....
[com.palletops/lein-shorthand "0.4.0"] ; こいつが今回のテーマ
; ....
]
:dependencies [
; ....
[alembic "0.3.2"]
[org.clojure/tools.namespace "0.2.11"]
; ....
]
:shorthand {. [[r clojure.tools.namespace.repl/refresh] ; clojure.tools.namespace.repl/refresh -> ./r
[pp clojure.pprint/pprint] ; clojure.pprint/pprint -> ./pp
clojure.repl/doc ; clojure.repl/doc -> ./doc
clojure.repl/find-doc ; clojure.repl/find-doc -> ./find-doc
clojure.repl/source ; clojure.repl/source -> ./source
alembic.still/distill ; alembic.still/distill -> ./distill
alembic.still/lein]}}} ; alembic.still/lein -> ./lein


Usage

ちゃんと、補完されます。いい感じですね!


きっかけ

先日のnishi-shinju-clojure#0高速!Clojure Web 開発入門という発表の中で、alembic3というleiningenのプラグインが紹介されており、そのalembicのREADMEでlein-shorthandが登場していました。

aleimbicはpallet、lein-shorthandはPalletOpsのGitHubOrganizationに置かれており、開発者は同じ方でのようです。





  1. .じゃなくてももちろんOKです。 



  2. もちろんprofiles.cljなどでもOKです。 



  3. alembicはエラーが出てなぜか結局動かせませんでした。。便利そうなのに。。