在Cocoa中实现源代码语法高亮的最佳方法是什么?

时间:2009-04-16 03:00:55

标签: objective-c cocoa syntax-highlighting nstextview

我正在研究Cocoa应用程序,它应该能够分析和突出显示用Objective-C,SQL,JavaScript,Python等语言编写的源代码。文本也应该是可编辑的(例如,使用NSTextView )。

请告知在Mac OS X 10.5中实现此类功能的最佳方法是什么。

无需支持自动完成功能和其他额外功能。通过关键字,字符串,#include和数字进行简单的格式化,但性能很酷就可以了。

此外,如果支持语言配置,那就太棒了。

谢谢!

5 个答案:

答案 0 :(得分:16)

在准备需要类似内容的项目时,我发现了以下内容(但未对其进行深入评估):

  • / Developer / Examples / OpenGL / Cocoa / GLSLEditorSample实现语法高亮显示。
  • IDEKit,“一个提供程序员源代码编辑的开源框架,包括语法着色,弹出函数和拆分框架”。这已经有一段时间没有更新(它兼容10.2和10.3兼容,并附带一个Project Builder项目 - 可以使用Xcode 2.5进行转换)。
  • UKSyntaxColoredTextDocument

答案 1 :(得分:6)

我是第二个Ahruman的建议 - 特别是看Uli的UKSyntaxColoredTextDocument,因为这将指导你正确的方向,你将需要了解哪些类等。

这是另一个极好的信息来源:

http://www.cocoadev.com/index.pl?ImplementSyntaxHighlighting

祝你好运 - 语法高亮很难做到,但一路上很有趣!

答案 2 :(得分:2)

我最近不得不为Cocoa寻找一个语法高亮解决方案,在搜索Stack Overflow后,Google和GitHub找不到任何现代的,易于重复使用且仍在积极开发中的东西。

现在看来,大多数语法荧光笔是为网络编写的。幸运的是,实际上很容易将它们嵌入WebView中以便在任何Cocoa应用程序中使用。可以通过WebKit的WebScriptObject protocol进行与编辑器的通信。

以下是Cocoa流行的JavaScript文本编辑器CodeMirror的示例包装器: https://github.com/swisspol/CodeMirrorView

答案 3 :(得分:1)

您可以使用python编写的Pygments生成源代码的HTML表示,然后可以在Web视图中显示。

(请注意,正如以下评论中所反映的那样 - 这个答案是原始问题,没有提及可编辑文本。)

答案 4 :(得分:1)

您可以考虑使用flex(德语)[1]。你可以在这里找到这种方法的一个例子[2]。

[1] http://www.osxentwicklerforum.de/thread.php?postid=14764 [2] http://objectiveous.github.com/davenport/