public FrameworkElement Create(CompletionSet completionSet, Completion completion, CompletionClassifierKind kind, bool colorize) {
			if (completionSet == null)
				throw new ArgumentNullException(nameof(completionSet));
			if (completion == null)
				throw new ArgumentNullException(nameof(completion));
			Debug.Assert(completionSet.Completions.Contains(completion));

			CompletionClassifierContext context;
			string defaultContentType;
			switch (kind) {
			case CompletionClassifierKind.DisplayText:
				var inputText = completionSet.ApplicableTo.GetText(completionSet.ApplicableTo.TextBuffer.CurrentSnapshot);
				context = new CompletionDisplayTextClassifierContext(completionSet, completion, completion.DisplayText, inputText, colorize);
				defaultContentType = ContentTypes.CompletionDisplayText;
				break;

			case CompletionClassifierKind.Suffix:
				var suffix = (completion as Completion4)?.Suffix ?? string.Empty;
				context = new CompletionSuffixClassifierContext(completionSet, completion, suffix, colorize);
				defaultContentType = ContentTypes.CompletionSuffix;
				break;

			default:
				throw new ArgumentOutOfRangeException(nameof(kind));
			}

			var contentType = (completionSet as ICompletionSetContentTypeProvider)?.GetContentType(contentTypeRegistryService, kind);
			if (contentType == null)
				contentType = contentTypeRegistryService.GetContentType(defaultContentType);
			var classifier = GetTextClassifier(contentType);
			return TextBlockFactory.Create(context.Text, classificationFormatMap.DefaultTextProperties,
				classifier.GetTags(context).Select(a => new TextRunPropertiesAndSpan(a.Span, classificationFormatMap.GetTextProperties(a.ClassificationType))), TextBlockFactory.Flags.DisableSetTextBlockFontFamily | TextBlockFactory.Flags.DisableFontSize);
		}
        FrameworkElement CreateFrameworkElement(Completion completion, CompletionClassifierKind kind)
        {
            if (completion == null)
            {
                throw new ArgumentNullException(nameof(completion));
            }
            if (session.IsDismissed)
            {
                return(null);
            }
            var completionSet = session.SelectedCompletionSet;

            if (completionSet == null)
            {
                return(null);
            }
            Debug.Assert(completionSet.Completions.Contains(completion));
            return(completionTextElementProvider.Create(completionSet, completion, kind));
        }
        IContentType ICompletionSetContentTypeProvider.GetContentType(IContentTypeRegistryService contentTypeRegistryService, CompletionClassifierKind kind)
        {
            switch (kind)
            {
            case CompletionClassifierKind.DisplayText:
                return(contentTypeRegistryService.GetContentType(RoslynContentTypes.CompletionDisplayTextRoslyn));

            case CompletionClassifierKind.Suffix:
                return(contentTypeRegistryService.GetContentType(RoslynContentTypes.CompletionSuffixRoslyn));

            default:
                Debug.Fail($"Unknown kind: {kind}");
                return(null);
            }
        }
Example #4
0
		FrameworkElement CreateFrameworkElement(Completion completion, CompletionClassifierKind kind) {
			if (completion == null)
				throw new ArgumentNullException(nameof(completion));
			if (session.IsDismissed)
				return null;
			var completionSet = session.SelectedCompletionSet;
			if (completionSet == null)
				return null;
			Debug.Assert(completionSet.Completions.Contains(completion));
			const bool colorize = true;
			return completionTextElementProvider.Create(completionSet, completion, kind, colorize);
		}
Example #5
0
        public FrameworkElement Create(CompletionSet completionSet, Completion completion, CompletionClassifierKind kind)
        {
            if (completionSet == null)
            {
                throw new ArgumentNullException(nameof(completionSet));
            }
            if (completion == null)
            {
                throw new ArgumentNullException(nameof(completion));
            }
            Debug.Assert(completionSet.Completions.Contains(completion));

            CompletionClassifierContext context;
            string defaultContentType;

            switch (kind)
            {
            case CompletionClassifierKind.DisplayText:
                var inputText = completionSet.ApplicableTo.GetText(completionSet.ApplicableTo.TextBuffer.CurrentSnapshot);
                context            = new CompletionDisplayTextClassifierContext(completionSet, completion, completion.DisplayText, inputText);
                defaultContentType = ContentTypes.CompletionDisplayText;
                break;

            case CompletionClassifierKind.Suffix:
                var suffix = (completion as Completion4)?.Suffix ?? string.Empty;
                context            = new CompletionSuffixClassifierContext(completionSet, completion, suffix);
                defaultContentType = ContentTypes.CompletionSuffix;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(kind));
            }

            var contentType = (completionSet as ICompletionSetContentTypeProvider)?.GetContentType(contentTypeRegistryService, kind);

            if (contentType == null)
            {
                contentType = contentTypeRegistryService.GetContentType(defaultContentType);
            }
            var classifier = GetTextClassifier(contentType);

            return(TextBlockFactory.Create(context.Text, classificationFormatMap.DefaultTextProperties,
                                           classifier.GetTags(context).Select(a => new TextRunPropertiesAndSpan(a.Span, classificationFormatMap.GetTextProperties(a.ClassificationType))), TextBlockFactory.Flags.DisableSetTextBlockFontFamily | TextBlockFactory.Flags.DisableFontSize));
        }
Example #6
0
		IContentType ICompletionSetContentTypeProvider.GetContentType(IContentTypeRegistryService contentTypeRegistryService, CompletionClassifierKind kind) {
			switch (kind) {
			case CompletionClassifierKind.DisplayText:
				return contentTypeRegistryService.GetContentType(RoslynContentTypes.CompletionDisplayTextRoslyn);
			case CompletionClassifierKind.Suffix:
				return contentTypeRegistryService.GetContentType(RoslynContentTypes.CompletionSuffixRoslyn);
			default:
				Debug.Fail($"Unknown kind: {kind}");
				return null;
			}
		}