| //===--- 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 onDocumentSymbol(DocumentSymbolParams &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 |