tsl-devkit/lsp-server/src/protocol/protocol.cppm

630 lines
22 KiB
C++

module;
import glaze;
export module lsp.protocol;
import std;
// Aggregated LSP protocol module (facade with serialization metadata)
// This module re-exports lsp.protocol.types and all protocol submodules
// Note: transform.* modules are NOT re-exported to avoid circular dependencies
export import lsp.protocol.types;
// Import all protocol submodules for glaze metadata
import lsp.protocol.window.progress;
import lsp.protocol.initialize.configuration;
import lsp.protocol.initialize.capabilities;
import lsp.protocol.workspace.workspace;
import lsp.protocol.workspace.file_operations;
import lsp.protocol.workspace.notebook;
import lsp.protocol.text_document.document_sync;
import lsp.protocol.text_document.completion;
import lsp.protocol.text_document.code_actions;
import lsp.protocol.text_document.diagnostics;
import lsp.protocol.text_document.document_features;
import lsp.protocol.text_document.formatting;
import lsp.protocol.text_document.inline_features;
import lsp.protocol.text_document.navigation;
import lsp.protocol.text_document.rename;
import lsp.protocol.text_document.semantic_tokens;
import lsp.protocol.text_document.signature_help;
import lsp.protocol.text_document.symbols;
// Glaze meta specializations (from legacy protocol.hpp)
namespace glz
{
template<>
struct meta<lsp::protocol::RequestMessage>
{
using T = lsp::protocol::RequestMessage;
static constexpr auto value = glz::object(
&T::jsonrpc,
&T::id,
&T::method,
&T::params);
};
template<>
struct meta<lsp::protocol::ResponseError>
{
using T = lsp::protocol::ResponseError;
static constexpr auto value = glz::object(&T::jsonrpc, &T::code, &T::message, &T::data);
};
template<>
struct meta<lsp::protocol::ResponseMessage>
{
using T = lsp::protocol::ResponseMessage;
static constexpr auto value = glz::object(&T::jsonrpc, &T::id, &T::result, &T::error);
};
template<>
struct meta<lsp::protocol::NotificationMessage>
{
using T = lsp::protocol::NotificationMessage;
static constexpr auto value = glz::object(&T::jsonrpc, &T::method, &T::params);
};
template<>
struct meta<lsp::protocol::CancelParams>
{
using T = lsp::protocol::CancelParams;
static constexpr auto value = glz::object(&T::id);
};
template<>
struct meta<lsp::protocol::AnnotatedTextEdit>
{
using T = lsp::protocol::AnnotatedTextEdit;
static constexpr auto value = glz::object(&T::range, &T::newText, &T::annotationId);
};
template<>
struct meta<lsp::protocol::InitializeParams>
{
using T = lsp::protocol::InitializeParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::processId, &T::clientInfo, &T::locale, &T::rootPath, &T::rootUri, &T::initializationOptions, &T::capabilities, &T::trace, &T::workspaceFolders);
};
template<>
struct meta<lsp::protocol::CodeActionOptions>
{
using T = lsp::protocol::CodeActionOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::codeActionKinds, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::CodeActionRegistrationOptions>
{
using T = lsp::protocol::CodeActionRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::codeActionKinds, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::CodeActionParams>
{
using T = lsp::protocol::CodeActionParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::range, &T::context);
};
template<>
struct meta<lsp::protocol::DocumentColorOptions>
{
using T = lsp::protocol::DocumentColorOptions;
static constexpr auto value = glz::object(&T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::DocumentColorRegistrationOptions>
{
using T = lsp::protocol::DocumentColorRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::DocumentColorParams>
{
using T = lsp::protocol::DocumentColorParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument);
};
template<>
struct meta<lsp::protocol::ColorPresentationParams>
{
using T = lsp::protocol::ColorPresentationParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::color, &T::range);
};
template<>
struct meta<lsp::protocol::CompletionOptions>
{
using T = lsp::protocol::CompletionOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::triggerCharacters, &T::allCommitCharacters, &T::resolveProvider, &T::completionItem);
};
template<>
struct meta<lsp::protocol::CompletionRegistrationOptions>
{
using T = lsp::protocol::CompletionRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::triggerCharacters, &T::allCommitCharacters, &T::resolveProvider, &T::completionItem);
};
template<>
struct meta<lsp::protocol::CompletionParams>
{
using T = lsp::protocol::CompletionParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::position, &T::context);
};
template<>
struct meta<lsp::protocol::ExecuteCommandOptions>
{
using T = lsp::protocol::ExecuteCommandOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::commands);
};
template<>
struct meta<lsp::protocol::ExecuteCommandRegistrationOptions>
{
using T = lsp::protocol::ExecuteCommandRegistrationOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::commands);
};
template<>
struct meta<lsp::protocol::ExecuteCommandParams>
{
using T = lsp::protocol::ExecuteCommandParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::arguments);
};
template<>
struct meta<lsp::protocol::DiagnosticOptions>
{
using T = lsp::protocol::DiagnosticOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::interFileDependencies, &T::workspaceDiagnostics);
};
template<>
struct meta<lsp::protocol::DiagnosticRegistrationOptions>
{
using T = lsp::protocol::DiagnosticRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id, &T::workDoneProgress, &T::interFileDependencies, &T::workspaceDiagnostics);
};
template<>
struct meta<lsp::protocol::DiagnosticParams>
{
using T = lsp::protocol::DiagnosticParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::identifier, &T::previousResultId);
};
template<>
struct meta<lsp::protocol::PublishDiagnosticsClientCapabilities>
{
using T = lsp::protocol::PublishDiagnosticsClientCapabilities;
static constexpr auto value = glz::object(&T::dynamicRegistration, &T::relatedDocumentSupport, &T::relatedInformation, &T::tagSupport, &T::codeDescriptionSupport, &T::markupMessageSupport, &T::dataSupport, &T::versionSupport);
};
template<>
struct meta<lsp::protocol::RelatedFullDocumentDiagnosticReport>
{
using T = lsp::protocol::RelatedFullDocumentDiagnosticReport;
static constexpr auto value = glz::object(&T::kind, &T::resultId, &T::items, &T::relatedDocuments);
};
template<>
struct meta<lsp::protocol::RelatedUnchangedDocumentDiagnosticReport>
{
using T = lsp::protocol::RelatedUnchangedDocumentDiagnosticReport;
static constexpr auto value = glz::object(&T::kind, &T::resultId, &T::relatedDocuments);
};
template<>
struct meta<lsp::protocol::WorkspaceDiagnosticParams>
{
using T = lsp::protocol::WorkspaceDiagnosticParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::identifier, &T::previousResultIds);
};
template<>
struct meta<lsp::protocol::WorkspaceFullDocumentDiagnosticReport>
{
using T = lsp::protocol::WorkspaceFullDocumentDiagnosticReport;
static constexpr auto value = glz::object(&T::kind, &T::resultId, &T::items, &T::uri, &T::version);
};
template<>
struct meta<lsp::protocol::WorkspaceUnchangedDocumentDiagnosticReport>
{
using T = lsp::protocol::WorkspaceUnchangedDocumentDiagnosticReport;
static constexpr auto value = glz::object(&T::kind, &T::resultId, &T::uri, &T::version);
};
template<>
struct meta<lsp::protocol::DocumentHighlightOptions>
{
using T = lsp::protocol::DocumentHighlightOptions;
static constexpr auto value = glz::object(&T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::DocumentHighlightRegistrationOptions>
{
using T = lsp::protocol::DocumentHighlightRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::DocumentHighlightParams>
{
using T = lsp::protocol::DocumentHighlightParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::position);
};
template<>
struct meta<lsp::protocol::DocumentLinkOptions>
{
using T = lsp::protocol::DocumentLinkOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::DocumentLinkRegistrationOptions>
{
using T = lsp::protocol::DocumentLinkRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::DocumentLinkParams>
{
using T = lsp::protocol::DocumentLinkParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument);
};
template<>
struct meta<lsp::protocol::HoverOptions>
{
using T = lsp::protocol::HoverOptions;
static constexpr auto value = glz::object(&T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::HoverRegistrationOptions>
{
using T = lsp::protocol::HoverRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::HoverParams>
{
using T = lsp::protocol::HoverParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::textDocument, &T::position);
};
template<>
struct meta<lsp::protocol::CodeLensOptions>
{
using T = lsp::protocol::CodeLensOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::CodeLensRegistrationOptions>
{
using T = lsp::protocol::CodeLensRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::CodeLensParams>
{
using T = lsp::protocol::CodeLensParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument);
};
template<>
struct meta<lsp::protocol::FoldingRangeOptions>
{
using T = lsp::protocol::FoldingRangeOptions;
static constexpr auto value = glz::object(&T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::FoldingRangeRegistrationOptions>
{
using T = lsp::protocol::FoldingRangeRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::FoldingRangeParams>
{
using T = lsp::protocol::FoldingRangeParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument);
};
template<>
struct meta<lsp::protocol::SelectionRangeOptions>
{
using T = lsp::protocol::SelectionRangeOptions;
static constexpr auto value = glz::object(&T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::SelectionRangeRegistrationOptions>
{
using T = lsp::protocol::SelectionRangeRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::SelectionRangeParams>
{
using T = lsp::protocol::SelectionRangeParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::textDocument, &T::positions);
};
template<>
struct meta<lsp::protocol::WorkspaceSymbolOptions>
{
using T = lsp::protocol::WorkspaceSymbolOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::InlayHintOptions>
{
using T = lsp::protocol::InlayHintOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::resolveProvider);
};
template<>
struct meta<lsp::protocol::InlayHintRegistrationOptions>
{
using T = lsp::protocol::InlayHintRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::resolveProvider, &T::id);
};
template<>
struct meta<lsp::protocol::InlineValueRegistrationOptions>
{
using T = lsp::protocol::InlineValueRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::TypeHierarchyRegistrationOptions>
{
using T = lsp::protocol::TypeHierarchyRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::MonikerRegistrationOptions>
{
using T = lsp::protocol::MonikerRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress);
};
template<>
struct meta<lsp::protocol::LinkedEditingRangeRegistrationOptions>
{
using T = lsp::protocol::LinkedEditingRangeRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::SemanticTokensOptions>
{
using T = lsp::protocol::SemanticTokensOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::legend, &T::range, &T::full);
};
template<>
struct meta<lsp::protocol::SemanticTokensRegistrationOptions>
{
using T = lsp::protocol::SemanticTokensRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::legend, &T::range, &T::full, &T::id);
};
template<>
struct meta<lsp::protocol::CallHierarchyRegistrationOptions>
{
using T = lsp::protocol::CallHierarchyRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::RenameOptions>
{
using T = lsp::protocol::RenameOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::prepareProvider);
};
template<>
struct meta<lsp::protocol::RenameRegistrationOptions>
{
using T = lsp::protocol::RenameRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::prepareProvider);
};
template<>
struct meta<lsp::protocol::RenameParams>
{
using T = lsp::protocol::RenameParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::newName);
};
template<>
struct meta<lsp::protocol::PrepareRenameParams>
{
using T = lsp::protocol::PrepareRenameParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken);
};
template<>
struct meta<lsp::protocol::LinkedEditingRangeParams>
{
using T = lsp::protocol::LinkedEditingRangeParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::partialResultToken);
};
template<>
struct meta<lsp::protocol::DocumentOnTypeFormattingOptions>
{
using T = lsp::protocol::DocumentOnTypeFormattingOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::firstTriggerCharacter, &T::moreTriggerCharacter);
};
template<>
struct meta<lsp::protocol::DocumentRangeFormattingOptions>
{
using T = lsp::protocol::DocumentRangeFormattingOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::rangesSupport);
};
template<>
struct meta<lsp::protocol::DocumentSymbolOptions>
{
using T = lsp::protocol::DocumentSymbolOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::label);
};
template<>
struct meta<lsp::protocol::ImplementationRegistrationOptions>
{
using T = lsp::protocol::ImplementationRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::SignatureHelpOptions>
{
using T = lsp::protocol::SignatureHelpOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::triggerCharacters, &T::retriggerCharacters);
};
template<>
struct meta<lsp::protocol::DeclarationRegistrationOptions>
{
using T = lsp::protocol::DeclarationRegistrationOptions;
static constexpr auto value = glz::object(&T::workDoneProgress, &T::documentSelector, &T::id);
};
template<>
struct meta<lsp::protocol::TypeDefinitionRegistrationOptions>
{
using T = lsp::protocol::TypeDefinitionRegistrationOptions;
static constexpr auto value = glz::object(&T::documentSelector, &T::workDoneProgress, &T::id);
};
template<>
struct meta<lsp::protocol::DeclarationParams>
{
using T = lsp::protocol::DeclarationParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::partialResultToken);
};
template<>
struct meta<lsp::protocol::DefinitionParams>
{
using T = lsp::protocol::DefinitionParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::partialResultToken);
};
template<>
struct meta<lsp::protocol::TypeDefinitionParams>
{
using T = lsp::protocol::TypeDefinitionParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken);
};
template<>
struct meta<lsp::protocol::ImplementationParams>
{
using T = lsp::protocol::ImplementationParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken);
};
template<>
struct meta<lsp::protocol::ReferenceContext>
{
using T = lsp::protocol::ReferenceContext;
static constexpr auto value = glz::object(&T::includeDeclaration);
};
template<>
struct meta<lsp::protocol::ReferenceParams>
{
using T = lsp::protocol::ReferenceParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken, &T::partialResultToken, &T::context);
};
template<>
struct meta<lsp::protocol::CallHierarchyParams>
{
using T = lsp::protocol::CallHierarchyParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken);
};
template<>
struct meta<lsp::protocol::CallHierarchyIncomingCallsParams>
{
using T = lsp::protocol::CallHierarchyIncomingCallsParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::item);
};
template<>
struct meta<lsp::protocol::CallHierarchyOutgoingCallsParams>
{
using T = lsp::protocol::CallHierarchyOutgoingCallsParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::item);
};
template<>
struct meta<lsp::protocol::TypeHierarchyParams>
{
using T = lsp::protocol::TypeHierarchyParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken);
};
template<>
struct meta<lsp::protocol::TypeHierarchyPrepareParams>
{
using T = lsp::protocol::TypeHierarchyPrepareParams;
static constexpr auto value = glz::object(&T::textDocument, &T::position, &T::workDoneToken);
};
template<>
struct meta<lsp::protocol::TypeHierarchySupertypesParams>
{
using T = lsp::protocol::TypeHierarchySupertypesParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::item);
};
template<>
struct meta<lsp::protocol::TypeHierarchySubtypesParams>
{
using T = lsp::protocol::TypeHierarchySubtypesParams;
static constexpr auto value = glz::object(&T::workDoneToken, &T::partialResultToken, &T::item);
};
template<>
struct meta<lsp::protocol::NotebookDocumentSyncRegistrationOptions>
{
using T = lsp::protocol::NotebookDocumentSyncRegistrationOptions;
static constexpr auto value = glz::object(&T::notebookSelector, &T::save, &T::id);
};
template<>
struct meta<lsp::protocol::VersionedTextDocumentIdentifier>
{
using T = lsp::protocol::VersionedTextDocumentIdentifier;
static constexpr auto value = glz::object(&T::uri, &T::version);
};
}