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