Skip to content

Commit 71cdb0d

Browse files
committed
Add search modes for git pickaxe
Add two new search modes to search the commits for strings that were added or removed in a commit. - match by string or an extended POSIX regex (see man git-log -S<string> and --pickaxe-regex) - include the modes in the search menu - store the current mode in user defaults - show progress indicator when search takes time
1 parent 62aa99b commit 71cdb0d

File tree

5 files changed

+266
-10
lines changed

5 files changed

+266
-10
lines changed

PBGitDefaults.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@
3434
+ (void) removePreviousDocumentPaths;
3535
+ (NSInteger) branchFilter;
3636
+ (void) setBranchFilter:(NSInteger)state;
37+
+ (NSInteger)historySearchMode;
38+
+ (void)setHistorySearchMode:(NSInteger)mode;
3739

3840
@end

PBGitDefaults.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
#import "PBGitDefaults.h"
10+
#import "PBHistorySearchController.h"
1011

1112
#define kDefaultVerticalLineLength 50
1213
#define kCommitMessageViewVerticalLineLength @"PBCommitMessageViewVerticalLineLength"
@@ -25,6 +26,7 @@
2526
#define kOpenPreviousDocumentsOnLaunch @"PBOpenPreviousDocumentsOnLaunch"
2627
#define kPreviousDocumentPaths @"PBPreviousDocumentPaths"
2728
#define kBranchFilterState @"PBBranchFilter"
29+
#define kHistorySearchMode @"PBHistorySearchMode"
2830

2931
@implementation PBGitDefaults
3032

@@ -53,6 +55,8 @@ + (void)initialize
5355
forKey:kShouldCheckoutBranch];
5456
[defaultValues setObject:[NSNumber numberWithBool:NO]
5557
forKey:kOpenPreviousDocumentsOnLaunch];
58+
[defaultValues setObject:[NSNumber numberWithInteger:kGitXBasicSeachMode]
59+
forKey:kHistorySearchMode];
5660
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
5761
}
5862

@@ -170,4 +174,15 @@ + (void) setBranchFilter:(NSInteger)state
170174
[[NSUserDefaults standardUserDefaults] setInteger:state forKey:kBranchFilterState];
171175
}
172176

177+
+ (NSInteger)historySearchMode
178+
{
179+
return [[NSUserDefaults standardUserDefaults] integerForKey:kHistorySearchMode];
180+
}
181+
182+
+ (void)setHistorySearchMode:(NSInteger)mode
183+
{
184+
[[NSUserDefaults standardUserDefaults] setInteger:mode forKey:kHistorySearchMode];
185+
}
186+
187+
173188
@end

