iOSアプリにRubyのシンタックスハイライトを組み込んだ

ofrubyシンタックスハイライトを組み込んだ。

f:id:tuto0621:20150517175305p:plain

iOS7以降だったら自動でソースコードが色付けされるようになる。UITextViewに色々カスタマイズ出来るようになった(TextKit)のがiOS7以降なので残念ながらiOS6は今までどおり。

情報源

特に以下のブログが助けになった。

最終的に使ったライブラリ

作戦

  • UITextViewの代わりにICTextViewを使って細々としたバグを直す
    • UITextViewをカスタマイズしようとすると挙動が本当にびっくりするくらいおかしくなる(Apple頑張ってほしい)
    • いくつか試した感じICTextViewが一番安定していた(画面の一番上にカーソルを移動させたときの挙動とか完全には直ってないけど)
    • 他によいUITextViewカスタマイザーがあったら教えてください
  • 「Getting to Know TextKit」を参考にRubyシンタックスハイライト用のカスタムTextStorageを実装
    • RubyHighlightingTextStorage.mEditViewController.mmが処理の中心

詳しく知りたい人は先に情報源を読んでからfeature/code-highlightブランチのコミットログを読むととよい。

入れてみた感想

やっぱり色は大事。小さな画面でも色付けされているとぱっとコード全体の構造が把握出来るようになった。文法エラーも発見しやすい。

ソースコードが色付けされてBluetoothキーボードを使うと大分PCに近づいた気がする。いつでもどこでもコードが書ける、思いついたことをすぐにコードに落とし込める、という意味ではPCに比べてアドバンテージがあるのでエディタ機能の改善は引き続き行っていきたい。

オートインデントとかオートコンプリージョンとかが次の候補だろうか。