OmniSharp / OmniSharp/csharp-language-server-protocol
Range must not span multiple lines (Parameter 'range')
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 638
- Forks
- 109
- Avg merge
- 1m
- Merged PRs (30d)
- 2
Description
I am trying to use Omnisharp with Kate Text Editor through their LSP client implementation. However, the semantic tokens implementation fails with this error:
OmniSharp.Extensions.JsonRpc.InputHandler: Failed to handle request textDocument/semanticTokens/range 339 - System.ArgumentOutOfRangeException: Range must not span multiple lines (Parameter 'range')
at OmniSharp.Extensions.LanguageServer.Protocol.Document.SemanticTokensBuilder.Push(Range range, Int32 tokenType, Int32 tokenModifiers)
at OmniSharp.LanguageServerProtocol.Handlers.OmniSharpSemanticTokensHandler.Tokenize(SemanticTokensBuilder builder, ITextDocumentIdentifierParams identifier, CancellationToken cancellationToken) in /home/vsts/work/1/s/src/OmniSharp.LanguageServerProtocol/Handlers/OmniSharpSemanticTokensHandler.cs:line 83
at OmniSharp.Extensions.LanguageServer.Protocol.Document.SemanticTokensHandlerBase.Handle(SemanticTokensRangeParams request, CancellationToken cancellationToken)
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.SemanticTokensDeltaPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.g__InnerRoute|5_0(IServiceScopeFactory serviceScopeFactory, Request request, TDescriptor descriptor, Object params, CancellationToken token, ILogger logger)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.RouteRequest(IRequestDescriptor`1 descriptors, Request request, CancellationToken token)
at OmniSharp.Extensions.JsonRpc.InputHandler.c__DisplayClass38_0.b__5>d.MoveNext() | Method='textDocument/semanticTokens/range' RequestId='339'
Kate sends the request for the currently visible portion of the document. It works without an issue with typescript-language-server, clangd & rust-analyzer etc.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at src/OmniSharp.LanguageServerProtocol/Handlers/OmniSharpSemanticTokensHandler.cs line 83 and reproduce Kate's textDocument/semanticTokens/range request for the visible document portion. Compare the behavior with the reported failure and verify that a range spanning multiple lines completes without ArgumentOutOfRangeException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100