2011年12月7日水曜日

EmacsからnodeやブラウザでCoffeeScriptを動かす



前に書いたJavaScriptの開発環境を整えるついでにCoffeeScriptの環境が整います。


EmacsでJavaScriptの環境を整えたい - はなちん C-x C-c


swank-jsの導入


ivan4thさんのswank-jsを使うとEmacsからNodeやブラウザにつないでJavaScriptを実行できます。


JavaScriptならChromeの開発者ツールやFirebugでも出来ますが、やはりEmacs上で出来ると幸せです。(そのまま保存出来るし)


僕はswank-jsにCoffeeScript用の機能をいくつか付け加えました。


GitHubに置いてあるので、そこから導入します。


hanachin/swank-js ? GitHub


swank-js導入手順


ほとんど深町さんのこの記事と一緒です。


Emacsからnode.jsやChromeとSocket通信 - 八発白中


違うところだけ、説明します。


0.swank-jsのダウンロード

CoffeeScript用に改造してある僕のリポジトリから落とします。



% git clone git@github.com:hanachin/swank-js.git


1.nodeをインストールします

自分はここを参考にしました。


no title


3.SLIMEをインストール

僕の環境だと最新のSLIMEだとswank-jsがうまく動かなかったので、LispBox同梱の物を使いました。


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したいページで実行します。


Attach Swank Coffee


後はslime-reple JSの画面で,select-remoteでCoffeeScript Browserと書いてるやつを選べばおk


f:id:h6n:20111208014158p:image


このように、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使いで興味を持ってくださった方は是非試されてみてください。


フィードバックは@まで。





0 件のコメント:

コメントを投稿