コード例 #1
0
		public static TooltipInformation CreateTooltipInformation (ICompilation compilation, CSharpUnresolvedFile file, TextEditorData textEditorData, MonoDevelop.CSharp.Formatting.CSharpFormattingPolicy formattingPolicy, IParameterizedMember entity, int currentParameter, bool smartWrap)
		{
			var tooltipInfo = new TooltipInformation ();
			var resolver = file.GetResolver (compilation, textEditorData.Caret.Location);
			var sig = new SignatureMarkupCreator (resolver, formattingPolicy.CreateOptions ());
			sig.HighlightParameter = currentParameter;
			sig.BreakLineAfterReturnType = smartWrap;
			try {
				tooltipInfo.SignatureMarkup = sig.GetMarkup (entity);
			} catch (Exception e) {
				LoggingService.LogError ("Got exception while creating markup for :" + entity, e);
				return new TooltipInformation ();
			}
			tooltipInfo.SummaryMarkup = AmbienceService.GetSummaryMarkup (entity) ?? "";
			
			if (entity is IMethod) {
				var method = (IMethod)entity;
				if (method.IsExtensionMethod) {
					tooltipInfo.AddCategory (GettextCatalog.GetString ("Extension Method from"), method.DeclaringTypeDefinition.FullName);
				}
			}
			int paramIndex = currentParameter;

			if (entity is IMethod && ((IMethod)entity).IsExtensionMethod)
				paramIndex++;
			paramIndex = Math.Min (entity.Parameters.Count - 1, paramIndex);

			var curParameter = paramIndex >= 0  && paramIndex < entity.Parameters.Count ? entity.Parameters [paramIndex] : null;
			if (curParameter != null) {

				string docText = AmbienceService.GetDocumentation (entity);
				if (!string.IsNullOrEmpty (docText)) {
					string text = docText;
					Regex paramRegex = new Regex ("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
					Match match = paramRegex.Match (docText);
					
					if (match.Success) {
						text = AmbienceService.GetDocumentationMarkup (entity, match.Groups [1].Value);
						if (!string.IsNullOrWhiteSpace (text))
							tooltipInfo.AddCategory (GettextCatalog.GetString ("Parameter"), text);
					}
				}
		
				if (curParameter.Type.Kind == TypeKind.Delegate)
					tooltipInfo.AddCategory (GettextCatalog.GetString ("Delegate Info"), sig.GetDelegateInfo (curParameter.Type));
			}
			return tooltipInfo;
		}
コード例 #2
0
        public static TooltipInformation CreateTooltipInformation(ICompilation compilation, CSharpUnresolvedFile file, TextEditorData textEditorData, MonoDevelop.PlayScript.Formatting.PlayScriptFormattingPolicy formattingPolicy, IParameterizedMember entity, int currentParameter, bool smartWrap)
        {
            var tooltipInfo = new TooltipInformation();
            var resolver    = file.GetResolver(compilation, textEditorData.Caret.Location);
            var sig         = new SignatureMarkupCreator(resolver, formattingPolicy.CreateOptions());

            sig.HighlightParameter       = currentParameter;
            sig.BreakLineAfterReturnType = smartWrap;
            try {
                tooltipInfo.SignatureMarkup = sig.GetMarkup(entity);
            } catch (Exception e) {
                LoggingService.LogError("Got exception while creating markup for :" + entity, e);
                return(new TooltipInformation());
            }
            tooltipInfo.SummaryMarkup = AmbienceService.GetSummaryMarkup(entity) ?? "";

            if (entity is IMethod)
            {
                var method = (IMethod)entity;
                if (method.IsExtensionMethod)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Extension Method from"), method.DeclaringTypeDefinition.FullName);
                }
            }
            int paramIndex = currentParameter;

            if (entity is IMethod && ((IMethod)entity).IsExtensionMethod)
            {
                paramIndex++;
            }
            paramIndex = Math.Min(entity.Parameters.Count - 1, paramIndex);

            var curParameter = paramIndex >= 0 && paramIndex < entity.Parameters.Count ? entity.Parameters [paramIndex] : null;

            if (curParameter != null)
            {
                string docText = AmbienceService.GetDocumentation(entity);
                if (!string.IsNullOrEmpty(docText))
                {
                    string text       = docText;
                    Regex  paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                    Match  match      = paramRegex.Match(docText);

                    if (match.Success)
                    {
                        text = AmbienceService.GetDocumentationMarkup(entity, match.Groups [1].Value);
                        if (!string.IsNullOrWhiteSpace(text))
                        {
                            tooltipInfo.AddCategory(GettextCatalog.GetString("Parameter"), text);
                        }
                    }
                }

                if (curParameter.Type.Kind == TypeKind.Delegate)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Delegate Info"), sig.GetDelegateInfo(curParameter.Type));
                }
            }
            return(tooltipInfo);
        }
