Cocoa TextView の構文強調表示?経験?提案はありますか?アイデアは?[重複]
-
13-09-2019 - |
質問
重複の可能性:
Cocoa アプリの構文カラーリング
私は興味を持っている 構文の強調表示 で ココア テキストビュー。
いくつかのリソースを見つけました。
フレックスでアプローチする, 、経由 フレックス パターンと一致しました
textStorageDidProcessEditing
でTextView
代表者。このアプローチでは、入力イベントごとに文字列全体が解析されるため、パフォーマンスが低下します。CocoaDev には 構文の強調表示に関する独自のページ:
使用
NSTextStorageDidProcessEditingNotification
, 次に、編集範囲を取得し、そこに色を適用するだけです。範囲は単語の境界でも何でも構いません。これによりパフォーマンスが確実に向上します。そこで言及されているのは: たとえば、Xcode は現在画面上にあるテキストのみを色付けし、ドキュメントの残りの部分の色付けはスクロールするまで延期します。 これをどのように実装すればよいでしょうか?
使用
NSLayoutManager
- 経由 一時属性は画面上の描画にのみ使用され、決して永続的ではありません... ドキュメントにあるように、しかしそれは 空白文字が入力されるまで、最後に編集された範囲に色は付けられません。カスタムヘルパーのような 英国構文色付きドキュメント – それはいいですが、言語定義はプロパティ リストによって行われます。追加/既存の言語定義を使用するにはどうすればよいですか?
私にとって、どのアプローチも本当に拡張性や堅牢性があるとは思えません (4 を除く)。多分 ..)。
私は、次のような SH 用の強力な既存ライブラリを認識しています。 顔料;そしての PyObjC.
質問:既存のライブラリを使用するにはどうすればよいでしょうか。のように 顔料 Cocoa で拡張可能でパフォーマンスの高い構文強調表示を実現する TextView
?
注記:この質問は非常に広範囲にわたる (そして長すぎる) ことは承知しています。経験や提案、解決策なども歓迎します。ありがとう。
この問題に関する別の同様のスレッドを見つけました。 Cocoa アプリの構文カラーリング
解決
私は、ソースコードを見てみることをお勧め Smultron 。それはとても素敵なシンタックスハイライトを持っています。これは、重い物を持ち上げるのほとんどを行うためにNSTextViewのサブクラスを使用しています。コードは、テキストに属性を追加するレイアウトマネージャを使用してのみ、必要に応じて文書の多くを強調するために他のいくつかの巧妙なトリックを使用します。