C# ambience. Used to convert type system symbols to text (usually for displaying the symbol to the user; e.g. in editor tooltips)
Inheritance: IAmbience
		public OverrideCompletionData(int declarationBegin, IMember m, CSharpResolver contextAtCaret)
			: base(m)
		{
			this.declarationBegin = declarationBegin;
			this.contextAtCaret = contextAtCaret;
			var ambience = new CSharpAmbience();
			ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList | ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
			this.CompletionText = ambience.ConvertSymbol(m);
		}
Example #2
0
		public CSharpAmbienceTests()
		{
			ambience = new CSharpAmbience();
			mscorlib = CecilLoaderTests.Mscorlib;
			var loader = new CecilLoader();
			loader.IncludeInternalMembers = true;
			myLib = loader.LoadAssemblyFile(typeof(CSharpAmbienceTests).Assembly.Location);
			compilation = new SimpleCompilation(myLib, mscorlib);
		}
Example #3
0
        public CSharpAmbienceTests()
        {
            ambience = new CSharpAmbience();
            mscorlib = CecilLoaderTests.Mscorlib;
            var loader = new CecilLoader();

            loader.IncludeInternalMembers = true;
            myLib       = loader.LoadAssemblyFile(typeof(CSharpAmbienceTests).Assembly.Location);
            compilation = new SimpleCompilation(myLib, mscorlib);
        }
Example #4
0
        public TypeLookupResponse GetTypeLookupResponse(TypeLookupRequest request)
        {
            var res = _bufferParser.ParsedContent(request.Buffer, request.FileName);
            var loc = new TextLocation(request.Line, request.Column);
            var resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc);
            var response = new TypeLookupResponse();
            var ambience = new CSharpAmbience()
            {
                ConversionFlags = AmbienceFlags,
            };


            if (resolveResult == null || resolveResult is NamespaceResolveResult)
                response.Type = "";
            else
            {
                response.Type = resolveResult.Type.ToString();
                IEntity entity = null;
                if (resolveResult is CSharpInvocationResolveResult)
                {
                    var result = resolveResult as CSharpInvocationResolveResult;
                    entity = result.Member;
                    response.Type = ambience.ConvertSymbol(result.Member);
                }
                else if (resolveResult is LocalResolveResult)
                {
                    var result = resolveResult as LocalResolveResult;
                    response.Type = ambience.ConvertVariable(result.Variable);
                }
                else if (resolveResult is MemberResolveResult)
                {
                    var result = resolveResult as MemberResolveResult;
                    entity = result.Member;
                    response.Type = ambience.ConvertSymbol(result.Member);
                }
                else if (resolveResult is TypeResolveResult)
                {
                    ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedTypeNames;
                    response.Type = ambience.ConvertType(resolveResult.Type);
                }

                if (resolveResult.Type is UnknownType)
                    response.Type = "Unknown Type: " + resolveResult.Type.Name;
                if (resolveResult.Type == SpecialType.UnknownType)
                    response.Type = "Unknown Type";

                if (request.IncludeDocumentation && entity != null)
                {
                    var project = _solution.ProjectContainingFile(request.FileName);
                    response.Documentation = new DocumentationFetcher().GetDocumentation(project, entity, _config);
                }
            }

            return response;
        }
        public VariableCompletionData(IVariable variable)
        {
            if (variable == null) throw new ArgumentNullException("variable");
            Variable = variable;

            IAmbience ambience = new CSharpAmbience();
            DisplayText = variable.Name;
            Description = ambience.ConvertVariable(variable);
            CompletionText = Variable.Name;
            this.Image = CompletionImage.Field.BaseImage;
        }
