可能重复:
Cocoa 应用程序的语法着色
我对Cocoa TextView中的语法高亮感兴趣。
我找到了几个资源:
使用 flex 方法,通过 在委托中匹配的flex模式。在这种方法中,整个字符串在每个输入事件上都会被解析,因此性能会下降。
textStorageDidProcessEditing
TextView
CocoaDev 有一个关于语法高亮主题的页面:
使用
NSTextStorageDidProcessEditingNotification
,然后获取编辑后的范围,然后在此处应用颜色。范围可能是单词边界或任何东西;这肯定会提高性能。那里提到:例如,Xcode 仅对当前屏幕上的文本着色,并推迟对文档的其余部分着色,直到您滚动浏览它。将如何实现这一点?
使用
NSLayoutManager
– 通过Temporary attributes [which] 仅用于屏幕上的绘图,并且不会以任何方式持久化......正如文档所说,但这不会为最后编辑的范围着色,直到输入空白字符。像UKSyntaxColoredDocument这样的自定义助手——很好,但是语言定义是通过属性列表完成的;如何使用其他/现有的语言定义?
对我来说,这些方法似乎都不是真正可扩展或健壮的(除了 4. 也许..)。
我知道像pygments这样的强大的 SH 现有库;和PyObjC。
问题:如何使用一些现有的库(例如pygments)在 Cocoa 中突出显示可扩展和高性能的语法TextView
?
注意:我知道这个问题非常广泛(而且太长了)。欢迎经验和建议以及解决方案。谢谢。
在这件事上找到了另一个类似的线程:Cocoa 应用程序的语法着色