WindowsでSublime Text2からClojure REPLを使えるようにしてみる→実は使えませんでした
こんにちは。
今までREPLをコマンドラインで起動して使っていましたが、
さすがに効率が悪いようになってきたため、一度エディタから直接呼べるように環境を整えます。
というわけで、Sublime Text2にREPLのプラグインを導入してみます。
ですが、まずSublime Text Package Controlをインストールしておかないとどうにもならないため、
それがインストールされている前提、で話を進めます。
1.SublimeREPLインストール
まずはSublimeREPLのインストールから。
ただ、こちらについてはあまりにも簡単でした。Sublime Text2様々ですね。
まずはSublime Text2から「Package Control: Install Package」を選択します。
するとパッケージ一覧が表示されるため、「SublimeREPL」をインストールします。
これで終了。
後は、ClojureのGetting Started With Sublime Text 2によると
SublimeREPLの後にLeiningenをインストールする必要があるとのことのため、こちらもインストールを行います。
2.Leiningenインストール
まずはhttps://github.com/technomancy/leiningen/tagsから最新バージョンをインストールし、
「C:\Tools\leiningen-2.1.3」に展開します。
その後、環境変数に以下の内容を追記します。
LEIN_HOME=C:\Tools\leiningen-2.1.3 PATH=%LEIN_HOME%\bin
で、leinを実行すると・・・
C:\Tools\leiningen-2.1.3>lein Leiningen is missing its dependencies. Please run "lein bootstrap" in the leiningen-core/ directory with a stable release of Leiningen. See CONTRIBUTING.md for details.
そもそもGitHubから落としてきた時点ではjarも存在しないため、落としてくる必要があるようです。
というわけでまずはインストールコマンドを実行。
C:\Tools\leiningen-2.1.3>lein self-install Downloading Leiningen now... 1 個のファイルを移動しました。
このコマンドを実行すると、「C:\Tools\leiningen-2.1.3\self-installs\leiningen-2.1.3-standalone.jar」がインストールされます。
さぁ、これでOKかと思いきや、再度のエラー。
C:\Tools\leiningen-2.1.3>lein Leiningen is missing its dependencies. Please run "lein bootstrap" in the leiningen-core/ directory with a stable release of Leiningen. See CONTRIBUTING.md for details.
バッチファイルを確認したところ、「\leiningen-core\lib」ディレクトリが無いからの模様。
・・・というか、ただそれ以前に「leiningen-2.1.3-standalone.jar」があるので
そんなの必要ないじゃん、ということで「https://github.com/technomancy/leiningen」を見てみると、
そもそもleinはバッチファイルをインストールしてself-installをすれば使えるというオチでした。
そんなわけで、binとself-installs以外を削除して、実行してみます。
C:\Tools\leiningen-2.1.3>lein (依存性解決が走る) Leiningen is a tool for working with Clojure projects. Several tasks are available: check Check syntax and warn on reflection. classpath Write the classpath of the current project to output-file. clean Remove all files from project's target-path. compile Compile Clojure source into .class files. deploy Build jar and deploy to remote repository. deps Show details about dependencies. do Higher-order task to perform other tasks in succession. help Display a list of tasks or help for a given task or subtask. install Install current project to the local repository. jar Package up all the project's files into a jar file. javac Compile Java source files. new Generate scaffolding for a new project based on a template. plugin DEPRECATED. Please use the :user profile instead. pom Write a pom.xml file to disk for Maven interoperability. repl Start a repl session either with the current project or standalone. retest Run only the test namespaces which failed last time around. run Run the project's -main function. search Search remote maven repositories for matching jars. show-profiles List all available profiles or display one if given an argument. test Run the project's tests. trampoline Run a task without nesting the project's JVM inside Leiningen's. uberjar Package up the project files and all dependencies into a jar file. update-in Perform arbitrary transformations on your project map. upgrade Upgrade Leiningen to specified version or latest stable. version Print version for Leiningen and the current JVM. with-profile Apply the given task with the profile(s) specified. Run `lein help $TASK` for details. Global Options: -o Run a task offline. -U Run a task after forcing update of snapshots. -h, --help Print this help. -v, --version Print Leiningen's version. See also: readme, faq, tutorial, news, sample, profiles, deploying, gpg, mixed-source, templates, and copying.
というわけで、leinが実行できるようになりました。
3.Sublime Text2にleinのパスを通す
とりあえずこれで使えるのかと
Sublime Text2の「Tools」→「SublimeREPL」→「Clojure」→「Clojure」で実行してみると、下記のエラーが発生。
全くわかりません(汗
ただ、そもそもパス追加後にSublime Text2を再起動してなかったため、
Sublime Text2を再起動して再度実行してみます。
すると、下記のようにREPLが起動しました。
後はメニューから選択するのが長いので、コマンドがないか確認したところ、ショートカットは使えませんでしたが、
実行メニュー中にClojureが加わっていることを確認しました。
これでようやくコマンドプロンプトに面倒な手順とって貼り付ける手間から解放されそうです。
2013/05/22 追記
確認したところ、SublimeREPLからSublimeREPLを起動した場合、Clojureのコマンドを入力しても何も実行されない状態になっていました・・・
とりあえず何故こういう事象が発生するのか確認中です。
すんなり終わったと思いきや、まだまだ問題はありそうです・・・・
情報を調べてみた結果、Leiningen2系になった時点でfopenの扱いが変わり、今回の構成では使用できなくなったようです。
https://github.com/technomancy/leiningen/issues/842
上手くいかないという内容の投稿が下記にも。
https://github.com/wuub/SublimeREPL/issues/48
https://github.com/wuub/SublimeREPL/issues/49
https://groups.google.com/forum/?fromgroups#!msg/clojure/-eNOk7x49YI/VB4bXlK7nFoJ
http://www.sublimetext.com/forum/viewtopic.php?f=3&t=7878
連携に成功した記事はLeiningen1系のもの。当時は出来たということですね。
http://yagays.github.io/blog/2012/11/16/sublimerepl-clojure/
というわけで、残念ながら環境自体は別の環境を探してみることにします・・・
2013/05/26 追記
Twitter上で困った旨のことを呟いていたところ、
id:AntiBayesianさんから返信があり、Leiningen2ではなく、普通のJavaから起動したClojure REPLを使って
Sublime Text2から実行可能であることを教えていただきました。
WindowsでSublime Text2 + leiningen + Clojure/Incanter環境をお手軽に作る
http://d.hatena.ne.jp/AntiBayesian/20130501/1367406979
というわけで問題は解決。
Sublime Text2からClojure REPLが実行できるようになりました。
これでとりあえずは一段階Clojureのプログラミング環境が快適になりそうです。