From e0f779287915eeff5b13589facc21d19673abdbc Mon Sep 17 00:00:00 2001 From: Paul Ebose Date: Wed, 3 Jul 2024 18:39:46 +0100 Subject: [PATCH 1/4] fix open quickly fatal error --- CodeEdit.xcodeproj/project.pbxproj | 12 ++++++++++++ .../Extensions/Array+subscript_safe.swift | 15 +++++++++++++++ .../QuickOpen/Views/NSTableViewWrapper.swift | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index d51656b37..9926a422d 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -325,6 +325,7 @@ 61A53A812B4449F00093BF8A /* WorkspaceDocument+Index.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */; }; 661EF7B82BEE215300C3E577 /* ImageFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7B72BEE215300C3E577 /* ImageFileView.swift */; }; 661EF7BD2BEE215300C3E577 /* LoadingFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */; }; + 662D48FD2C34E49B0057C7F9 /* Array+subscript_safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */; }; 669BC4082BED306400D1197C /* AnyFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669BC4072BED306400D1197C /* AnyFileView.swift */; }; 66AF6CE22BF17CC300D83C9D /* StatusBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */; }; 66AF6CE42BF17F6800D83C9D /* StatusBarFileInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */; }; @@ -943,6 +944,7 @@ 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WorkspaceDocument+Index.swift"; sourceTree = ""; }; 661EF7B72BEE215300C3E577 /* ImageFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFileView.swift; sourceTree = ""; }; 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingFileView.swift; sourceTree = ""; }; + 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+subscript_safe.swift"; sourceTree = ""; }; 669BC4072BED306400D1197C /* AnyFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyFileView.swift; sourceTree = ""; }; 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarViewModel.swift; sourceTree = ""; }; 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarFileInfoView.swift; sourceTree = ""; }; @@ -1760,6 +1762,7 @@ 5878DAA0291AE76700DD95A3 /* QuickOpen */ = { isa = PBXGroup; children = ( + 662D48FB2C34E46F0057C7F9 /* Extensions */, 5878DAAA291D5CAA00DD95A3 /* ViewModels */, 5878DAA9291D5CA100DD95A3 /* Views */, ); @@ -2535,6 +2538,14 @@ path = ActivityViewer; sourceTree = ""; }; + 662D48FB2C34E46F0057C7F9 /* Extensions */ = { + isa = PBXGroup; + children = ( + 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */, + ); + path = Extensions; + sourceTree = ""; + }; 66AF6CE02BF17CB100D83C9D /* ViewModels */ = { isa = PBXGroup; children = ( @@ -3908,6 +3919,7 @@ B6EA1FF829DB78DB001BF195 /* ThemeSettingThemeRow.swift in Sources */, 587B9E7629301D8F00AC7927 /* GitTime.swift in Sources */, 587B9E5D29301D8F00AC7927 /* GitLabUserRouter.swift in Sources */, + 662D48FD2C34E49B0057C7F9 /* Array+subscript_safe.swift in Sources */, 588847692992ABCA00996D95 /* Array+SortURLs.swift in Sources */, 58822530292C280D00E83CDE /* UtilityAreaFilterTextField.swift in Sources */, 6C82D6B929BFE34900495C54 /* HelpCommands.swift in Sources */, diff --git a/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift b/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift new file mode 100644 index 000000000..7f6ac3d46 --- /dev/null +++ b/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift @@ -0,0 +1,15 @@ +// +// Array+subscript_safe.swift +// CodeEdit +// +// Created by Paul Ebose on 2024/7/3. +// + +import Foundation + +extension Array { + /// Returns nil if the index is out of bounds. + subscript(safe index: Index) -> Element? { + indices.contains(index) ? self[index] : nil + } +} diff --git a/CodeEdit/Features/QuickOpen/Views/NSTableViewWrapper.swift b/CodeEdit/Features/QuickOpen/Views/NSTableViewWrapper.swift index 792cf2b02..3be6aeb6b 100644 --- a/CodeEdit/Features/QuickOpen/Views/NSTableViewWrapper.swift +++ b/CodeEdit/Features/QuickOpen/Views/NSTableViewWrapper.swift @@ -132,7 +132,7 @@ struct NSTableViewWrapper: NSViewR func tableViewSelectionDidChange(_ notification: Notification) { if let view = notification.object as? NSTableView { - let newSelection = parent.data[view.selectedRow] + let newSelection = parent.data[safe: view.selectedRow] if newSelection != parent.selection { parent.selection = newSelection } From 19ab9db4158066420767fec2d003a4e3466ec390 Mon Sep 17 00:00:00 2001 From: Paul Ebose Date: Fri, 5 Jul 2024 12:09:28 +0100 Subject: [PATCH 2/4] remove `Array+subscript_safe.swift` --- CodeEdit.xcodeproj/project.pbxproj | 12 ------------ .../Extensions/Array+subscript_safe.swift | 15 --------------- 2 files changed, 27 deletions(-) delete mode 100644 CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index 9926a422d..d51656b37 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -325,7 +325,6 @@ 61A53A812B4449F00093BF8A /* WorkspaceDocument+Index.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */; }; 661EF7B82BEE215300C3E577 /* ImageFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7B72BEE215300C3E577 /* ImageFileView.swift */; }; 661EF7BD2BEE215300C3E577 /* LoadingFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */; }; - 662D48FD2C34E49B0057C7F9 /* Array+subscript_safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */; }; 669BC4082BED306400D1197C /* AnyFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669BC4072BED306400D1197C /* AnyFileView.swift */; }; 66AF6CE22BF17CC300D83C9D /* StatusBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */; }; 66AF6CE42BF17F6800D83C9D /* StatusBarFileInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */; }; @@ -944,7 +943,6 @@ 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WorkspaceDocument+Index.swift"; sourceTree = ""; }; 661EF7B72BEE215300C3E577 /* ImageFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFileView.swift; sourceTree = ""; }; 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingFileView.swift; sourceTree = ""; }; - 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Array+subscript_safe.swift"; sourceTree = ""; }; 669BC4072BED306400D1197C /* AnyFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyFileView.swift; sourceTree = ""; }; 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarViewModel.swift; sourceTree = ""; }; 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarFileInfoView.swift; sourceTree = ""; }; @@ -1762,7 +1760,6 @@ 5878DAA0291AE76700DD95A3 /* QuickOpen */ = { isa = PBXGroup; children = ( - 662D48FB2C34E46F0057C7F9 /* Extensions */, 5878DAAA291D5CAA00DD95A3 /* ViewModels */, 5878DAA9291D5CA100DD95A3 /* Views */, ); @@ -2538,14 +2535,6 @@ path = ActivityViewer; sourceTree = ""; }; - 662D48FB2C34E46F0057C7F9 /* Extensions */ = { - isa = PBXGroup; - children = ( - 662D48FC2C34E49B0057C7F9 /* Array+subscript_safe.swift */, - ); - path = Extensions; - sourceTree = ""; - }; 66AF6CE02BF17CB100D83C9D /* ViewModels */ = { isa = PBXGroup; children = ( @@ -3919,7 +3908,6 @@ B6EA1FF829DB78DB001BF195 /* ThemeSettingThemeRow.swift in Sources */, 587B9E7629301D8F00AC7927 /* GitTime.swift in Sources */, 587B9E5D29301D8F00AC7927 /* GitLabUserRouter.swift in Sources */, - 662D48FD2C34E49B0057C7F9 /* Array+subscript_safe.swift in Sources */, 588847692992ABCA00996D95 /* Array+SortURLs.swift in Sources */, 58822530292C280D00E83CDE /* UtilityAreaFilterTextField.swift in Sources */, 6C82D6B929BFE34900495C54 /* HelpCommands.swift in Sources */, diff --git a/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift b/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift deleted file mode 100644 index 7f6ac3d46..000000000 --- a/CodeEdit/Features/QuickOpen/Extensions/Array+subscript_safe.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// Array+subscript_safe.swift -// CodeEdit -// -// Created by Paul Ebose on 2024/7/3. -// - -import Foundation - -extension Array { - /// Returns nil if the index is out of bounds. - subscript(safe index: Index) -> Element? { - indices.contains(index) ? self[index] : nil - } -} From 153147b70e3e5fac4633ced3cdf01e1b9d8b1411 Mon Sep 17 00:00:00 2001 From: Paul Ebose Date: Fri, 5 Jul 2024 12:12:53 +0100 Subject: [PATCH 3/4] create `String+escapedWhiteSpaces.swift` --- CodeEdit.xcodeproj/project.pbxproj | 12 ++++++++++++ CodeEdit/Features/Git/Client/GitClient.swift | 5 ----- .../String/String+escapedWhiteSpaces.swift | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 CodeEdit/Utils/Extensions/String/String+escapedWhiteSpaces.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index d51656b37..678ccfdf0 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -325,6 +325,7 @@ 61A53A812B4449F00093BF8A /* WorkspaceDocument+Index.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */; }; 661EF7B82BEE215300C3E577 /* ImageFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7B72BEE215300C3E577 /* ImageFileView.swift */; }; 661EF7BD2BEE215300C3E577 /* LoadingFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */; }; + 669A50512C380C1800304CD8 /* String+escapedWhiteSpaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669A50502C380C1800304CD8 /* String+escapedWhiteSpaces.swift */; }; 669BC4082BED306400D1197C /* AnyFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669BC4072BED306400D1197C /* AnyFileView.swift */; }; 66AF6CE22BF17CC300D83C9D /* StatusBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */; }; 66AF6CE42BF17F6800D83C9D /* StatusBarFileInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */; }; @@ -943,6 +944,7 @@ 61A53A802B4449F00093BF8A /* WorkspaceDocument+Index.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WorkspaceDocument+Index.swift"; sourceTree = ""; }; 661EF7B72BEE215300C3E577 /* ImageFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFileView.swift; sourceTree = ""; }; 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingFileView.swift; sourceTree = ""; }; + 669A50502C380C1800304CD8 /* String+escapedWhiteSpaces.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+escapedWhiteSpaces.swift"; sourceTree = ""; }; 669BC4072BED306400D1197C /* AnyFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyFileView.swift; sourceTree = ""; }; 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarViewModel.swift; sourceTree = ""; }; 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarFileInfoView.swift; sourceTree = ""; }; @@ -2336,6 +2338,7 @@ 58D01C87293167DC00C5B6B4 /* Extensions */ = { isa = PBXGroup; children = ( + 669A504F2C380BFD00304CD8 /* Collection */, 6C82D6C429C0129E00495C54 /* NSApplication */, 77A01E922BCA9C0400F0EA38 /* NSWindow */, 588847672992AAB800996D95 /* Array */, @@ -2360,6 +2363,7 @@ 58D01C8D293167DC00C5B6B4 /* String+RemoveOccurrences.swift */, 58D01C8C293167DC00C5B6B4 /* String+SHA256.swift */, 85745D622A38F8D900089AAB /* String+HighlightOccurrences.swift */, + 669A50502C380C1800304CD8 /* String+escapedWhiteSpaces.swift */, ); path = String; sourceTree = ""; @@ -2535,6 +2539,13 @@ path = ActivityViewer; sourceTree = ""; }; + 669A504F2C380BFD00304CD8 /* Collection */ = { + isa = PBXGroup; + children = ( + ); + path = Collection; + sourceTree = ""; + }; 66AF6CE02BF17CB100D83C9D /* ViewModels */ = { isa = PBXGroup; children = ( @@ -3941,6 +3952,7 @@ B65B10F52B081A0C002852CF /* SourceControlAddRemoteView.swift in Sources */, 58D01C99293167DC00C5B6B4 /* String+MD5.swift in Sources */, 20EBB505280C329800F3A5DA /* CommitListItemView.swift in Sources */, + 669A50512C380C1800304CD8 /* String+escapedWhiteSpaces.swift in Sources */, 5878DAB2291D627C00DD95A3 /* EditorPathBarView.swift in Sources */, 04BC1CDE2AD9B4B000A83EA5 /* EditorFileTabCloseButton.swift in Sources */, 6C6BD70129CD172700235D17 /* ExtensionsListView.swift in Sources */, diff --git a/CodeEdit/Features/Git/Client/GitClient.swift b/CodeEdit/Features/Git/Client/GitClient.swift index 67162f665..93bd6aa3a 100644 --- a/CodeEdit/Features/Git/Client/GitClient.swift +++ b/CodeEdit/Features/Git/Client/GitClient.swift @@ -84,8 +84,3 @@ internal extension Collection { } } -internal extension String { - func escapedWhiteSpaces() -> String { - self.replacingOccurrences(of: " ", with: "\\ ") - } -} diff --git a/CodeEdit/Utils/Extensions/String/String+escapedWhiteSpaces.swift b/CodeEdit/Utils/Extensions/String/String+escapedWhiteSpaces.swift new file mode 100644 index 000000000..ccf56378d --- /dev/null +++ b/CodeEdit/Utils/Extensions/String/String+escapedWhiteSpaces.swift @@ -0,0 +1,14 @@ +// +// String+escapedWhiteSpaces.swift +// CodeEdit +// +// Created by Paul Ebose on 2024/07/05. +// + +import Foundation + +extension String { + func escapedWhiteSpaces() -> String { + self.replacingOccurrences(of: " ", with: "\\ ") + } +} From 6d2e4e117a1d31b7d8c1e33fc976ef99f85067be Mon Sep 17 00:00:00 2001 From: Paul Ebose Date: Fri, 5 Jul 2024 12:14:31 +0100 Subject: [PATCH 4/4] create `Collection+subscript_safe.swift` --- CodeEdit.xcodeproj/project.pbxproj | 4 ++++ CodeEdit/Features/Git/Client/GitClient.swift | 8 -------- .../Collection/Collection+subscript_safe.swift | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 CodeEdit/Utils/Extensions/Collection/Collection+subscript_safe.swift diff --git a/CodeEdit.xcodeproj/project.pbxproj b/CodeEdit.xcodeproj/project.pbxproj index 678ccfdf0..3e2f82024 100644 --- a/CodeEdit.xcodeproj/project.pbxproj +++ b/CodeEdit.xcodeproj/project.pbxproj @@ -326,6 +326,7 @@ 661EF7B82BEE215300C3E577 /* ImageFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7B72BEE215300C3E577 /* ImageFileView.swift */; }; 661EF7BD2BEE215300C3E577 /* LoadingFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */; }; 669A50512C380C1800304CD8 /* String+escapedWhiteSpaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669A50502C380C1800304CD8 /* String+escapedWhiteSpaces.swift */; }; + 669A50532C380C8E00304CD8 /* Collection+subscript_safe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669A50522C380C8E00304CD8 /* Collection+subscript_safe.swift */; }; 669BC4082BED306400D1197C /* AnyFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669BC4072BED306400D1197C /* AnyFileView.swift */; }; 66AF6CE22BF17CC300D83C9D /* StatusBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */; }; 66AF6CE42BF17F6800D83C9D /* StatusBarFileInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */; }; @@ -945,6 +946,7 @@ 661EF7B72BEE215300C3E577 /* ImageFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFileView.swift; sourceTree = ""; }; 661EF7BC2BEE215300C3E577 /* LoadingFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingFileView.swift; sourceTree = ""; }; 669A50502C380C1800304CD8 /* String+escapedWhiteSpaces.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+escapedWhiteSpaces.swift"; sourceTree = ""; }; + 669A50522C380C8E00304CD8 /* Collection+subscript_safe.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Collection+subscript_safe.swift"; sourceTree = ""; }; 669BC4072BED306400D1197C /* AnyFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyFileView.swift; sourceTree = ""; }; 66AF6CE12BF17CC300D83C9D /* StatusBarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarViewModel.swift; sourceTree = ""; }; 66AF6CE32BF17F6800D83C9D /* StatusBarFileInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusBarFileInfoView.swift; sourceTree = ""; }; @@ -2542,6 +2544,7 @@ 669A504F2C380BFD00304CD8 /* Collection */ = { isa = PBXGroup; children = ( + 669A50522C380C8E00304CD8 /* Collection+subscript_safe.swift */, ); path = Collection; sourceTree = ""; @@ -3994,6 +3997,7 @@ 587B9E8129301D8F00AC7927 /* PublicKey.swift in Sources */, 611191FE2B08CCD200D4459B /* SearchIndexer+File.swift in Sources */, 77A01E302BB4270F00F0EA38 /* ProjectCEWorkspaceSettingsView.swift in Sources */, + 669A50532C380C8E00304CD8 /* Collection+subscript_safe.swift in Sources */, 77A01E2C2BB425B200F0EA38 /* CEWorkspaceSettingsData+TasksSettings.swift in Sources */, 5B241BF32B6DDBFF0016E616 /* IgnorePatternListItemView.swift in Sources */, 6CB52DC92AC8DC3E002E75B3 /* CEWorkspaceFileManager+FileManagement.swift in Sources */, diff --git a/CodeEdit/Features/Git/Client/GitClient.swift b/CodeEdit/Features/Git/Client/GitClient.swift index 93bd6aa3a..730d83e0a 100644 --- a/CodeEdit/Features/Git/Client/GitClient.swift +++ b/CodeEdit/Features/Git/Client/GitClient.swift @@ -76,11 +76,3 @@ class GitClient { return output } } - -internal extension Collection { - /// Returns the element at the specified index if it is within bounds, otherwise nil. - subscript (safe index: Index) -> Element? { - indices.contains(index) ? self[index] : nil - } -} - diff --git a/CodeEdit/Utils/Extensions/Collection/Collection+subscript_safe.swift b/CodeEdit/Utils/Extensions/Collection/Collection+subscript_safe.swift new file mode 100644 index 000000000..a0a2d080e --- /dev/null +++ b/CodeEdit/Utils/Extensions/Collection/Collection+subscript_safe.swift @@ -0,0 +1,15 @@ +// +// Collection+subscript_safe.swift +// CodeEdit +// +// Created by Paul Ebose on 2024/07/05. +// + +import Foundation + +extension Collection { + /// Returns the element at the specified index if it is within bounds, otherwise nil. + subscript (safe index: Index) -> Element? { + indices.contains(index) ? self[index] : nil + } +}