//===--- ProtocolHandlers.h - LSP callbacks ---------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // ProtocolHandlers translates incoming JSON requests from JSONRPCDispatcher // into method calls on ClangLSPServer. // // Currently it parses requests into objects, but the ClangLSPServer is // responsible for producing JSON responses. We should move that here, too. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_PROTOCOLHANDLERS_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_PROTOCOLHANDLERS_H #include "JSONRPCDispatcher.h" #include "Protocol.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/raw_ostream.h" namespace clang { namespace clangd { // The interface implemented by ClangLSPServer to handle incoming requests. class ProtocolCallbacks { public: virtual ~ProtocolCallbacks() = default; virtual void onInitialize(InitializeParams &Params) = 0; virtual void onShutdown(ShutdownParams &Params) = 0; virtual void onExit(ExitParams &Params) = 0; virtual void onDocumentDidOpen(DidOpenTextDocumentParams &Params) = 0; virtual void onDocumentDidChange(DidChangeTextDocumentParams &Params) = 0; virtual void onDocumentDidClose(DidCloseTextDocumentParams &Params) = 0; virtual void onDocumentFormatting(DocumentFormattingParams &Params) = 0; virtual void onDocumentOnTypeFormatting(DocumentOnTypeFormattingParams &Params) = 0; virtual void onDocumentRangeFormatting(DocumentRangeFormattingParams &Params) = 0; virtual void onCodeAction(CodeActionParams &Params) = 0; virtual void onCompletion(TextDocumentPositionParams &Params) = 0; virtual void onSignatureHelp(TextDocumentPositionParams &Params) = 0; virtual void onGoToDefinition(TextDocumentPositionParams &Params) = 0; virtual void onSwitchSourceHeader(TextDocumentIdentifier &Params) = 0; virtual void onFileEvent(DidChangeWatchedFilesParams &Params) = 0; virtual void onCommand(ExecuteCommandParams &Params) = 0; virtual void onWorkspaceSymbol(WorkspaceSymbolParams &Params) = 0; virtual void onRename(RenameParams &Parames) = 0; virtual void onDocumentHighlight(TextDocumentPositionParams &Params) = 0; virtual void onHover(TextDocumentPositionParams &Params) = 0; virtual void onChangeConfiguration(DidChangeConfigurationParams &Params) = 0; }; void registerCallbackHandlers(JSONRPCDispatcher &Dispatcher, ProtocolCallbacks &Callbacks); } // namespace clangd } // namespace clang #endif