File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import Foundation
2+
3+ final class FileSaveWatcher {
4+ let url : URL
5+ var fileHandle : FileHandle ?
6+ var source : DispatchSourceFileSystemObject ?
7+ var changeHandler : ( ) -> Void = { }
8+
9+ init ( fileURL: URL ) {
10+ url = fileURL
11+ startup ( )
12+ }
13+
14+ deinit {
15+ source? . cancel ( )
16+ }
17+
18+ func startup( ) {
19+ if let source = source {
20+ source. cancel ( )
21+ }
22+
23+ fileHandle = try ? FileHandle ( forReadingFrom: url)
24+ if let fileHandle = fileHandle {
25+ source = DispatchSource . makeFileSystemObjectSource (
26+ fileDescriptor: fileHandle. fileDescriptor,
27+ eventMask: . link,
28+ queue: . main
29+ )
30+
31+ source? . setEventHandler { [ weak self] in
32+ self ? . changeHandler ( )
33+ self ? . startup ( )
34+ }
35+
36+ source? . resume ( )
37+ }
38+ }
39+ }
Original file line number Diff line number Diff line change @@ -184,6 +184,7 @@ final class Workspace {
184184 }
185185
186186 let new = Workspace ( projectRootURL: currentProjectURL)
187+ workspaces [ currentProjectURL] = new
187188 let filespace = new. createFilespaceIfNeeded ( fileURL: fileURL)
188189 return ( new, filespace)
189190 }
@@ -419,44 +420,3 @@ extension Workspace {
419420 realtimeSuggestionRequests = [ ]
420421 }
421422}
422-
423- // MARK: - Helper
424-
425- final class FileSaveWatcher {
426- let url : URL
427- var fileHandle : FileHandle ?
428- var source : DispatchSourceFileSystemObject ?
429- var changeHandler : ( ) -> Void = { }
430-
431- init ( fileURL: URL ) {
432- url = fileURL
433- startup ( )
434- }
435-
436- deinit {
437- source? . cancel ( )
438- }
439-
440- func startup( ) {
441- if let source = source {
442- source. cancel ( )
443- }
444-
445- fileHandle = try ? FileHandle ( forReadingFrom: url)
446- if let fileHandle {
447- source = DispatchSource . makeFileSystemObjectSource (
448- fileDescriptor: fileHandle. fileDescriptor,
449- eventMask: . link,
450- queue: . main
451- )
452-
453- source? . setEventHandler { [ weak self] in
454- self ? . changeHandler ( )
455- self ? . startup ( )
456- }
457-
458- source? . resume ( )
459- }
460- }
461- }
462-
You can’t perform that action at this time.
0 commit comments