Skip to content

Commit 0d6dee1

Browse files
committed
Pass all SourceKitLSPServer.Options to Workspace
This allows us to enable background indexing for a workspace based on a value in `SourceKitLSPServer.Options`.
1 parent 7adf2a4 commit 0d6dee1

File tree

3 files changed

+29
-27
lines changed

3 files changed

+29
-27
lines changed

Sources/SourceKitLSP/SourceKitLSPServer.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,13 +1177,14 @@ extension SourceKitLSPServer {
11771177
logger.log("Cannot open workspace before server is initialized")
11781178
return nil
11791179
}
1180-
let workspaceBuildSetup = self.buildSetup(for: workspaceFolder)
1180+
var options = self.options
1181+
options.buildSetup = self.options.buildSetup.merging(buildSetup(for: workspaceFolder))
11811182
return try? await Workspace(
11821183
documentManager: self.documentManager,
11831184
rootUri: workspaceFolder.uri,
11841185
capabilityRegistry: capabilityRegistry,
11851186
toolchainRegistry: self.toolchainRegistry,
1186-
buildSetup: self.options.buildSetup.merging(workspaceBuildSetup),
1187+
options: options,
11871188
compilationDatabaseSearchPaths: self.options.compilationDatabaseSearchPaths,
11881189
indexOptions: self.options.indexOptions,
11891190
reloadPackageStatusCallback: { [weak self] status in
@@ -1251,7 +1252,7 @@ extension SourceKitLSPServer {
12511252
rootUri: req.rootURI,
12521253
capabilityRegistry: self.capabilityRegistry!,
12531254
toolchainRegistry: self.toolchainRegistry,
1254-
buildSetup: self.options.buildSetup,
1255+
options: self.options,
12551256
underlyingBuildSystem: nil,
12561257
index: nil,
12571258
indexDelegate: nil

Sources/SourceKitLSP/Workspace.swift

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ public final class Workspace {
7878
rootUri: DocumentURI?,
7979
capabilityRegistry: CapabilityRegistry,
8080
toolchainRegistry: ToolchainRegistry,
81-
buildSetup: BuildSetup,
81+
options: SourceKitLSPServer.Options,
8282
underlyingBuildSystem: BuildSystem?,
8383
index uncheckedIndex: UncheckedIndex?,
8484
indexDelegate: SourceKitIndexDelegate?
8585
) async {
8686
self.documentManager = documentManager
87-
self.buildSetup = buildSetup
87+
self.buildSetup = options.buildSetup
8888
self.rootUri = rootUri
8989
self.capabilityRegistry = capabilityRegistry
9090
self.uncheckedIndex = uncheckedIndex
@@ -117,36 +117,36 @@ public final class Workspace {
117117
rootUri: DocumentURI,
118118
capabilityRegistry: CapabilityRegistry,
119119
toolchainRegistry: ToolchainRegistry,
120-
buildSetup: BuildSetup,
120+
options: SourceKitLSPServer.Options,
121121
compilationDatabaseSearchPaths: [RelativePath],
122122
indexOptions: IndexOptions = IndexOptions(),
123123
reloadPackageStatusCallback: @escaping (ReloadPackageStatus) async -> Void
124124
) async throws {
125125
var buildSystem: BuildSystem? = nil
126126

127-
func createSwiftPMBuildSystem(rootUrl: URL) async -> SwiftPMBuildSystem? {
128-
return await SwiftPMBuildSystem(
129-
url: rootUrl,
130-
toolchainRegistry: toolchainRegistry,
131-
buildSetup: buildSetup,
132-
reloadPackageStatusCallback: reloadPackageStatusCallback
133-
)
134-
}
127+
if let rootUrl = rootUri.fileURL, let rootPath = try? AbsolutePath(validating: rootUrl.path) {
128+
func createSwiftPMBuildSystem(rootUrl: URL) async -> SwiftPMBuildSystem? {
129+
return await SwiftPMBuildSystem(
130+
url: rootUrl,
131+
toolchainRegistry: toolchainRegistry,
132+
buildSetup: options.buildSetup,
133+
reloadPackageStatusCallback: reloadPackageStatusCallback
134+
)
135+
}
135136

136-
func createCompilationDatabaseBuildSystem(rootPath: AbsolutePath) -> CompilationDatabaseBuildSystem? {
137-
return CompilationDatabaseBuildSystem(
138-
projectRoot: rootPath,
139-
searchPaths: compilationDatabaseSearchPaths
140-
)
141-
}
137+
func createCompilationDatabaseBuildSystem(rootPath: AbsolutePath) -> CompilationDatabaseBuildSystem? {
138+
return CompilationDatabaseBuildSystem(
139+
projectRoot: rootPath,
140+
searchPaths: compilationDatabaseSearchPaths
141+
)
142+
}
142143

143-
func createBuildServerBuildSystem(rootPath: AbsolutePath) async -> BuildServerBuildSystem? {
144-
return await BuildServerBuildSystem(projectRoot: rootPath, buildSetup: buildSetup)
145-
}
144+
func createBuildServerBuildSystem(rootPath: AbsolutePath) async -> BuildServerBuildSystem? {
145+
return await BuildServerBuildSystem(projectRoot: rootPath, buildSetup: options.buildSetup)
146+
}
146147

147-
if let rootUrl = rootUri.fileURL, let rootPath = try? AbsolutePath(validating: rootUrl.path) {
148148
let defaultBuildSystem: BuildSystem? =
149-
switch buildSetup.defaultWorkspaceType {
149+
switch options.buildSetup.defaultWorkspaceType {
150150
case .buildServer: await createBuildServerBuildSystem(rootPath: rootPath)
151151
case .compilationDatabase: createCompilationDatabaseBuildSystem(rootPath: rootPath)
152152
case .swiftPM: await createSwiftPMBuildSystem(rootUrl: rootUrl)
@@ -184,6 +184,7 @@ public final class Workspace {
184184
var index: IndexStoreDB? = nil
185185
var indexDelegate: SourceKitIndexDelegate? = nil
186186

187+
let indexOptions = options.indexOptions
187188
if let storePath = await firstNonNil(indexOptions.indexStorePath, await buildSystem?.indexStorePath),
188189
let dbPath = await firstNonNil(indexOptions.indexDatabasePath, await buildSystem?.indexDatabasePath),
189190
let libPath = await toolchainRegistry.default?.libIndexStore
@@ -212,7 +213,7 @@ public final class Workspace {
212213
rootUri: rootUri,
213214
capabilityRegistry: capabilityRegistry,
214215
toolchainRegistry: toolchainRegistry,
215-
buildSetup: buildSetup,
216+
options: options,
216217
underlyingBuildSystem: buildSystem,
217218
index: UncheckedIndex(index),
218219
indexDelegate: indexDelegate

Tests/SourceKitLSPTests/BuildSystemTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ final class BuildSystemTests: XCTestCase {
101101
rootUri: nil,
102102
capabilityRegistry: CapabilityRegistry(clientCapabilities: ClientCapabilities()),
103103
toolchainRegistry: ToolchainRegistry.forTesting,
104-
buildSetup: SourceKitLSPServer.Options.testDefault.buildSetup,
104+
options: SourceKitLSPServer.Options.testDefault,
105105
underlyingBuildSystem: buildSystem,
106106
index: nil,
107107
indexDelegate: nil

0 commit comments

Comments
 (0)