Skip to content

Commit 6b630e1

Browse files
committed
Allow overriding SwiftPM's build directory with background indexing
If `scratchPath` is explicitly set, use it over the separate `index-build` arena even when background indexing is enabled.
1 parent 8968885 commit 6b630e1

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

Sources/BuildSystemIntegration/SwiftPMBuildSystem.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
203203
throw Error.cannotDetermineHostToolchain
204204
}
205205

206-
var absProjectRoot = try AbsolutePath(validating: projectRoot.filePath)
206+
let absProjectRoot = try AbsolutePath(validating: projectRoot.filePath)
207207
let hostSDK = try SwiftSDK.hostSwiftSDK(AbsolutePath(validating: destinationToolchainBinDir.filePath))
208208
let hostSwiftPMToolchain = try UserToolchain(swiftSDK: hostSDK)
209209

@@ -237,10 +237,10 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
237237
fileSystem: localFileSystem
238238
)
239239

240-
if options.backgroundIndexingOrDefault {
241-
location.scratchDirectory = absProjectRoot.appending(components: ".build", "index-build")
242-
} else if let scratchDirectory = options.swiftPMOrDefault.scratchPath {
240+
if let scratchDirectory = options.swiftPMOrDefault.scratchPath {
243241
location.scratchDirectory = try AbsolutePath(validating: scratchDirectory, relativeTo: absProjectRoot)
242+
} else if options.backgroundIndexingOrDefault {
243+
location.scratchDirectory = absProjectRoot.appending(components: ".build", "index-build")
244244
}
245245

246246
var configuration = WorkspaceConfiguration.default

Sources/InProcessClient/InProcessSourceKitLSPClient.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public import Foundation
1515
public import LanguageServerProtocol
1616
import LanguageServerProtocolExtensions
1717
import SKLogging
18-
package import SKOptions
18+
public import SKOptions
1919
package import SourceKitLSP
2020
import SwiftExtensions
2121
import TSCExtensions
@@ -31,13 +31,14 @@ public final class InProcessSourceKitLSPClient: Sendable {
3131

3232
public convenience init(
3333
toolchainPath: URL?,
34+
options: SourceKitLSPOptions = SourceKitLSPOptions(),
3435
capabilities: ClientCapabilities = ClientCapabilities(),
3536
workspaceFolders: [WorkspaceFolder],
3637
messageHandler: any MessageHandler
3738
) async throws {
3839
try await self.init(
3940
toolchainRegistry: ToolchainRegistry(installPath: toolchainPath),
40-
options: SourceKitLSPOptions(),
41+
options: options,
4142
capabilities: capabilities,
4243
workspaceFolders: workspaceFolders,
4344
messageHandler: messageHandler

0 commit comments

Comments
 (0)