コード例 #3
0
        public static TooltipInformation CreateTooltipInformation(ICompilation compilation, CSharpUnresolvedFile file, CSharpResolver resolver, TextEditorData textEditorData, MonoDevelop.CSharp.Formatting.CSharpFormattingPolicy formattingPolicy, IEntity entity, bool smartWrap, bool createFooter = false)
        {
            var tooltipInfo = new TooltipInformation();

            if (resolver == null)
            {
                resolver = file != null?file.GetResolver(compilation, textEditorData.Caret.Location) : new CSharpResolver(compilation);
            }
            var sig = new SignatureMarkupCreator(resolver, formattingPolicy.CreateOptions());

            sig.BreakLineAfterReturnType = smartWrap;
            try {
                tooltipInfo.SignatureMarkup = sig.GetMarkup(entity);
            } catch (Exception e) {
                LoggingService.LogError("Got exception while creating markup for :" + entity, e);
                return(new TooltipInformation());
            }
            tooltipInfo.SummaryMarkup = AmbienceService.GetSummaryMarkup(entity) ?? "";

            if (entity is IMember)
            {
                var evt = (IMember)entity;
                if (evt.ReturnType.Kind == TypeKind.Delegate)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Delegate Info"), sig.GetDelegateInfo(evt.ReturnType));
                }
            }
            if (entity is IMethod)
            {
                var method = (IMethod)entity;
                if (method.IsExtensionMethod)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Extension Method from"), method.DeclaringTypeDefinition.FullName);
                }
            }
            if (createFooter)
            {
                if (entity is IType)
                {
                    var type = entity as IType;
                    var def  = type.GetDefinition();
                    if (def != null)
                    {
                        if (!string.IsNullOrEmpty(def.ParentAssembly.AssemblyName))
                        {
                            var project = def.GetSourceProject();
                            if (project != null)
                            {
                                var relPath = FileService.AbsoluteToRelativePath(project.BaseDirectory, def.Region.FileName);
                                tooltipInfo.FooterMarkup = "<small>" + GettextCatalog.GetString("Project:\t{0}", AmbienceService.EscapeText(def.ParentAssembly.AssemblyName)) + "</small>" + Environment.NewLine +
                                                           "<small>" + GettextCatalog.GetString("File:\t\t{0} (line {1})", AmbienceService.EscapeText(relPath), def.Region.Begin.Line) + "</small>";
                            }
                        }
                    }
                }
                else if (entity.DeclaringTypeDefinition != null)
                {
                    var project = entity.DeclaringTypeDefinition.GetSourceProject();
                    if (project != null)
                    {
                        var relPath = FileService.AbsoluteToRelativePath(project.BaseDirectory, entity.Region.FileName);
                        tooltipInfo.FooterMarkup =
                            "<small>" + GettextCatalog.GetString("Project:\t{0}", AmbienceService.EscapeText(project.Name)) + "</small>" + Environment.NewLine +
                            "<small>" + GettextCatalog.GetString("From:\t{0}", AmbienceService.EscapeText(entity.DeclaringType.FullName)) + "</small>" + Environment.NewLine +
                            "<small>" + GettextCatalog.GetString("File:\t\t{0} (line {1})", AmbienceService.EscapeText(relPath), entity.Region.Begin.Line) + "</small>";
                    }
                }
            }
            return(tooltipInfo);
        }
