Exemplo n.º 1
0
        public int GetDataTipText(TextSpan[] pSpan, out string pbstrText)
        {
            var doc = _textView.TextBuffer.GetEditorDocument <IREditorDocument>();
            var ast = doc?.EditorTree?.AstRoot;

            if (ast == null)
            {
                pbstrText = null;
                return(VSConstants.E_FAIL);
            }

            var snapshot = _textView.TextSnapshot;
            var start    = LineAndColumnNumberToSnapshotPoint(snapshot, pSpan[0].iStartLine, pSpan[0].iStartIndex);
            var end      = LineAndColumnNumberToSnapshotPoint(snapshot, pSpan[0].iEndLine, pSpan[0].iEndIndex);
            var range    = new SnapshotSpan(start, end).ToTextRange();
            var node     = RDataTip.GetDataTipExpression(ast, range);

            if (node == null)
            {
                pbstrText = null;
                return(VSConstants.E_FAIL);
            }

            var exprSpan = node.ToSnapshotSpan(doc.TextBuffer().CurrentSnapshot);

            SnapshotPointToLineAndColumnNumber(exprSpan.Start, out pSpan[0].iStartLine, out pSpan[0].iStartIndex);
            SnapshotPointToLineAndColumnNumber(exprSpan.End, out pSpan[0].iEndLine, out pSpan[0].iEndIndex);
            return(_debugger.GetDataTipValue(_vsTextLines, pSpan, null, out pbstrText));
        }
Exemplo n.º 2
0
        public void DataTip(string code, int start, int length, string dataTip)
        {
            var ast  = RParser.Parse(new TextStream(code));
            var node = RDataTip.GetDataTipExpression(ast, new TextRange(start, length));

            if (dataTip == null)
            {
                node.Should().BeNull();
            }
            else
            {
                node.Should().NotBeNull();
                var expr = code.Substring(node.Start, node.Length);
                expr.Should().Be(dataTip);
            }
        }