概要
- Windows/Mac/Linux 等で動作するオープンソースの Ruby 専用エディタ
- Web ページは こちら
- Qt フレームワーク/C++使用して開発してみた
- ソースコードの取得は こちら から
- ソース行数は(空行、コメント行を含めて)約8500行
- ライセンス:COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
- 特徴:容易・速い・使いやすい
- 専用エディタなので、アドイン導入などの面倒な設定作業が不要。すぐに使い始めることが出来る
- Java の数倍高速な Qt/C++ で実装し、真面目な構文解析などの重い処理を実装していないので高速
- 必要充分な機能を厳選して実装したので、マスターするのが簡単
- リアルタイム構文チェックやエラー行ジャンプなど意外と便利
実装済み機能のデモンストレーション
- (Java製 IDE と比べて)高速な起動
- 保存しなくても即実行可能
- リアルタイム構文チェック
- F4 によりエラー行に順々にジャンプ
- 構文強調
- 豊富な色設定
- 標準的なGUI・編集機能
- 補完機能
- アウトライン表示
- ファイルシステム
実装してみての感想
- Ruby には -c で構文チェック機能があり、有効利用させていただいた
- Ruby の構文強調処理は予想以上に大変だった
- 動的言語なので、静的解析が困難な場合がある
- Qt のマルチプラットフォーム性・拡張性は非常に優秀
文脈により字句の意味が変わるものがあり(<<、? など)、判別が困難
構文解析では状態をスタックに積むのは簡単だが、(Qt の)構文強調では行単位で処理が行われるので、
構文解析の途中の状態を行ごとに保持する必要があった。
誰得?と言いたくなるほどの多様な文字列リテラル
こんな凄いプログラムもあった>画像、ソース
ソースを1文字も書き変えることなく、Mac/Linux で動作した。
QTextEdit(エディタクラス)は拡張性が高く、構文ハイライトクラスを再定義することで、柔軟な構文ハイライトが実現できた。
だけど、Mac版では外見に難ありな部分もあった(検索/置換ダイアログ:Win、Mac)
折畳表示など、標準で用意されているウィジットでは実装が困難な機能もある
今後の課題
- デバック機能
- vi コマンドサポート
- メソッド名補完
ブレークポイントやステップ実行も実装したいのだが、調査不足(-ldebug が使える?)