手皇冠足球比分教你用Source Editor Extension开发Xcode插件 | 码农网
分类:新闻 热度:

  • 绪论
  • Xcode 拔出历史
  • 造成可插件
    • 使被平面图好 macOS 家用电器
    • 编制可插件密码
    • 修正可插件命名
    • 调试可插件
    • 拿出可插件
    • 设置快捷键
  • 毕业班学生解说
    • Demo 逻辑
    • Plist 文章处置
    • XCSourceEditorCommand 拟定议定书
    • XCSourceEditorExtension 拟定议定书
  • 总结

绪论

独身工程工程,适于上演稳定性与建造、市价装配的摘要派的和密码合格的,不得不进入反复精读任命阶段。。同一事物的反复任命,就是说,盘问有常作复合词的形式和决心历程来填写,满意的最大的是反复的。、划一编码,单独的一小部分任命需求思索。、摘要、造成。但这些完全一样的动使忙碌了最大的工夫本钱。,并且鉴于其机械性因而最轻易呈现成绩。

因而自动化机器或设备化反复任命,用密码写出密码,队的键任命经过,容许盟员将工夫和生气集合在更风趣的成绩上。开展 IDE 可插件,这种密码级的自动化机器或设备化可以造成。

我以为变得独身可插件,造成引起 cell 的 .xib 和 .swift 文章和自动化机器或设备关系等功用,练手,最后泄漏,眼前 Xcode 不维持翻开的可插件。

Xcode拔出历史

在Xcode 前8,Xcode 可插件受胎却更的开展,杂多的近便的的可插件、特可插件管理工具 Alcatraz 等。

但从 Xcode 8 开端,出于承保解释(诸如 Xcode ghost 事情),Apple 不再维持第三方的可插件,但也供给了receiver 收音机。-- Xcode Source Editor Extension,眼前,单独的无限的原文编纂助手才干填写。。

本文演示: )

造成可插件

本文的开展围绕:Xcode Version 10.2.1 (10E1001)

使被平面图好MacOS家用电器程序

翻开Xcode,File->New->Project…,选择 macOS->Application>Cocoa App,填写 Product Name

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

新建 Target,File->New->Target…,选择 macOS->Application Extension->Xcode Source Editor Extension,填写 Product Name,如 ZExtension。从工程当心窗口中选择 Activate。

当心:该 Target 当可插件。

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

编制可插件密码

修正 文章。

上面的密码造成了对导入停止排序的功用

func 演(用) invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (失误? -> Void ) -> Void {
    // Implement your command here, invoking the completion handler when 填写。 Pass it nil on success, and an NSError on 挠败。

    let linesToSort = .filter { line in
        return (线) as? 字母串)?.hasPrefix(导入) ?? false
    }

    guard linesToSort.count > 0 else {
        completionHandler(nil)
        return
    }

    let firstLineIndex = (指 linesToSort[0]) // For insert
    guard firstLineIndex >= 0 else {
        completionHandler(nil)
        return
    }
    中 linesToSort)
    let linesSorted = (线)sToSort as? [弦乐] ?? []).sorted() {$0 <= $1}
    ().forEach { (线)) in
        .insert(线), at: firstLineIndex)
    }
    let selectionsUpdated: [XCSourceTextRange] = (0..<).map { (index) in
        let lineIndex = firstLineIndex + index
        let endColumn = linesSorted[index].count - 1
        return XCSourceTextRange(start: XCSourceTextPosition(线): lineIndex, column: 0), end: XCSourceTextPosition(线): lineIndex, column: endColumn))
    }
    (selectionsUpdated)
    completionHandler(nil)
}

修正可插件命名

在 ZExtension/ 可插件解释可以在中更改,对应的 Key 是 XCSourceEditorCommandName,维持国文。

也许不停止修正,Windows 默认值为 Source Editor Command。

调试可插件

选择新的 Scheme,如 ZExtension,运转(命令 R)。从工程当心窗口中选择 Xcode,点 打击跑。

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

接下来是灰色颜料xcode摇曳,使被平面图好新工程或翻开份量工程。本文应用独身份量工程 Test。

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

应用可插件排序,点击 Editor->ZExtension->Source Editor Command。

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

以下是可插件运转的最后:

手皇冠足球比分教你用Source Editor Extension开发Xcode可插件

最后显示,拥有 import 平面图得精致的。!

拿出可插件

可插件填写后,它需求投入应用。。

可以问题已编制的可插件,到架子上 Mac App Store。在 Xcode->Xcode Extensions… 你可以领会架子上的可插件。我还没出场。,穹窿最重要的。

在可插件工程中,将 Products-> 将文章抄录到家用电器程序,双点取翻开。此刻在体系受优先偿还的权利设置->连续的一段时间->Xcode Source Editor,您可以领会可插件,它曾经反省过了。。重启 Xcode 你可以用它。。

设置快捷键

您可以设置可插件的快捷方式,近便的应用。

在 Xcode->Preferences…->Key Bindings->Editor Menu for Source Code,查找并设置。提议用 alt 如 alt+s,幸免与剩余部分快捷方式抵触。

毕业班学生解说

完成后,短暂的解说以下几个的特定之物。

演示逻辑

演示中有两个次要手术:

lines 是流传的编纂文章的每行满意的,selections 流传的选择编纂文章。

Demo 逻辑是:

  1. 准备工作出适合授权的行 linesToSort(以 import 开始讲话)
  2. 记载第独身限行的最重要的行全部剧目的行数,排序后的拔出臀部
  3. 从 剔除限行
  4. 排序限行 linesSorted
  5. 拔出排序行
  6. 获取拥有更改行新闻 selectionsUpdated,设置

次要在 XCSourceEditorCommand 议定书的完成。

Plist 文章处置

在文档中很重要 key 是 NSExtension 的 NSExtensionAttributes,收录两个 key:

  1. XCSourceEditorCommandDefinitions
  2. XCSourceEditorExtensionPrincipalClass

XCSourceEditorCommandDefinitions

XCSourceEditorCommandDefinitions 是设置每个命令的新闻(辅佐菜肴):

  1. XCSourceEditorCommandClassName
  2. XCSourceEditorCommandIdentifier
  3. XCSourceEditorCommandName

第独身是处置刚过去的命令的类名。,刚过去的类需求造成 XCSourceEditorCommand 拟定议定书;其次个是每个命令的贴标签于。,用于 XCSourceEditorCommand 拟定议定书方式区别处置命令;第三个是命令的显示解释。。

XCSourceEditorExtensionPrincipalClass

连续的一段时间类名,刚过去的类需求造成 XCSourceEditorExtension 拟定议定书。

XCSourceEditorCommand拟定议定书

/** A command provided by a source editor 延伸。 There does not need to be a one-to-one mapping between command classes and commands: Multiple commands can be handled by a single class, by checking their 祈求救助 commandIdentifier at 运转时。 */
@protocol XCSourceEditorCommand 

基准公职的正文,造成 XCSourceEditorCommand 类可以处置多个命令,就是说,多个辅佐菜肴,经过 来区别。而 commandIdentifier 是 中,XCSourceEditorCommandDefinitions 外面的每个工程 XCSourceEditorCommandIdentifier 所精确地解释的。

/** Perform the action associated with the command using the information in a 祈求救助。 Xcode will pass the code a completion handler that it must invoke to finish performing the command, passing nil on success or an error on 挠败。
 
 A canceled command must still call the completion handler, passing 零。
 
 
ote Make no assumptions about the thread or queue on which this method will be 祈求救助。
 */
- (void)performCommandWithInvocation:(XCSourceEditorCommandInvocation *)invocation completionHandler:(void (^)(NSError * _Nullable nilOrError))completionHandler;

这是 XCSourceEditorCommand 拟定议定书精确地解释方式。

  • XCSourceEditorCommandInvocation

commandIdentifier 属性,用于区别不一样的命令;buffer,XCSourceTextBuffer 典型,IT的次要用途 lines 和 selections 属性。

造成逻辑后,必然的祈求救助 completionHandler 完毕可插件命令,成说得中肯援用 nil,挠败时援用 error 抱反感。祈求救助和交付参量是必不可少的东西的,假设离开历程 nil。

团结 Plist 文章和 XCSourceEditorCommand 拟定议定书,本人可以编制处置多个命令的可插件。

XCSourceEditorExtension拟定议定书

/** Invoked when the extension has been launched, which may be some time before the extension actually receives a command (也许 不朽)
 
 
ote Make no assumptions about the thread or queue on which this method will be 祈求救助。
 */
- (void)extensionDidFinishLaunching;

可插件装货后的处置。

总结

可以看出,眼前 Xcode Source Editor Extension receiver 收音机的可插件功用无限,不维持用户界面共有的,它要不是限于原文处置。。我祝福苹果未来能详述事情。 API 开发人员应用。

-END-

欢送到我的视频博客交流:

上一篇:【转藏】二十四山立向分金表 下一篇:没有了
猜你喜欢
各种观点
热门排行
精彩图文