in Sources/SourceKitLSP/SourceKitServer.swift [562:595]
func registerCapabilities(
for server: ServerCapabilities,
languages: [Language],
registry: CapabilityRegistry
) {
if let completionOptions = server.completionProvider {
registry.registerCompletionIfNeeded(options: completionOptions, for: languages) {
self.dynamicallyRegisterCapability($0, registry)
}
}
if server.foldingRangeProvider?.isSupported == true {
registry.registerFoldingRangeIfNeeded(options: FoldingRangeOptions(), for: languages) {
self.dynamicallyRegisterCapability($0, registry)
}
}
if let semanticTokensOptions = server.semanticTokensProvider {
registry.registerSemanticTokensIfNeeded(options: semanticTokensOptions, for: languages) {
self.dynamicallyRegisterCapability($0, registry)
}
}
if let commandOptions = server.executeCommandProvider {
registry.registerExecuteCommandIfNeeded(commands: commandOptions.commands) {
self.dynamicallyRegisterCapability($0, registry)
}
}
/// This must be a superset of the files that return true for SwiftPM's `Workspace.fileAffectsSwiftOrClangBuildSettings`.
let watchers = FileRuleDescription.builtinRules.flatMap({ $0.fileTypes }).map { fileExtension in
return FileSystemWatcher(globPattern: "**/*.\(fileExtension)", kind: [.create, .delete])
}
registry.registerDidChangeWatchedFiles(watchers: watchers) {
self.dynamicallyRegisterCapability($0, registry)
}
}