10

重複の可能性:
Cocoaアプリの構文の色付け

CocoaTextViewでの構文の強調表示に興味があります。

私はいくつかのリソースを見つけました:

  • デリゲートで照合 されたフレックスパターンを介して、フレックスでアプローチします。このアプローチでは、文字列全体が各入力イベントで解析されるため、パフォーマンスが低下します。textStorageDidProcessEditingTextView

  • CocoaDevには、構文の強調表示に関する独自のページがあります

    1. を使用NSTextStorageDidProcessEditingNotificationして、編集した範囲を取得し、そこに色を適用します。範囲はwordboundariesまたは何かである可能性があります。これにより、パフォーマンスが確実に向上します。

    2. そこに言及:たとえば、Xcodeは現在画面に表示されているテキストのみを色付けし、スクロールするまでドキュメントの残りの部分の色付けを延期します。これをどのように実装しますか?

    3. 使用NSLayoutManager–一時属性を介して[これは]画面上の描画にのみ使用され、永続的ではありません...ドキュメントにあるように、空白文字が入力されるまで、最後に編集された範囲は色付けされません。

    4. UKSyntaxColoredDocumentのようなカスタムヘルパー–すばらしいですが、言語定義はプロパティリストを介して行われます。追加/既存の言語定義を使用する方法は?

アプローチのどれも私には本当に拡張可能または堅牢に見えません(4.多分..を除いて)。

私は、pygmentsのようなSH用の堅牢な既存のライブラリを知っています。およびPyObjCの。

質問: Cocoaで拡張可能でパフォーマンスの高い構文を強調表示するために、たとえばpygmentsなどの既存のライブラリをどのように使用できますTextViewか?

:私はこの質問が非常に広い(そして長すぎる)ことを知っています。経験や提案、解決策は大歓迎です。ありがとう。


その問題について別の同様のスレッドを見つけました:Cocoaアプリの構文の色付け

4

1 に答える 1

7

Smultronのソースコードを確認することをお勧めします。非常に優れた構文の強調表示があります。NSTextViewのサブクラスを使用して、手間のかかる作業のほとんどを実行します。このコードは、レイアウトマネージャーを使用してテキストに属性を追加し、その他の巧妙なトリックを使用して、必要なだけドキュメントを強調表示します。

于 2009-06-10T10:15:30.640 に答える