//===----------------------------------------------------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// import Foundation import LanguageServerProtocol /// A `LanguageServer` that exists within the context of the current process. public protocol ToolchainLanguageServer: AnyObject { // MARK: Lifetime func initializeSync(_ initialize: InitializeRequest) throws -> InitializeResult func clientInitialized(_ initialized: InitializedNotification) func shutdown() // MARK: - Text synchronization func openDocument(_ note: DidOpenTextDocumentNotification) func closeDocument(_ note: DidCloseTextDocumentNotification) func changeDocument(_ note: DidChangeTextDocumentNotification) func willSaveDocument(_ note: WillSaveTextDocumentNotification) func didSaveDocument(_ note: DidSaveTextDocumentNotification) // MARK: - Build System Integration func documentUpdatedBuildSettings(_ uri: DocumentURI, language: Language) func documentDependenciesUpdated(_ uri: DocumentURI, language: Language) // MARK: - Text Document func completion(_ req: Request) func hover(_ req: Request) func symbolInfo(_ request: Request) /// Returns true if the `ToolchainLanguageServer` will take ownership of the request. func definition(_ request: Request) -> Bool func documentSymbolHighlight(_ req: Request) func foldingRange(_ req: Request) func documentSymbol(_ req: Request) func documentColor(_ req: Request) func colorPresentation(_ req: Request) func codeAction(_ req: Request) // MARK: - Other func executeCommand(_ req: Request) }