Skip to content

jiangboLee/LEENote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LEENote

注释小插件

先看效果.gif

在Xcode8.0以上,xcode提供了Xcode Source Editor Extension来开发插件。 Xcode Source Editor Extension.png

Xcode中多行注释可以command + / 来注释代码

//    override func viewDidLoad() {
//        super.viewDidLoad()
//
//    }

由于不太喜欢每一行前面都//这样显得这个页面比较乱。像整个代码块还是使用多行注释/***/,这样看起来比较简洁。

/** 2017-11-29 16:06:16
    override func viewDidLoad() {
        super.viewDidLoad()

    }
*/

所以决定自己开发有一个小插件咯。先直接填代码:

class SourceEditorCommand: NSObject, XCSourceEditorCommand {
    
    func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {
        // Implement your command here, invoking the completion handler when done. Pass it nil on success, and an NSError on failure.
        // 第一个选中区域
        let firstSelectObject: XCSourceTextRange = invocation.buffer.selections.firstObject as! XCSourceTextRange
        let buffer = invocation.buffer
       
        var start = firstSelectObject.start.line
        var end = firstSelectObject.end.line
        var startStr: String = buffer.lines[start] as! String
        var endStr: String = buffer.lines[end] as! String
        
        if start == end {
            
        } else {
            
            while checkSpace(str: endStr) {
                if end == start {
                    break
                }
                end -= 1
                endStr = buffer.lines[end] as! String
            }
            while checkSpace(str: startStr) {
                if end == start {
                    break
                }
                start += 1
                startStr = buffer.lines[start] as! String
            }
        }
        //如果是已经注释的就去掉注释
        if  startStr.hasPrefix("/**") && endStr.hasPrefix("*/") {
            buffer.lines.removeObject(at: end)
            buffer.lines.removeObject(at: start)
            completionHandler(nil)
            return
        }
        //自己多增加了个注释时间
        let dateFormatter = DateFormatter()
        dateFormatter.locale = NSLocale(localeIdentifier: "zh_CN") as Locale!
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        let str = dateFormatter.string(from: NSDate() as Date)
        //代码块前后添加注释字符
        buffer.lines.insert("*/", at: end + 1)
        buffer.lines.insert("/** \(str)", at: start)
    

        completionHandler(nil)
    }

    /// 是否为全是空格
    func checkSpace(str: String) -> Bool {
        if (str.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) as NSString).length == 0 {
            return true
        }
        return false
    }
    
}
下载后打开文件夹

leenote.png

将LeeNote拖到应用程序

双击.png

在个人设置中扩展,将LeeNote插件打钩

打钩.png

然后打开Xcode,设置快捷键。接下来重启下Xcode.ok~

快捷键.png

使用很简单咯

选个代码块,按下快捷键

/** 2017-11-29 16:20:02
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) CLLocationManager *locationManager;
*/

About

注释小插件

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages