예제 #1
0
        public string GetLengthProperty(Func <string, string> callback, string varName)
        {
            if (callback == null)
            {
                return("Count");
            }

            string var = callback(varName);

            ITextEditorResolver textEditorResolver = CurrentContext.DocumentContext.GetContent <ITextEditorResolver> ();

            if (textEditorResolver != null)
            {
                var result = textEditorResolver.GetLanguageItem(CurrentContext.Editor.LocationToOffset(CurrentContext.InsertPosition), var);
                if (result != null)
                {
                    var returnType = result.GetReturnType();
                    if (returnType != null && !returnType.IsReferenceType)
                    {
                        return("Length");
                    }
                }
            }
            return("Count");
        }
예제 #2
0
        public string GetComponentTypeOf(Func <string, string> callback, string varName)
        {
            if (callback == null)
            {
                return("var");
            }

            string var = callback(varName);
            ITextEditorResolver textEditorResolver = CurrentContext.Document.GetContent <ITextEditorResolver> ();

            if (textEditorResolver != null)
            {
                var result = textEditorResolver.GetLanguageItem(CurrentContext.Document.Editor.Caret.Offset, var);
                if (result != null)
                {
                    var componentType = GetElementType(result.Type);
                    if (componentType.Kind != TypeKind.Unknown)
                    {
                        var generator = CodeGenerator.CreateGenerator(CurrentContext.Document);
                        if (generator != null)
                        {
                            return(generator.GetShortTypeString(CurrentContext.Document, componentType));
                        }
                    }
                }
            }

            return("var");
        }
예제 #3
0
        static string ResolveType(string identifier, SourceLocation location)
        {
            Document doc = IdeApp.Workbench.GetDocument(location.FileName);

            if (doc != null)
            {
                ITextEditorResolver textEditorResolver = doc.GetContent <ITextEditorResolver> ();
                if (textEditorResolver != null)
                {
                    var rr = textEditorResolver.GetLanguageItem(doc.Editor.LocationToOffset(location.Line, 1), identifier);
                    var ns = rr as Microsoft.CodeAnalysis.INamespaceSymbol;
                    if (ns != null)
                    {
                        return(ns.ToDisplayString(Microsoft.CodeAnalysis.SymbolDisplayFormat.CSharpErrorMessageFormat));
                    }
                    var result = rr as Microsoft.CodeAnalysis.INamedTypeSymbol;
                    if (result != null && !(result.TypeKind == Microsoft.CodeAnalysis.TypeKind.Dynamic && result.ToDisplayString(Microsoft.CodeAnalysis.SymbolDisplayFormat.CSharpErrorMessageFormat) == "dynamic"))
                    {
                        return(result.ToDisplayString(new Microsoft.CodeAnalysis.SymbolDisplayFormat(
                                                          typeQualificationStyle: Microsoft.CodeAnalysis.SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces,
                                                          miscellaneousOptions:
                                                          Microsoft.CodeAnalysis.SymbolDisplayMiscellaneousOptions.EscapeKeywordIdentifiers |
                                                          Microsoft.CodeAnalysis.SymbolDisplayMiscellaneousOptions.UseSpecialTypes)));
                    }
                }
            }
            return(null);
        }
예제 #4
0
        public string GetComponentTypeOf(Func <string, string> callback, string varName)
        {
            if (callback == null)
            {
                return("var");
            }

            string var = callback(varName);
            ITextEditorResolver textEditorResolver = CurrentContext.Document.GetContent <ITextEditorResolver> ();

            if (textEditorResolver != null)
            {
                ResolveResult result = textEditorResolver.GetLanguageItem(CurrentContext.Document.TextEditor.CursorPosition, var);
                if (result != null)
                {
                    IReturnType componentType = DomType.GetComponentType(CurrentContext.ProjectDom, result.ResolvedType);
                    if (componentType != null)
                    {
                        Ambience ambience = AmbienceService.GetAmbience(CurrentContext.Template.MimeType);
                        return(ambience != null?ambience.GetString(componentType, OutputFlags.IncludeGenerics) :  componentType.ToInvariantString());
                    }
                }
            }

            return("var");
        }
