2011年12月31日

xyzzy coffeeモードをUTF-8で

最近、ダンジョンスペシャルではQUnitのテストをCoffeeScriptで記述している。記述が簡単になるから使いやすかったんだけど、
CoffeeScriptを<script src="testcode.coffee" type="text/coffeescript"></script>タグで読み込んでたんだけど
  1. Chromeの環境ではうまく動かせない(※--allow-file-access-from-filesオプションで解決しました。hanachin様ありがとうございます!!)http://nmksb.seesaa.net/article/230685899.html
  2. デバッグ・エラー時にどの行を参照したらいいかわからない
という問題があって、一旦テスト用CoffeeScriptをコンパイルすることにした。
ところが問題が発生した。いちいちCoffeeScriptをコンパイルするのが激しくめんどくさい
 
 
linux環境などでは、coffeescriptに--watchオプションをつけるとかすると、セーブすると自動的にコンパイルしてくれるらしいが、俺が使っているのはwindowsだ。それにcoffeescriptファイルはどうせxyzzyでしか編集しないので、どうにかしてxyzzyでcoffeescirptからjsファイルにコンパイルする一発コマンドを提供してやれば解決する問題な気がする。

coffeescript-mode

独自で何か改造する前に、xyzzyのcoffeescript-modeみたいなのがあるんじゃないかと思って調べると、

https://github.com/youz/coffee-mode

あった。youzさん提供ありがとうございます。
ただ、↑の設定通りに設定すると、Shift_JISでcoffeeファイルを書いてShift_JISでjsスクリプトを出力するものしか対応できない・・・はず・・・俺の設定がおかしいのかもしれないけど。
俺の環境ではUTF-8での読み書きなので、それ用にちょっと変更する必要がある。

githubに書いてある設定だと、.xyzzyとかsiteinit.lとかに

(setq coffee:*command-path* "c:/path/to/node.exe c:/path/to/coffee-script/bin/coffee"
coffee:*compiled-buffer-mode* 'jscript-mode)
こんな風に書いておけばいいそうな。でもこれではnode.exeとcoffee-scriptを別途インストールしなきゃいけないし、UTF-8にも対応してないっぽい。
node.exeはWSHで代用するようにして、強制的にUTF-8を読み書きできるようにするには・・・

coffee.bat

またもやgithubで。WSHでcoffeeコマンドを実行させてくれるWindows用のラッパーを公開してくれている人がいたので、

https://github.com/thinca/coffee-script-on-jscript

利用。pathの通っているところにcoffee.bat、およびcoffee-script.jsを配置して、.xyzzyuに
(setq coffee:*command-path* "coffee.bat ")
こう書く。これで、coffeescript-modeのコンパイルコマンドが使えるようになった。C-c sで同名のjsファイルが一発で作れるようになった。

UTF-8用に改造

今のままではShift_JISにしか対応していないので、coffee.batを改造する。readFileおよびwriteFile関数。
stream.Charset = 'iso-8859-1';の部分をstream.Charset = 'UTF-8';に変更すればOKだ。

...とか書いてたんだけど、最新版のcoffee.batを動作確認してみると↑の改造が全然いらないような気がする。
新年早々訂正記事とか笑えるけど、初笑いついで続報をどうぞ。
タグ:CoffeeScript
posted by LoyalTouch at 09:20| Comment(0) | TrackBack(0) | ダンジョンスペシャル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/243529065

この記事へのトラックバック