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); }
private static async Task CloseDocumentAsync(RequestExecutionQueue queue, LanguageServerProtocol server, Document document) { await server.ExecuteRequestAsync <DidCloseTextDocumentParams, object>( queue, Methods.TextDocumentDidCloseName, new DidCloseTextDocumentParams { TextDocument = new TextDocumentIdentifier { Uri = document.GetURI(), } }, new LSP.ClientCapabilities(), clientName : null, CancellationToken.None); }
private static async Task OpenDocumentAsync(RequestExecutionQueue queue, LanguageServerProtocol server, Document document) { await server.ExecuteRequestAsync <DidOpenTextDocumentParams, object>( queue, Methods.TextDocumentDidOpenName, new DidOpenTextDocumentParams { TextDocument = new TextDocumentItem { Uri = document.GetURI(), Text = document.GetTextSynchronously(CancellationToken.None).ToString(), } }, new LSP.ClientCapabilities(), clientName : null, CancellationToken.None); }
public async Task <InitializeResult> InitializeAsync(InitializeParams initializeParams, CancellationToken cancellationToken) { _clientCapabilities = (VSClientCapabilities)initializeParams.Capabilities; var serverCapabilities = await _protocol.ExecuteRequestAsync <InitializeParams, InitializeResult>(Methods.InitializeName, _workspace.CurrentSolution, initializeParams, _clientCapabilities, _clientName, cancellationToken).ConfigureAwait(false); // Always support hover - if any LSP client for a content type advertises support, // then the liveshare provider is disabled. So we must provide for both C# and razor // until https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1106064/ is fixed // or we have different content types. serverCapabilities.Capabilities.HoverProvider = true; return(serverCapabilities); }