Skip to content

Commit 459a747

Browse files
committed
- added search results highlighting
- added autohiding for small files (#44) - started invalidating the full text range on changes (prevents artifacts)
1 parent 7b2cc7f commit 459a747

13 files changed

+401
-120
lines changed

README.md

+13-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
# SCXcodeMinimap v2.2
1+
# SCXcodeMinimap v2.3
22
SCXcodeMiniMap is a Xcode plugin that adds a source editor Minimap to Xcode.
33

44
#### Features
55

66
- Custom size
77
- Custom themes
8+
- Highlighting:
9+
- search results
10+
- comments and preprocessor directives
11+
- breakpoints
12+
- build errors and warnings
13+
- Xcode's "instances of selected symbol" (Preferences/Text Editing)
14+
- Can autohide for small files
815
- Can hide the main editor scroller
9-
- Show code foldings
10-
- Highlights comments and preprocessor directives
11-
- Highlights breakpoints
12-
- Highlights build errors and warnings
13-
- Hihglights Xcode's "instances of selected symbol" (Preferences/Text Editing)
14-
- All these highlighting options are also available for the main editor
16+
- Shows code foldings
1517

1618
All options are configurable through the View/Minimap menu item
1719

@@ -21,14 +23,16 @@ Without editor highlighting | With editor highlighting
2123
![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/SCXcodeMinimap%20v2.0-01.png) | ![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/SCXcodeMinimap%20v2.0-03.png) |
2224
![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/SCXcodeMinimap%20v2.0-02.png) | ![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/SCXcodeMinimap%20v2.0-04.png) |
2325

26+
![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/searchResultsHighlighting.png)
27+
2428
![](https://dl.dropboxusercontent.com/u/12748201/Recordings/SCXcodeMinimap/v2.2/selectedSymbolInstancesHighlighting.gif)
2529

2630
#### Installation
2731
- Through [Alcatraz](https://github.com/supermarin/Alcatraz)
2832

29-
- Download the sources, build the project and restart Xcode
33+
- or download the sources, build the project and restart Xcode
3034

31-
- Download SCXcodeMinimap.xcplugin.zip from the releases tab, unzip and move it to the Xcode plugins folder ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SCXcodeMinimap.xcplugin
35+
- or download SCXcodeMinimap.xcplugin.zip from the releases tab, unzip and move it to the Xcode plugins folder ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SCXcodeMinimap.xcplugin
3236

3337
- If you encounter any issues you can uninstall it by removing the ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SCXcodeMinimap.xcplugin folder
3438

SCXcodeMinimap.xcodeproj/project.pbxproj

+10-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
18C2EA5C1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C2EA5B1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m */; };
2121
18C999FF1A98B04C0008AF54 /* DebuggerUI in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C999FE1A98B04C0008AF54 /* DebuggerUI */; };
2222
18D6AD111A8F727B0082CB3F /* IDEFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18D6AD101A8F727B0082CB3F /* IDEFoundation.framework */; };
23+
18DE25ED1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */; };
2324
18E577FC1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18E577FB1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m */; };
2425
18ECB80E1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m in Sources */ = {isa = PBXBuildFile; fileRef = 18ECB80D1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m */; };
2526
18ECB8111B1322A300EE4D82 /* SCXcodeMinimapCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 18ECB8101B1322A300EE4D82 /* SCXcodeMinimapCommon.m */; };
@@ -82,6 +83,9 @@
8283
18C999FE1A98B04C0008AF54 /* DebuggerUI */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = DebuggerUI; path = /Applications/Xcode.app/Contents/PlugIns/DebuggerUI.ideplugin/Contents/MacOS/DebuggerUI; sourceTree = "<group>"; };
8384
18CA02B61A9D0DF1001C5CE1 /* IDEBreakpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDEBreakpoint.h; sourceTree = "<group>"; };
8485
18D6AD101A8F727B0082CB3F /* IDEFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IDEFoundation.framework; path = /Applications/Xcode.app/Contents/Frameworks/IDEFoundation.framework; sourceTree = "<group>"; };
86+
18DE25EB1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IDESourceCodeEditor+SCXcodeMinimap.h"; sourceTree = "<group>"; };
87+
18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IDESourceCodeEditor+SCXcodeMinimap.m"; sourceTree = "<group>"; };
88+
18DE6AFB1B203D070042615D /* DVTFindResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DVTFindResult.h; sourceTree = "<group>"; };
8589
18E577F61B119BF200421483 /* IDEBuildIssueAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDEBuildIssueAnnotation.h; sourceTree = "<group>"; };
8690
18E577F71B119C1000421483 /* IDEBuildIssueWarningAnnotation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDEBuildIssueWarningAnnotation.h; sourceTree = "<group>"; };
8791
18E577F81B119C3F00421483 /* IDEBuildIssueErrorAnnotation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDEBuildIssueErrorAnnotation.h; sourceTree = "<group>"; };
@@ -134,6 +138,7 @@
134138
18C999FD1A98AF580008AF54 /* DVTAnnotationProvider.h */,
135139
184C11711A740F8A002A7C65 /* DVTCompletingTextView.h */,
136140
184407651A8F7B3E00C530CF /* DVTDocumentLocation.h */,
141+
18DE6AFB1B203D070042615D /* DVTFindResult.h */,
137142
18C8F0331A7ECB1300C7A76F /* DVTFoldingLayoutManager.h */,
138143
18269AD51A8F2F4300953B3D /* DVTFoldingManager.h */,
139144
184C11721A740F8A002A7C65 /* DVTFontAndColorTheme.h */,
@@ -217,6 +222,8 @@
217222
184C11821A740F97002A7C65 /* SCXcodeMinimapSelectionView.m */,
218223
1889464B1B11DDEE0036175B /* SCXcodeMinimapTheme.h */,
219224
1889464C1B11DDEE0036175B /* SCXcodeMinimapTheme.m */,
225+
18ECB80F1B1322A300EE4D82 /* SCXcodeMinimapCommon.h */,
226+
18ECB8101B1322A300EE4D82 /* SCXcodeMinimapCommon.m */,
220227
18C2EA5A1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.h */,
221228
18C2EA5B1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m */,
222229
188FCC881A98B57A0026F529 /* DBGBreakpointAnnotationProvider+SCXcodeMinimap.h */,
@@ -225,10 +232,10 @@
225232
18ECB80D1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m */,
226233
18E577FA1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.h */,
227234
18E577FB1B119F6600421483 /* IDEIssueAnnotationProvider+SCXcodeMinimap.m */,
235+
18DE25EB1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.h */,
236+
18DE25EC1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m */,
228237
1809FF8D1AED1A730058D946 /* NSScroller+SCXcodeMinimap.h */,
229238
1809FF8E1AED1A730058D946 /* NSScroller+SCXcodeMinimap.m */,
230-
18ECB80F1B1322A300EE4D82 /* SCXcodeMinimapCommon.h */,
231-
18ECB8101B1322A300EE4D82 /* SCXcodeMinimapCommon.m */,
232239
18FE09BC1707639E00118FEB /* Supporting Files */,
233240
184C11701A740F8A002A7C65 /* Xcode Headers */,
234241
);
@@ -311,6 +318,7 @@
311318
184C11861A740F97002A7C65 /* SCXcodeMinimapSelectionView.m in Sources */,
312319
184C11871A740F97002A7C65 /* SCXcodeMinimapView.m in Sources */,
313320
18C2EA5C1A9C7F8A002CEB20 /* DBGBreakpointAnnotation+SCXcodeMinimap.m in Sources */,
321+
18DE25ED1B202ACA00F3D380 /* IDESourceCodeEditor+SCXcodeMinimap.m in Sources */,
314322
1889464D1B11DDEE0036175B /* SCXcodeMinimapTheme.m in Sources */,
315323
18ECB80E1B13226500EE4D82 /* DVTLayoutManager+SCXcodeMinimap.m in Sources */,
316324
1819E4291AA1FB5900C344F2 /* SCXcodeMinimapScrollView.m in Sources */,

