Example #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);
        }
Example #2
0
 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);
 }
Example #3
0
 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);
 }
Example #4
0
        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);
        }