コード例 #4
0
        public static TooltipInformation CreateTooltipInformation(ICompilation compilation, CSharpUnresolvedFile file, CSharpResolver resolver, TextEditorData textEditorData, MonoDevelop.CSharp.Formatting.CSharpFormattingPolicy formattingPolicy, IEntity entity, bool smartWrap, bool createFooter = false)
        {
            var tooltipInfo = new TooltipInformation();

            if (resolver == null)
            {
                resolver = file != null?file.GetResolver(compilation, textEditorData.Caret.Location) : new CSharpResolver(compilation);
            }
            var sig = new SignatureMarkupCreator(resolver, formattingPolicy.CreateOptions());

            sig.BreakLineAfterReturnType = smartWrap;
            try {
                tooltipInfo.SignatureMarkup = sig.GetMarkup(entity);
            } catch (Exception e) {
                LoggingService.LogError("Got exception while creating markup for :" + entity, e);
                return(new TooltipInformation());
            }
            tooltipInfo.SummaryMarkup = AmbienceService.GetSummaryMarkup(entity) ?? "";

            if (entity is IMember)
            {
                var evt = (IMember)entity;
                if (evt.ReturnType.Kind == TypeKind.Delegate)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Delegate Info"), sig.GetDelegateInfo(evt.ReturnType));
                }
            }
            if (entity is IMethod)
            {
                var method = (IMethod)entity;
                if (method.IsExtensionMethod)
                {
                    tooltipInfo.AddCategory(GettextCatalog.GetString("Extension Method from"), method.DeclaringTypeDefinition.FullName);
                }
            }
            if (createFooter)
            {
                tooltipInfo.FooterMarkup = sig.CreateFooter(entity);
            }
            return(tooltipInfo);
        }
            internal static Task <TooltipInformation> CreateTooltipInformation(MonoDevelop.Ide.Editor.TextEditor editor, MonoDevelop.Ide.Editor.DocumentContext ctx, ISymbol sym, int currentParameter, bool smartWrap, CancellationToken cancelToken)
            {
                var tooltipInfo = new TooltipInformation();
                var sig         = new SignatureMarkupCreator(ctx, editor != null ? editor.CaretOffset : 0);

                sig.HighlightParameter       = currentParameter;
                sig.BreakLineAfterReturnType = smartWrap;

                return(Task.Run(() => {
                    if (cancelToken.IsCancellationRequested)
                    {
                        return null;
                    }
                    try {
                        tooltipInfo.SignatureMarkup = sig.GetMarkup(sym);
                    } catch (Exception e) {
                        LoggingService.LogError("Got exception while creating markup for :" + sym, e);
                        return new TooltipInformation();
                    }
                    tooltipInfo.SummaryMarkup = Ambience.GetSummaryMarkup(sym) ?? "";

                    if (cancelToken.IsCancellationRequested)
                    {
                        return null;
                    }

                    if (sym is IMethodSymbol)
                    {
                        var method = (IMethodSymbol)sym;
                        if (method.IsExtensionMethod && method.ReducedFrom != null && method.ReducedFrom.ContainingType != null)
                        {
                            tooltipInfo.AddCategory(GettextCatalog.GetString("Extension Method from"), method.ReducedFrom.ContainingType.Name);
                        }
                    }
                    int paramIndex = currentParameter;

                    //				if (Symbol is IMethodSymbol && ((IMethodSymbol)Symbol).IsExtensionMethod)
                    //					paramIndex++;
                    var list = GetParameterList(sym);
                    paramIndex = Math.Min(list.Length - 1, paramIndex);

                    var curParameter = paramIndex >= 0 && paramIndex < list.Length ? list [paramIndex] : null;
                    if (curParameter != null)
                    {
                        string docText = Ambience.GetDocumentation(sym);
                        if (!string.IsNullOrEmpty(docText))
                        {
                            string text = docText;
                            Regex paramRegex = new Regex("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
                            Match match = paramRegex.Match(docText);

                            if (match.Success)
                            {
                                text = Ambience.GetDocumentationMarkup(sym, match.Groups [1].Value);
                                if (!string.IsNullOrWhiteSpace(text))
                                {
                                    tooltipInfo.AddCategory(GettextCatalog.GetString("Parameter"), text);
                                }
                            }
                        }
                        if (curParameter.Type.TypeKind == TypeKind.Delegate)
                        {
                            tooltipInfo.AddCategory(GettextCatalog.GetString("Delegate Info"), sig.GetDelegateInfo(curParameter.Type));
                        }
                    }
                    return tooltipInfo;
                }));
            }
コード例 #6
0
			internal static Task<TooltipInformation> CreateTooltipInformation (MonoDevelop.Ide.Editor.TextEditor editor, MonoDevelop.Ide.Editor.DocumentContext ctx, ISymbol sym, int currentParameter, bool smartWrap, CancellationToken cancelToken)
			{
				var tooltipInfo = new TooltipInformation ();
				var sig = new SignatureMarkupCreator (ctx, editor != null ? editor.CaretOffset : 0);
				sig.HighlightParameter = currentParameter;
				sig.BreakLineAfterReturnType = smartWrap;

				return Task.Run (() => {
					if (cancelToken.IsCancellationRequested)
						return null;
					try {
						tooltipInfo.SignatureMarkup = sig.GetMarkup (sym);
					} catch (Exception e) {
						LoggingService.LogError ("Got exception while creating markup for :" + sym, e);
						return new TooltipInformation ();
					}
					tooltipInfo.SummaryMarkup = Ambience.GetSummaryMarkup (sym) ?? "";

					if (cancelToken.IsCancellationRequested)
						return null;
					
					if (sym is IMethodSymbol) {
						var method = (IMethodSymbol)sym;
						if (method.IsExtensionMethod && method.ReducedFrom != null && method.ReducedFrom.ContainingType != null) {
							tooltipInfo.AddCategory (GettextCatalog.GetString ("Extension Method from"), method.ReducedFrom.ContainingType.Name);
						}
					}
					int paramIndex = currentParameter;

					//				if (Symbol is IMethodSymbol && ((IMethodSymbol)Symbol).IsExtensionMethod)
					//					paramIndex++;
					var list = GetParameterList (sym);
					paramIndex = Math.Min (list.Length - 1, paramIndex);

					var curParameter = paramIndex >= 0 && paramIndex < list.Length ? list [paramIndex] : null;
					if (curParameter != null) {

						string docText = Ambience.GetDocumentation (sym);
						if (!string.IsNullOrEmpty (docText)) {
							string text = docText;
							Regex paramRegex = new Regex ("(\\<param\\s+name\\s*=\\s*\"" + curParameter.Name + "\"\\s*\\>.*?\\</param\\>)", RegexOptions.Compiled);
							Match match = paramRegex.Match (docText);

							if (match.Success) {
								text = Ambience.GetDocumentationMarkup (sym, match.Groups [1].Value);
								if (!string.IsNullOrWhiteSpace (text))
									tooltipInfo.AddCategory (GettextCatalog.GetString ("Parameter"), text);
							}
						}
						if (curParameter.Type.TypeKind == TypeKind.Delegate)
							tooltipInfo.AddCategory (GettextCatalog.GetString ("Delegate Info"), sig.GetDelegateInfo (curParameter.Type));
					}
					return tooltipInfo;
				});
			}