SCXcodeMinimap.xcodeproj/xcshareddata/xcschemes/SCXcodeMinimap.xcscheme

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
33
LastUpgradeVersion = "0500"
4-
version = "1.3">
4+
version = "2.0">
55
<BuildAction
6-
parallelizeBuildables = "YES"
7-
buildImplicitDependencies = "YES">
6+
parallelizeBuildables = "NO"
7+
buildImplicitDependencies = "NO">
88
<BuildActionEntries>
99
<BuildActionEntry
1010
buildForTesting = "YES"
@@ -31,16 +31,19 @@
3131
</Testables>
3232
</TestAction>
3333
<LaunchAction
34-
selectedDebuggerIdentifier = ""
35-
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
34+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
35+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
3636
launchStyle = "0"
3737
useCustomWorkingDirectory = "NO"
3838
buildConfiguration = "Debug"
3939
ignoresPersistentStateOnLaunch = "NO"
40-
debugDocumentVersioning = "YES"
41-
allowLocationSimulation = "YES"
40+
debugDocumentVersioning = "NO"
41+
debugXPCServices = "NO"
42+
allowLocationSimulation = "NO"
4243
viewDebuggingEnabled = "No">
4344
<PathRunnable
45+
runnableDebuggingMode = "0"
46+
BundleIdentifier = "com.apple.dt.Xcode"
4447
FilePath = "/Applications/Xcode.app">
4548
</PathRunnable>
4649
<MacroExpansion>

