你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 【投稿】Xcode插件XBookmark開發筆記

【投稿】Xcode插件XBookmark開發筆記

編輯:IOS開發基礎

本文是投稿文章,作者:everettjf
代碼:https://github.com/everettjf/XBookmark
效果

xbookmark3.png

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。安裝後從此模板創建工程。

04.png

05.png

增加菜單

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];
//...


增加書簽列表

06.png

發布到 Alcatraz

挺簡單,修改配置文件,創建一個 Pull Request 就可以。

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

結語

目前僅是完成了基本功能,還有幾個需要優化和完善的地方。

  • 定位代碼行。(代碼來自XToDo的代碼,但有些情況下定位速度慢。需要查找原因解決)

  • 書簽標識。代碼行前面顯示書簽符號,對號之類的。

  • 注釋功能。(增加書簽注釋功能)

  • Mnemonic 書簽。(模仿 IntelliJ 系列)

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved