最近海外製のテキストエディタはやってるみたいね。
TextMate互換のRedcar
Githubで公開されてるatom
両方共、アーキテクチャが好みなので使ってみたい感じ。
まず今回はRedcarから触ってみよう
Redcar
railsをコーディングするのに適しているらしい、rubyで拡張できるテキストエディタ。
アーキテクチャはなんとswt+jruby!
マルチプラットフォームでプログラムを作るとき、表示部分:java ロジック部分:センスのいいLLという組み合わせで作るといいかんじのが作れそうだな、と直感的に思ったんだけど、javaはjavaでもswtか・・・!
eclipse触った時に反応の早さとUIの統一性に惚れ込んだものだけど、その後後発で使う人現れなかったんで
こりゃeclipseだけの一発屋だな、とがっかりしてたんだ。そしたら久しぶりに見たよ!
guiはネイティブにまかせてjavaはインターフェースを担当、っていう役割分担も、それはそれで綺麗だったんだよね
昔のswingは謎の明朝体フォントが踊り狂ってて汚かったし。
でもその後swingがopenglかなんかを駆使して自力で早くなりやがって廃れた。
ところでこの構造だと
UI ロジック
各OSのネイティブAPI(Win32apiとか)←→jni←→java←→javax.script←→jruby
※赤い部分がマルチプラットフォーム担当
というとても迂遠なやりかたでマルチプラットフォーム実現してるんだけど遅くないのか。
インストールの仕方はgem install redcarで入れるという謎のハードルの高さ。ネイティブライブラリが必要なので、windowsで使うにはmingw版がベター。お前らzipで解凍して使えるようにしれ。
俺はだるいのでusbrumix2ダウンロードしてrumixlauncherを起動、
「コマンドライン端末を開く」ボタンでコマンドプロンプト立ち上げてそこからgem install redcarコマンドを打ってインストールした。
windowsでは基本的にgemインストールするとrubyインストールフォルダのbin配下にコマンドと同名のバッチファイルができる。
usbrumixでは[解凍フォルダ]\ruby\2.0.0\i386-mingw32\bin配下にredcar.batがあった。
実行フォルダを[解凍フォルダ]\...うんちゃらら...binにしてredcar.batをクリックすれば即座にredcar実行できる・・・!と思いきや
裏にコマンドプロンプトが表示され続ける
うわキモ。いやだったのでコマンドプロンプトが消えたまま使えるvbs作って、ここから起動するようにした
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c redcar.bat", vbhide
ws.run "cmd /c redcar.bat", vbhide
ここから実行すれば無事コマンドプロンプトは消える。
起動はxyzzyほどではないけどそれなりに早く、俺のパソコンからでは15秒程度。立ち上げっぱなしにしておくなら気にならない速度かな。
以下にはxyzzyとの違いを書いてみる。
触ってわかる、xyzzyとの相違点
俺長年emacs互換のxyzzy使ってるんだけど、この文化ではtext-modeとかjava-modeとか、ファイルに応じたモードという概念が用意されていて、コレを元に文字の色分け、インデント、補完なんかをしてくれる。
このモードに相当するのはredcarではbundleという名前のものらしい。html bundleやらjava bundleやらがあって、ファイルの拡張子に応じて色分け、インデントがかわる。
bundleの変更の仕方はメニュー「Edit」→「Change Language」。インストール直後はCoffeeScript bundleがないので不便だけどこれは追加できるらしい。
そして操作感が一番違うな、と思ったのが入力補完。xyzzyはある程度決まりきった入力補完しかなくて、
<title>と入力した後に</を打ち込むと勝手にtitle>を補完してくれるとか、そういう操作のものだった。
redcarはそういうのがなくて、あれ?/打っても補完してくれないじゃん使えねーなコレなんて思っていたんだけど実はメインの使い方が違って、html bundleの場合titleと入力してタブキーを打つと
- <title></title>の文字列が勝手に挿入
- 打ち込みの現在位置(キャレット)が<title>と</title>の間に勝手に移動
- Ctrl+Enterを押すとタグを無視して次の行に移動
という動きをする。この動きのお陰で title入力→中身入力→Ctrl+Enterで次の行に移動→link入力...
みたいなHTMLの定番の流れが簡単に作れるようになっている。便利。
これがHTMLみたいな簡単なものなら違いがわからないんだけど、rubyみたいに
data.each do |index, value|
puts "%d : %s" % index, value
end
くらい複数行大量の文字を入力する時、えらい便利なんだな!
どうやらこの機能スニペットというらしく、eclipseとかでは定番の機能らしいんだけど俺しらなかったわあ。
xyzzyやらemacsには略語補完(abbrev)という似たような機能もあるらしいんだけど、そんなにコード入力に特化してるわけではないように見える。
不満点
まああんま使ってないんで今から不満点言うのもなんだけど、
- 文字コードが選べず、UTF-8一択っぽい
- メニューが英語
- デフォルトのテーマがなんか黒い
てあたりが不満かな。最後のテーマなんか適当に好きなのに変えればいいし、メニューはそのうち日本語パッチが出るんだろうけどShift_JISが扱えない(俺がやり方知らないだけ?)のが普段使いには辛いかな。
ただRailsやCoffeeScriptをいじる分にはいいかも。でもそれだったらeclipse展開しちゃうかな?普通は。