Skip to content

Commit a958a96

Browse files
authored
Generic fuzzy search (#1584)
1 parent 9e60e54 commit a958a96

File tree

10 files changed

+336
-204
lines changed

10 files changed

+336
-204
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,13 @@
267267
6130535F2B23A31300D767E3 /* MemorySearchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6130535E2B23A31300D767E3 /* MemorySearchTests.swift */; };
268268
613053652B23A49300D767E3 /* TemporaryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613053642B23A49300D767E3 /* TemporaryFile.swift */; };
269269
6130536B2B24722C00D767E3 /* AsyncIndexingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6130536A2B24722C00D767E3 /* AsyncIndexingTests.swift */; };
270+
613899B12B6E6FDC00A5CAF6 /* Collection+FuzzySearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899B02B6E6FDC00A5CAF6 /* Collection+FuzzySearch.swift */; };
271+
613899B32B6E6FEE00A5CAF6 /* FuzzySearchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899B22B6E6FEE00A5CAF6 /* FuzzySearchable.swift */; };
272+
613899B52B6E700300A5CAF6 /* FuzzySearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899B42B6E700300A5CAF6 /* FuzzySearchModels.swift */; };
273+
613899B72B6E702F00A5CAF6 /* String+LengthOfMatchingPrefix.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899B62B6E702F00A5CAF6 /* String+LengthOfMatchingPrefix.swift */; };
274+
613899B92B6E704500A5CAF6 /* String+Normalise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899B82B6E704500A5CAF6 /* String+Normalise.swift */; };
275+
613899BC2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899BB2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift */; };
276+
613899C02B6E70FE00A5CAF6 /* FuzzySearchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613899BF2B6E70FE00A5CAF6 /* FuzzySearchTests.swift */; };
270277
613DF55E2B08DD5D00E9D902 /* FileHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 613DF55D2B08DD5D00E9D902 /* FileHelper.swift */; };
271278
61538B902B111FE800A88846 /* String+AppearancesOfSubstring.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61538B8F2B111FE800A88846 /* String+AppearancesOfSubstring.swift */; };
272279
61538B932B11201900A88846 /* String+Character.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61538B922B11201900A88846 /* String+Character.swift */; };
@@ -352,7 +359,6 @@
352359
6CBA0D512A1BF524002C6FAA /* SegmentedControlImproved.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBA0D502A1BF524002C6FAA /* SegmentedControlImproved.swift */; };
353360
6CBD1BC62978DE53006639D5 /* Font+Caption3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBD1BC52978DE53006639D5 /* Font+Caption3.swift */; };
354361
6CC9E4B229B5669900C97388 /* Environment+ActiveEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CC9E4B129B5669900C97388 /* Environment+ActiveEditor.swift */; };
355-
6CD0375F2A3504540071C4DA /* FuzzySearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD0375E2A3504540071C4DA /* FuzzySearch.swift */; };
356362
6CD03B6A29FC773F001BD1D0 /* SettingsInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CD03B6929FC773F001BD1D0 /* SettingsInjector.swift */; };
357363
6CDA84AD284C1BA000C1CC3A /* EditorTabBarContextMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CDA84AC284C1BA000C1CC3A /* EditorTabBarContextMenu.swift */; };
358364
6CDEFC9629E22C2700B7C684 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 6CDEFC9529E22C2700B7C684 /* Introspect */; };
@@ -822,6 +828,13 @@
822828
6130535E2B23A31300D767E3 /* MemorySearchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemorySearchTests.swift; sourceTree = "<group>"; };
823829
613053642B23A49300D767E3 /* TemporaryFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemporaryFile.swift; sourceTree = "<group>"; };
824830
6130536A2B24722C00D767E3 /* AsyncIndexingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncIndexingTests.swift; sourceTree = "<group>"; };
831+
613899B02B6E6FDC00A5CAF6 /* Collection+FuzzySearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Collection+FuzzySearch.swift"; sourceTree = "<group>"; };
832+
613899B22B6E6FEE00A5CAF6 /* FuzzySearchable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FuzzySearchable.swift; sourceTree = "<group>"; };
833+
613899B42B6E700300A5CAF6 /* FuzzySearchModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FuzzySearchModels.swift; sourceTree = "<group>"; };
834+
613899B62B6E702F00A5CAF6 /* String+LengthOfMatchingPrefix.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+LengthOfMatchingPrefix.swift"; sourceTree = "<group>"; };
835+
613899B82B6E704500A5CAF6 /* String+Normalise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Normalise.swift"; sourceTree = "<group>"; };
836+
613899BB2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+FuzzySearchable.swift"; sourceTree = "<group>"; };
837+
613899BF2B6E70FE00A5CAF6 /* FuzzySearchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FuzzySearchTests.swift; sourceTree = "<group>"; };
825838
613DF55D2B08DD5D00E9D902 /* FileHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileHelper.swift; sourceTree = "<group>"; };
826839
61538B8F2B111FE800A88846 /* String+AppearancesOfSubstring.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+AppearancesOfSubstring.swift"; sourceTree = "<group>"; };
827840
61538B922B11201900A88846 /* String+Character.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Character.swift"; sourceTree = "<group>"; };
@@ -892,7 +905,6 @@
892905
6CBA0D502A1BF524002C6FAA /* SegmentedControlImproved.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedControlImproved.swift; sourceTree = "<group>"; };
893906
6CBD1BC52978DE53006639D5 /* Font+Caption3.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Font+Caption3.swift"; sourceTree = "<group>"; };
894907
6CC9E4B129B5669900C97388 /* Environment+ActiveEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Environment+ActiveEditor.swift"; sourceTree = "<group>"; };
895-
6CD0375E2A3504540071C4DA /* FuzzySearch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FuzzySearch.swift; sourceTree = "<group>"; };
896908
6CD03B6929FC773F001BD1D0 /* SettingsInjector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsInjector.swift; sourceTree = "<group>"; };
897909
6CDA84AC284C1BA000C1CC3A /* EditorTabBarContextMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorTabBarContextMenu.swift; sourceTree = "<group>"; };
898910
6CE622682A2A174A0013085C /* InspectorTab.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectorTab.swift; sourceTree = "<group>"; };
@@ -1605,8 +1617,8 @@
16051617
5878DAAA291D5CAA00DD95A3 /* ViewModels */ = {
16061618
isa = PBXGroup;
16071619
children = (
1608-
6CD0375E2A3504540071C4DA /* FuzzySearch.swift */,
16091620
5878DAA3291AE76700DD95A3 /* QuickOpenViewModel.swift */,
1621+
613899BB2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift */,
16101622
);
16111623
path = ViewModels;
16121624
sourceTree = "<group>";
@@ -1632,6 +1644,7 @@
16321644
58798210292D92370085B254 /* Search */ = {
16331645
isa = PBXGroup;
16341646
children = (
1647+
613899AF2B6E6FB800A5CAF6 /* FuzzySearch */,
16351648
58798212292D92370085B254 /* Extensions */,
16361649
58798214292D92370085B254 /* Model */,
16371650
);
@@ -1759,6 +1772,7 @@
17591772
587B60FE293416C900D5CD8F /* Features */ = {
17601773
isa = PBXGroup;
17611774
children = (
1775+
613899BD2B6E70E200A5CAF6 /* Search */,
17621776
283BDCC22972F211002AFF81 /* Acknowledgements */,
17631777
4EE96EC82960562000FFBEA8 /* Documents */,
17641778
583E527429361B39001AB554 /* CodeEditUI */,
@@ -2323,6 +2337,34 @@
23232337
path = Indexer;
23242338
sourceTree = "<group>";
23252339
};
2340+
613899AF2B6E6FB800A5CAF6 /* FuzzySearch */ = {
2341+
isa = PBXGroup;
2342+
children = (
2343+
613899B02B6E6FDC00A5CAF6 /* Collection+FuzzySearch.swift */,
2344+
613899B22B6E6FEE00A5CAF6 /* FuzzySearchable.swift */,
2345+
613899B42B6E700300A5CAF6 /* FuzzySearchModels.swift */,
2346+
613899B62B6E702F00A5CAF6 /* String+LengthOfMatchingPrefix.swift */,
2347+
613899B82B6E704500A5CAF6 /* String+Normalise.swift */,
2348+
);
2349+
path = FuzzySearch;
2350+
sourceTree = "<group>";
2351+
};
2352+
613899BD2B6E70E200A5CAF6 /* Search */ = {
2353+
isa = PBXGroup;
2354+
children = (
2355+
613899BE2B6E70EA00A5CAF6 /* FuzzySearch */,
2356+
);
2357+
path = Search;
2358+
sourceTree = "<group>";
2359+
};
2360+
613899BE2B6E70EA00A5CAF6 /* FuzzySearch */ = {
2361+
isa = PBXGroup;
2362+
children = (
2363+
613899BF2B6E70FE00A5CAF6 /* FuzzySearchTests.swift */,
2364+
);
2365+
path = FuzzySearch;
2366+
sourceTree = "<group>";
2367+
};
23262368
6C092EDC2A53A63E00489202 /* Views */ = {
23272369
isa = PBXGroup;
23282370
children = (
@@ -3266,6 +3308,7 @@
32663308
587B9E7729301D8F00AC7927 /* String+PercentEncoding.swift in Sources */,
32673309
587B9E5B29301D8F00AC7927 /* GitCheckoutBranchView.swift in Sources */,
32683310
2813F93827ECC4AA00E305E4 /* FindNavigatorResultList.swift in Sources */,
3311+
613899B92B6E704500A5CAF6 /* String+Normalise.swift in Sources */,
32693312
04BA7C192AE2D7C600584E1C /* GitClient+Branches.swift in Sources */,
32703313
587B9E8829301D8F00AC7927 /* GitHubFiles.swift in Sources */,
32713314
587B9DA729300ABD00AC7927 /* HelpButton.swift in Sources */,
@@ -3285,7 +3328,6 @@
32853328
587B9D9F29300ABD00AC7927 /* SegmentedControl.swift in Sources */,
32863329
6C7256D729A3D7D000C2D3E0 /* SplitViewControllerView.swift in Sources */,
32873330
B6EA1FE529DA33DB001BF195 /* ThemeModel.swift in Sources */,
3288-
6CD0375F2A3504540071C4DA /* FuzzySearch.swift in Sources */,
32893331
B6EA200029DB7966001BF195 /* SettingsColorPicker.swift in Sources */,
32903332
58FD7609291EA1CB0051D6E4 /* CommandPaletteView.swift in Sources */,
32913333
58A2E40C29C3975D005CB615 /* CEWorkspaceFileIcon.swift in Sources */,
@@ -3365,6 +3407,7 @@
33653407
B6D7EA5C297107DD00301FAC /* InspectorField.swift in Sources */,
33663408
043C321427E31FF6006AE443 /* CodeEditDocumentController.swift in Sources */,
33673409
85E4122A2A46C8CA00183F2B /* LocationsSettings.swift in Sources */,
3410+
613899B12B6E6FDC00A5CAF6 /* Collection+FuzzySearch.swift in Sources */,
33683411
581550D129FBD30400684881 /* TextTableViewCell.swift in Sources */,
33693412
587B9E6629301D8F00AC7927 /* GitLabProjectHook.swift in Sources */,
33703413
587B9E9329301D8F00AC7927 /* BitBucketOAuthConfiguration.swift in Sources */,
@@ -3472,6 +3515,7 @@
34723515
0485EB1F27E7458B00138301 /* WorkspaceCodeFileView.swift in Sources */,
34733516
6C092EDA2A53A58600489202 /* EditorLayout+StateRestoration.swift in Sources */,
34743517
6C092EE02A53BFCF00489202 /* WorkspaceStateKey.swift in Sources */,
3518+
613899B52B6E700300A5CAF6 /* FuzzySearchModels.swift in Sources */,
34753519
58D01C94293167DC00C5B6B4 /* Color+HEX.swift in Sources */,
34763520
6C578D8729CD345900DC73B2 /* ExtensionSceneView.swift in Sources */,
34773521
B640A9A129E2188F00715F20 /* View+NavigationBarBackButtonVisible.swift in Sources */,
@@ -3511,6 +3555,7 @@
35113555
6C6BD6EF29CD12E900235D17 /* ExtensionManagerWindow.swift in Sources */,
35123556
6CFF967629BEBCD900182D6F /* FileCommands.swift in Sources */,
35133557
B60718462B17DC15009CDAB4 /* RepoOutlineGroupItem.swift in Sources */,
3558+
613899B32B6E6FEE00A5CAF6 /* FuzzySearchable.swift in Sources */,
35143559
B697937A29FF5668002027EC /* AccountsSettingsAccountLink.swift in Sources */,
35153560
5B698A0D2B26327800DE9392 /* SearchSettings.swift in Sources */,
35163561
B685DE7929CC9CCD002860C8 /* StatusBarIcon.swift in Sources */,
@@ -3548,6 +3593,7 @@
35483593
B6A43C5D29FC4AF00027E0E0 /* CreateSSHKeyView.swift in Sources */,
35493594
B6EA200229DB7F81001BF195 /* View+ConstrainHeightToWindow.swift in Sources */,
35503595
B68C7C212A01DEFE004EA6D6 /* GitHubComment.swift in Sources */,
3596+
613899B72B6E702F00A5CAF6 /* String+LengthOfMatchingPrefix.swift in Sources */,
35513597
6C48D8F42972DB1A00D6D205 /* Env+Window.swift in Sources */,
35523598
6C5FDF7A29E6160000BC08C0 /* AppSettings.swift in Sources */,
35533599
58F2EB07292FB2B0004A9BDE /* GeneralSettings.swift in Sources */,
@@ -3623,6 +3669,7 @@
36233669
6C2C155829B4F49100EA60A5 /* SplitViewItem.swift in Sources */,
36243670
6CDA84AD284C1BA000C1CC3A /* EditorTabBarContextMenu.swift in Sources */,
36253671
6C81916729B3E80700B75C92 /* ModifierKeysObserver.swift in Sources */,
3672+
613899BC2B6E709C00A5CAF6 /* URL+FuzzySearchable.swift in Sources */,
36263673
611192002B08CCD700D4459B /* SearchIndexer+Memory.swift in Sources */,
36273674
587B9E8129301D8F00AC7927 /* PublicKey.swift in Sources */,
36283675
611191FE2B08CCD200D4459B /* SearchIndexer+File.swift in Sources */,
@@ -3658,6 +3705,7 @@
36583705
6130535C2B23933D00D767E3 /* MemoryIndexingTests.swift in Sources */,
36593706
6195E3112B640485007261CA /* WorkspaceDocument+SearchState+IndexTests.swift in Sources */,
36603707
6130536B2B24722C00D767E3 /* AsyncIndexingTests.swift in Sources */,
3708+
613899C02B6E70FE00A5CAF6 /* FuzzySearchTests.swift in Sources */,
36613709
6195E30D2B64044F007261CA /* WorkspaceDocument+SearchState+FindTests.swift in Sources */,
36623710
6195E30F2B640474007261CA /* WorkspaceDocument+SearchState+FindAndReplaceTests.swift in Sources */,
36633711
587B612E293419B700D5CD8F /* CodeFileTests.swift in Sources */,

0 commit comments

Comments
 (0)