代码之家  ›  专栏  ›  技术社区  ›  miku

Cocoa TextView中的语法突出显示?经验?建议?思想?[副本]

  •  10
  • miku  · 技术社区  · 15 年前

    可能重复:
    Syntax coloring for Cocoa app

    我对……感兴趣 语法突出显示 在一个 热可可 文本视图。

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

    • CocoaDev有一个 own page on the topic of syntax highlighting

      1. 使用 NSTextStorageDidProcessEditingNotification ,然后获取编辑的范围,并在那里应用颜色。范围可能是单词边界或任何东西;这无疑提高了性能。

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

      3. 使用 NSLayoutManager 通过 正如医生所说,但是

      4. 自定义类助手 UKSyntaxColoredDocument 不错,但是语言定义是通过属性列表完成的;如何使用其他/现有的语言定义?

    对我来说,没有一种方法是真正可扩展的或健壮的(除了4.maybe…)。

    我知道现有的针对SH-like的强大库 pygments ; 及 PyObjC .

    问题 :如何使用现有的库,例如 pygments 在Cocoa中突出显示可扩展且性能良好的语法 文本框 ?

    笔记


    在这个问题上找到了另一个类似的线索: Cocoa应用程序的语法着色

    1 回复  |  直到 7 年前
        1
  •  7
  •   miku    12 年前

    我建议您查看一下源代码,以便 Smultron . 它有非常好的语法高亮显示。它使用NSTextView的一个子类来完成大部分繁重的工作。该代码使用布局管理器向文本添加属性,并使用其他一些巧妙的技巧仅高亮显示所需的文档部分。