Example #6
0
 void GenerateHeader()
 {
     CSharpAmbience ambience = new CSharpAmbience();
     ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
     var stringBuilder = new StringBuilder();
     var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);
     ambience.ConvertEntity(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());
     var inlineBuilder = new HighlightedInlineBuilder(stringBuilder.ToString());
     inlineBuilder.SetFontWeight(formatter.parameterStartOffset, formatter.parameterLength, FontWeights.Bold);
     header.Inlines.Clear();
     header.Inlines.AddRange(inlineBuilder.CreateRuns());
 }
 public EntityCompletionData(IEntity entity)
 {
     if (entity == null) throw new ArgumentNullException("entity");
     this.entity = entity;
     IAmbience ambience = new CSharpAmbience();
     ambience.ConversionFlags = entity is ITypeDefinition ? ConversionFlags.ShowTypeParameterList : ConversionFlags.None;
     DisplayText = entity.Name;
     this.CompletionText = ambience.ConvertEntity(entity);
     ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
     if (entity is ITypeDefinition)
     {
         // Show fully qualified Type name
         ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedTypeNames;
     }
     this.Image = ICSharpCode.AvalonEdit.CodeCompletion.CompletionImage.GetImage(entity);
 }
		public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
		{
			var method = (IUnresolvedMethod)dataObject;
			var dt = new DefaultResolvedTypeDefinition (GetContext (treeBuilder), method.DeclaringTypeDefinition);
			var resolved = (DefaultResolvedMethod)Resolve (treeBuilder, method, dt);
			var ambience = new CSharpAmbience ();
			try {
				nodeInfo.Label = MonoDevelop.Ide.TypeSystem.Ambience.EscapeText (ambience.ConvertSymbol (resolved));
			} catch (Exception) {
				nodeInfo.Label = method.Name;
			}

			if (method.IsPrivate || method.IsInternal)
				nodeInfo.Label = DomMethodNodeBuilder.FormatPrivate (nodeInfo.Label);
			
			nodeInfo.Icon = Context.GetIcon (resolved.GetStockIcon ());
		}
Example #9
0
        public TypeLookupResponse GetTypeLookupResponse(TypeLookupRequest request)
        {
            var res = _bufferParser.ParsedContent(request.Buffer, request.FileName);
            var loc = new TextLocation(request.Line, request.Column);
            var resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc);
            var response = new TypeLookupResponse();
            var ambience = new CSharpAmbience()
                {
                    ConversionFlags = AmbienceFlags,
                };

            if (resolveResult == null || resolveResult is NamespaceResolveResult)
                response.Type = "";
            else if (resolveResult != null)
            {
                response.Type = resolveResult.Type.ToString();

                if (resolveResult is CSharpInvocationResolveResult)
                {
                    var result = resolveResult as CSharpInvocationResolveResult;
                    response.Type = ambience.ConvertEntity(result.Member);
                }
                else if (resolveResult is LocalResolveResult)
                {
                    var result = resolveResult as LocalResolveResult;
                    response.Type = ambience.ConvertVariable(result.Variable);
                }
                else if (resolveResult is MemberResolveResult)
                {
                    var result = resolveResult as MemberResolveResult;
                    response.Type = ambience.ConvertEntity(result.Member);
                }
                else if (resolveResult is TypeResolveResult)
                {
                    ambience.ConversionFlags |= ConversionFlags.UseFullyQualifiedTypeNames;
                    response.Type = ambience.ConvertType(resolveResult.Type);
                }

                if (resolveResult.Type is UnknownType)
                    response.Type = "Unknown Type: " + resolveResult.Type.Name;
                if (resolveResult.Type == SpecialType.UnknownType)
                    response.Type = "Unknown Type";
            }

            return response;
        }
