module; export module lsp.protocol.text_document.inline_features; import std; import lsp.protocol.common.basic_types; import lsp.protocol.text_document.document_sync; import lsp.protocol.window.progress; import lsp.protocol.common.registration; export namespace lsp::protocol { // Inlay Hints struct InlayHintClientCapabilities { struct ResolveSupport { std::vector properties; }; std::optional dynamicRegistration; std::optional resolveSupport; }; struct InlayHintOptions : WorkDoneProgressOptions { std::optional resolveProvider; }; struct InlayHintRegistrationOptions : TextDocumentRegistrationOptions, InlayHintOptions, StaticRegistrationOptions { }; struct InlayHintParams : WorkDoneProgressParams { TextDocumentIdentifier textDocument; Range range; }; struct InlayHintLabelPart { string value; std::optional> tooltip; std::optional location; std::optional command; }; enum class InlayHintKind { Type = 1, Parameter = 2 }; struct InlayHint { Position position; std::variant> label; std::optional kind; std::optional> textEdits; std::optional> tooltip; std::optional paddingLeft; std::optional paddingRight; std::optional data; }; struct InlayHintWorkspaceClientCapabilities { std::optional refreshSupport; }; // Inline Values struct InlineValueClientCapabilities { std::optional dynamicRegistration; }; struct InlineValueOptions : WorkDoneProgressOptions { }; struct InlineValueRegistrationOptions : TextDocumentRegistrationOptions, InlineValueOptions, StaticRegistrationOptions { }; struct InlineValueContent { integer frameId; Range stoppedLocation; }; struct InlineValueText { Range range; string text; }; struct InlineValueParams : WorkDoneProgressParams { TextDocumentIdentifier textDocument; Range range; InlineValueContent context; }; struct InlineValueVariableLookup { Range range; std::optional variableName; std::optional caseSensitiveLookup; }; struct InlineValueEvaluatableExpression { Range range; std::optional expression; }; using InlineValue = std::variant; struct InlineValueWorkspaceClientCapabilities { std::optional refreshSupport; }; // Moniker struct MonikerClientCapabilities { std::optional dynamicRegistration; }; struct MonikerOptions : WorkDoneProgressOptions { }; struct MonikerRegistrationOptions : TextDocumentRegistrationOptions, MonikerOptions { }; struct MonikerParams : TextDocumentPositionParams, WorkDoneProgressParams, PartialResultParams { }; using UniquenessLevel = std::string_view; namespace UniquenessLevelLiterals { inline constexpr UniquenessLevel Document = "document"; inline constexpr UniquenessLevel Project = "project"; inline constexpr UniquenessLevel Group = "group"; inline constexpr UniquenessLevel Scheme = "scheme"; inline constexpr UniquenessLevel Global = "global"; } using MonikerKind = std::string_view; namespace MonikerKindLiterals { inline constexpr MonikerKind Import = "import"; inline constexpr MonikerKind Export = "export"; inline constexpr MonikerKind Local = "local"; } struct Moniker { string scheme; string identifier; UniquenessLevel unique; std::optional kind; }; }