#pragma once #include "./basic_types.hpp" #include "./document_sync.hpp" #include "./progress.hpp" namespace lsp::protocol { struct SignatureHelpClientCapabilities { struct SignatureInformation { struct ParammeterInformation { std::optional labelOffsetSupport; }; std::optional> documentationFormat; std::optional parameterInformation; std::optional activeParameterSupport; }; std::optional dynamicRegistration; std::optional signatureInformation; std::optional contextSupport; }; struct SignatureHelpOptions : WorkDoneProgressOptions { std::optional> triggerCharacters; std::optional> retriggerCharacters; }; struct SignatureHelpRegistrationOptions : TextDocumentRegistrationOptions, SignatureHelpOptions { }; enum class SignatureHelpTriggerKind { kInvoked = 1, kTriggerCharacter = 2, kContentChange = 3 }; struct ParammeterInformation { string label; std::variant documentation; }; struct SignatureInformation { string label; std::optional> documentation; std::optional> parameters; std::optional activeParameter; }; struct SignatureHelp { std::vector signatures; std::optional activeSignature; std::optional activeParameter; }; struct SignatureHelpContext { SignatureHelpTriggerKind triggerKind; string triggerCharacter; boolean isRetrigger; std::optional activeSignatureHelp; }; struct SignatureHelpParams : TextDocumentPositionParams, WorkDoneProgressParams { std::optional contextSupport; }; }