GetLanguageItem() public method

public GetLanguageItem ( int offset, MonoDevelop &region ) : Microsoft.CodeAnalysis.ISymbol
offset int
region MonoDevelop
return Microsoft.CodeAnalysis.ISymbol
示例#1
0
        public TooltipItem GetItem(Mono.TextEditor.TextEditor editor, int offset)
        {
            ExtensibleTextEditor ed = (ExtensibleTextEditor)editor;

            ICSharpCode.NRefactory.TypeSystem.DomRegion region;
            var resolveResult = ed.GetLanguageItem(offset, out region);

            if (resolveResult == null)
            {
                return(null);
            }
            int startOffset = offset;
            int endOffset   = offset;

            return(new TooltipItem(resolveResult, startOffset, endOffset - startOffset));
        }
示例#2
0
        public TooltipItem GetItem(Mono.TextEditor.TextEditor editor, int offset)
        {
            ExtensibleTextEditor ed = (ExtensibleTextEditor)editor;

            ResolveResult resolveResult = ed.GetLanguageItem(offset);

            if (resolveResult == null)
            {
                return(null);
            }
            int startOffset = editor.Document.LocationToOffset(resolveResult.ResolvedExpression.Region.Start.Line - 1,
                                                               resolveResult.ResolvedExpression.Region.Start.Column - 1);
            int endOffset = editor.Document.LocationToOffset(resolveResult.ResolvedExpression.Region.End.Line - 1,
                                                             resolveResult.ResolvedExpression.Region.End.Column - 1);

            return(new TooltipItem(resolveResult, startOffset, endOffset - startOffset));
        }
        public TooltipItem GetItem(Mono.TextEditor.TextEditor editor, int offset)
        {
            if (offset >= editor.Document.Length)
            {
                return(null);
            }

            if (!DebuggingService.IsDebugging || DebuggingService.IsRunning)
            {
                return(null);
            }

            StackFrame frame = DebuggingService.CurrentFrame;

            if (frame == null)
            {
                return(null);
            }

            ExtensibleTextEditor ed = (ExtensibleTextEditor)editor;

            string expression = null;
            int    startOffset = 0, length = 0;

            if (ed.IsSomethingSelected && offset >= ed.SelectionRange.Offset && offset <= ed.SelectionRange.EndOffset)
            {
                expression  = ed.SelectedText;
                startOffset = ed.SelectionRange.Offset;
                length      = ed.SelectionRange.Length;
            }
            else
            {
                ResolveResult res = ed.GetLanguageItem(offset);

/*				if (res is MemberResolveResult) {
 *                                      MemberResolveResult mr = (MemberResolveResult) res;
 *                                      if (mr.ResolvedMember == null && mr.ResolvedType != null)
 *                                              expression = mr.ResolvedType.FullName;
 *                              }
 *                              if (expression == null)*/
                if (res != null && res.ResolvedExpression != null)
                {
                    expression  = res.ResolvedExpression.Expression;
                    startOffset = editor.Document.LocationToOffset(res.ResolvedExpression.Region.Start.Line - 1, res.ResolvedExpression.Region.Start.Column - 1);
                    int endOffset = editor.Document.LocationToOffset(res.ResolvedExpression.Region.End.Line - 1, res.ResolvedExpression.Region.End.Column - 1);
                    length = endOffset - startOffset;
                }
            }

            if (string.IsNullOrEmpty(expression))
            {
                return(null);
            }

            ObjectValue val;

            if (!cachedValues.TryGetValue(expression, out val))
            {
                val = frame.GetExpressionValue(expression, false);
                cachedValues [expression] = val;
            }
            if (val == null || val.IsUnknown || val.IsNotSupported)
            {
                return(null);
            }
            return(new TooltipItem(val, startOffset, length));
        }