Example #10
0
		FlowDocumentScrollViewer GenerateHeader()
		{
			CSharpAmbience ambience = new CSharpAmbience();
			ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
			var stringBuilder = new StringBuilder();
			var formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);
			ambience.ConvertEntity(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());
			
			var documentation = XmlDocumentationElement.Get(Method);
			ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
			
			DocumentationUIBuilder b = new DocumentationUIBuilder(ambience);
			string parameterName = null;
			if (Method.Parameters.Count > highlightedParameterIndex)
				parameterName = Method.Parameters[highlightedParameterIndex].Name;
			b.AddSignatureBlock(stringBuilder.ToString(), formatter.parameterStartOffset, formatter.parameterLength, parameterName);
			
			DocumentationUIBuilder b2 = new DocumentationUIBuilder(ambience);
			b2.ParameterName = parameterName;
			b2.ShowAllParameters = false;
			
			if (documentation != null) {
				foreach (var child in documentation.Children) {
					b2.AddDocumentationElement(child);
				}
			}
			
			content = new FlowDocumentScrollViewer {
				Document = b2.CreateFlowDocument(),
				VerticalScrollBarVisibility = ScrollBarVisibility.Auto
			};
			
			var flowDocument = b.CreateFlowDocument();
			flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space
			
			return new FlowDocumentScrollViewer {
				Document = flowDocument,
				VerticalScrollBarVisibility = ScrollBarVisibility.Auto
			};
		}
    protected override object CreateFancyDescription() {
      var ambience = new CSharpAmbience();
      ambience.ConversionFlags = ConversionFlags.StandardConversionFlags | ConversionFlags.ShowDeclaringType;
      string header = ambience.ConvertSymbol(Entity);
      var documentation = XmlDocumentationElement.Get(Entity);

      ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
      var b = new CSharpDocumentationBuilder(ambience);
      b.AddCodeBlock(header, keepLargeMargin: true);
      if (documentation != null) {
        foreach (var child in documentation.Children) {
          b.AddDocumentationElement(child);
        }
      }

      var flowDocument = b.CreateFlowDocument();
      flowDocument.PagePadding = new Thickness(0); // default is NOT Thickness(0), but Thickness(Auto), which adds unnecessary space

      return new FlowDocumentScrollViewer {
        Document = flowDocument,
        VerticalScrollBarVisibility = ScrollBarVisibility.Auto
      };
    }
Example #12
0
        private ICompletionData CompletionData(IEntity entity)
        {

            ICompletionData completionData = null;
            if (entity.Documentation != null)
            {
                completionData = new CompletionData(_signature, _completionText,
                                                    _signature + Environment.NewLine +
                                                    DocumentationConverter.ConvertDocumentation(entity.Documentation));
            }
            else
            {

                var ambience = new CSharpAmbience
                {
                    ConversionFlags = ConversionFlags.ShowParameterList |
                                      ConversionFlags.ShowParameterNames |
                                      ConversionFlags.ShowReturnType |
                                      ConversionFlags.ShowBody |
                                      ConversionFlags.ShowTypeParameterList
                };

                var documentationSignature = ambience.ConvertEntity(entity);
                if (_wantDocumentation)
                {
                    string documentation = new DocumentationFetcher().GetDocumentation(_project, entity);
                    var documentationAndSignature =
                        documentationSignature + Environment.NewLine + documentation;
                    completionData = new CompletionData(_signature, _completionText, documentationAndSignature);
                }
                else
                {
                    completionData = new CompletionData(_signature, _completionText, documentationSignature);
                }
            }
            return completionData;
        }
        void GenerateHeader()
        {
            CSharpAmbience ambience = new CSharpAmbience();
            ambience.ConversionFlags = ConversionFlags.StandardConversionFlags;
            var stringBuilder = new StringBuilder();
            TokenWriter formatter = new ParameterHighlightingOutputFormatter(stringBuilder, highlightedParameterIndex);
            ambience.ConvertSymbol(Method, formatter, FormattingOptionsFactory.CreateSharpDevelop());
            var documentation = XmlDocumentationElement.Get(Method);
            ambience.ConversionFlags = ConversionFlags.ShowTypeParameterList;
			
            var inlineBuilder = new HighlightedInlineBuilder(stringBuilder.ToString());
            header.Inlines.Clear();
            header.Inlines.AddRange(inlineBuilder.CreateRuns());
        }
