Skip to content

Commit 25c8b6b

Browse files
committed
Prevent unused language servers from loading
1 parent 111ebf2 commit 25c8b6b

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

Tool/Sources/BuiltinExtension/BuiltinExtensionManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public final class BuiltinExtensionManager {
1919

2020
public func setupExtensions(_ extensions: [BuiltinExtension]) {
2121
self.extensions = extensions
22+
checkAppConfiguration()
2223
}
2324

2425
public func terminate() {

Tool/Sources/CodeiumService/CodeiumExtension.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ public final class CodeiumExtension: BuiltinExtension {
1111
public var suggestionService: SuggestionServiceType? { _suggestionService }
1212
public var chatService: ChatServiceType? { nil }
1313
public var promptToCodeService: PromptToCodeServiceType? { nil }
14+
private var appConfiguration = AppConfiguration(
15+
suggestionServiceInUse: false,
16+
chatServiceInUse: false
17+
)
18+
private var isLanguageServerInUse: Bool {
19+
appConfiguration.suggestionServiceInUse || appConfiguration.chatServiceInUse
20+
}
21+
1422
let workspacePool: WorkspacePool
1523

1624
let serviceLocator: ServiceLocator
@@ -27,6 +35,7 @@ public final class CodeiumExtension: BuiltinExtension {
2735
public func workspaceDidClose(_: WorkspaceInfo) {}
2836

2937
public func workspace(_ workspace: WorkspaceInfo, didOpenDocumentAt documentURL: URL) {
38+
guard isLanguageServerInUse else { return }
3039
// check if file size is larger than 15MB, if so, return immediately
3140
if let attrs = try? FileManager.default
3241
.attributesOfItem(atPath: documentURL.path),
@@ -50,6 +59,7 @@ public final class CodeiumExtension: BuiltinExtension {
5059
}
5160

5261
public func workspace(_ workspace: WorkspaceInfo, didCloseDocumentAt documentURL: URL) {
62+
guard isLanguageServerInUse else { return }
5363
Task {
5464
do {
5565
guard let service = await serviceLocator.getService(from: workspace) else { return }
@@ -65,6 +75,7 @@ public final class CodeiumExtension: BuiltinExtension {
6575
didUpdateDocumentAt documentURL: URL,
6676
content: String
6777
) {
78+
guard isLanguageServerInUse else { return }
6879
// check if file size is larger than 15MB, if so, return immediately
6980
if let attrs = try? FileManager.default
7081
.attributesOfItem(atPath: documentURL.path),
@@ -84,6 +95,7 @@ public final class CodeiumExtension: BuiltinExtension {
8495
}
8596

8697
public func appConfigurationDidChange(_ configuration: AppConfiguration) {
98+
appConfiguration = configuration
8799
if !configuration.chatServiceInUse && !configuration.suggestionServiceInUse {
88100
for workspace in workspacePool.workspaces.values {
89101
guard let plugin = workspace.plugin(for: CodeiumWorkspacePlugin.self)

Tool/Sources/GitHubCopilotService/GitHubCopilotExtension.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ public final class GitHubCopilotExtension: BuiltinExtension {
1111
public var suggestionService: SuggestionServiceType? { _suggestionService }
1212
public var chatService: ChatServiceType? { nil }
1313
public var promptToCodeService: PromptToCodeServiceType? { nil }
14+
private var appConfiguration = AppConfiguration(
15+
suggestionServiceInUse: false,
16+
chatServiceInUse: false
17+
)
18+
private var isLanguageServerInUse: Bool {
19+
appConfiguration.suggestionServiceInUse || appConfiguration.chatServiceInUse
20+
}
1421
let workspacePool: WorkspacePool
1522

1623
let serviceLocator: ServiceLocator
@@ -27,6 +34,7 @@ public final class GitHubCopilotExtension: BuiltinExtension {
2734
public func workspaceDidClose(_: WorkspaceInfo) {}
2835

2936
public func workspace(_ workspace: WorkspaceInfo, didOpenDocumentAt documentURL: URL) {
37+
guard isLanguageServerInUse else { return }
3038
// check if file size is larger than 15MB, if so, return immediately
3139
if let attrs = try? FileManager.default
3240
.attributesOfItem(atPath: documentURL.path),
@@ -46,6 +54,7 @@ public final class GitHubCopilotExtension: BuiltinExtension {
4654
}
4755

4856
public func workspace(_ workspace: WorkspaceInfo, didSaveDocumentAt documentURL: URL) {
57+
guard isLanguageServerInUse else { return }
4958
Task {
5059
do {
5160
guard let service = await serviceLocator.getService(from: workspace) else { return }
@@ -57,6 +66,7 @@ public final class GitHubCopilotExtension: BuiltinExtension {
5766
}
5867

5968
public func workspace(_ workspace: WorkspaceInfo, didCloseDocumentAt documentURL: URL) {
69+
guard isLanguageServerInUse else { return }
6070
Task {
6171
do {
6272
guard let service = await serviceLocator.getService(from: workspace) else { return }
@@ -72,6 +82,7 @@ public final class GitHubCopilotExtension: BuiltinExtension {
7282
didUpdateDocumentAt documentURL: URL,
7383
content: String
7484
) {
85+
guard isLanguageServerInUse else { return }
7586
// check if file size is larger than 15MB, if so, return immediately
7687
if let attrs = try? FileManager.default
7788
.attributesOfItem(atPath: documentURL.path),
@@ -91,6 +102,7 @@ public final class GitHubCopilotExtension: BuiltinExtension {
91102
}
92103

93104
public func appConfigurationDidChange(_ configuration: AppConfiguration) {
105+
appConfiguration = configuration
94106
if !configuration.chatServiceInUse && !configuration.suggestionServiceInUse {
95107
for workspace in workspacePool.workspaces.values {
96108
guard let plugin = workspace.plugin(for: GitHubCopilotWorkspacePlugin.self)

0 commit comments

Comments
 (0)