Ejemplo n.º 1
0
        private static async Task InsertTextAsync(
            RequestExecutionQueue queue,
            LanguageServerProtocol server,
            Document document,
            int position,
            string text)
        {
            var sourceText = await document.GetTextAsync();

            var lineInfo = sourceText.Lines.GetLinePositionSpan(new TextSpan(position, 0));

            await server.ExecuteRequestAsync <DidChangeTextDocumentParams, object>(
                queue,
                Methods.TextDocumentDidChangeName,
                new DidChangeTextDocumentParams
            {
                TextDocument   = ProtocolConversions.DocumentToVersionedTextDocumentIdentifier(document),
                ContentChanges = new TextDocumentContentChangeEvent[]
                {
                    new TextDocumentContentChangeEvent
                    {
                        Range = new LSP.Range
                        {
                            Start = ProtocolConversions.LinePositionToPosition(lineInfo.Start),
                            End   = ProtocolConversions.LinePositionToPosition(lineInfo.End),
                        },
                        Text = text,
                    },
                },
            },
                new LSP.ClientCapabilities(),
                clientName : null,
                CancellationToken.None);
        }