可能的重复:
Cocoa 应用程序的语法着色

我对......感兴趣 语法高亮 在一个 可可 文本视图。

我找到了几个资源:

  • 弯曲方法, ,通过一个 柔性 模式匹配 textStorageDidProcessEditing在一个 TextView 代表。在这种方法中,整个字符串都会在每个输入事件上进行解析,因此性能会下降。

  • CocoaDev 有一个 关于语法突出显示主题的自己的页面:

    1. 使用 NSTextStorageDidProcessEditingNotification, ,然后获取编辑的范围,然后在那里应用颜色。范围可以是字边界或任何东西;这肯定会提高性能。

    2. 那里提到: 例如,Xcode 只对当前屏幕上的文本进行着色,并推迟对文档的其余部分进行着色,直到您滚动浏览它。 如何实现这一点?

    3. 使用 NSLayoutManager - 通过 临时属性仅用于屏幕绘图,并且不会以任何方式持久化...... 正如文档所说,但是 在输入空白字符之前,不会对最后编辑的范围着色。

    4. 自定义助手喜欢 UK语法彩色文档 – 很好,但是语言定义是通过属性列表完成的;如何使用附加/现有的语言定义?

对我来说,这些方法似乎都不是真正可扩展或强大的(除了 4.或许 ..)。

我知道现有的 SH 库很强大,比如 皮格门斯;和的 PyObjC.

问题:如何使用现有的库,例如喜欢 皮格门斯 在 Cocoa 中具有可扩展且高性能的语法高亮显示 TextView?

笔记:我知道这个问题非常广泛(而且太长)。欢迎提供经验和建议以及解决方案。谢谢。


发现另一个关于此事的类似帖子: Cocoa 应用程序的语法着色

有帮助吗?

解决方案

我建议看一下源代码 斯莫特隆. 。它有非常好的语法突出显示。它使用 NSTextView 的子类来完成大部分繁重的工作。该代码使用布局管理器向文本添加属性,并使用一些其他巧妙的技巧来仅突出显示必要的文档部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top