예제 #5
0
        public static ResolveResult GetResolveResult(MonoDevelop.Ide.Gui.Document doc)
        {
            ITextEditorResolver textEditorResolver = doc.GetContent <ITextEditorResolver> ();

            if (textEditorResolver != null)
            {
                return(textEditorResolver.GetLanguageItem(doc.Editor.Caret.Offset));
            }
            return(null);
        }
예제 #6
0
        public override void Initialize()
        {
            base.Initialize();

            dom = Document.Dom;

            textEditorResolver = base.Document.GetContent <ITextEditorResolver> ();
            textEditorData     = base.Document.Editor;
            textEditorData.Caret.PositionChanged += HandleTextEditorDataCaretPositionChanged;
            textEditorData.Document.TextReplaced += HandleTextEditorDataDocumentTextReplaced;
        }
예제 #7
0
		public override void Initialize ()
		{
			base.Initialize ();
			
			dom = Document.Dom;
			
			textEditorResolver = base.Document.GetContent<ITextEditorResolver> ();
			textEditorData = base.Document.Editor;
			textEditorData.Caret.PositionChanged += HandleTextEditorDataCaretPositionChanged;
			textEditorData.Document.TextReplaced += HandleTextEditorDataDocumentTextReplaced;
		}
예제 #8
0
        public string GetLengthProperty(Func <string, string> callback, string varName)
        {
            if (callback == null)
            {
                return("Count");
            }

            string var = callback(varName);

            ITextEditorResolver textEditorResolver = CurrentContext.Document.GetContent <ITextEditorResolver> ();

            if (textEditorResolver != null)
            {
                ResolveResult result = textEditorResolver.GetLanguageItem(CurrentContext.Document.TextEditor.GetPositionFromLineColumn(CurrentContext.InsertPosition.Line, CurrentContext.InsertPosition.Column), var);
                if (result != null && (result.ResolvedType.ArrayDimensions > 0 || result.ResolvedType.FullName == DomReturnType.String.FullName))
                {
                    return("Length");
                }
            }
            return("Count");
        }
예제 #9
0
        static string ResolveType(string identifier, SourceLocation location)
        {
            Document doc = IdeApp.Workbench.GetDocument(location.Filename);

            if (doc != null)
            {
                ITextEditorResolver textEditorResolver = doc.GetContent <ITextEditorResolver> ();
                if (textEditorResolver != null)
                {
                    ResolveResult          rr = textEditorResolver.GetLanguageItem(doc.Editor.Document.LocationToOffset(location.Line, 1), identifier);
                    NamespaceResolveResult ns = rr as NamespaceResolveResult;
                    if (ns != null)
                    {
                        return(ns.Namespace);
                    }
                    MemberResolveResult result = rr as MemberResolveResult;
                    if (result != null && (result.ResolvedMember == null || result.ResolvedMember is IType) && result.ResolvedType != null)
                    {
                        return(result.ResolvedType.FullName);
                    }
                }
            }
            return(null);
        }
예제 #10
0
        static string ResolveType(string identifier, SourceLocation location)
        {
            Document doc = IdeApp.Workbench.GetDocument(location.FileName);

            if (doc != null)
            {
                ITextEditorResolver textEditorResolver = doc.GetContent <ITextEditorResolver> ();
                if (textEditorResolver != null)
                {
                    var rr = textEditorResolver.GetLanguageItem(doc.Editor.Document.LocationToOffset(location.Line, 1), identifier);
                    var ns = rr as NamespaceResolveResult;
                    if (ns != null)
                    {
                        return(ns.NamespaceName);
                    }
                    var result = rr as TypeResolveResult;
                    if (result != null && !result.IsError)
                    {
                        return(result.Type.FullName);
                    }
                }
            }
            return(null);
        }