SCXcodeMinimap/DVTLayoutManager+SCXcodeMinimap.m

+9-9
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,6 @@ + (void)load
1717
sc_swizzleInstanceMethod(self, @selector(_displayAutoHighlightTokens), @selector(sc_displayAutoHighlightTokens));
1818
}
1919

20-
- (void)sc_displayAutoHighlightTokens
21-
{
22-
[self sc_displayAutoHighlightTokens];
23-
24-
if([self.minimapDelegate respondsToSelector:@selector(layoutManagerDidRequestSelectedSymbolInstancesHighlight:)]) {
25-
[self.minimapDelegate layoutManagerDidRequestSelectedSymbolInstancesHighlight:self];
26-
}
27-
}
28-
2920
- (id<DVTLayoutManagerMinimapDelegate>)minimapDelegate
3021
{
3122
return objc_getAssociatedObject(self, @selector(minimapDelegate));
@@ -36,4 +27,13 @@ - (void)setMinimapDelegate:(id<DVTLayoutManagerMinimapDelegate>)minimapDelegate
3627
objc_setAssociatedObject(self, @selector(minimapDelegate), minimapDelegate, OBJC_ASSOCIATION_ASSIGN);
3728
}
3829

30+
- (void)sc_displayAutoHighlightTokens
31+
{
32+
[self sc_displayAutoHighlightTokens];
33+
34+
if([self.minimapDelegate respondsToSelector:@selector(layoutManagerDidRequestSelectedSymbolInstancesHighlight:)]) {
35+
[self.minimapDelegate layoutManagerDidRequestSelectedSymbolInstancesHighlight:self];
36+
}
37+
}
38+
3939
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//
2+
// IDESourceCodeEditor+SCXcodeMinimap.h
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 6/4/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import "IDESourceCodeEditor.h"
10+
11+
@protocol IDESourceCodeEditorSearchResultsDelegate;
12+
13+
@interface IDESourceCodeEditor (SCXcodeMinimap)
14+
15+
@property (nonatomic, weak) id<IDESourceCodeEditorSearchResultsDelegate> searchResultsDelegate;
16+
17+
@property (nonatomic, strong) NSArray *searchResults;
18+
19+
@end
20+
21+
@protocol IDESourceCodeEditorSearchResultsDelegate <NSObject>
22+
23+
- (void)sourceCodeEditorDidUpdateSearchResults:(IDESourceCodeEditor *)editor;
24+
25+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//
2+
// IDESourceCodeEditor+SCXcodeMinimap.m
3+
// SCXcodeMinimap
4+
//
5+
// Created by Stefan Ceriu on 6/4/15.
6+
// Copyright (c) 2015 Stefan Ceriu. All rights reserved.
7+
//
8+
9+
#import "IDESourceCodeEditor+SCXcodeMinimap.h"
10+
#import "SCXcodeMinimapCommon.h"
11+
12+
@implementation IDESourceCodeEditor (SCXcodeMinimap)
13+
14+
+ (void)load
15+
{
16+
sc_swizzleInstanceMethod([self class], @selector(dvtFindBar:didUpdateResults:), @selector(sc_dvtFindBar:didUpdateResults:));
17+
}
18+
19+
- (void)sc_dvtFindBar:(id)findBar didUpdateResults:(NSArray *)searchResults
20+
{
21+
[self sc_dvtFindBar:findBar didUpdateResults:searchResults];
22+
[self setSearchResults:searchResults];
23+
}
24+
25+
- (NSArray *)searchResults
26+
{
27+
return objc_getAssociatedObject(self, @selector(searchResults));
28+
}
29+
30+
- (void)setSearchResults:(NSArray *)searchResults
31+
{
32+
if([self.searchResults isEqual:searchResults]) {
33+
return;
34+
}
35+
36+
objc_setAssociatedObject(self, @selector(searchResults), searchResults, OBJC_ASSOCIATION_RETAIN);
37+
38+
if([self.searchResultsDelegate respondsToSelector:@selector(sourceCodeEditorDidUpdateSearchResults:)]) {
39+
[self.searchResultsDelegate sourceCodeEditorDidUpdateSearchResults:self];
40+
}
41+
}
42+
43+
- (id<IDESourceCodeEditorSearchResultsDelegate>)searchResultsDelegate
44+
{
45+
return objc_getAssociatedObject(self, @selector(searchResultsDelegate));
46+
}
47+
48+
- (void)setSearchResultsDelegate:(id<IDESourceCodeEditorSearchResultsDelegate>)searchResultsDelegate
49+
{
50+
objc_setAssociatedObject(self, @selector(searchResultsDelegate), searchResultsDelegate, OBJC_ASSOCIATION_ASSIGN);
51+
}
52+
53+
@end

