当前位置: 首页 > 面试题库 >

可可TextView中的语法突出显示?经验?有什么建议吗?有想法吗?[重复]

阚原
2023-03-14
问题内容

这个问题已经在这里有了答案

8年前关闭。

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

我感兴趣的是 语法高亮显示可可 的TextView。

我发现了一些资源:

  • flex的方法,通过 在委托中匹配的flex模式。在这种方法中,整个字符串会在每个输入事件中进行解析,因此性能会下降。textStorageDidProcessEditing``TextView

  • CocoaDev在语法突出显示主题上有自己的页面:

    1. 使用NSTextStorageDidProcessEditingNotification,然后获得已编辑的范围,然后在该处应用颜色。范围可以是字边界或任何东西;这绝对可以提高性能

    2. 此处提到: 例如,Xcode仅使当前屏幕上的文本着色,并推迟为文档的其余部分着色,直到您滚动浏览它为止。 一个人将如何实现呢?

    3. 使用NSLayoutManager–通过 临时属性[临时属性] [仅用于屏幕上的绘图,并且不以任何方式持久化… 如文档所述,但是 在输入空格字符之前它不会为最后编辑的范围着色。

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

对我来说,这些方法似乎都不是真正可扩展的或健壮的(除了4 …以外)。

我知道像SHYPYMENTS一样强大的现有库;和PyObjC。

问题
:如何使用现有的库(例如pygments)在Cocoa中突出显示可扩展的高性能语法TextView

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

在此问题上发现了另一个类似的主题:Cocoa应用程序的语法着色


问题答案:

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



 类似资料:
  • 我有一个很长的switch语句代码(大约8个案例),它决定了在浏览器中使用什么搜索来查找元素。有没有关于如何重构这段代码的建议? WebElement CurrentObject=null;切换(SearchBy){case“className”:尝试{CurrentObject=new WebDriverWait(driver,ConstantValues.LONGWAIT)。直到(Expect

  • 总的来说,问题是做什么?

  • 问题内容: 我正在做一个基于滚动2D地图/平铺的游戏。每个图块(存储为tile [21] [11]-每个地图总共231个图块)最多可以包含21个值(存储为int [3] [7])。在全屏模式下,我一次可以看到8张地图。 平均而言,每张地图的绘制时间约为0.03秒(可通过System.nanoTime找到)。问题在于,一旦在屏幕上显示多于一张地图,Swing事件轮询就会明显变慢。 有什么解决办法吗?

  • 问题内容: 我有一个具有多个程序包依赖项的项目,其主要要求在中列出。当我打电话时,它将当前安装的软件包打印为普通列表。我希望也获得他们的依赖关系,如下所示: 目的是检测每个特定程序包的依赖性: 并将它们插入我的当前。例如,对于此输入: 我想得到: 有什么办法显示已安装的pip软件包的依赖性? 问题答案: 您应该看一下: 它不会像您直接指示的那样生成文件。但是,源代码(255行python代码)应该

  • 问题内容: 我有一个使用XML和反射将 s 返回到另一个类的类。 通常,这些对象是外部对象的子字段,但有时我想即时生成它。我已经尝试过类似的方法,但无济于事。我相信这是因为Java不允许你访问进行反射的方法。 如果提供的方法失败,则失败。我可以通过制作方法来解决它,或者制作另一个类来派生它。 长话短说,我只是想知道是否存在一种通过反射访问方法的方法。 问题答案: 你可以使用反射调用私有方法。修改已