├── .gitignore
├── CComment
├── CComment.entitlements
├── Info.plist
├── SourceEditorCommand.swift
└── SourceEditorExtension.swift
├── LICENSE
├── README.md
├── XcodeCComment.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ ├── CComment.xcscheme
│ └── XcodeCComment.xcscheme
├── XcodeCComment
├── AppDelegate.swift
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Base.lproj
│ └── Main.storyboard
├── Info.plist
├── MyPlayground.playground
│ ├── Contents.swift
│ └── contents.xcplayground
└── ViewController.swift
├── XcodeCCommentTests
├── Info.plist
└── XcodeCCommentTests.swift
└── XcodeCCommentUITests
├── Info.plist
└── XcodeCCommentUITests.swift
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | ## Playgrounds
31 | timeline.xctimeline
32 | playground.xcworkspace
33 |
34 | # Swift Package Manager
35 | #
36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
37 | # Packages/
38 | .build/
39 |
40 | # CocoaPods
41 | #
42 | # We recommend against adding the Pods directory to your .gitignore. However
43 | # you should judge for yourself, the pros and cons are mentioned at:
44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
45 | #
46 | # Pods/
47 |
48 | # Carthage
49 | #
50 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
51 | # Carthage/Checkouts
52 |
53 | Carthage/Build
54 |
55 | # fastlane
56 | #
57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
58 | # screenshots whenever they are needed.
59 | # For more information about the recommended setup visit:
60 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
61 |
62 | fastlane/report.xml
63 | fastlane/Preview.html
64 | fastlane/screenshots
65 | fastlane/test_output
66 |
67 | .DS_Store
68 |
--------------------------------------------------------------------------------
/CComment/CComment.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CComment/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | CComment
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | XPC!
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSExtension
26 |
27 | NSExtensionAttributes
28 |
29 | XCSourceEditorCommandDefinitions
30 |
31 |
32 | XCSourceEditorCommandClassName
33 | $(PRODUCT_MODULE_NAME).SourceEditorCommand
34 | XCSourceEditorCommandIdentifier
35 | $(PRODUCT_BUNDLE_IDENTIFIER).SourceEditorCommand
36 | XCSourceEditorCommandName
37 | Comment Selection
38 |
39 |
40 | XCSourceEditorExtensionPrincipalClass
41 | $(PRODUCT_MODULE_NAME).SourceEditorExtension
42 |
43 | NSExtensionPointIdentifier
44 | com.apple.dt.Xcode.extension.source-editor
45 |
46 | NSHumanReadableCopyright
47 | Copyright © 2016 flexih. All rights reserved.
48 |
49 |
50 |
--------------------------------------------------------------------------------
/CComment/SourceEditorCommand.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SourceEditorCommand.swift
3 | // CComment
4 | //
5 | // Created by flexih on 7/24/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import XcodeKit
11 |
12 | enum CommentStatus {
13 | case Plain
14 | case Unpair
15 | case Pair(range: NSRange)
16 | }
17 |
18 | fileprivate struct Constants {
19 | static let startSymbol = "/*"
20 | static let endSymbol = "*/"
21 | }
22 |
23 | class SourceEditorCommand: NSObject, XCSourceEditorCommand {
24 |
25 | func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Swift.Void ) {
26 |
27 | let buffer = invocation.buffer
28 | let selections = buffer.selections
29 |
30 | selections.forEach {
31 | let range = $0 as! XCSourceTextRange
32 | if range.start.line == range.end.line && range.start.column == range.end.column {
33 | let fake: XCSourceTextRange = range
34 | let lineText = buffer.lines[fake.start.line] as! String
35 |
36 | fake.start.column = 0
37 | fake.end.column = lineText.distance(from: lineText.startIndex, to: lineText.endIndex) - 1
38 |
39 | if fake.end.column > fake.start.column {
40 | handle(range: fake, inBuffer: buffer)
41 | }
42 |
43 | } else {
44 |
45 | handle(range: range, inBuffer: buffer)
46 | }
47 | }
48 |
49 | completionHandler(nil)
50 | }
51 |
52 | func handle(range: XCSourceTextRange, inBuffer buffer: XCSourceTextBuffer) -> () {
53 | let selectedText = text(inRange: range, inBuffer: buffer)
54 | let status = selectedText.commentStatus
55 | let startSymbolLength = Constants.startSymbol.count
56 | let endSymbolLength = Constants.endSymbol.count
57 |
58 | switch status {
59 | case .Unpair:
60 | break
61 | case .Plain:
62 | insert(position: range.end, with: Constants.endSymbol, inBuffer: buffer)
63 | insert(position: range.start, with: Constants.startSymbol, inBuffer: buffer)
64 |
65 | // Fix selection
66 | let sameLine = range.start.line == range.end.line
67 | let offset = sameLine ? startSymbolLength + endSymbolLength : endSymbolLength
68 | offsetSelection(range, by: offset)
69 | case .Pair(let commentedRange):
70 | let startPair = position(range.start, offsetBy: commentedRange.location, inBuffer: buffer)
71 | let endPair = position(range.start, offsetBy: commentedRange.location + commentedRange.length, inBuffer: buffer)
72 |
73 | replace(position: endPair, length: -endSymbolLength, with: "", inBuffer: buffer)
74 | replace(position: startPair, length: startSymbolLength, with: "", inBuffer: buffer)
75 |
76 | // Fix selection
77 | range.start = startPair
78 | range.end = endPair
79 | let sameLine = range.start.line == range.end.line
80 | let offset = sameLine ? startSymbolLength + endSymbolLength : endSymbolLength
81 | offsetSelection(range, by: -offset)
82 | }
83 | }
84 |
85 | func text(inRange textRange: XCSourceTextRange, inBuffer buffer: XCSourceTextBuffer) -> String {
86 | if textRange.start.line == textRange.end.line {
87 | let lineText = buffer.lines[textRange.start.line] as! String
88 | let from = lineText.index(lineText.startIndex, offsetBy: textRange.start.column)
89 | let to = lineText.index(lineText.startIndex, offsetBy: textRange.end.column)
90 | return String(lineText[from.. XCSourceTextPosition {
112 | var aLine = i.line
113 | var aLineColumn = i.column
114 | var n = offsetBy
115 |
116 | repeat {
117 | let aLineCount = (buffer.lines[aLine] as! String).count
118 | let leftInLine = aLineCount - aLineColumn
119 |
120 | if leftInLine <= n {
121 | n -= leftInLine
122 | } else {
123 | return XCSourceTextPosition(line: aLine, column: aLineColumn + n)
124 | }
125 |
126 | aLine += 1
127 | aLineColumn = 0
128 |
129 | } while aLine < buffer.lines.count
130 |
131 | return i
132 | }
133 |
134 | func replace(position: XCSourceTextPosition, length: Int, with newElements: String, inBuffer buffer: XCSourceTextBuffer) {
135 | var lineText = buffer.lines[position.line] as! String
136 |
137 | var start = lineText.index(lineText.startIndex, offsetBy: position.column)
138 | var end = lineText.index(start, offsetBy: length)
139 |
140 | if length < 0 {
141 | swap(&start, &end)
142 | }
143 |
144 | lineText.replaceSubrange(start..= lineText.endIndex {
156 | start = lineText.index(before: lineText.endIndex)
157 | }
158 |
159 | lineText.insert(contentsOf: newElements, at: start)
160 | lineText.remove(at: lineText.index(before: lineText.endIndex)) //remove end "\n"
161 |
162 | buffer.lines[position.line] = lineText
163 | }
164 |
165 | func offsetSelection(_ selection: XCSourceTextRange, by offset: Int) {
166 | selection.end.column += offset
167 | }
168 |
169 | }
170 |
171 | extension String {
172 |
173 | var commentedRange: NSRange? {
174 | do {
175 | let expression = try NSRegularExpression(pattern: "/\\*[\\s\\S]*\\*/", options: [])
176 | let matches = expression.matches(in: self, options: [], range: NSRange(location: 0, length: self.distance(from: self.startIndex, to: self.endIndex)))
177 | return matches.first?.range
178 |
179 | } catch {
180 |
181 | }
182 |
183 | return nil
184 | }
185 |
186 | var isUnpairCommented: Bool {
187 | if let i = firstIndex(of: "*") {
188 | if i > startIndex && i < index(before: endIndex) {
189 | if self[index(before: i)] == "/" ||
190 | self[index(after: i)] == "/" {
191 | return true
192 | }
193 | }
194 | }
195 |
196 | return false
197 | }
198 |
199 | var commentStatus: CommentStatus {
200 | if let range = commentedRange {
201 | return .Pair(range: range)
202 | }
203 |
204 | if isUnpairCommented {
205 | return .Unpair
206 | }
207 |
208 | return .Plain
209 | }
210 |
211 | }
212 |
--------------------------------------------------------------------------------
/CComment/SourceEditorExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SourceEditorExtension.swift
3 | // CComment
4 | //
5 | // Created by flexih on 8/8/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import XcodeKit
11 |
12 | class SourceEditorExtension: NSObject, XCSourceEditorExtension {
13 |
14 | /*
15 | func extensionDidFinishLaunching() {
16 | // If your extension needs to do any work at launch, implement this optional method.
17 | }
18 | */
19 |
20 | /*
21 | var commandDefinitions: [[XCSourceEditorCommandDefinitionKey: AnyObject]] {
22 | // If your extension needs to return a collection of command definitions that differs from those in its Info.plist, implement this optional property getter.
23 | return []
24 | }
25 | */
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Xinghua Fan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | XcodeCComment
2 | ========
3 | [](https://github.com/flexih/Xcode-CComment/blob/master/LICENSE)
4 |
5 | Xcode source editor extension for Xcode 8, see [Xcode-CComment](https://github.com/flexih/Xcode-CComment) for more.
6 |
7 |
8 | Snapshot:
9 | ---------
10 | 
11 |
12 |
--------------------------------------------------------------------------------
/XcodeCComment.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 714ED3A71D58919800EB82B0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3A61D58919800EB82B0 /* AppDelegate.swift */; };
11 | 714ED3A91D58919800EB82B0 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3A81D58919800EB82B0 /* ViewController.swift */; };
12 | 714ED3AB1D58919800EB82B0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 714ED3AA1D58919800EB82B0 /* Assets.xcassets */; };
13 | 714ED3AE1D58919800EB82B0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 714ED3AC1D58919800EB82B0 /* Main.storyboard */; };
14 | 714ED3B91D58919800EB82B0 /* XcodeCCommentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3B81D58919800EB82B0 /* XcodeCCommentTests.swift */; };
15 | 714ED3C41D58919800EB82B0 /* XcodeCCommentUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3C31D58919800EB82B0 /* XcodeCCommentUITests.swift */; };
16 | 714ED3D81D5891A500EB82B0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 714ED3D71D5891A500EB82B0 /* Cocoa.framework */; };
17 | 714ED3DD1D5891A600EB82B0 /* SourceEditorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3DC1D5891A600EB82B0 /* SourceEditorExtension.swift */; };
18 | 714ED3DF1D5891A600EB82B0 /* SourceEditorCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = 714ED3DE1D5891A600EB82B0 /* SourceEditorCommand.swift */; };
19 | 714ED3E31D5891A600EB82B0 /* CComment.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 714ED3D51D5891A500EB82B0 /* CComment.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
20 | AC6DBA9D25F7A532001DC324 /* XcodeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC6DBA9C25F7A532001DC324 /* XcodeKit.framework */; };
21 | AC6DBA9E25F7A532001DC324 /* XcodeKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AC6DBA9C25F7A532001DC324 /* XcodeKit.framework */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXContainerItemProxy section */
25 | 714ED3B51D58919800EB82B0 /* PBXContainerItemProxy */ = {
26 | isa = PBXContainerItemProxy;
27 | containerPortal = 714ED39B1D58919800EB82B0 /* Project object */;
28 | proxyType = 1;
29 | remoteGlobalIDString = 714ED3A21D58919800EB82B0;
30 | remoteInfo = XcodeCComment;
31 | };
32 | 714ED3C01D58919800EB82B0 /* PBXContainerItemProxy */ = {
33 | isa = PBXContainerItemProxy;
34 | containerPortal = 714ED39B1D58919800EB82B0 /* Project object */;
35 | proxyType = 1;
36 | remoteGlobalIDString = 714ED3A21D58919800EB82B0;
37 | remoteInfo = XcodeCComment;
38 | };
39 | 714ED3E11D5891A600EB82B0 /* PBXContainerItemProxy */ = {
40 | isa = PBXContainerItemProxy;
41 | containerPortal = 714ED39B1D58919800EB82B0 /* Project object */;
42 | proxyType = 1;
43 | remoteGlobalIDString = 714ED3D41D5891A500EB82B0;
44 | remoteInfo = CComment;
45 | };
46 | /* End PBXContainerItemProxy section */
47 |
48 | /* Begin PBXCopyFilesBuildPhase section */
49 | 714ED3E71D5891A600EB82B0 /* Embed App Extensions */ = {
50 | isa = PBXCopyFilesBuildPhase;
51 | buildActionMask = 2147483647;
52 | dstPath = "";
53 | dstSubfolderSpec = 13;
54 | files = (
55 | 714ED3E31D5891A600EB82B0 /* CComment.appex in Embed App Extensions */,
56 | );
57 | name = "Embed App Extensions";
58 | runOnlyForDeploymentPostprocessing = 0;
59 | };
60 | AC6DBA9F25F7A532001DC324 /* Embed Frameworks */ = {
61 | isa = PBXCopyFilesBuildPhase;
62 | buildActionMask = 2147483647;
63 | dstPath = "";
64 | dstSubfolderSpec = 10;
65 | files = (
66 | AC6DBA9E25F7A532001DC324 /* XcodeKit.framework in Embed Frameworks */,
67 | );
68 | name = "Embed Frameworks";
69 | runOnlyForDeploymentPostprocessing = 0;
70 | };
71 | /* End PBXCopyFilesBuildPhase section */
72 |
73 | /* Begin PBXFileReference section */
74 | 714ED3A31D58919800EB82B0 /* XcodeCComment.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XcodeCComment.app; sourceTree = BUILT_PRODUCTS_DIR; };
75 | 714ED3A61D58919800EB82B0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
76 | 714ED3A81D58919800EB82B0 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
77 | 714ED3AA1D58919800EB82B0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
78 | 714ED3AD1D58919800EB82B0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
79 | 714ED3AF1D58919800EB82B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
80 | 714ED3B41D58919800EB82B0 /* XcodeCCommentTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XcodeCCommentTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
81 | 714ED3B81D58919800EB82B0 /* XcodeCCommentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodeCCommentTests.swift; sourceTree = ""; };
82 | 714ED3BA1D58919800EB82B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
83 | 714ED3BF1D58919800EB82B0 /* XcodeCCommentUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XcodeCCommentUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
84 | 714ED3C31D58919800EB82B0 /* XcodeCCommentUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodeCCommentUITests.swift; sourceTree = ""; };
85 | 714ED3C51D58919800EB82B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
86 | 714ED3D51D5891A500EB82B0 /* CComment.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = CComment.appex; sourceTree = BUILT_PRODUCTS_DIR; };
87 | 714ED3D71D5891A500EB82B0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
88 | 714ED3DB1D5891A600EB82B0 /* CComment.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CComment.entitlements; sourceTree = ""; };
89 | 714ED3DC1D5891A600EB82B0 /* SourceEditorExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceEditorExtension.swift; sourceTree = ""; };
90 | 714ED3DE1D5891A600EB82B0 /* SourceEditorCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceEditorCommand.swift; sourceTree = ""; };
91 | 714ED3E01D5891A600EB82B0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
92 | AC6DBA9C25F7A532001DC324 /* XcodeKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XcodeKit.framework; path = Library/Frameworks/XcodeKit.framework; sourceTree = DEVELOPER_DIR; };
93 | /* End PBXFileReference section */
94 |
95 | /* Begin PBXFrameworksBuildPhase section */
96 | 714ED3A01D58919800EB82B0 /* Frameworks */ = {
97 | isa = PBXFrameworksBuildPhase;
98 | buildActionMask = 2147483647;
99 | files = (
100 | );
101 | runOnlyForDeploymentPostprocessing = 0;
102 | };
103 | 714ED3B11D58919800EB82B0 /* Frameworks */ = {
104 | isa = PBXFrameworksBuildPhase;
105 | buildActionMask = 2147483647;
106 | files = (
107 | );
108 | runOnlyForDeploymentPostprocessing = 0;
109 | };
110 | 714ED3BC1D58919800EB82B0 /* Frameworks */ = {
111 | isa = PBXFrameworksBuildPhase;
112 | buildActionMask = 2147483647;
113 | files = (
114 | );
115 | runOnlyForDeploymentPostprocessing = 0;
116 | };
117 | 714ED3D21D5891A500EB82B0 /* Frameworks */ = {
118 | isa = PBXFrameworksBuildPhase;
119 | buildActionMask = 2147483647;
120 | files = (
121 | 714ED3D81D5891A500EB82B0 /* Cocoa.framework in Frameworks */,
122 | AC6DBA9D25F7A532001DC324 /* XcodeKit.framework in Frameworks */,
123 | );
124 | runOnlyForDeploymentPostprocessing = 0;
125 | };
126 | /* End PBXFrameworksBuildPhase section */
127 |
128 | /* Begin PBXGroup section */
129 | 714ED39A1D58919800EB82B0 = {
130 | isa = PBXGroup;
131 | children = (
132 | 714ED3A51D58919800EB82B0 /* XcodeCComment */,
133 | 714ED3B71D58919800EB82B0 /* XcodeCCommentTests */,
134 | 714ED3C21D58919800EB82B0 /* XcodeCCommentUITests */,
135 | 714ED3D91D5891A500EB82B0 /* CComment */,
136 | 714ED3D61D5891A500EB82B0 /* Frameworks */,
137 | 714ED3A41D58919800EB82B0 /* Products */,
138 | );
139 | sourceTree = "";
140 | };
141 | 714ED3A41D58919800EB82B0 /* Products */ = {
142 | isa = PBXGroup;
143 | children = (
144 | 714ED3A31D58919800EB82B0 /* XcodeCComment.app */,
145 | 714ED3B41D58919800EB82B0 /* XcodeCCommentTests.xctest */,
146 | 714ED3BF1D58919800EB82B0 /* XcodeCCommentUITests.xctest */,
147 | 714ED3D51D5891A500EB82B0 /* CComment.appex */,
148 | );
149 | name = Products;
150 | sourceTree = "";
151 | };
152 | 714ED3A51D58919800EB82B0 /* XcodeCComment */ = {
153 | isa = PBXGroup;
154 | children = (
155 | 714ED3A61D58919800EB82B0 /* AppDelegate.swift */,
156 | 714ED3A81D58919800EB82B0 /* ViewController.swift */,
157 | 714ED3AA1D58919800EB82B0 /* Assets.xcassets */,
158 | 714ED3AC1D58919800EB82B0 /* Main.storyboard */,
159 | 714ED3AF1D58919800EB82B0 /* Info.plist */,
160 | );
161 | path = XcodeCComment;
162 | sourceTree = "";
163 | };
164 | 714ED3B71D58919800EB82B0 /* XcodeCCommentTests */ = {
165 | isa = PBXGroup;
166 | children = (
167 | 714ED3B81D58919800EB82B0 /* XcodeCCommentTests.swift */,
168 | 714ED3BA1D58919800EB82B0 /* Info.plist */,
169 | );
170 | path = XcodeCCommentTests;
171 | sourceTree = "";
172 | };
173 | 714ED3C21D58919800EB82B0 /* XcodeCCommentUITests */ = {
174 | isa = PBXGroup;
175 | children = (
176 | 714ED3C31D58919800EB82B0 /* XcodeCCommentUITests.swift */,
177 | 714ED3C51D58919800EB82B0 /* Info.plist */,
178 | );
179 | path = XcodeCCommentUITests;
180 | sourceTree = "";
181 | };
182 | 714ED3D61D5891A500EB82B0 /* Frameworks */ = {
183 | isa = PBXGroup;
184 | children = (
185 | AC6DBA9C25F7A532001DC324 /* XcodeKit.framework */,
186 | 714ED3D71D5891A500EB82B0 /* Cocoa.framework */,
187 | );
188 | name = Frameworks;
189 | sourceTree = "";
190 | };
191 | 714ED3D91D5891A500EB82B0 /* CComment */ = {
192 | isa = PBXGroup;
193 | children = (
194 | 714ED3DC1D5891A600EB82B0 /* SourceEditorExtension.swift */,
195 | 714ED3DE1D5891A600EB82B0 /* SourceEditorCommand.swift */,
196 | 714ED3E01D5891A600EB82B0 /* Info.plist */,
197 | 714ED3DA1D5891A600EB82B0 /* Supporting Files */,
198 | );
199 | path = CComment;
200 | sourceTree = "";
201 | };
202 | 714ED3DA1D5891A600EB82B0 /* Supporting Files */ = {
203 | isa = PBXGroup;
204 | children = (
205 | 714ED3DB1D5891A600EB82B0 /* CComment.entitlements */,
206 | );
207 | name = "Supporting Files";
208 | sourceTree = "";
209 | };
210 | /* End PBXGroup section */
211 |
212 | /* Begin PBXNativeTarget section */
213 | 714ED3A21D58919800EB82B0 /* XcodeCComment */ = {
214 | isa = PBXNativeTarget;
215 | buildConfigurationList = 714ED3C81D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCComment" */;
216 | buildPhases = (
217 | 714ED39F1D58919800EB82B0 /* Sources */,
218 | 714ED3A01D58919800EB82B0 /* Frameworks */,
219 | 714ED3A11D58919800EB82B0 /* Resources */,
220 | 714ED3E71D5891A600EB82B0 /* Embed App Extensions */,
221 | );
222 | buildRules = (
223 | );
224 | dependencies = (
225 | 714ED3E21D5891A600EB82B0 /* PBXTargetDependency */,
226 | );
227 | name = XcodeCComment;
228 | productName = XcodeCComment;
229 | productReference = 714ED3A31D58919800EB82B0 /* XcodeCComment.app */;
230 | productType = "com.apple.product-type.application";
231 | };
232 | 714ED3B31D58919800EB82B0 /* XcodeCCommentTests */ = {
233 | isa = PBXNativeTarget;
234 | buildConfigurationList = 714ED3CB1D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCCommentTests" */;
235 | buildPhases = (
236 | 714ED3B01D58919800EB82B0 /* Sources */,
237 | 714ED3B11D58919800EB82B0 /* Frameworks */,
238 | 714ED3B21D58919800EB82B0 /* Resources */,
239 | );
240 | buildRules = (
241 | );
242 | dependencies = (
243 | 714ED3B61D58919800EB82B0 /* PBXTargetDependency */,
244 | );
245 | name = XcodeCCommentTests;
246 | productName = XcodeCCommentTests;
247 | productReference = 714ED3B41D58919800EB82B0 /* XcodeCCommentTests.xctest */;
248 | productType = "com.apple.product-type.bundle.unit-test";
249 | };
250 | 714ED3BE1D58919800EB82B0 /* XcodeCCommentUITests */ = {
251 | isa = PBXNativeTarget;
252 | buildConfigurationList = 714ED3CE1D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCCommentUITests" */;
253 | buildPhases = (
254 | 714ED3BB1D58919800EB82B0 /* Sources */,
255 | 714ED3BC1D58919800EB82B0 /* Frameworks */,
256 | 714ED3BD1D58919800EB82B0 /* Resources */,
257 | );
258 | buildRules = (
259 | );
260 | dependencies = (
261 | 714ED3C11D58919800EB82B0 /* PBXTargetDependency */,
262 | );
263 | name = XcodeCCommentUITests;
264 | productName = XcodeCCommentUITests;
265 | productReference = 714ED3BF1D58919800EB82B0 /* XcodeCCommentUITests.xctest */;
266 | productType = "com.apple.product-type.bundle.ui-testing";
267 | };
268 | 714ED3D41D5891A500EB82B0 /* CComment */ = {
269 | isa = PBXNativeTarget;
270 | buildConfigurationList = 714ED3E41D5891A600EB82B0 /* Build configuration list for PBXNativeTarget "CComment" */;
271 | buildPhases = (
272 | 714ED3D11D5891A500EB82B0 /* Sources */,
273 | 714ED3D21D5891A500EB82B0 /* Frameworks */,
274 | 714ED3D31D5891A500EB82B0 /* Resources */,
275 | AC6DBA9F25F7A532001DC324 /* Embed Frameworks */,
276 | );
277 | buildRules = (
278 | );
279 | dependencies = (
280 | );
281 | name = CComment;
282 | productName = CComment;
283 | productReference = 714ED3D51D5891A500EB82B0 /* CComment.appex */;
284 | productType = "com.apple.product-type.xcode-extension";
285 | };
286 | /* End PBXNativeTarget section */
287 |
288 | /* Begin PBXProject section */
289 | 714ED39B1D58919800EB82B0 /* Project object */ = {
290 | isa = PBXProject;
291 | attributes = {
292 | LastSwiftUpdateCheck = 0800;
293 | LastUpgradeCheck = 1130;
294 | ORGANIZATIONNAME = flexih;
295 | TargetAttributes = {
296 | 714ED3A21D58919800EB82B0 = {
297 | CreatedOnToolsVersion = 8.0;
298 | ProvisioningStyle = Automatic;
299 | };
300 | 714ED3B31D58919800EB82B0 = {
301 | CreatedOnToolsVersion = 8.0;
302 | ProvisioningStyle = Automatic;
303 | TestTargetID = 714ED3A21D58919800EB82B0;
304 | };
305 | 714ED3BE1D58919800EB82B0 = {
306 | CreatedOnToolsVersion = 8.0;
307 | ProvisioningStyle = Automatic;
308 | TestTargetID = 714ED3A21D58919800EB82B0;
309 | };
310 | 714ED3D41D5891A500EB82B0 = {
311 | CreatedOnToolsVersion = 8.0;
312 | ProvisioningStyle = Automatic;
313 | };
314 | };
315 | };
316 | buildConfigurationList = 714ED39E1D58919800EB82B0 /* Build configuration list for PBXProject "XcodeCComment" */;
317 | compatibilityVersion = "Xcode 3.2";
318 | developmentRegion = en;
319 | hasScannedForEncodings = 0;
320 | knownRegions = (
321 | en,
322 | Base,
323 | );
324 | mainGroup = 714ED39A1D58919800EB82B0;
325 | productRefGroup = 714ED3A41D58919800EB82B0 /* Products */;
326 | projectDirPath = "";
327 | projectRoot = "";
328 | targets = (
329 | 714ED3A21D58919800EB82B0 /* XcodeCComment */,
330 | 714ED3B31D58919800EB82B0 /* XcodeCCommentTests */,
331 | 714ED3BE1D58919800EB82B0 /* XcodeCCommentUITests */,
332 | 714ED3D41D5891A500EB82B0 /* CComment */,
333 | );
334 | };
335 | /* End PBXProject section */
336 |
337 | /* Begin PBXResourcesBuildPhase section */
338 | 714ED3A11D58919800EB82B0 /* Resources */ = {
339 | isa = PBXResourcesBuildPhase;
340 | buildActionMask = 2147483647;
341 | files = (
342 | 714ED3AB1D58919800EB82B0 /* Assets.xcassets in Resources */,
343 | 714ED3AE1D58919800EB82B0 /* Main.storyboard in Resources */,
344 | );
345 | runOnlyForDeploymentPostprocessing = 0;
346 | };
347 | 714ED3B21D58919800EB82B0 /* Resources */ = {
348 | isa = PBXResourcesBuildPhase;
349 | buildActionMask = 2147483647;
350 | files = (
351 | );
352 | runOnlyForDeploymentPostprocessing = 0;
353 | };
354 | 714ED3BD1D58919800EB82B0 /* Resources */ = {
355 | isa = PBXResourcesBuildPhase;
356 | buildActionMask = 2147483647;
357 | files = (
358 | );
359 | runOnlyForDeploymentPostprocessing = 0;
360 | };
361 | 714ED3D31D5891A500EB82B0 /* Resources */ = {
362 | isa = PBXResourcesBuildPhase;
363 | buildActionMask = 2147483647;
364 | files = (
365 | );
366 | runOnlyForDeploymentPostprocessing = 0;
367 | };
368 | /* End PBXResourcesBuildPhase section */
369 |
370 | /* Begin PBXSourcesBuildPhase section */
371 | 714ED39F1D58919800EB82B0 /* Sources */ = {
372 | isa = PBXSourcesBuildPhase;
373 | buildActionMask = 2147483647;
374 | files = (
375 | 714ED3A91D58919800EB82B0 /* ViewController.swift in Sources */,
376 | 714ED3A71D58919800EB82B0 /* AppDelegate.swift in Sources */,
377 | );
378 | runOnlyForDeploymentPostprocessing = 0;
379 | };
380 | 714ED3B01D58919800EB82B0 /* Sources */ = {
381 | isa = PBXSourcesBuildPhase;
382 | buildActionMask = 2147483647;
383 | files = (
384 | 714ED3B91D58919800EB82B0 /* XcodeCCommentTests.swift in Sources */,
385 | );
386 | runOnlyForDeploymentPostprocessing = 0;
387 | };
388 | 714ED3BB1D58919800EB82B0 /* Sources */ = {
389 | isa = PBXSourcesBuildPhase;
390 | buildActionMask = 2147483647;
391 | files = (
392 | 714ED3C41D58919800EB82B0 /* XcodeCCommentUITests.swift in Sources */,
393 | );
394 | runOnlyForDeploymentPostprocessing = 0;
395 | };
396 | 714ED3D11D5891A500EB82B0 /* Sources */ = {
397 | isa = PBXSourcesBuildPhase;
398 | buildActionMask = 2147483647;
399 | files = (
400 | 714ED3DD1D5891A600EB82B0 /* SourceEditorExtension.swift in Sources */,
401 | 714ED3DF1D5891A600EB82B0 /* SourceEditorCommand.swift in Sources */,
402 | );
403 | runOnlyForDeploymentPostprocessing = 0;
404 | };
405 | /* End PBXSourcesBuildPhase section */
406 |
407 | /* Begin PBXTargetDependency section */
408 | 714ED3B61D58919800EB82B0 /* PBXTargetDependency */ = {
409 | isa = PBXTargetDependency;
410 | target = 714ED3A21D58919800EB82B0 /* XcodeCComment */;
411 | targetProxy = 714ED3B51D58919800EB82B0 /* PBXContainerItemProxy */;
412 | };
413 | 714ED3C11D58919800EB82B0 /* PBXTargetDependency */ = {
414 | isa = PBXTargetDependency;
415 | target = 714ED3A21D58919800EB82B0 /* XcodeCComment */;
416 | targetProxy = 714ED3C01D58919800EB82B0 /* PBXContainerItemProxy */;
417 | };
418 | 714ED3E21D5891A600EB82B0 /* PBXTargetDependency */ = {
419 | isa = PBXTargetDependency;
420 | target = 714ED3D41D5891A500EB82B0 /* CComment */;
421 | targetProxy = 714ED3E11D5891A600EB82B0 /* PBXContainerItemProxy */;
422 | };
423 | /* End PBXTargetDependency section */
424 |
425 | /* Begin PBXVariantGroup section */
426 | 714ED3AC1D58919800EB82B0 /* Main.storyboard */ = {
427 | isa = PBXVariantGroup;
428 | children = (
429 | 714ED3AD1D58919800EB82B0 /* Base */,
430 | );
431 | name = Main.storyboard;
432 | sourceTree = "";
433 | };
434 | /* End PBXVariantGroup section */
435 |
436 | /* Begin XCBuildConfiguration section */
437 | 714ED3C61D58919800EB82B0 /* Debug */ = {
438 | isa = XCBuildConfiguration;
439 | buildSettings = {
440 | ALWAYS_SEARCH_USER_PATHS = NO;
441 | CLANG_ANALYZER_NONNULL = YES;
442 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
443 | CLANG_CXX_LIBRARY = "libc++";
444 | CLANG_ENABLE_MODULES = YES;
445 | CLANG_ENABLE_OBJC_ARC = YES;
446 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
447 | CLANG_WARN_BOOL_CONVERSION = YES;
448 | CLANG_WARN_COMMA = YES;
449 | CLANG_WARN_CONSTANT_CONVERSION = YES;
450 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
451 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
452 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
453 | CLANG_WARN_EMPTY_BODY = YES;
454 | CLANG_WARN_ENUM_CONVERSION = YES;
455 | CLANG_WARN_INFINITE_RECURSION = YES;
456 | CLANG_WARN_INT_CONVERSION = YES;
457 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
458 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
459 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
460 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
461 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
462 | CLANG_WARN_STRICT_PROTOTYPES = YES;
463 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
464 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
465 | CLANG_WARN_UNREACHABLE_CODE = YES;
466 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
467 | CODE_SIGN_IDENTITY = "-";
468 | COPY_PHASE_STRIP = NO;
469 | DEBUG_INFORMATION_FORMAT = dwarf;
470 | ENABLE_STRICT_OBJC_MSGSEND = YES;
471 | ENABLE_TESTABILITY = YES;
472 | GCC_C_LANGUAGE_STANDARD = gnu99;
473 | GCC_DYNAMIC_NO_PIC = NO;
474 | GCC_NO_COMMON_BLOCKS = YES;
475 | GCC_OPTIMIZATION_LEVEL = 0;
476 | GCC_PREPROCESSOR_DEFINITIONS = (
477 | "DEBUG=1",
478 | "$(inherited)",
479 | );
480 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
481 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
482 | GCC_WARN_UNDECLARED_SELECTOR = YES;
483 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
484 | GCC_WARN_UNUSED_FUNCTION = YES;
485 | GCC_WARN_UNUSED_VARIABLE = YES;
486 | MACOSX_DEPLOYMENT_TARGET = 10.11;
487 | MTL_ENABLE_DEBUG_INFO = YES;
488 | ONLY_ACTIVE_ARCH = YES;
489 | SDKROOT = macosx;
490 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
491 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
492 | SWIFT_VERSION = 5.0;
493 | };
494 | name = Debug;
495 | };
496 | 714ED3C71D58919800EB82B0 /* Release */ = {
497 | isa = XCBuildConfiguration;
498 | buildSettings = {
499 | ALWAYS_SEARCH_USER_PATHS = NO;
500 | CLANG_ANALYZER_NONNULL = YES;
501 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
502 | CLANG_CXX_LIBRARY = "libc++";
503 | CLANG_ENABLE_MODULES = YES;
504 | CLANG_ENABLE_OBJC_ARC = YES;
505 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
506 | CLANG_WARN_BOOL_CONVERSION = YES;
507 | CLANG_WARN_COMMA = YES;
508 | CLANG_WARN_CONSTANT_CONVERSION = YES;
509 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
510 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
511 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
512 | CLANG_WARN_EMPTY_BODY = YES;
513 | CLANG_WARN_ENUM_CONVERSION = YES;
514 | CLANG_WARN_INFINITE_RECURSION = YES;
515 | CLANG_WARN_INT_CONVERSION = YES;
516 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
517 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
518 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
519 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
520 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
521 | CLANG_WARN_STRICT_PROTOTYPES = YES;
522 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
523 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
524 | CLANG_WARN_UNREACHABLE_CODE = YES;
525 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
526 | CODE_SIGN_IDENTITY = "-";
527 | COPY_PHASE_STRIP = NO;
528 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
529 | ENABLE_NS_ASSERTIONS = NO;
530 | ENABLE_STRICT_OBJC_MSGSEND = YES;
531 | GCC_C_LANGUAGE_STANDARD = gnu99;
532 | GCC_NO_COMMON_BLOCKS = YES;
533 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
534 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
535 | GCC_WARN_UNDECLARED_SELECTOR = YES;
536 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
537 | GCC_WARN_UNUSED_FUNCTION = YES;
538 | GCC_WARN_UNUSED_VARIABLE = YES;
539 | MACOSX_DEPLOYMENT_TARGET = 10.11;
540 | MTL_ENABLE_DEBUG_INFO = NO;
541 | SDKROOT = macosx;
542 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
543 | SWIFT_VERSION = 5.0;
544 | };
545 | name = Release;
546 | };
547 | 714ED3C91D58919800EB82B0 /* Debug */ = {
548 | isa = XCBuildConfiguration;
549 | buildSettings = {
550 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
551 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
552 | COMBINE_HIDPI_IMAGES = YES;
553 | INFOPLIST_FILE = XcodeCComment/Info.plist;
554 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
555 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCComment;
556 | PRODUCT_NAME = "$(TARGET_NAME)";
557 | };
558 | name = Debug;
559 | };
560 | 714ED3CA1D58919800EB82B0 /* Release */ = {
561 | isa = XCBuildConfiguration;
562 | buildSettings = {
563 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
564 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
565 | COMBINE_HIDPI_IMAGES = YES;
566 | INFOPLIST_FILE = XcodeCComment/Info.plist;
567 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
568 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCComment;
569 | PRODUCT_NAME = "$(TARGET_NAME)";
570 | };
571 | name = Release;
572 | };
573 | 714ED3CC1D58919800EB82B0 /* Debug */ = {
574 | isa = XCBuildConfiguration;
575 | buildSettings = {
576 | BUNDLE_LOADER = "$(TEST_HOST)";
577 | COMBINE_HIDPI_IMAGES = YES;
578 | INFOPLIST_FILE = XcodeCCommentTests/Info.plist;
579 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
580 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCCommentTests;
581 | PRODUCT_NAME = "$(TARGET_NAME)";
582 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/XcodeCComment.app/Contents/MacOS/XcodeCComment";
583 | };
584 | name = Debug;
585 | };
586 | 714ED3CD1D58919800EB82B0 /* Release */ = {
587 | isa = XCBuildConfiguration;
588 | buildSettings = {
589 | BUNDLE_LOADER = "$(TEST_HOST)";
590 | COMBINE_HIDPI_IMAGES = YES;
591 | INFOPLIST_FILE = XcodeCCommentTests/Info.plist;
592 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
593 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCCommentTests;
594 | PRODUCT_NAME = "$(TARGET_NAME)";
595 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/XcodeCComment.app/Contents/MacOS/XcodeCComment";
596 | };
597 | name = Release;
598 | };
599 | 714ED3CF1D58919800EB82B0 /* Debug */ = {
600 | isa = XCBuildConfiguration;
601 | buildSettings = {
602 | COMBINE_HIDPI_IMAGES = YES;
603 | INFOPLIST_FILE = XcodeCCommentUITests/Info.plist;
604 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
605 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCCommentUITests;
606 | PRODUCT_NAME = "$(TARGET_NAME)";
607 | TEST_TARGET_NAME = XcodeCComment;
608 | };
609 | name = Debug;
610 | };
611 | 714ED3D01D58919800EB82B0 /* Release */ = {
612 | isa = XCBuildConfiguration;
613 | buildSettings = {
614 | COMBINE_HIDPI_IMAGES = YES;
615 | INFOPLIST_FILE = XcodeCCommentUITests/Info.plist;
616 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
617 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCCommentUITests;
618 | PRODUCT_NAME = "$(TARGET_NAME)";
619 | TEST_TARGET_NAME = XcodeCComment;
620 | };
621 | name = Release;
622 | };
623 | 714ED3E51D5891A600EB82B0 /* Debug */ = {
624 | isa = XCBuildConfiguration;
625 | buildSettings = {
626 | CODE_SIGN_ENTITLEMENTS = CComment/CComment.entitlements;
627 | COMBINE_HIDPI_IMAGES = YES;
628 | INFOPLIST_FILE = CComment/Info.plist;
629 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
630 | MACOSX_DEPLOYMENT_TARGET = 10.11;
631 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCComment.CComment;
632 | PRODUCT_NAME = "$(TARGET_NAME)";
633 | SKIP_INSTALL = YES;
634 | };
635 | name = Debug;
636 | };
637 | 714ED3E61D5891A600EB82B0 /* Release */ = {
638 | isa = XCBuildConfiguration;
639 | buildSettings = {
640 | CODE_SIGN_ENTITLEMENTS = CComment/CComment.entitlements;
641 | COMBINE_HIDPI_IMAGES = YES;
642 | INFOPLIST_FILE = CComment/Info.plist;
643 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
644 | MACOSX_DEPLOYMENT_TARGET = 10.11;
645 | PRODUCT_BUNDLE_IDENTIFIER = com.flexih.XcodeCComment.CComment;
646 | PRODUCT_NAME = "$(TARGET_NAME)";
647 | SKIP_INSTALL = YES;
648 | };
649 | name = Release;
650 | };
651 | /* End XCBuildConfiguration section */
652 |
653 | /* Begin XCConfigurationList section */
654 | 714ED39E1D58919800EB82B0 /* Build configuration list for PBXProject "XcodeCComment" */ = {
655 | isa = XCConfigurationList;
656 | buildConfigurations = (
657 | 714ED3C61D58919800EB82B0 /* Debug */,
658 | 714ED3C71D58919800EB82B0 /* Release */,
659 | );
660 | defaultConfigurationIsVisible = 0;
661 | defaultConfigurationName = Release;
662 | };
663 | 714ED3C81D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCComment" */ = {
664 | isa = XCConfigurationList;
665 | buildConfigurations = (
666 | 714ED3C91D58919800EB82B0 /* Debug */,
667 | 714ED3CA1D58919800EB82B0 /* Release */,
668 | );
669 | defaultConfigurationIsVisible = 0;
670 | defaultConfigurationName = Release;
671 | };
672 | 714ED3CB1D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCCommentTests" */ = {
673 | isa = XCConfigurationList;
674 | buildConfigurations = (
675 | 714ED3CC1D58919800EB82B0 /* Debug */,
676 | 714ED3CD1D58919800EB82B0 /* Release */,
677 | );
678 | defaultConfigurationIsVisible = 0;
679 | defaultConfigurationName = Release;
680 | };
681 | 714ED3CE1D58919800EB82B0 /* Build configuration list for PBXNativeTarget "XcodeCCommentUITests" */ = {
682 | isa = XCConfigurationList;
683 | buildConfigurations = (
684 | 714ED3CF1D58919800EB82B0 /* Debug */,
685 | 714ED3D01D58919800EB82B0 /* Release */,
686 | );
687 | defaultConfigurationIsVisible = 0;
688 | defaultConfigurationName = Release;
689 | };
690 | 714ED3E41D5891A600EB82B0 /* Build configuration list for PBXNativeTarget "CComment" */ = {
691 | isa = XCConfigurationList;
692 | buildConfigurations = (
693 | 714ED3E51D5891A600EB82B0 /* Debug */,
694 | 714ED3E61D5891A600EB82B0 /* Release */,
695 | );
696 | defaultConfigurationIsVisible = 0;
697 | defaultConfigurationName = Release;
698 | };
699 | /* End XCConfigurationList section */
700 | };
701 | rootObject = 714ED39B1D58919800EB82B0 /* Project object */;
702 | }
703 |
--------------------------------------------------------------------------------
/XcodeCComment.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/XcodeCComment.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/XcodeCComment.xcodeproj/xcshareddata/xcschemes/CComment.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
6 |
9 |
10 |
16 |
22 |
23 |
24 |
30 |
36 |
37 |
38 |
39 |
40 |
45 |
46 |
47 |
48 |
58 |
62 |
63 |
64 |
70 |
71 |
72 |
73 |
80 |
82 |
88 |
89 |
90 |
91 |
93 |
94 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/XcodeCComment.xcodeproj/xcshareddata/xcschemes/XcodeCComment.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
43 |
49 |
50 |
51 |
52 |
53 |
63 |
65 |
71 |
72 |
73 |
74 |
80 |
82 |
88 |
89 |
90 |
91 |
93 |
94 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/XcodeCComment/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // XcodeCComment
4 | //
5 | // Created by flexih on 8/8/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | @NSApplicationMain
12 | class AppDelegate: NSObject, NSApplicationDelegate {
13 |
14 |
15 |
16 | func applicationDidFinishLaunching(_ aNotification: Notification) {
17 | // Insert code here to initialize your application
18 | }
19 |
20 | func applicationWillTerminate(_ aNotification: Notification) {
21 | // Insert code here to tear down your application
22 | }
23 |
24 |
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/XcodeCComment/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/XcodeCComment/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
686 |
687 |
688 |
689 |
690 |
691 |
692 |
693 |
694 |
--------------------------------------------------------------------------------
/XcodeCComment/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | Copyright © 2016 flexih. All rights reserved.
27 | NSMainStoryboardFile
28 | Main
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/XcodeCComment/MyPlayground.playground/Contents.swift:
--------------------------------------------------------------------------------
1 | //: Playground - noun: a place where people can play
2 |
3 | import Cocoa
4 |
5 | //let text = "ab/*cd*/efg"
6 | //
7 | //do {
8 | // let expression = try RegularExpression(pattern: "/\\*[\\s\\S]*\\*/", options: [])
9 | // let matches = expression.matches(in: text, options: [], range: NSRange(location: 0, length: text.distance(from: text.startIndex, to: text.endIndex)))
10 | //
11 | // matches.first?.resultType
12 | // matches.first?.range.location
13 | // matches.first?.range.length
14 | //
15 | //} catch {
16 | //
17 | //}
18 |
--------------------------------------------------------------------------------
/XcodeCComment/MyPlayground.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/XcodeCComment/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // XcodeCComment
4 | //
5 | // Created by flexih on 8/8/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | class ViewController: NSViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override var representedObject: Any? {
20 | didSet {
21 | // Update the view, if already loaded.
22 | }
23 | }
24 |
25 |
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/XcodeCCommentTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/XcodeCCommentTests/XcodeCCommentTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XcodeCCommentTests.swift
3 | // XcodeCCommentTests
4 | //
5 | // Created by flexih on 8/8/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import XcodeCComment
11 |
12 | class XcodeCCommentTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/XcodeCCommentUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/XcodeCCommentUITests/XcodeCCommentUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XcodeCCommentUITests.swift
3 | // XcodeCCommentUITests
4 | //
5 | // Created by flexih on 8/8/16.
6 | // Copyright © 2016 flexih. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class XcodeCCommentUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 |
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 |
18 | // In UI tests it is usually best to stop immediately when a failure occurs.
19 | continueAfterFailure = false
20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21 | XCUIApplication().launch()
22 |
23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24 | }
25 |
26 | override func tearDown() {
27 | // Put teardown code here. This method is called after the invocation of each test method in the class.
28 | super.tearDown()
29 | }
30 |
31 | func testExample() {
32 | // Use recording to get started writing UI tests.
33 | // Use XCTAssert and related functions to verify your tests produce the correct results.
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------