SCXcodeMinimap/SCXcodeMinimap-Info.plist

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@
3838
<string>E969541F-E6F9-4D25-8158-72DC3545A6C6</string>
3939
<string>8DC44374-2B35-4C57-A6FE-2AD66A36AAD9</string>
4040
</array>
41+
<key>LSMinimumSystemVersion</key>
42+
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
4143
<key>NSHumanReadableCopyright</key>
4244
<string>Copyright © 2013 Stefan Ceriu. All rights reserved.</string>
4345
<key>NSPrincipalClass</key>
44-
<string></string>
46+
<string>SCXcodeMinimap</string>
4547
<key>XC4Compatible</key>
4648
<true/>
4749
<key>XCGCReady</key>

SCXcodeMinimap/SCXcodeMinimap.h

+6
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ extern NSString *const SCXcodeMinimapShouldHighlightIssuesKey;
2323
extern NSString *const SCXcodeMinimapHighlightSelectedSymbolChangeNotification;
2424
extern NSString *const SCXcodeMinimapShouldHighlightSelectedSymbolKey;
2525

26+
extern NSString *const SCXcodeMinimapHighlightSearchResultsChangeNotification;
27+
extern NSString *const SCXcodeMinimapShouldHighlightSearchResultsKey;
28+
2629
extern NSString *const SCXcodeMinimapHighlightCommentsChangeNotification;
2730
extern NSString *const SCXcodeMinimapShouldHighlightCommentsKey;
2831

@@ -35,6 +38,9 @@ extern NSString *const SCXcodeMinimapShouldHighlightEditorKey;
3538
extern NSString *const SCXcodeMinimapHideEditorScrollerChangeNotification;
3639
extern NSString *const SCXcodeMinimapShouldHideEditorScrollerKey;
3740

