转载

【投稿】Xcode插件XBookmark开发笔记

本文是投稿文章,作者: everettjf

代码: https://github.com/everettjf/XBookmark

效果

【投稿】Xcode插件XBookmark开发笔记

menu

使用方法

首先要安装插件管理器 Alcatraz ,搜索XBookmark并安装,重启Xcode后就可以在Edit菜单中找到以下功能啦。

  • 对应代码行,按F3可增加、删除书签

  • Shift+F3,可显示书签列表

  • Command+F3,下一个书签

  • Shift+Ctrl+F3,上一个书签

背景

初入iOS开发,发现自己以前在Visual Studio中常用的书签功能,Xcode中竟然没有。网上找了一阵子,大概有以下替代方法:

  • 使用断点(Disabled Breakpoint)

  • 使用插件XToDo,增加标签BOOKMARK,并在想加书签的代码行增加注释 BOOKMARK

  • 使用插件XcodeBookmark(不是本文说的XBookmark),但此插件貌似不支持Xcode7,而且原理仍然是辅助增加断点。

目前找到了这3种方法,但感觉都不理想。没法快速进行上一个书签、下一个书签切换,没法增加书签注释。

于是,想自己开发一个,就叫做 XBookmark 吧。

预习文章

开发中大概看了以下几篇文章。

Xcode插件的文章:

http://studentdeng.github.io/blog/2014/02/21/xcode-plugin-fun/

http://www.poboke.com/study/write-a-xcode-plugin-to-auto-select-all-targets.html

http://www.onevcat.com/2013/02/xcode-plugin/

Mac开发的文章:

http://www.raywenderlich.com/17811/how-to-make-a-simple-mac-app-on-os-x-10-7-tutorial-part-13

还看了几个插件的源码。

开发步骤简要总结

  • 安装模板、创建工程

在 Alcatraz 中的 Templates 中搜索 Xcode Plugin。安装后从此模板创建工程。

【投稿】Xcode插件XBookmark开发笔记

【投稿】Xcode插件XBookmark开发笔记

增加菜单

NSMenuItem?*menuItem?=?[[NSApp?mainMenu]?itemWithTitle:@"Edit"]; if?(menuItem)?{ ????[[menuItem?submenu]?addItem:[NSMenuItem?separatorItem]]; ???? ????{ ????????NSMenuItem?*actionMenuItem?=?[[NSMenuItem?alloc]?initWithTitle:@"Toggle?Bookmark"?action:@selector(toggleBookmark)?keyEquivalent:f3]; ????????[actionMenuItem?setKeyEquivalentModifierMask:0]; ????????[actionMenuItem?setTarget:self]; ????????[[menuItem?submenu]?addItem:actionMenuItem]; ????} ????//...

获取书签位置

IDESourceCodeEditor*?editor?=?[XcodeUtil?currentEditor]; NSTextView*?textView?=?editor.textView; if?(nil?==?textView) ????return; ???? NSRange?range?=?[textView.selectedRanges[0]?rangeValue]; NSUInteger?lineNumber?=?[[[textView?string]substringToIndex:range.location]componentsSeparatedByString:@"/n"].count;  //?length?of?"file://"?is?7 NSString?*sourcePath?=?[[editor.sourceCodeDocument.fileURL?absoluteString]?substringFromIndex:7];  XBookmarkEntity?*bookmark?=?[[XBookmarkEntity?alloc]initWithSourcePath:sourcePath?withLineNumber:lineNumber]; [[XBookmarkModel?sharedModel]toggleBookmark:bookmark];  //...

增加书签列表

【投稿】Xcode插件XBookmark开发笔记

发布到 Alcatraz

挺简单,修改配置文件,创建一个 Pull Request 就可以。

见 https://github.com/supermarin/alcatraz-packages 的README。

结语

目前仅是完成了基本功能,还有几个需要优化和完善的地方。

  • 定位代码行。(代码来自XToDo的代码,但有些情况下定位速度慢。需要查找原因解决)

  • 书签标识。代码行前面显示书签符号,对号之类的。

  • 注释功能。(增加书签注释功能)

  • Mnemonic 书签。(模仿 IntelliJ 系列)

正文到此结束
Loading...