PBGitHistoryView.xib

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,15 @@
702702
<int key="NSvFlags">266</int>
703703
<object class="NSMutableArray" key="NSSubviews">
704704
<bool key="EncodedWithXMLCoder">YES</bool>
705+
<object class="NSProgressIndicator" id="354339555">
706+
<reference key="NSNextResponder" ref="428755155"/>
707+
<int key="NSvFlags">-2147482359</int>
708+
<object class="NSPSMatrix" key="NSDrawMatrix"/>
709+
<string key="NSFrame">{{637, 3}, {16, 16}}</string>
710+
<reference key="NSSuperview" ref="428755155"/>
711+
<int key="NSpiFlags">20746</int>
712+
<double key="NSMaxValue">100</double>
713+
</object>
705714
<object class="NSSearchField" id="354285291">
706715
<reference key="NSNextResponder" ref="428755155"/>
707716
<int key="NSvFlags">265</int>
@@ -2096,6 +2105,14 @@
20962105
</object>
20972106
<int key="connectionID">437</int>
20982107
</object>
2108+
<object class="IBConnectionRecord">
2109+
<object class="IBOutletConnection" key="connection">
2110+
<string key="label">progressIndicator</string>
2111+
<reference key="source" ref="596748029"/>
2112+
<reference key="destination" ref="354339555"/>
2113+
</object>
2114+
<int key="connectionID">448</int>
2115+
</object>
20992116
</object>
21002117
<object class="IBMutableOrderedSet" key="objectRecords">
21012118
<object class="NSArray" key="orderedObjects">
@@ -2439,6 +2456,7 @@
24392456
<reference ref="627778713"/>
24402457
<reference ref="354285291"/>
24412458
<reference ref="563692607"/>
2459+
<reference ref="354339555"/>
24422460
</object>
24432461
<reference key="parent" ref="24227530"/>
24442462
<string key="objectName">Commits Scope Bar</string>
@@ -2695,6 +2713,11 @@
26952713
<reference key="object" ref="349876124"/>
26962714
<reference key="parent" ref="627778713"/>
26972715
</object>
2716+
<object class="IBObjectRecord">
2717+
<int key="objectID">447</int>
2718+
<reference key="object" ref="354339555"/>
2719+
<reference key="parent" ref="428755155"/>
2720+
</object>
26982721
</object>
26992722
</object>
27002723
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -2803,6 +2826,7 @@
28032826
<string>428.IBSegmentedControlInspectorSelectedSegmentMetadataKey</string>
28042827
<string>430.IBPluginDependency</string>
28052828
<string>431.IBPluginDependency</string>
2829+
<string>447.IBPluginDependency</string>
28062830
<string>46.IBEditorWindowLastContentRect</string>
28072831
<string>46.IBPluginDependency</string>
28082832
<string>48.IBPluginDependency</string>
@@ -2987,6 +3011,7 @@
29873011
<integer value="0"/>
29883012
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
29893013
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
3014+
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
29903015
<string>{{9, 486}, {852, 432}}</string>
29913016
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
29923017
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3023,7 +3048,7 @@
30233048
</object>
30243049
</object>
30253050
<nil key="sourceID"/>
3026-
<int key="maxID">437</int>
3051+
<int key="maxID">448</int>
30273052
</object>
30283053
<object class="IBClassDescriber" key="IBDocument.Classes">
30293054
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -3480,24 +3505,45 @@
34803505
<bool key="EncodedWithXMLCoder">YES</bool>
34813506
<object class="NSArray" key="dict.sortedKeys">
34823507
<bool key="EncodedWithXMLCoder">YES</bool>
3508+
<string>selectBasicSearch:</string>
3509+
<string>selectPickaxeSearch:</string>
3510+
<string>selectRegexSearch:</string>
34833511
<string>stepperPressed:</string>
34843512
<string>updateSearch:</string>
34853513
</object>
34863514
<object class="NSMutableArray" key="dict.values">
34873515
<bool key="EncodedWithXMLCoder">YES</bool>
34883516
<string>id</string>
34893517
<string>id</string>
3518+
<string>id</string>
3519+
<string>id</string>
3520+
<string>id</string>
34903521
</object>
34913522
</object>
34923523
<object class="NSMutableDictionary" key="actionInfosByName">
34933524
<bool key="EncodedWithXMLCoder">YES</bool>
34943525
<object class="NSArray" key="dict.sortedKeys">
34953526
<bool key="EncodedWithXMLCoder">YES</bool>
3527+
<string>selectBasicSearch:</string>
3528+
<string>selectPickaxeSearch:</string>
3529+
<string>selectRegexSearch:</string>
34963530
<string>stepperPressed:</string>
34973531
<string>updateSearch:</string>
34983532
</object>
34993533
<object class="NSMutableArray" key="dict.values">
35003534
<bool key="EncodedWithXMLCoder">YES</bool>
3535+
<object class="IBActionInfo">
3536+
<string key="name">selectBasicSearch:</string>
3537+
<string key="candidateClassName">id</string>
3538+
</object>
3539+
<object class="IBActionInfo">
3540+
<string key="name">selectPickaxeSearch:</string>
3541+
<string key="candidateClassName">id</string>
3542+
</object>
3543+
<object class="IBActionInfo">
3544+
<string key="name">selectRegexSearch:</string>
3545+
<string key="candidateClassName">id</string>
3546+
</object>
35013547
<object class="IBActionInfo">
35023548
<string key="name">stepperPressed:</string>
35033549
<string key="candidateClassName">id</string>
@@ -3515,6 +3561,7 @@
35153561
<string>commitController</string>
35163562
<string>historyController</string>
35173563
<string>numberOfMatchesField</string>
3564+
<string>progressIndicator</string>
35183565
<string>searchField</string>
35193566
<string>stepper</string>
35203567
</object>
@@ -3523,6 +3570,7 @@
35233570
<string>NSArrayController</string>
35243571
<string>PBGitHistoryController</string>
35253572
<string>NSTextField</string>
3573+
<string>NSProgressIndicator</string>
35263574
<string>NSSearchField</string>
35273575
<string>NSSegmentedControl</string>
35283576
</object>
@@ -3534,6 +3582,7 @@
35343582
<string>commitController</string>
35353583
<string>historyController</string>
35363584
<string>numberOfMatchesField</string>
3585+
<string>progressIndicator</string>
35373586
<string>searchField</string>
35383587
<string>stepper</string>
35393588
</object>
@@ -3551,6 +3600,10 @@
35513600
<string key="name">numberOfMatchesField</string>
35523601
<string key="candidateClassName">NSTextField</string>
35533602
</object>
3603+
<object class="IBToOneOutletInfo">
3604+
<string key="name">progressIndicator</string>
3605+
<string key="candidateClassName">NSProgressIndicator</string>
3606+
</object>
35543607
<object class="IBToOneOutletInfo">
35553608
<string key="name">searchField</string>
35563609
<string key="candidateClassName">NSSearchField</string>
@@ -4360,13 +4413,6 @@
43604413
<string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
43614414
</object>
43624415
</object>
4363-
<object class="IBPartialClassDescription">
4364-
<string key="className">NSObject</string>
4365-
<object class="IBClassDescriptionSource" key="sourceIdentifier">
4366-
<string key="majorKey">IBFrameworkSource</string>
4367-
<string key="minorKey">ScriptingBridge.framework/Headers/SBApplication.h</string>
4368-
</object>
4369-
</object>
43704416
<object class="IBPartialClassDescription">
43714417
<string key="className">NSObject</string>
43724418
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@@ -4472,6 +4518,14 @@
44724518
<string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
44734519
</object>
44744520
</object>
4521+
<object class="IBPartialClassDescription">
4522+
<string key="className">NSProgressIndicator</string>
4523+
<string key="superclassName">NSView</string>
4524+
<object class="IBClassDescriptionSource" key="sourceIdentifier">
4525+
<string key="majorKey">IBFrameworkSource</string>
4526+
<string key="minorKey">AppKit.framework/Headers/NSProgressIndicator.h</string>
4527+
</object>
4528+
</object>
44754529
<object class="IBPartialClassDescription">
44764530
<string key="className">NSResponder</string>
44774531
<object class="IBClassDescriptionSource" key="sourceIdentifier">

