#pragma once #include "./basic_types.hpp" #include "./progress.hpp" #include "./diagnostics.hpp" #include "./workspace.hpp" #include "./document_sync.hpp" #include "./completion.hpp" #include "./document_features.hpp" #include "./symbols.hpp" #include "./navigation.hpp" #include "./code_actions.hpp" #include "./formatting.hpp" #include "./rename.hpp" #include "./semantic_tokens.hpp" #include "./inline_features.hpp" #include "./signature_help.hpp" #include "./notebook.hpp" #include "./file_operations.hpp" #include "./configuration.hpp" namespace lsp::protocol { struct TextDocumentClientCapabilities { std::optional synchronization; std::optional completion; std::optional hover; std::optional singatureHelp; std::optional declatration; std::optional definition; std::optional typeDefinition; std::optional implementation; std::optional reference; std::optional documentHighlight; std::optional documentSymbol; std::optional codeAction; std::optional codeLens; std::optional documentLink; std::optional colorProvider; std::optional formatting; std::optional rangeFormatting; std::optional onTypeFormatting; std::optional rename; std::optional publishDiagnostics; std::optional foldingRange; std::optional selectionRange; std::optional linkedEditingRange; std::optional callHierarchy; std::optional semanticTokens; std::optional moniker; std::optional typeHierarchy; std::optional inlineValue; std::optional inlayHint; std::optional diagnostic; }; struct ClientCapabilities { struct Workspace { struct FileOperations { std::optional dynamicRegistration; std::optional didCreate; std::optional willCreate; std::optional didRename; std::optional willRename; std::optional didDelete; std::optional willDelete; }; std::optional applyEdit; std::optional workspaceEdit; std::optional didChangeConfiguration; std::optional didChangeWatchedFiles; std::optional symbol; std::optional executeCommand; std::optional workspaceFolders; std::optional configuration; std::optional semanticTokens; std::optional codeLens; std::optional fileOperations; std::optional inlineValue; std::optional inlayHint; std::optional diagnostic; }; struct Window { std::optional workDoneProgress; std::optional showMessage; std::optional showDocument; }; struct General { struct StaleRequestSupport { boolean cancel; std::vector retryOnContentModified; }; std::optional staleRequestSupport; std::optional regularExpression; std::optional markdown; std::optional> positionEncodings; }; std::optional workspace; std::optional textDocument; std::optional notebookDocument; std::optional window; std::optional general; std::optional experimental; }; struct ServerCapabilities { struct Workspace { struct FileOperations { std::optional dynamicRegistration; std::optional didCreate; std::optional willCreate; std::optional didRename; std::optional willRename; std::optional didDelete; std::optional willDelete; }; std::optional workspaceFolders; std::optional fileOperations; }; std::optional positionEncoding; std::optional> textDocumentSync; std::optional> notebookDocumentSync; std::optional completionProvider; std::optional> hoverProvider; std::optional signatureHelpProvider; std::optional> declarationProvider; std::optional> definitionProvider; std::optional> typeDefinitionProvider; std::optional> implementationProvider; std::optional> referencesProvider; std::optional> documentHighlightProvider; std::optional> documentSymbolProvider; std::optional> codeActionProvider; std::optional codeLensProvider; std::optional documentLinkProvider; std::optional> colorProvider; std::optional> documentFormattingProvider; std::optional> documentRangeFormattingProvider; std::optional documentOnTypeFormattingProvider; std::optional> renameProvider; std::optional> foldingRangeProvider; std::optional executeCommandProvider; std::optional> selectionRangeProvider; std::optional> linkedEditingRangeProvider; std::optional> callHierarchyProvider; std::optional> semanticTokensProvider; std::optional> monikerProvider; std::optional> typeHierarchyProvider; std::optional> inlineValueProvider; std::optional> inlayHintProvider; std::optional> diagnosticProvider; std::optional> workspaceSymbolProvider; std::optional workspace; std::optional experimental; }; struct InitializeResult { struct ServerInfo { string name; std::optional version; }; ServerCapabilities capabilities; ServerInfo serverInfo; }; struct InitializeError { boolean retry; }; struct InitializeParams : WorkDoneProgressParams { struct ClientInfo { string name; std::optional version; }; std::optional processId; std::optional clientInfo; std::optional locale; std::optional initializationOptions; std::optional capabilities; TraceValue trace; std::optional> workspaceFolders; }; }