可能的重复:
Cocoa 应用程序的语法着色
我对......感兴趣语法高亮 in a Cocoa文本视图。
我找到了几个资源:
灵活接近, via a flex模式匹配textStorageDidProcessEditing
in a TextView
代表。在这种方法中,整个字符串都会在每个输入事件上进行解析,因此性能会下降。
-
CocoaDev 有一个关于语法突出显示主题的自己的页面:
Use NSTextStorageDidProcessEditingNotification
,然后获取编辑的范围,然后在那里应用颜色。范围可以是字边界或任何东西;这肯定会提高性能。
那里提到:例如,Xcode 只对当前屏幕上的文本进行着色,并推迟对文档的其余部分进行着色,直到您滚动浏览它。如何实现这一点?
Use NSLayoutManager
– via 临时属性仅用于屏幕绘图,并且不会以任何方式持久化......正如文档所说,但是在输入空白字符之前,不会对最后编辑的范围着色。
自定义助手喜欢UK语法彩色文档– 很好,但是语言定义是通过属性列表完成的;如何使用附加/现有的语言定义?
对我来说,这些方法似乎都不是真正可扩展或强大的(除了 4.也许..)。
我知道现有的 SH 库很强大,比如pygments;和的PyObjC.
Question:如何使用现有的库,例如喜欢pygments在 Cocoa 中具有可扩展且高性能的语法高亮显示TextView
?
Note:我知道这个问题非常广泛(而且太长)。欢迎提供经验和建议以及解决方案。谢谢。
发现另一个关于此事的类似帖子:Cocoa 应用程序的语法着色
我建议看一下源代码Smultron。它有非常好的语法突出显示。它使用 NSTextView 的子类来完成大部分繁重的工作。该代码使用布局管理器向文本添加属性,并使用一些其他巧妙的技巧来仅突出显示必要的文档部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)