Example #14
0
		public override IMember ImplementMember (RefactorerContext ctx, IType cls, IMember member, IReturnType privateImplementationType)
		{
			if (privateImplementationType != null) {
				// Workaround for bug in the code generator. Generic private implementation types are not generated correctly when they are generic.
				Ambience amb = new CSharpAmbience ();
				string tn = amb.GetString (privateImplementationType, OutputFlags.IncludeGenerics | OutputFlags.UseFullName | OutputFlags.UseIntrinsicTypeNames);
				privateImplementationType = new DomReturnType (tn);
			}
			return base.ImplementMember (ctx, cls, member, privateImplementationType);
		}
		void AppendPropertyComment (StringBuilder builder, string indent, IProperty property)
		{
			if (property.Parameters != null) {
				CSharpAmbience ambience = new CSharpAmbience ();
				foreach (IParameter para in property.Parameters) {
					builder.Append (Environment.NewLine);
					builder.Append (indent);
					builder.Append ("/// <param name=\"");
					builder.Append (para.Name);
					builder.Append ("\">\n");
					builder.Append (indent);
					builder.Append ("/// A <see cref=\"");
					builder.Append (ambience.GetString (para.ReturnType, OutputFlags.ClassBrowserEntries | OutputFlags.UseFullName | OutputFlags.UseNETTypeNames));
					builder.Append ("\"/>\n");
					builder.Append (indent);
					builder.Append ("/// </param>");
				}
			}
		}
		void AppendMethodComment (StringBuilder builder, string indent, IMethod method)
		{
			CSharpAmbience ambience = new CSharpAmbience ();
			if (method.Parameters != null) {
				foreach (IParameter para in method.Parameters) {
					builder.Append (Environment.NewLine);
					builder.Append (indent);
					builder.Append ("/// <param name=\"");
					builder.Append (para.Name);
					builder.Append ("\">\n");
					builder.Append (indent);
					builder.Append ("/// A <see cref=\"");
					builder.Append (ambience.GetString (para.ReturnType, OutputFlags.ClassBrowserEntries | OutputFlags.UseFullName | OutputFlags.UseNETTypeNames));
					builder.Append ("\"/>\n");
					builder.Append (indent);
					builder.Append ("/// </param>");
				}
			}
			if (method.ReturnType != null && method.ReturnType.FullName != "System.Void") {
				builder.Append (Environment.NewLine);
				builder.Append (indent);
				builder.Append("/// <returns>\n");
				builder.Append (indent);
				builder.Append ("/// A <see cref=\"");
				builder.Append (ambience.GetString (method.ReturnType, OutputFlags.ClassBrowserEntries | OutputFlags.UseFullName | OutputFlags.UseNETTypeNames));
				builder.Append ("\"/>\n");
				builder.Append (indent);
				builder.Append ("/// </returns>");
			}
		}
Example #17
0
        private ICompletionData CompletionData(IEntity entity)
        {
            ICompletionData completionData;
            if (entity.Documentation != null)
            {
                completionData = new CompletionData(_signature, _completionText,
                    _signature + _config.TextEditorOptions.EolMarker +
                    DocumentationConverter.ConvertDocumentation(entity.Documentation, _config));
            }
            else
            {
                var ambience = new CSharpAmbience
                {
                    ConversionFlags = ConversionFlags.ShowParameterList |
                    ConversionFlags.ShowParameterNames |
                    ConversionFlags.ShowReturnType |
                    ConversionFlags.ShowBody |
                    ConversionFlags.ShowTypeParameterList
                };

                var documentationSignature = ambience.ConvertSymbol(entity);
                if (_wantDocumentation)
                {
                    string documentation = new DocumentationFetcher().GetDocumentation(_project, entity, _config);
                    var documentationAndSignature =
                        documentationSignature + _config.TextEditorOptions.EolMarker + documentation;
                    completionData = new CompletionData(_signature, _completionText, documentationAndSignature);
                }
                else
                {
                    completionData = new CompletionData(_signature, _completionText, documentationSignature);
                }
            }
            return completionData;
        }
        private void AddMethodHeader(CompletionData completionData, IMethod method)
        {
            var methodDefinition = method.MemberDefinition;

            if (_wantMethodHeader)
            {
                var snippetGenerator = new SnippetGenerator(false);
                completionData.MethodHeader = snippetGenerator.Generate(methodDefinition);
            }

            if (_wantSnippet)
            {
                var snippetGenerator = new SnippetGenerator(true);
                completionData.Snippet = snippetGenerator.Generate(methodDefinition);
            }

            if (_wantReturnType)
            {

                var returnTypeAmbience = new CSharpAmbience { ConversionFlags = ConversionFlags.ShowReturnType };
                completionData.ReturnType = returnTypeAmbience.ConvertSymbol(method).Split(' ').First();
            }
        }
