From 54c0394b6b742b6e1484121374e6ffb5bdc6db3b Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Tue, 7 May 2024 22:37:08 -0700 Subject: [PATCH 1/4] Add semantic token client capability types --- src/protocol/initialize.jl | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/protocol/initialize.jl b/src/protocol/initialize.jl index 62d204df..cc1184c2 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 + +@dict_readable 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 From 76441eb34200519ae7d50d83daeb1fc7a9386241 Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Tue, 7 May 2024 22:51:30 -0700 Subject: [PATCH 2/4] Fix a constructor in the LSP protocol --- src/protocol/initialize.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/protocol/initialize.jl b/src/protocol/initialize.jl index cc1184c2..3a8e38c2 100644 --- a/src/protocol/initialize.jl +++ b/src/protocol/initialize.jl @@ -58,7 +58,7 @@ end delta::Union{Bool,Missing} end -@dict_readable struct SemanticTokensClientCapabilitiesRequests <: Outbound +struct SemanticTokensClientCapabilitiesRequests <: Outbound range::Union{Bool,Missing} full::Union{Bool,Missing,SemanticTokensClientCapabilitiesRequestsFull} end From 4bc0f6c769f43ccc210a11d1af36feea02ee3a85 Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Tue, 7 May 2024 22:52:15 -0700 Subject: [PATCH 3/4] Fix tests --- test/test_shared_init_request.jl | 1 + 1 file changed, 1 insertion(+) 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 From 07713fd176d5b058d4aa49ba0245f4a5db14ba33 Mon Sep 17 00:00:00 2001 From: David Anthoff Date: Tue, 7 May 2024 22:54:09 -0700 Subject: [PATCH 4/4] Fix formatting --- src/protocol/initialize.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/protocol/initialize.jl b/src/protocol/initialize.jl index 3a8e38c2..8083c555 100644 --- a/src/protocol/initialize.jl +++ b/src/protocol/initialize.jl @@ -60,7 +60,7 @@ end struct SemanticTokensClientCapabilitiesRequests <: Outbound range::Union{Bool,Missing} - full::Union{Bool,Missing,SemanticTokensClientCapabilitiesRequestsFull} + full::Union{Bool,Missing,SemanticTokensClientCapabilitiesRequestsFull} end # Requires handwritten implementaiton to account for 3-part Unions @@ -77,13 +77,13 @@ 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} + 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