備忘録的な何か

技術ブログ的な何かです

redcar(Ruby)のオレオレ改造をしてみた。

JRubyテキストエディタRedcarというのがある。

https://github.com/redcar/redcar

 

便利なのだが、個人的に以下の不満があった。

(1) Ruby1.8系でしか動かない。Evalする時にRuby1.9系のHashの構文とか使えない

(2) 日本語ファイル名がNG。日本語ファイル(UTF-8)以外は文字化けする。

(3)ドラッグアンドドロップでファイルが読み込めない。

(4) 内部でEvalする機能のOutputがシェルに出たりしてイマイチ。あと、手軽にEvalしたい。

(5) クリップボード履歴機能があるが、RedcarにFocusがあるときしか履歴をためてくれない

(6) 前回状態(開いてたタブ)を復帰できない。

 

ということで、オレオレ改造をしてみた。

https://www.dropbox.com/s/62ge9h0gpetyzx4/redcar_v_ore.zip

 

ひどい改造の仕方なので、ソースは見ると辛い気持ちになるかもしれません。(テストもろくにしてない。例えば、1.9でlambda{}が動かなくなった箇所をProc.new{}に全置換したり..)

 

あと、Windowsでしか動きません!!さらに、Javaは32bitしか動きません。

64bitOSの方は、32bitのJavaの方にPathを通してください。(もしくは、JRubyの-d32オプション。試してないけど。)

JRubyの1.7系はインスト必須。redcar.batで起動できます。

 

前置きが長くてあれですが、以下の機能を追加しました。

(1) Ruby1.9系,2.0系で動く。(試していないが、1.8系では動かない)

(2) 日本語ファイルが読み込める。但し、保存すると強制的にUTF-8になる。

(3) ドラッグアンドドロップでファイルが読める。

(4) 簡単に内部でEvalできる。これ一押し!右クリック→Evalもしくは、EvalSelection(選択範囲)で、指定したコードをEvalできる。トップレベルでevalしてるので、ローカル変数も保持できる。irbの変化版みたいなもので、内部からredcarをいじくり回せる。

例えば、all_tab.each{|x| puts [x.title,x.document.path,x.text]*"\n"}

をEvalすれば、開いている全タブのタイトル、ファイルパス、テキストを表示できる。

(all_tabとtextは私が作った簡単なメソッド(エイリアス))

 

他に、Redcar::Top::OpenNewEditTabCommand.new.run

とすれば、新しいTabが開く。

ということで、色々と夢がひろがりんぐな機能となっている。

 

(5) 起動していれば、大体のコピーした履歴は残る。

(6) 前回開いていたファイルを次回起動時に開いてくれる。

(7) なんとなく不安定動きをする。いや、かなり不安定。

 

で、このオレオレRedcarの何がいいかというと、ある程度作ったスクリプトを、evalで試すみたいなことができる。irbだと対話形式なので、やりにくい場合に便利。

 

ということで、全体的にあんまりいい出来ではないけれど、結構頑張ったのでこっそりブログの中だけで公開します...。自分の環境固有のコードを入れてて、他の環境だと動かなかったりするかも。(デフォルトフォントをメイリオにしてたり。)