Example #19
0
        private ICompletionData CompletionData(IEntity entity)
        {
            ICompletionData completionData = null;
            if (entity.Documentation != null)
            {
                completionData = new CompletionData(_signature, _completionText,
                                                    _signature + Environment.NewLine +
                                                    DocumentationConverter.ConvertDocumentation(entity.Documentation));
            }
            else
            {
                IDocumentationProvider docProvider = null;
                if (entity.ParentAssembly.AssemblyName != null)
                {
                    docProvider =
                        XmlDocumentationProviderFactory.Get(entity.ParentAssembly.AssemblyName);
                }
                var ambience = new CSharpAmbience
                {
                    ConversionFlags = ConversionFlags.ShowParameterList |
                                      ConversionFlags.ShowParameterNames |
                                      ConversionFlags.ShowReturnType |
                                      ConversionFlags.ShowBody |
                                      ConversionFlags.ShowTypeParameterList
                };

                var documentationSignature = ambience.ConvertEntity(entity);
                if (docProvider != null)
                {
                    DocumentationComment documentationComment = docProvider.GetDocumentation(entity);
                    if (documentationComment != null)
                    {
                        var documentation = documentationSignature + Environment.NewLine +
                                            DocumentationConverter.ConvertDocumentation(
                                                documentationComment.Xml.Text);
                        completionData = new CompletionData(_signature, _completionText, documentation);
                    }
                    else
                    {
                        completionData = new CompletionData(_signature, _completionText, documentationSignature);
                    }
                }
                else
                {
                    completionData = new CompletionData(_signature, _completionText, documentationSignature);
                }
            }
            return completionData;
        }
        public IEnumerable<QuickFix> GetCurrentFileMembersAsFlatWithoutAccessModifiers(CurrentFileMembersRequest request)
        {
            var context = new BufferContext(request, this._parser);

            var result = new List<QuickFix>();
           

            foreach (var item in context.ParsedContent.UnresolvedFile.TopLevelTypeDefinitions)
            {
                result.Add(new QuickFix()
                    {
                        FileName = item.Region.FileName
                            , Line = item.Region.BeginLine
                            , Column = item.Region.BeginColumn
                            , EndLine = item.Region.EndLine
                            , EndColumn = item.Region.EndColumn
                            , Text = item.Name
                    });
            }

            var members = context.ParsedContent.UnresolvedFile.TopLevelTypeDefinitions
                .SelectMany(x => x.Members);



            foreach (var item in members)
            {
                var ambience = new CSharpAmbience();
                ambience.ConversionFlags = ConversionFlags.ShowParameterList | ConversionFlags.ShowParameterNames;
                var memberTitle = ambience.ConvertSymbol(item.Resolve(context.ResolveContext));

                var qf = new QuickFix()
                {
                    FileName = item.Region.FileName
                            , Line = item.Region.BeginLine
                            , Column = item.Region.BeginColumn
                            , EndLine = item.Region.EndLine
                            , EndColumn = item.Region.EndColumn
                            , Text = memberTitle
                };

                result.Add(qf);
            }

            return result.OrderBy(x => x.Text);

        }