tsl-devkit/lsp-server/src/protocol/detail/signature_help.hpp

79 lines
2.1 KiB
C++

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