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); } }
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); }
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)); }
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; } }