@@ -3,7 +3,8 @@ import Logger
33import Workspace
44
55public final class GitHubCopilotWorkspacePlugin : WorkspacePlugin {
6- var _gitHubCopilotService : GitHubCopilotService ?
6+ private var _gitHubCopilotService : GitHubCopilotService ?
7+ @GitHubCopilotSuggestionActor
78 var gitHubCopilotService : GitHubCopilotService ? {
89 if let service = _gitHubCopilotService { return service }
910 do {
@@ -15,21 +16,27 @@ public final class GitHubCopilotWorkspacePlugin: WorkspacePlugin {
1516 }
1617
1718 deinit {
18- if let gitHubCopilotService {
19- Task { await gitHubCopilotService . terminate ( ) }
19+ if let _gitHubCopilotService {
20+ Task { await _gitHubCopilotService . terminate ( ) }
2021 }
2122 }
2223
24+ @GitHubCopilotSuggestionActor
2325 func createGitHubCopilotService( ) throws -> GitHubCopilotService {
2426 let newService = try GitHubCopilotService ( projectRootURL: projectRootURL)
2527 _gitHubCopilotService = newService
28+ newService. localProcessServer? . terminationHandler = { [ weak self] in
29+ Logger . gitHubCopilot. error ( " GitHub Copilot language server terminated " )
30+ self ? . terminate ( )
31+ }
2632 Task {
2733 try await Task . sleep ( nanoseconds: 1_000_000_000 )
2834 finishLaunchingService ( )
2935 }
3036 return newService
3137 }
3238
39+ @GitHubCopilotSuggestionActor
3340 func finishLaunchingService( ) {
3441 guard let workspace, let _gitHubCopilotService else { return }
3542 Task {
0 commit comments