Cocoa TextView 中的语法突出显示?经验?建议?有想法吗?[复制]
-
13-09-2019 - |
题
可能的重复:
Cocoa 应用程序的语法着色
我对......感兴趣 语法高亮 在一个 可可 文本视图。
我找到了几个资源:
弯曲方法, ,通过一个 柔性 模式匹配
textStorageDidProcessEditing
在一个TextView
代表。在这种方法中,整个字符串都会在每个输入事件上进行解析,因此性能会下降。CocoaDev 有一个 关于语法突出显示主题的自己的页面:
使用
NSTextStorageDidProcessEditingNotification
, ,然后获取编辑的范围,然后在那里应用颜色。范围可以是字边界或任何东西;这肯定会提高性能。那里提到: 例如,Xcode 只对当前屏幕上的文本进行着色,并推迟对文档的其余部分进行着色,直到您滚动浏览它。 如何实现这一点?
使用
NSLayoutManager
- 通过 临时属性仅用于屏幕绘图,并且不会以任何方式持久化...... 正如文档所说,但是 在输入空白字符之前,不会对最后编辑的范围着色。自定义助手喜欢 UK语法彩色文档 – 很好,但是语言定义是通过属性列表完成的;如何使用附加/现有的语言定义?
对我来说,这些方法似乎都不是真正可扩展或强大的(除了 4.或许 ..)。
我知道现有的 SH 库很强大,比如 皮格门斯;和的 PyObjC.
问题:如何使用现有的库,例如喜欢 皮格门斯 在 Cocoa 中具有可扩展且高性能的语法高亮显示 TextView
?
笔记:我知道这个问题非常广泛(而且太长)。欢迎提供经验和建议以及解决方案。谢谢。
发现另一个关于此事的类似帖子: Cocoa 应用程序的语法着色
解决方案
我建议看一下源代码 斯莫特隆. 。它有非常好的语法突出显示。它使用 NSTextView 的子类来完成大部分繁重的工作。该代码使用布局管理器向文本添加属性,并使用一些其他巧妙的技巧来仅突出显示必要的文档部分。