教你如何用Swift编写Xcode插件

492 查看

GitHub上的源代码

02.gif

在我的AppCode项目创建过程中,我想念最多的一件事是:能跳转到记录控制台信息的指定文件和行。

Xcode不提供这样的功能,而我不是一个喜欢抱怨的人,所以我决定自己写个插件。我用Swift来编写这个插件。

想法

如果一个控制台记录了fileName.extension:XX 这样一个名字,转换成可点击的超链接,这个链接将会打开指定的文件并将那行代码高亮。

那样你可以使用自己的记录机制,只要添加这个简单的前缀,比如:

【代码】

或者可以使用CocoaLumberjack,你要想一些好的日志,可以用我的自定义格式。

Swift版本(Objective-C版本是KZBootstrap的一部分)

实现—主要部分

要实现那些需求我们需要做到两点:

1、控制台NSTextStorage fixAttributesInRange–这样我们可以在找到正则表达式日志的时候随时更改属性。

2、NSTextView mouseDown–这样在控制台的链接里点击鼠标的时候,我们可以强迫Xcode打开文件并高亮那一行。

怎样把我们的功能注入到那些操作里去?

简单调整:

我们如何确定一个NSTextStorage 是控制台实际的那个?

我们可以观察IDEControlGroupDidChangeNotification ,找到IDEConsoleTextView 并使用相关对象把存储标记为控制台的那个,这个随后就会排上用场。