├── .gitignore
├── example.png
├── IgnoreXcodeImageCompletions
├── IgnoreXcodeImageCompletions.h
├── IgnoreXcodeImageCompletions.m
└── Info.plist
├── IgnoreXcodeImageCompletions.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── Makefile
├── README.md
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | IgnoreXcodeImageCompletions.tar.gz
2 |
--------------------------------------------------------------------------------
/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keith/IgnoreXcodeImageCompletions/HEAD/example.png
--------------------------------------------------------------------------------
/IgnoreXcodeImageCompletions/IgnoreXcodeImageCompletions.h:
--------------------------------------------------------------------------------
1 | @import Foundation;
2 |
3 | @interface IgnoreXcodeImageCompletions : NSObject
4 | @end
5 |
--------------------------------------------------------------------------------
/IgnoreXcodeImageCompletions.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | ARCHIVE_PATH = IgnoreXcodeImageCompletions.tar.gz
2 | INSTALL_PATH = $(HOME)/Library/Application Support/Developer/Shared/Xcode/Plug-ins/IgnoreXcodeImageCompletions.xcplugin
3 |
4 | install: uninstall
5 | xcodebuild -configuration Release
6 |
7 | uninstall:
8 | rm -rf "$(INSTALL_PATH)"
9 |
10 | archive: install
11 | tar -pvczf $(ARCHIVE_PATH) "$(INSTALL_PATH)"
12 | shasum -a 256 $(ARCHIVE_PATH)
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # IgnoreXcodeImageCompletions
2 |
3 | IgnoreXcodeImageCompletions is an "old style" Xcode plugin for disabling
4 | image autocompletion. Just in case you've ever been annoyed by this:
5 |
6 | 
7 |
8 | ## Installation
9 |
10 | 1. [Un-sign Xcode][unsign]
11 | 1. Copy `IgnoreXcodeImageCompletions.xcplugin` to `~/Library/Application
12 | Support/Developer/Shared/Xcode/Plug-ins`
13 | 1. Celebrate
14 |
15 | OR:
16 |
17 | 1. [Un-sign Xcode][unsign]
18 | 1. Clone the repo
19 | 1. Run `make install`
20 |
21 | If you don't want to do this you should [dup my radar][radar] on this
22 | silly autocompletion behavior.
23 |
24 | ### Compatibility
25 |
26 | Currently this plugin has been tested with (and has the UUIDs for):
27 |
28 | - Xcode 9.3 beta 4 (9Q127n)
29 | - Xcode 9.2 (9C40b)
30 | - Xcode 9.0 (9A235)
31 | - Xcode 8.3.3 (8E3004b)
32 |
33 | [radar]: http://www.openradar.me/33506212
34 | [unsign]: https://github.com/XVimProject/XVim/blob/master/INSTALL_Xcode8.md
35 |
--------------------------------------------------------------------------------
/IgnoreXcodeImageCompletions/IgnoreXcodeImageCompletions.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import "IgnoreXcodeImageCompletions.h"
3 |
4 | @implementation IgnoreXcodeImageCompletions
5 |
6 | + (void)load {
7 | NSLog(@"IgnoreXcodeImageCompletions: Loading!");
8 |
9 | Class class = objc_getClass("IDEMediaLibraryCompletionStrategy");
10 | IMP fakeInitializer = imp_implementationWithBlock((id)^{
11 | NSLog(@"IgnoreXcodeImageCompletions: Fake initializer was called!");
12 | return nil;
13 | });
14 |
15 | Method objectInit = class_getInstanceMethod(objc_getClass("NSObject"), @selector(init));
16 | const char *encoding = method_getTypeEncoding(objectInit);
17 |
18 | BOOL added = class_addMethod(class, @selector(init), fakeInitializer, encoding);
19 | if (!added) {
20 | NSLog(@"IgnoreXcodeImageCompletions: Failed to add method :(");
21 | return;
22 | }
23 |
24 | NSLog(@"IgnoreXcodeImageCompletions: Swizzled selector!");
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2017 Keith Smiley (http://keith.so)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the 'Software'), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7 | the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/IgnoreXcodeImageCompletions/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.1.0
19 | CFBundleVersion
20 | 1
21 | DVTPlugInCompatibilityUUIDs
22 |
23 | DF11C142-1584-4A99-87AC-1925D5F5652A
24 | DFFB3951-EB0A-4C09-9DAC-5F2D28CC839C
25 | B395D63E-9166-4CD6-9287-6889D507AD6A
26 | 8CC8AD71-C38D-4C1A-A34B-DC78BCE76F57
27 |
28 | NSHumanReadableCopyright
29 | Copyright © 2017 SmileyKeith. All rights reserved.
30 | XC4Compatible
31 |
32 | XCGCReady
33 |
34 | XCPluginHasUI
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/IgnoreXcodeImageCompletions.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | C2C637221F272BCA00772DE9 /* IgnoreXcodeImageCompletions.xcplugin in Install Plugin */ = {isa = PBXBuildFile; fileRef = C2C637181F272B4200772DE9 /* IgnoreXcodeImageCompletions.xcplugin */; };
11 | C2C637251F272BDB00772DE9 /* IgnoreXcodeImageCompletions.m in Sources */ = {isa = PBXBuildFile; fileRef = C2C637241F272BDB00772DE9 /* IgnoreXcodeImageCompletions.m */; };
12 | /* End PBXBuildFile section */
13 |
14 | /* Begin PBXCopyFilesBuildPhase section */
15 | C2C637211F272BBB00772DE9 /* Install Plugin */ = {
16 | isa = PBXCopyFilesBuildPhase;
17 | buildActionMask = 2147483647;
18 | dstPath = "~/Library/Application Support/Developer/Shared/Xcode/Plug-ins";
19 | dstSubfolderSpec = 0;
20 | files = (
21 | C2C637221F272BCA00772DE9 /* IgnoreXcodeImageCompletions.xcplugin in Install Plugin */,
22 | );
23 | name = "Install Plugin";
24 | runOnlyForDeploymentPostprocessing = 0;
25 | };
26 | /* End PBXCopyFilesBuildPhase section */
27 |
28 | /* Begin PBXFileReference section */
29 | C2C637181F272B4200772DE9 /* IgnoreXcodeImageCompletions.xcplugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IgnoreXcodeImageCompletions.xcplugin; sourceTree = BUILT_PRODUCTS_DIR; };
30 | C2C6371B1F272B4200772DE9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
31 | C2C637231F272BDB00772DE9 /* IgnoreXcodeImageCompletions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IgnoreXcodeImageCompletions.h; sourceTree = ""; };
32 | C2C637241F272BDB00772DE9 /* IgnoreXcodeImageCompletions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IgnoreXcodeImageCompletions.m; sourceTree = ""; };
33 | /* End PBXFileReference section */
34 |
35 | /* Begin PBXGroup section */
36 | C2C6370F1F272B4200772DE9 = {
37 | isa = PBXGroup;
38 | children = (
39 | C2C6371A1F272B4200772DE9 /* IgnoreXcodeImageCompletions */,
40 | C2C637191F272B4200772DE9 /* Products */,
41 | );
42 | sourceTree = "";
43 | };
44 | C2C637191F272B4200772DE9 /* Products */ = {
45 | isa = PBXGroup;
46 | children = (
47 | C2C637181F272B4200772DE9 /* IgnoreXcodeImageCompletions.xcplugin */,
48 | );
49 | name = Products;
50 | sourceTree = "";
51 | };
52 | C2C6371A1F272B4200772DE9 /* IgnoreXcodeImageCompletions */ = {
53 | isa = PBXGroup;
54 | children = (
55 | C2C6371B1F272B4200772DE9 /* Info.plist */,
56 | C2C637231F272BDB00772DE9 /* IgnoreXcodeImageCompletions.h */,
57 | C2C637241F272BDB00772DE9 /* IgnoreXcodeImageCompletions.m */,
58 | );
59 | path = IgnoreXcodeImageCompletions;
60 | sourceTree = "";
61 | };
62 | /* End PBXGroup section */
63 |
64 | /* Begin PBXNativeTarget section */
65 | C2C637171F272B4200772DE9 /* IgnoreXcodeImageCompletions */ = {
66 | isa = PBXNativeTarget;
67 | buildConfigurationList = C2C6371E1F272B4200772DE9 /* Build configuration list for PBXNativeTarget "IgnoreXcodeImageCompletions" */;
68 | buildPhases = (
69 | C2C637141F272B4200772DE9 /* Sources */,
70 | C2C637211F272BBB00772DE9 /* Install Plugin */,
71 | );
72 | buildRules = (
73 | );
74 | dependencies = (
75 | );
76 | name = IgnoreXcodeImageCompletions;
77 | productName = IgnoreXcodeImageCompletions;
78 | productReference = C2C637181F272B4200772DE9 /* IgnoreXcodeImageCompletions.xcplugin */;
79 | productType = "com.apple.product-type.bundle";
80 | };
81 | /* End PBXNativeTarget section */
82 |
83 | /* Begin PBXProject section */
84 | C2C637101F272B4200772DE9 /* Project object */ = {
85 | isa = PBXProject;
86 | attributes = {
87 | LastUpgradeCheck = 0900;
88 | ORGANIZATIONNAME = SmileyKeith;
89 | TargetAttributes = {
90 | C2C637171F272B4200772DE9 = {
91 | CreatedOnToolsVersion = 8.3.3;
92 | ProvisioningStyle = Automatic;
93 | };
94 | };
95 | };
96 | buildConfigurationList = C2C637131F272B4200772DE9 /* Build configuration list for PBXProject "IgnoreXcodeImageCompletions" */;
97 | compatibilityVersion = "Xcode 3.2";
98 | developmentRegion = English;
99 | hasScannedForEncodings = 0;
100 | knownRegions = (
101 | en,
102 | );
103 | mainGroup = C2C6370F1F272B4200772DE9;
104 | productRefGroup = C2C637191F272B4200772DE9 /* Products */;
105 | projectDirPath = "";
106 | projectRoot = "";
107 | targets = (
108 | C2C637171F272B4200772DE9 /* IgnoreXcodeImageCompletions */,
109 | );
110 | };
111 | /* End PBXProject section */
112 |
113 | /* Begin PBXSourcesBuildPhase section */
114 | C2C637141F272B4200772DE9 /* Sources */ = {
115 | isa = PBXSourcesBuildPhase;
116 | buildActionMask = 2147483647;
117 | files = (
118 | C2C637251F272BDB00772DE9 /* IgnoreXcodeImageCompletions.m in Sources */,
119 | );
120 | runOnlyForDeploymentPostprocessing = 0;
121 | };
122 | /* End PBXSourcesBuildPhase section */
123 |
124 | /* Begin XCBuildConfiguration section */
125 | C2C6371C1F272B4200772DE9 /* Debug */ = {
126 | isa = XCBuildConfiguration;
127 | buildSettings = {
128 | ALWAYS_SEARCH_USER_PATHS = NO;
129 | CLANG_ANALYZER_NONNULL = YES;
130 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
131 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
132 | CLANG_CXX_LIBRARY = "libc++";
133 | CLANG_ENABLE_MODULES = YES;
134 | CLANG_ENABLE_OBJC_ARC = YES;
135 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
136 | CLANG_WARN_BOOL_CONVERSION = YES;
137 | CLANG_WARN_COMMA = YES;
138 | CLANG_WARN_CONSTANT_CONVERSION = YES;
139 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
140 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
141 | CLANG_WARN_EMPTY_BODY = YES;
142 | CLANG_WARN_ENUM_CONVERSION = YES;
143 | CLANG_WARN_INFINITE_RECURSION = YES;
144 | CLANG_WARN_INT_CONVERSION = YES;
145 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
146 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
147 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
148 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
149 | CLANG_WARN_STRICT_PROTOTYPES = YES;
150 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
151 | CLANG_WARN_UNREACHABLE_CODE = YES;
152 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
153 | CODE_SIGN_IDENTITY = "-";
154 | COPY_PHASE_STRIP = NO;
155 | DEBUG_INFORMATION_FORMAT = dwarf;
156 | ENABLE_STRICT_OBJC_MSGSEND = YES;
157 | ENABLE_TESTABILITY = YES;
158 | GCC_C_LANGUAGE_STANDARD = gnu99;
159 | GCC_DYNAMIC_NO_PIC = NO;
160 | GCC_NO_COMMON_BLOCKS = YES;
161 | GCC_OPTIMIZATION_LEVEL = 0;
162 | GCC_PREPROCESSOR_DEFINITIONS = (
163 | "DEBUG=1",
164 | "$(inherited)",
165 | );
166 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
167 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
168 | GCC_WARN_UNDECLARED_SELECTOR = YES;
169 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
170 | GCC_WARN_UNUSED_FUNCTION = YES;
171 | GCC_WARN_UNUSED_VARIABLE = YES;
172 | MACOSX_DEPLOYMENT_TARGET = 10.12;
173 | MTL_ENABLE_DEBUG_INFO = YES;
174 | ONLY_ACTIVE_ARCH = YES;
175 | SDKROOT = macosx;
176 | };
177 | name = Debug;
178 | };
179 | C2C6371D1F272B4200772DE9 /* Release */ = {
180 | isa = XCBuildConfiguration;
181 | buildSettings = {
182 | ALWAYS_SEARCH_USER_PATHS = NO;
183 | CLANG_ANALYZER_NONNULL = YES;
184 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
185 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
186 | CLANG_CXX_LIBRARY = "libc++";
187 | CLANG_ENABLE_MODULES = YES;
188 | CLANG_ENABLE_OBJC_ARC = YES;
189 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
190 | CLANG_WARN_BOOL_CONVERSION = YES;
191 | CLANG_WARN_COMMA = YES;
192 | CLANG_WARN_CONSTANT_CONVERSION = YES;
193 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
194 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
195 | CLANG_WARN_EMPTY_BODY = YES;
196 | CLANG_WARN_ENUM_CONVERSION = YES;
197 | CLANG_WARN_INFINITE_RECURSION = YES;
198 | CLANG_WARN_INT_CONVERSION = YES;
199 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
200 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
201 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
202 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
203 | CLANG_WARN_STRICT_PROTOTYPES = YES;
204 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
205 | CLANG_WARN_UNREACHABLE_CODE = YES;
206 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
207 | CODE_SIGN_IDENTITY = "-";
208 | COPY_PHASE_STRIP = NO;
209 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
210 | ENABLE_NS_ASSERTIONS = NO;
211 | ENABLE_STRICT_OBJC_MSGSEND = YES;
212 | GCC_C_LANGUAGE_STANDARD = gnu99;
213 | GCC_NO_COMMON_BLOCKS = YES;
214 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
215 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
216 | GCC_WARN_UNDECLARED_SELECTOR = YES;
217 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
218 | GCC_WARN_UNUSED_FUNCTION = YES;
219 | GCC_WARN_UNUSED_VARIABLE = YES;
220 | MACOSX_DEPLOYMENT_TARGET = 10.12;
221 | MTL_ENABLE_DEBUG_INFO = NO;
222 | SDKROOT = macosx;
223 | };
224 | name = Release;
225 | };
226 | C2C6371F1F272B4200772DE9 /* Debug */ = {
227 | isa = XCBuildConfiguration;
228 | buildSettings = {
229 | INFOPLIST_FILE = IgnoreXcodeImageCompletions/Info.plist;
230 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
231 | PRODUCT_BUNDLE_IDENTIFIER = com.smileykeith.IgnoreXcodeImageCompletions;
232 | PRODUCT_NAME = "$(TARGET_NAME)";
233 | SKIP_INSTALL = YES;
234 | WRAPPER_EXTENSION = xcplugin;
235 | };
236 | name = Debug;
237 | };
238 | C2C637201F272B4200772DE9 /* Release */ = {
239 | isa = XCBuildConfiguration;
240 | buildSettings = {
241 | INFOPLIST_FILE = IgnoreXcodeImageCompletions/Info.plist;
242 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles";
243 | PRODUCT_BUNDLE_IDENTIFIER = com.smileykeith.IgnoreXcodeImageCompletions;
244 | PRODUCT_NAME = "$(TARGET_NAME)";
245 | SKIP_INSTALL = YES;
246 | WRAPPER_EXTENSION = xcplugin;
247 | };
248 | name = Release;
249 | };
250 | /* End XCBuildConfiguration section */
251 |
252 | /* Begin XCConfigurationList section */
253 | C2C637131F272B4200772DE9 /* Build configuration list for PBXProject "IgnoreXcodeImageCompletions" */ = {
254 | isa = XCConfigurationList;
255 | buildConfigurations = (
256 | C2C6371C1F272B4200772DE9 /* Debug */,
257 | C2C6371D1F272B4200772DE9 /* Release */,
258 | );
259 | defaultConfigurationIsVisible = 0;
260 | defaultConfigurationName = Release;
261 | };
262 | C2C6371E1F272B4200772DE9 /* Build configuration list for PBXNativeTarget "IgnoreXcodeImageCompletions" */ = {
263 | isa = XCConfigurationList;
264 | buildConfigurations = (
265 | C2C6371F1F272B4200772DE9 /* Debug */,
266 | C2C637201F272B4200772DE9 /* Release */,
267 | );
268 | defaultConfigurationIsVisible = 0;
269 | defaultConfigurationName = Release;
270 | };
271 | /* End XCConfigurationList section */
272 | };
273 | rootObject = C2C637101F272B4200772DE9 /* Project object */;
274 | }
275 |
--------------------------------------------------------------------------------