2009-06-09 8 views
10

可能性の重複:
Syntax coloring for Cocoa appシンタックスCocoa TextViewで強調表示しますか?経験?提案?アイデア?

私はココアのTextViewにを強調構文に興味があります。 TextViewデリゲートにtextStorageDidProcessEditing と照合flexパターンを経由して、

  • approach with flex

    は、私はいくつかのリソースを発見しました。このアプローチでは、文字列全体が各入力イベントで解析されるため、パフォーマンスが低下します。

    1. 使用NSTextStorageDidProcessEditingNotification、その後、編集した範囲を取得し、そこに着色を適用します。

    2. CocoaDevはown page on the topic of syntax highlightingがあります。範囲は単語境界などである可能性があります。これにより間違いなくパフォーマンスが向上します。

    3. ここに記載されています:Xcodeは、たとえば、現在スクリーン上に表示されているテキストのみを色付けし、スクロールするまでドキュメントの残りの部分を色づけしません。これはどのように実装されますか?唯一、画面上の描画に使用し、任意の方法で永続的ではありませんされている[] 一時的な属性...経由でドキュメントが言うように、しかしが最後編集した範囲を着色していないこと -

    4. 使用NSLayoutManager空白文字が入力されるまで続けます。

    5. カスタムヘルパーのようにUKSyntaxColoredDocument - いいですが、言語の定義はプロパティリストで行います。追加/既存の言語定義の使い方アプローチの

どれも私には本当に拡張性や堅牢思えない(多分4を除きます。)。

私は、SHのための強力な既存のライブラリがpygmentsのように分かっています。 PyObjCです。

質問:既存のライブラリをどのように使用することができますか? pygmentsのように、ココアTextViewで拡張性とパフォーマンスの高い構文の強調表示を使用していますか?

注::私はこの質問が非常に幅広く(しかも長すぎる)ことを知っています。経験と提案と解決策は大歓迎です。ありがとう。そのことで、他の同様のスレッドが見つかり


Syntax coloring for Cocoa app

答えて

7

を私はSmultronにソースコードを見てみお勧めします。それは非常に素晴らしい構文強調を持っています。これは、NSTextViewのサブクラスを使用して大部分の作業を行います。このコードでは、レイアウトマネージャを使用してテキストに属性を追加し、その他の巧妙なトリックを使用して必要なだけ多くのドキュメントを強調表示します。

+0

Smultronはもはやオープンソースではないため、ソースコードはもう入手できません。 – zpasternack

+1

ソースはまだsoureforgeのWebサイトで入手できます。ここをクリックしてください:http://sourceforge.net/projects/smultron/files/smultron/3.6b1/ – Daniel

+0

私は修正しました、ありがとう! – zpasternack

関連する問題