diff --git a/src/protocol/initialize.jl b/src/protocol/initialize.jl index 62d204df..8083c555 100644 --- a/src/protocol/initialize.jl +++ b/src/protocol/initialize.jl @@ -54,6 +54,38 @@ end versionSupport::Union{Bool,Missing} end +@dict_readable struct SemanticTokensClientCapabilitiesRequestsFull <: Outbound + delta::Union{Bool,Missing} +end + +struct SemanticTokensClientCapabilitiesRequests <: Outbound + range::Union{Bool,Missing} + full::Union{Bool,Missing,SemanticTokensClientCapabilitiesRequestsFull} +end + +# Requires handwritten implementaiton to account for 3-part Unions +function SemanticTokensClientCapabilitiesRequests(dict::Dict) + range = get(dict, "range", missing) + full = get(dict, "full", missing) + if full isa Dict + full = SemanticTokensClientCapabilitiesRequestsFull(full) + end + + return SemanticTokensClientCapabilitiesRequests(range, full) +end + +@dict_readable struct SemanticTokensClientCapabilities + dynamicRegistration::Union{Bool,Missing} + requests::SemanticTokensClientCapabilitiesRequests + tokenTypes::Vector{String} + tokenModifiers::Vector{String} + formats::Vector{String} + overlappingTokenSupport::Union{Bool,Missing} + multilineTokenSupport::Union{Bool,Missing} + serverCancelSupport::Union{Bool,Missing} + augmentsSyntaxTokens::Union{Bool,Missing} +end + @dict_readable struct TextDocumentClientCapabilities <: Outbound synchronization::Union{TextDocumentSyncClientCapabilities,Missing} completion::Union{CompletionClientCapabilities,Missing} @@ -77,6 +109,7 @@ end publishDiagnostics::Union{PublishDiagnosticsClientCapabilities,Missing} foldingRange::Union{FoldingRangeClientCapabilities,Missing} selectionRange::Union{SelectionRangeClientCapabilities,Missing} + semanticTokens::Union{SemanticTokensClientCapabilities,Missing} end @dict_readable struct WindowClientCapabilities <: Outbound diff --git a/test/test_shared_init_request.jl b/test/test_shared_init_request.jl index 358df0d9..e86e73cc 100644 --- a/test/test_shared_init_request.jl +++ b/test/test_shared_init_request.jl @@ -40,6 +40,7 @@ init_request = LanguageServer.InitializeParams( missing, # PublishDiagnosticsClientCapabilities(), missing, # FoldingRangeClientCapabilities(), missing, # SelectionRangeClientCapabilities() + missing, # SemanticTokensClientCapabilities() ), missing, missing