Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制]

2023-11-22

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

我对......感兴趣语法高亮 in a Cocoa文本视图。

我找到了几个资源:

  • 灵活接近, via a flex模式匹配textStorageDidProcessEditing in a TextView代表。在这种方法中,整个字符串都会在每个输入事件上进行解析,因此性能会下降。

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

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

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

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

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

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

我知道现有的 SH 库很强大,比如pygments;和的PyObjC.

Question:如何使用现有的库,例如喜欢pygments在 Cocoa 中具有可扩展且高性能的语法高亮显示TextView?

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


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


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制] 的相关文章

随机推荐

  • 如何将对象序列化为JSON?

    我需要将一些对象序列化为 JSON 并发送到 WebService 如何使用 org json 库来做到这一点 或者我必须使用另一台 这是我需要序列化的类 public class PontosUsuario public int idUs
  • 原生 Java 字节码检测

    对于 Java 中的字节码检测 有 asm 框架以及 bcel 和 javaassist 库 但是 我需要在本机代码中进行检测 因为在 javaagent 运行时已经加载了一些 java 类 例如 java lang Thread java
  • 编辑按钮未显示在 UITabBarController 的 MoreNavigationController 中

    A UITabBarController被压入堆栈 let presenter presentingViewController as UINavigationController let tabvc UITabBarController
  • WCF客户端代理初始化

    我正在使用 WCF 服务并使用 VS 2008 服务引用创建其代理 我正在寻找调用 WCF 服务方法的最佳模式 我是否应该在每次调用服务方法时创建客户端代理实例并在完成后立即关闭客户端 当我分析我的客户端应用程序时 我可以看到在初始化代理客
  • Google SDTT 中的错误:“为 url 提供的所有值必须指向同一页面。”

    我正在尝试为 ecom 网站上的产品列表创建一些 JSON LD 结构化数据 但在使用 Google 的结构化数据测试工具时遇到错误 到目前为止 我有这个 context http schema org type OfferCatalog
  • NSXML解析器错误域 111

    下面的代码打印以下消息 Error Domain NSXMLParserErrorDomain Code 111 The operation couldn t be completed NSXMLParserErrorDomain erro
  • 如何向变成 iBeacon 的 iPhone 发送数据?

    如何将数据发送到充当 iBeacon 的 iPhone 我正在寻找如下流程 搜索附近的 iBeacons 连接到一些 iBeacon 在设备之间交换数据 有谁知道如何将不同的蓝牙功能组合在一起 这可能吗 提前谢谢 标准iBeacons 是仅
  • 更新flutter后启动黑屏

    我最近更新了颤振 为了运行 flutter 项目 我通过 USB 使用 android 更新后 每个项目在启动时都会显示黑屏 以前的版本运行良好 我尝试更改启动画面 drawable launch background xml 在andro
  • 如何检查 uiimage 是否为空? (空、透明)

    这是检查是否存在的最佳方法UIImage是空白的 我有这个绘画编辑器 它返回一个UIImage 如果这张图片上没有任何内容 我不想保存它 试试这个代码 BOOL isImageFlag self checkIfImage image 和 c
  • 可以阻止 Enter 仅从某些输入字段在 JavaScript 中提交表单 [重复]

    这个问题在这里已经有答案了 我有一个表格onkeyup触发为某些字段创建建议框 我能够捕获向上箭头 向下箭头和转义的击键 并相应地使用它们在建议框中移动或关闭它 我想使用 Enter 将他们的选择移动到触发建议的输入字段中 但是 我似乎无法
  • 为什么价值观不同? C++ 指针

    我正在谷歌搜索一个解决方案来找出 C 中数组的长度 我发现的解决方案之一是这样的 int arr 1 2 3 4 5 6 int size arr 1 arr size is the length of the array 我很困惑 arr
  • 使用 Fluent API 的 EF 外键

    这是我的模型 我有车辆和驾驶员的一对一映射 我将首先创建车辆 然后将驾驶员映射到车辆 public class Driver public int Id get set public String Name get set public i
  • common-js utils 中的 JSON 模式验证是否支持引用?

    common js utils 中的 JSON 模式验证是否支持引用 我不能这样做https github com kriszyp commonjs utils blob master json schema js 我尝试了以下代码 typ
  • didUpdatePushCredentials 没有被调用

    我想在我的 iOS 应用程序中实现 VoIP 通知 但是didUpdatePushCredentials方法从未被调用 我无法获取设备令牌 我在应用程序中实现了 APNS 这两个服务可能会冲突吗 这是我的 AppDelegate 代码 vo
  • 设置应用默认支付服务

    让我们考虑一下用户安装了多个支持 NFC HCE 支付的应用程序的情况 这些应用程序服务在设置 NFC Tap and Pay 下可见 如果不是 如何以编程方式将您的应用程序更改为默认支付服务 CardEmulation似乎只有 API 可
  • 如何修复类型“string”不可分配给类型“T[keyof T]”

    给定以下 Typescript 函数 const setter
  • 如何在 Swift 中取消本地通知触发器

    我有一个触发器向用户显示通知 let content UNMutableNotificationContent content title Title content body Body content sound UNNotificati
  • 在 Android 版本 42 或更高版本的 Firefox 中安装未签名的 XPI

    我正在尝试重新开发一个旧项目 即我正在开发的 Android 版 Firefox 扩展 我有两部手机 一部是私人的 一部是工作的 我的 Firefox 是旧版本 40 它的工作原理与以前完全相同 但是 在我工作的手机的升级版本 Firefo
  • Qt 不加载 JPG ,仅加载 PNG

    我与同事在 Windows 7 64 位版本 Visual Studio 2008 上处理同一个项目 他们加载 JPG 并开始工作 通过 QPixmap 和样式表 并且有效 但对我来说 我只能使用 PNG 其余的根本不起作用 我还尝试更改环
  • Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Cocoa 应用程序的语法着色 我对 感兴趣语法高亮 in a Cocoa文本视图 我找到了几个资源 灵活接近 via a flex模式匹配textStorageDidProcessEditing i