41+
extern NSString *const SCXcodeMinimapAutohideChangeNotification;
42+
extern NSString *const SCXcodeMinimapShouldAutohideKey;
43+
3844
extern NSString *const SCXcodeMinimapThemeChangeNotification;
3945
extern NSString *const SCXcodeMinimapThemeKey;
4046

SCXcodeMinimap/SCXcodeMinimap.m

+45
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
NSString *const SCXcodeMinimapHighlightSelectedSymbolChangeNotification = @"SCXcodeMinimapHighlightSelectedSymbolChangeNotification";
3333
NSString *const SCXcodeMinimapShouldHighlightSelectedSymbolKey = @"SCXcodeMinimapShouldHighlightSelectedSymbolKey";
3434

35+
NSString *const SCXcodeMinimapHighlightSearchResultsChangeNotification = @"SCXcodeMinimapHighlightSearchResultsChangeNotification";
36+
NSString *const SCXcodeMinimapShouldHighlightSearchResultsKey = @"SCXcodeMinimapShouldHighlightSearchResultsKey";
37+
3538
NSString *const SCXcodeMinimapHighlightCommentsChangeNotification = @"SCXcodeMinimapHighlightCommentsChangeNotification";
3639
NSString *const SCXcodeMinimapShouldHighlightCommentsKey = @"SCXcodeMinimapShouldHighlightCommentsKey";
3740

@@ -44,6 +47,9 @@
4447
NSString *const SCXcodeMinimapHideEditorScrollerChangeNotification = @"SCXcodeMinimapHideEditorScrollerChangeNotification";
4548
NSString *const SCXcodeMinimapShouldHideEditorScrollerKey = @"SCXcodeMinimapShouldHideEditorScrollerKey";
4649

50+
NSString *const SCXcodeMinimapAutohideChangeNotification = @"SCXcodeMinimapAutohideChangeNotification";
51+
NSString *const SCXcodeMinimapShouldAutohideKey = @"SCXcodeMinimapShouldAutohideKey";
52+
4753
NSString *const SCXcodeMinimapThemeChangeNotification = @"SCXcodeMinimapThemeChangeNotification";
4854
NSString *const SCXcodeMinimapThemeKey = @"SCXcodeMinimapThemeKey";
4955

@@ -58,10 +64,12 @@
5864
NSString *const kHighlightBreakpointsMenuItemTitle = @"Highlight breakpoints";
5965
NSString *const kHighlightIssuesMenuItemTitle = @"Highlight issues";
6066
NSString *const kHighlightSelectedSymbolMenuItemTitle = @"Highlight selected symbol";
67+
NSString *const kHighlightSearchResultsMenuItemTitle = @"Highlight search results";
6168
NSString *const kHighlightCommentsMenuItemTitle = @"Highlight comments";
6269
NSString *const kHighlightPreprocessorMenuItemTitle = @"Highlight preprocessor";
6370
NSString *const kHighlightEditorMenuItemTitle = @"Highlight main editor";
6471
NSString *const kHideEditorScrollerMenuItemTitle = @"Hide editor scroller";
72+
NSString *const kAutohideMenuItemTitle = @"Autohide";
6573

6674
NSString *const kThemeMenuItemTitle = @"Theme";
6775
NSString *const kEditorThemeMenuItemTitle = @"Editor Theme";
@@ -99,6 +107,7 @@ - (void)registerUserDefaults
99107
SCXcodeMinimapShouldHighlightBreakpointsKey : @(YES),
100108
SCXcodeMinimapShouldHighlightIssuesKey : @(YES),
101109
SCXcodeMinimapShouldHighlightSelectedSymbolKey : @(YES),
110+
SCXcodeMinimapShouldHighlightSearchResultsKey : @(YES),
102111
SCXcodeMinimapShouldHighlightCommentsKey : @(YES),
103112
SCXcodeMinimapShouldHighlightPreprocessorKey : @(YES)};
104113

@@ -187,6 +196,15 @@ - (void)createMenuItem
187196
[highlightSelectedSymbolMenuItem setState:(selectedSymbolHighlightingEnabled ? NSOnState : NSOffState)];
188197

189198

