in Sources/SourceKitLSP/SourceKitServer.swift [515:560]
func serverCapabilities(
for client: ClientCapabilities,
registry: CapabilityRegistry
) -> ServerCapabilities {
let completionOptions: CompletionOptions?
if registry.clientHasDynamicCompletionRegistration {
// We'll initialize this dynamically instead of statically.
completionOptions = nil
} else {
completionOptions = LanguageServerProtocol.CompletionOptions(
resolveProvider: false,
triggerCharacters: ["."]
)
}
let executeCommandOptions: ExecuteCommandOptions?
if registry.clientHasDynamicExecuteCommandRegistration {
executeCommandOptions = nil
} else {
executeCommandOptions = ExecuteCommandOptions(commands: builtinSwiftCommands)
}
return ServerCapabilities(
textDocumentSync: TextDocumentSyncOptions(
openClose: true,
change: .incremental,
willSave: true,
willSaveWaitUntil: false,
save: .value(TextDocumentSyncOptions.SaveOptions(includeText: false))
),
hoverProvider: true,
completionProvider: completionOptions,
definitionProvider: true,
implementationProvider: .bool(true),
referencesProvider: true,
documentHighlightProvider: true,
documentSymbolProvider: true,
workspaceSymbolProvider: true,
codeActionProvider: .value(CodeActionServerCapabilities(
clientCapabilities: client.textDocument?.codeAction,
codeActionOptions: CodeActionOptions(codeActionKinds: nil),
supportsCodeActions: true
)),
colorProvider: .bool(true),
foldingRangeProvider: .bool(!registry.clientHasDynamicFoldingRangeRegistration),
executeCommandProvider: executeCommandOptions
)
}