前に書いたJavaScriptの開発環境を整えるついでにCoffeeScriptの環境が整います。
EmacsでJavaScriptの環境を整えたい - はなちん C-x C-c
swank-jsの導入
ivan4thさんのswank-jsを使うとEmacsからNodeやブラウザにつないでJavaScriptを実行できます。
JavaScriptならChromeの開発者ツールやFirebugでも出来ますが、やはりEmacs上で出来ると幸せです。(そのまま保存出来るし)
僕はswank-jsにCoffeeScript用の機能をいくつか付け加えました。
GitHubに置いてあるので、そこから導入します。
swank-js導入手順
ほとんど深町さんのこの記事と一緒です。
Emacsからnode.jsやChromeとSocket通信 - 八発白中
違うところだけ、説明します。
0.swank-jsのダウンロード
CoffeeScript用に改造してある僕のリポジトリから落とします。
% git clone git@github.com:hanachin/swank-js.git
1.nodeをインストールします
自分はここを参考にしました。
3.SLIMEをインストール
僕の環境だと最新のSLIMEだとswank-jsがうまく動かなかったので、LispBox同梱の物を使いました。
中に入っているslimeのフォルダを、Emacsのロードパスの通っている場所へ置きます。
自分の場合だと~/.emacs.d/elisp/あたりに入れてます。
5.emacsに設定を追記
もとの記事のjs2-mode-hookに加えて、coffee-mode-hookの設定を.emacsに追記します。
(add-hook 'coffee-mode-hook
(lambda ()
(slime-js-minor-mode 1)))
EmacsからCoffeeScriptを使う
swank-jsのディレクトリで以下のコマンドを実行し、swank-jsのサーバーを立てます。
% node swank
EmacsでM-x slime-connect、接続。(ここでslimeとswank-jsのバージョンが違う等のメッセージが出るが気にしない)
ここまではJavaScriptと同じです。
slime-repl JSのバッファーで,select-remoteと入力して、CoffeeScript/directを選びます。
あとはJavaScriptと同じ感覚でCoffeeScriptを入力して実行出来ます。とっても簡単ですね。
EmacsからブラウザのREPLにアクセスしCoffeeScriptを使う
次のブックマークレットを、CoffeeScript使ってattachしたいページで実行します。
後はslime-reple JSの画面で,select-remoteでCoffeeScript Browserと書いてるやつを選べばおk
このように、Emacsで書いたCoffeeScriptをブラウザで実行できます。
また、coffee-modeで範囲を選択して、C-c C-rで実行することもできます。
まとめ
- 最初はslime-js.elの方をいじって、elisp側でCoffeeScript->JavaScriptの変換かけようとしていたが面倒だった
- swank-handlerのRemoteを継承するクラスを作ってevaluateメソッドをオーバーライドし、そこで実行前に変換をかければよい
- そのクラスをswank.jsの中で使うようにする
- 別のaltJS、JavaScriptにコンパイルされる言語(Cocoなど)をEmacsから叩きたいときも同じ感じでいけるかも。
という感じ。
CoffeeScriptの問題として、コンパイル後のJavaScriptコードを実行中にエラーがおき、エラー行が表示されても、元々のCoffeeScriptの何行目に対応するのか分からないといったところがあります。
これについてはこちらのスレッドで意見がかわされてるようです。
Issue #558: line number mapping for debug ? jashkenas/coffee-script ? GitHub
まぁ僕はとりあえずCoffeeScriptをEmacsから実行できる環境が整ったので満足です。
Emacs使いでCoffeeScript使いで興味を持ってくださった方は是非試されてみてください。
フィードバックは@hanachin_まで。
0 件のコメント:
コメントを投稿