@@ -80,6 +80,7 @@ final class Workspace {
8080 }
8181
8282 let projectRootURL : URL
83+ let openedFileRecoverableStorage : OpenedFileRecoverableStorage
8384 var lastSuggestionUpdateTime = Environment . now ( )
8485 var isExpired : Bool {
8586 Environment . now ( ) . timeIntervalSince ( lastSuggestionUpdateTime) > 60 * 60 * 8
@@ -98,17 +99,7 @@ final class Workspace {
9899 ] , context: nil
99100 )
100101
101- private var _suggestionService : SuggestionServiceType ? {
102- didSet {
103- guard _suggestionService != nil else { return }
104- Task {
105- try await Task . sleep ( nanoseconds: 1_000_000_000 )
106- for (_, filespace) in filespaces {
107- notifyOpenFile ( filespace: filespace)
108- }
109- }
110- }
111- }
102+ private var _suggestionService : SuggestionServiceType ?
112103
113104 private var suggestionService : SuggestionServiceType ? {
114105 // Check if the workspace is disabled.
@@ -149,11 +140,17 @@ final class Workspace {
149140
150141 private init ( projectRootURL: URL ) {
151142 self . projectRootURL = projectRootURL
143+ openedFileRecoverableStorage = . init( projectRootURL: projectRootURL)
152144
153145 userDefaultsObserver. onChange = { [ weak self] in
154146 guard let self else { return }
155147 _ = self . suggestionService
156148 }
149+
150+ let openedFiles = openedFileRecoverableStorage. openedFiles
151+ for fileURL in openedFiles {
152+ _ = createFilespaceIfNeeded ( fileURL: fileURL)
153+ }
157154 }
158155
159156 func refreshUpdateTime( ) {
@@ -364,6 +361,7 @@ extension Workspace {
364361
365362 func notifyOpenFile( filespace: Filespace ) {
366363 refreshUpdateTime ( )
364+ openedFileRecoverableStorage. openFile ( fileURL: filespace. fileURL)
367365 Task {
368366 try await suggestionService? . notifyOpenTextDocument (
369367 fileURL: filespace. fileURL,
@@ -401,6 +399,7 @@ extension Workspace {
401399 Task {
402400 try await suggestionService? . notifyCloseTextDocument ( fileURL: fileURL)
403401 }
402+ openedFileRecoverableStorage. closeFile ( fileURL: fileURL)
404403 filespaces [ fileURL] = nil
405404 }
406405 }
0 commit comments