PBHistorySearchController.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,30 @@
99
#import <Cocoa/Cocoa.h>
1010

1111

12+
typedef enum historySearchModes {
13+
kGitXBasicSeachMode = 1,
14+
kGitXPickaxeSearchMode,
15+
kGitXRegexSearchMode,
16+
kGitXMaxSearchMode // always keep this item last
17+
} PBHistorySearchMode;
18+
1219
@class PBGitHistoryController;
1320

1421

1522
@interface PBHistorySearchController : NSObject {
1623
PBGitHistoryController *historyController;
1724
NSArrayController *commitController;
1825

26+
PBHistorySearchMode searchMode;
1927
NSIndexSet *results;
2028

2129
NSSearchField *searchField;
2230
NSSegmentedControl *stepper;
2331
NSTextField *numberOfMatchesField;
32+
NSProgressIndicator *progressIndicator;
33+
NSTimer *searchTimer;
34+
35+
NSTask *backgroundSearchTask;
2436

2537
NSPanel *rewindPanel;
2638
}
@@ -31,11 +43,16 @@
3143
@property (assign) IBOutlet NSSearchField *searchField;
3244
@property (assign) IBOutlet NSSegmentedControl *stepper;
3345
@property (assign) IBOutlet NSTextField *numberOfMatchesField;
46+
@property (assign) IBOutlet NSProgressIndicator *progressIndicator;
47+
48+
@property (assign) PBHistorySearchMode searchMode;
3449

3550

3651
- (BOOL)isRowInSearchResults:(NSInteger)rowIndex;
3752
- (BOOL)hasSearchResults;
3853

54+
- (void)selectSearchMode:(id)sender;
55+
3956
- (void)selectNextResult;
4057
- (void)selectPreviousResult;
4158
- (IBAction)stepperPressed:(id)sender;

0 commit comments

Comments
 (0)