199+
NSMenuItem *highlightSearchResultsMenuItem = [[NSMenuItem alloc] initWithTitle:kHighlightSearchResultsMenuItemTitle
200+
action:@selector(toggleSearchResultsHighlighting:) keyEquivalent:@""];
201+
[highlightSearchResultsMenuItem setTarget:self];
202+
[minimapMenu addItem:highlightSearchResultsMenuItem];
203+
204+
BOOL searchResultsHighlightingEnabled = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHighlightSearchResultsKey] boolValue];
205+
[highlightSearchResultsMenuItem setState:(searchResultsHighlightingEnabled ? NSOnState : NSOffState)];
206+
207+
190208
NSMenuItem *highlightCommentsMenuItem = [[NSMenuItem alloc] initWithTitle:kHighlightCommentsMenuItemTitle
191209
action:@selector(toggleCommentsHighlighting:) keyEquivalent:@""];
192210
[highlightCommentsMenuItem setTarget:self];
@@ -223,6 +241,15 @@ - (void)createMenuItem
223241
[hideEditorScrollerMenuItem setState:(shouldHideEditorScroller ? NSOnState : NSOffState)];
224242

225243

244+
NSMenuItem *autohideMenuItem = [[NSMenuItem alloc] initWithTitle:kAutohideMenuItemTitle
245+
action:@selector(toggleAutohide:) keyEquivalent:@""];
246+
[autohideMenuItem setTarget:self];
247+
[minimapMenu addItem:autohideMenuItem];
248+
249+
BOOL shouldAutohide = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldAutohideKey] boolValue];
250+
[autohideMenuItem setState:(shouldAutohide ? NSOnState : NSOffState)];
251+
252+
226253
[minimapMenu addItem:[NSMenuItem separatorItem]];
227254
}
228255

@@ -312,6 +339,15 @@ - (void)toggleSelectedSymbolHighlighting:(NSMenuItem *)sender
312339
[[NSNotificationCenter defaultCenter] postNotificationName:SCXcodeMinimapHighlightSelectedSymbolChangeNotification object:nil];
313340
}
314341

342+
- (void)toggleSearchResultsHighlighting:(NSMenuItem *)sender
343+
{
344+
BOOL searchResultsHighlightingEnabled = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHighlightSearchResultsKey] boolValue];
345+
346+
[sender setState:(searchResultsHighlightingEnabled ? NSOffState : NSOnState)];
347+
[[NSUserDefaults standardUserDefaults] setObject:@(!searchResultsHighlightingEnabled) forKey:SCXcodeMinimapShouldHighlightSearchResultsKey];
348+
[[NSNotificationCenter defaultCenter] postNotificationName:SCXcodeMinimapHighlightSearchResultsChangeNotification object:nil];
349+
}
350+
315351
- (void)toggleCommentsHighlighting:(NSMenuItem *)sender
316352
{
317353
BOOL commentsHighlightingEnabled = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldHighlightCommentsKey] boolValue];
@@ -348,6 +384,15 @@ - (void)toggleEditorScrollerHiding:(NSMenuItem *)sender
348384
[[NSNotificationCenter defaultCenter] postNotificationName:SCXcodeMinimapHideEditorScrollerChangeNotification object:nil];
349385
}
350386

387+
- (void)toggleAutohide:(NSMenuItem *)sender
388+
{
389+
BOOL shouldAutohide = [[[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapShouldAutohideKey] boolValue];
390+
391+
[sender setState:(shouldAutohide ? NSOffState : NSOnState)];
392+
[[NSUserDefaults standardUserDefaults] setObject:@(!shouldAutohide) forKey:SCXcodeMinimapShouldAutohideKey];
393+
[[NSNotificationCenter defaultCenter] postNotificationName:SCXcodeMinimapAutohideChangeNotification object:nil];
394+
}
395+
351396
- (void)setMinimapTheme:(NSMenuItem *)sender
352397
{
353398
NSString *currentThemeName = [[NSUserDefaults standardUserDefaults] objectForKey:SCXcodeMinimapThemeKey];

0 commit comments

Comments
 (0)