#pragma once #include "./basic_types.hpp" #include "./document_sync.hpp" #include "./progress.hpp" #include "./symbols.hpp" namespace lsp::protocol { // Declaration struct DeclarationClientCapabilities { std::optional dynamicRegistration; std::optional linkSupport; }; struct DeclarationOptions : WorkDoneProgressOptions { }; struct DeclarationRegistrationOptions : DeclarationOptions, TextDocumentRegistrationOptions, StaticRegistrationOptions { }; struct DeclarationParams : TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { }; // Definition struct DefinitionClientCapabilities { std::optional dynamicRegistration; std::optional linkSupport; }; struct DefinitionOptions : WorkDoneProgressOptions { }; struct DefinitionRegistrationOptions : TextDocumentRegistrationOptions, DefinitionOptions { }; struct DefinitionParams : TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { }; // TypeDefinition struct TypeDefinitionClientCapabilities { std::optional dynamicRegistration; std::optional linkSupport; }; struct TypeDefinitionOptions : WorkDoneProgressOptions { }; struct TypeDefinitionRegistrationOptions : TextDocumentRegistrationOptions, TypeDefinitionOptions, StaticRegistrationOptions { }; struct TypeDefinitionParams : TextDocumentPositionParams, WorkDoneProgressParams { }; // Implementation struct ImplementationClientCapabilities { std::optional dynamicRegistration; std::optional linkSupport; }; struct ImplementationOptions : WorkDoneProgressOptions { }; struct ImplementationRegistrationOptions : TextDocumentRegistrationOptions, ImplementationOptions, StaticRegistrationOptions { }; struct ImplementationParams : WorkDoneProgressParams, PartialResultParams { }; // Reference struct ReferenceContext { boolean includeDeclaration; }; struct ReferenceClientCapabilities { std::optional dynamicRegistration; }; struct ReferenceOptions : WorkDoneProgressOptions { }; struct ReferenceRegistrationOptions : TextDocumentRegistrationOptions, ReferenceOptions { }; struct ReferenceParams : TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { ReferenceContext context; }; // CallHierarchy struct CallHierarchyClientCapabilities { std::optional dynamicRegistration; }; struct CallHierarchyOptions : WorkDoneProgressOptions { }; struct CallHierarchyRegistrationOptions : TextDocumentRegistrationOptions, CallHierarchyOptions, StaticRegistrationOptions { }; struct CallHierarchyParams : TextDocumentPositionParams, WorkDoneProgressParams { }; struct CallHierarchyItem { string name; SymbolKind kind; std::vector tags; DocumentUri uri; Range range; Range selectionRange; std::optional data; }; struct CallHierarchyIncomingCallsParams : WorkDoneProgressParams, PartialResultParams { CallHierarchyItem item; }; struct CallHierarchyIncomingCall { CallHierarchyItem from; std::vector fromRanges; }; struct CallHierarchyOutgoingCallsParams : WorkDoneProgressParams, PartialResultParams { CallHierarchyItem item; }; struct CallHierarchyOutgoingCall { CallHierarchyItem from; std::vector fromRanges; }; // TypeHierarchy struct TypeHierarchyClientCapabilities { std::optional dynamicRegistration; }; struct TypeHierarchyOptions : WorkDoneProgressOptions { }; struct TypeHierarchyRegistrationOptions : TextDocumentRegistrationOptions, TypeHierarchyOptions, StaticRegistrationOptions { }; struct TypeHierarchyParams : TextDocumentPositionParams, WorkDoneProgressParams { }; struct TypeHierarchyPrepareParams : TextDocumentPositionParams, WorkDoneProgressParams { }; struct TypeHierarchyItem { string name; SymbolKind kind; std::vector tags; DocumentUri uri; Range range; Range selectionRange; std::optional data; }; struct TypeHierarchySupertypesParams : WorkDoneProgressParams, PartialResultParams { TypeHierarchyItem item; }; struct TypeHierarchySubtypesParams : WorkDoneProgressParams, PartialResultParams { TypeHierarchyItem item; }; }