提交 8f220bd4 编写于 作者: C Cyrus Najmabadi

Renames

上级 b5ada0e5
......@@ -17,21 +17,21 @@ namespace Microsoft.CodeAnalysis.Editor.InlineHints
internal sealed class ClassificationTypeDefinitions
{
[Export]
[Name(InlineParameterNameHintsTag.TagId)]
[Name(InlineHintsTag.TagId)]
[BaseDefinition(PredefinedClassificationTypeNames.FormalLanguage)]
internal ClassificationTypeDefinition InlineParameterNameHints;
internal ClassificationTypeDefinition InlineHints;
[Export(typeof(EditorFormatDefinition))]
[Name(InlineParameterNameHintsTag.TagId)]
[Name(InlineHintsTag.TagId)]
[Order(After = LanguagePriority.NaturalLanguage, Before = LanguagePriority.FormalLanguage)]
[UserVisible(true)]
internal sealed class InlineParameterNameHintsFormatDefinition : EditorFormatDefinition
internal sealed class InlineHintsFormatDefinition : EditorFormatDefinition
{
[ImportingConstructor]
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
public InlineParameterNameHintsFormatDefinition()
public InlineHintsFormatDefinition()
{
this.DisplayName = EditorFeaturesResources.Inline_Parameter_Name_Hints;
this.DisplayName = EditorFeaturesResources.Inline_Hints;
this.ForegroundBrush = Brushes.Black;
this.BackgroundBrush = Brushes.LightGray;
}
......
......@@ -29,22 +29,23 @@ namespace Microsoft.CodeAnalysis.Editor.InlineHints
/// This is the tag which implements the IntraTextAdornmentTag and is meant to create the UIElements that get shown
/// in the editor
/// </summary>
internal class InlineParameterNameHintsTag : IntraTextAdornmentTag
internal class InlineHintsTag : IntraTextAdornmentTag
{
public const string TagId = "inline parameter name hints";
public const string TagId = "inline hints";
private readonly IToolTipService _toolTipService;
private readonly ITextView _textView;
private readonly SnapshotSpan _span;
private readonly SymbolKey _key;
private readonly SymbolKey? _key;
private readonly IThreadingContext _threadingContext;
private readonly Lazy<IStreamingFindUsagesPresenter> _streamingPresenter;
private InlineParameterNameHintsTag(
private InlineHintsTag(
FrameworkElement adornment,
ITextView textView,
SnapshotSpan span,
SymbolKey key,
InlineParameterNameHintsTaggerProvider taggerProvider)
SymbolKey? key,
InlineHintsTaggerProvider taggerProvider)
: base(adornment, removalCallback: null, PositionAffinity.Predecessor)
{
_textView = textView;
......@@ -68,57 +69,64 @@ internal class InlineParameterNameHintsTag : IntraTextAdornmentTag
/// <param name="textView">The view of the editor</param>
/// <param name="span">The span that has the location of the hint</param>
/// <param name="key">The symbolkey associated with each parameter</param>
public static InlineParameterNameHintsTag Create(string text, TextFormattingRunProperties format,
IWpfTextView textView, SnapshotSpan span, SymbolKey key,
InlineParameterNameHintsTaggerProvider taggerProvider)
public static InlineHintsTag Create(
string text,
TextFormattingRunProperties format,
IWpfTextView textView,
SnapshotSpan span,
SymbolKey? key,
InlineHintsTaggerProvider taggerProvider)
{
return new InlineParameterNameHintsTag(CreateElement(text, textView, format), textView,
span, key, taggerProvider);
return new InlineHintsTag(CreateElement(text, textView, format), textView, span, key, taggerProvider);
}
public async Task<IReadOnlyCollection<object>> CreateDescriptionAsync(CancellationToken cancellationToken)
{
var document = _textView.TextBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges();
var textContentBuilder = new List<TaggedText>();
if (document != null)
if (_key != null)
{
var compilation = await document.Project.GetRequiredCompilationAsync(cancellationToken).ConfigureAwait(false);
var symbol = _key.Resolve(compilation, cancellationToken: cancellationToken).Symbol;
var document = _span.Snapshot.TextBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges();
if (symbol != null)
if (document != null)
{
var workspace = document.Project.Solution.Workspace;
var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false);
var symbolDisplayService = document.Project.LanguageServices.GetRequiredService<ISymbolDisplayService>();
var formatter = document.Project.LanguageServices.GetService<IDocumentationCommentFormattingService>();
var sections = await symbolDisplayService.ToDescriptionGroupsAsync(workspace, semanticModel, _span.Start, ImmutableArray.Create(symbol), cancellationToken).ConfigureAwait(false);
textContentBuilder.AddRange(sections[SymbolDescriptionGroups.MainDescription]);
if (formatter != null)
{
var documentation = symbol.GetDocumentationParts(semanticModel, _span.Start, formatter, cancellationToken);
var compilation = await document.Project.GetRequiredCompilationAsync(cancellationToken).ConfigureAwait(false);
var symbol = _key.Value.Resolve(compilation, cancellationToken: cancellationToken).Symbol;
if (documentation.Any())
if (symbol != null)
{
var textContentBuilder = new List<TaggedText>();
var workspace = document.Project.Solution.Workspace;
var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false);
var symbolDisplayService = document.GetRequiredLanguageService<ISymbolDisplayService>();
var formatter = document.GetRequiredLanguageService<IDocumentationCommentFormattingService>();
var sections = await symbolDisplayService.ToDescriptionGroupsAsync(workspace, semanticModel, _span.Start, ImmutableArray.Create(symbol), cancellationToken).ConfigureAwait(false);
textContentBuilder.AddRange(sections[SymbolDescriptionGroups.MainDescription]);
if (formatter != null)
{
textContentBuilder.AddLineBreak();
textContentBuilder.AddRange(documentation);
var documentation = symbol.GetDocumentationParts(semanticModel, _span.Start, formatter, cancellationToken);
if (documentation.Any())
{
textContentBuilder.AddLineBreak();
textContentBuilder.AddRange(documentation);
}
}
}
if (sections.TryGetValue(SymbolDescriptionGroups.AnonymousTypes, out var parts))
{
if (!parts.IsDefaultOrEmpty)
if (sections.TryGetValue(SymbolDescriptionGroups.AnonymousTypes, out var parts))
{
textContentBuilder.AddLineBreak();
textContentBuilder.AddLineBreak();
textContentBuilder.AddRange(parts);
if (!parts.IsDefaultOrEmpty)
{
textContentBuilder.AddLineBreak();
textContentBuilder.AddLineBreak();
textContentBuilder.AddRange(parts);
}
}
var uiCollection = Implementation.IntelliSense.Helpers.BuildInteractiveTextElements(textContentBuilder.ToImmutableArray<TaggedText>(),
document, _threadingContext, _streamingPresenter);
return uiCollection;
}
}
var uiCollection = Implementation.IntelliSense.Helpers.BuildInteractiveTextElements(textContentBuilder.ToImmutableArray<TaggedText>(),
document, _threadingContext, _streamingPresenter);
return uiCollection;
}
return Array.Empty<object>();
......
......@@ -15,13 +15,13 @@
namespace Microsoft.CodeAnalysis.Editor.InlineHints
{
/// <summary>
/// The purpose of this tagger is to convert the <see cref="InlineParameterNameHintDataTag"/> to
/// the <see cref="InlineParameterNameHintsTag"/>, which actually creates the UIElement. It reacts to
/// tags changing and updates the adornments accordingly.
/// The purpose of this tagger is to convert the <see cref="InlineHintDataTag"/> to the <see
/// cref="InlineHintsTag"/>, which actually creates the UIElement. It reacts to tags changing and updates the
/// adornments accordingly.
/// </summary>
internal sealed class InlineParameterNameHintsTagger : ITagger<IntraTextAdornmentTag>, IDisposable
internal sealed class InlineHintsTagger : ITagger<IntraTextAdornmentTag>, IDisposable
{
private readonly ITagAggregator<InlineParameterNameHintDataTag> _tagAggregator;
private readonly ITagAggregator<InlineHintDataTag> _tagAggregator;
/// <summary>
/// stores the parameter hint tags in a global location
......@@ -42,26 +42,30 @@ internal sealed class InlineParameterNameHintsTagger : ITagger<IntraTextAdornmen
private readonly IClassificationType _hintClassification;
private readonly ForegroundThreadAffinitizedObject _threadAffinitizedObject;
private readonly InlineParameterNameHintsTaggerProvider _inlineParameterNameHintsTaggerProvider;
private readonly InlineHintsTaggerProvider _taggerProvider;
private readonly ITextBuffer _buffer;
private readonly IWpfTextView _textView;
public event EventHandler<SnapshotSpanEventArgs>? TagsChanged;
public InlineParameterNameHintsTagger(InlineParameterNameHintsTaggerProvider taggerProvider, IWpfTextView textView, ITextBuffer buffer, ITagAggregator<InlineParameterNameHintDataTag> tagAggregator)
public InlineHintsTagger(
InlineHintsTaggerProvider taggerProvider,
IWpfTextView textView,
ITextBuffer buffer,
ITagAggregator<InlineHintDataTag> tagAggregator)
{
_cache = new List<ITagSpan<IntraTextAdornmentTag>>();
_threadAffinitizedObject = new ForegroundThreadAffinitizedObject(taggerProvider.ThreadingContext);
_inlineParameterNameHintsTaggerProvider = taggerProvider;
_taggerProvider = taggerProvider;
_textView = textView;
_buffer = buffer;
_tagAggregator = tagAggregator;
_formatMap = taggerProvider.ClassificationFormatMapService.GetClassificationFormatMap(textView);
_hintClassification = taggerProvider.ClassificationTypeRegistryService.GetClassificationType(InlineParameterNameHintsTag.TagId);
_hintClassification = taggerProvider.ClassificationTypeRegistryService.GetClassificationType(InlineHintsTag.TagId);
_formatMap.ClassificationFormatMappingChanged += this.OnClassificationFormatMappingChanged;
_tagAggregator.TagsChanged += OnTagAggregatorTagsChanged;
}
......@@ -125,8 +129,8 @@ public IEnumerable<ITagSpan<IntraTextAdornmentTag>> GetTags(NormalizedSnapshotSp
{
var dataTagSpan = dataTagSpans[0];
var parameterHintSnapshotSpan = new SnapshotSpan(dataTagSpan.Start, 0);
var parameterHintUITag = InlineParameterNameHintsTag.Create(textTag.ParameterName,
Format, _textView, dataTagSpan, textTag.ParameterSymbolKey, _inlineParameterNameHintsTaggerProvider);
var parameterHintUITag = InlineHintsTag.Create(
textTag.Text, Format, _textView, dataTagSpan, textTag.SymbolKey, _taggerProvider);
_cache.Add(new TagSpan<IntraTextAdornmentTag>(parameterHintSnapshotSpan, parameterHintUITag));
}
......
......@@ -24,8 +24,8 @@ namespace Microsoft.CodeAnalysis.Editor.InlineHints
[Export(typeof(IViewTaggerProvider))]
[ContentType(ContentTypeNames.RoslynContentType)]
[TagType(typeof(IntraTextAdornmentTag))]
[Name(nameof(InlineParameterNameHintsTaggerProvider))]
internal class InlineParameterNameHintsTaggerProvider : IViewTaggerProvider
[Name(nameof(InlineHintsTaggerProvider))]
internal class InlineHintsTaggerProvider : IViewTaggerProvider
{
private readonly IViewTagAggregatorFactoryService _viewTagAggregatorFactoryService;
public readonly IClassificationFormatMapService ClassificationFormatMapService;
......@@ -36,7 +36,7 @@ internal class InlineParameterNameHintsTaggerProvider : IViewTaggerProvider
[ImportingConstructor]
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
public InlineParameterNameHintsTaggerProvider(
public InlineHintsTaggerProvider(
IViewTagAggregatorFactoryService viewTagAggregatorFactoryService,
IClassificationFormatMapService classificationFormatMapService,
IClassificationTypeRegistryService classificationTypeRegistryService,
......@@ -61,8 +61,8 @@ internal class InlineParameterNameHintsTaggerProvider : IViewTaggerProvider
return null;
}
var tagAggregator = _viewTagAggregatorFactoryService.CreateTagAggregator<InlineParameterNameHintDataTag>(textView);
return new InlineParameterNameHintsTagger(this, (IWpfTextView)textView, buffer, tagAggregator) as ITagger<T>;
var tagAggregator = _viewTagAggregatorFactoryService.CreateTagAggregator<InlineHintDataTag>(textView);
return new InlineHintsTagger(this, (IWpfTextView)textView, buffer, tagAggregator) as ITagger<T>;
}
}
}
......@@ -936,8 +936,8 @@ Do you want to proceed?</value>
<data name="external" xml:space="preserve">
<value>(external)</value>
</data>
<data name="Inline_Parameter_Name_Hints" xml:space="preserve">
<value>Inline Parameter Name Hints</value>
<data name="Inline_Hints" xml:space="preserve">
<value>Inline Hints</value>
</data>
<data name="Error_creating_instance_of_CodeFixProvider_0" xml:space="preserve">
<value>Error creating instance of CodeFixProvider '{0}'</value>
......
......@@ -11,20 +11,18 @@ namespace Microsoft.CodeAnalysis.Editor.InlineHints
/// The simple tag that only holds information regarding the associated parameter name
/// for the argument
/// </summary>
internal class InlineParameterNameHintDataTag : ITag
internal class InlineHintDataTag : ITag
{
public readonly SymbolKey ParameterSymbolKey;
public readonly string ParameterName;
public readonly string Text;
public readonly SymbolKey? SymbolKey;
public InlineParameterNameHintDataTag(SymbolKey parameterSymbolKey, string parameterName)
public InlineHintDataTag(string text, SymbolKey? symbolKey)
{
if (parameterName.Length == 0)
{
throw new ArgumentException("Must have a length greater than 0", nameof(parameterName));
}
if (text.Length == 0)
throw new ArgumentException("Must have a length greater than 0", nameof(text));
ParameterSymbolKey = parameterSymbolKey;
ParameterName = parameterName;
Text = text;
SymbolKey = symbolKey;
}
}
}
......@@ -27,9 +27,9 @@ namespace Microsoft.CodeAnalysis.Editor.InlineHints
/// </summary>
[Export(typeof(IViewTaggerProvider))]
[ContentType(ContentTypeNames.RoslynContentType)]
[TagType(typeof(InlineParameterNameHintDataTag))]
[Name(nameof(InlineParameterNameHintsDataTaggerProvider))]
internal class InlineParameterNameHintsDataTaggerProvider : AsynchronousViewTaggerProvider<InlineParameterNameHintDataTag>
[TagType(typeof(InlineHintDataTag))]
[Name(nameof(InlineHintsDataTaggerProvider))]
internal class InlineHintsDataTaggerProvider : AsynchronousViewTaggerProvider<InlineHintDataTag>
{
private readonly IAsynchronousOperationListener _listener;
......@@ -37,7 +37,7 @@ internal class InlineParameterNameHintsDataTaggerProvider : AsynchronousViewTagg
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
[ImportingConstructor]
public InlineParameterNameHintsDataTaggerProvider(
public InlineHintsDataTaggerProvider(
IThreadingContext threadingContext,
IAsynchronousOperationListenerProvider listenerProvider,
IForegroundNotificationService notificationService)
......@@ -76,7 +76,7 @@ protected override IEnumerable<SnapshotSpan> GetSpansToTag(ITextView textView, I
return SpecializedCollections.SingletonEnumerable(visibleSpanOpt.Value);
}
protected override async Task ProduceTagsAsync(TaggerContext<InlineParameterNameHintDataTag> context, DocumentSnapshotSpan documentSnapshotSpan, int? caretPosition)
protected override async Task ProduceTagsAsync(TaggerContext<InlineHintDataTag> context, DocumentSnapshotSpan documentSnapshotSpan, int? caretPosition)
{
var cancellationToken = context.CancellationToken;
var document = documentSnapshotSpan.Document;
......@@ -91,11 +91,11 @@ protected override async Task ProduceTagsAsync(TaggerContext<InlineParameterName
Contract.ThrowIfNull(parameterHint.Parameter);
cancellationToken.ThrowIfCancellationRequested();
context.AddTag(new TagSpan<InlineParameterNameHintDataTag>(
context.AddTag(new TagSpan<InlineHintDataTag>(
new SnapshotSpan(snapshotSpan.Snapshot, parameterHint.Position, 0),
new InlineParameterNameHintDataTag(
parameterHint.Parameter.GetSymbolKey(cancellationToken),
parameterHint.Parameter.Name)));
new InlineHintDataTag(
parameterHint.Parameter.Name,
parameterHint.Parameter.GetSymbolKey(cancellationToken))));
}
}
}
......
......@@ -77,9 +77,9 @@
<target state="translated">Přejít na základní typ</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="translated">Nápovědy k názvům vložených parametrů</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Zu Basis wechseln</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Ir a base</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Accéder à la base</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Vai a base</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">基本へ移動</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">기본으로 이동</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Przejdź do podstawy</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Ir Para a Base</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Перейти к базовому</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">Tabana Git</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">转到基础映像</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="translated">内联参数名提示</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -77,9 +77,9 @@
<target state="translated">移至基底</target>
<note />
</trans-unit>
<trans-unit id="Inline_Parameter_Name_Hints">
<source>Inline Parameter Name Hints</source>
<target state="new">Inline Parameter Name Hints</target>
<trans-unit id="Inline_Hints">
<source>Inline Hints</source>
<target state="new">Inline Hints</target>
<note />
</trans-unit>
<trans-unit id="Invalid_assembly_name">
......
......@@ -56,6 +56,24 @@ internal static class InlineHintsOptions
nameof(SuppressForParametersThatMatchMethodIntent),
defaultValue: true,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.InlineParameterNameHints.SuppressForParametersThatMatchMethodIntent"));
public static readonly PerLanguageOption2<bool> EnabledForTypes =
new(nameof(InlineHintsOptions),
nameof(EnabledForTypes),
defaultValue: false,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.InlineTypeHints"));
public static readonly PerLanguageOption2<bool> ForImplicitVariableTypes =
new(nameof(InlineHintsOptions),
nameof(ForImplicitVariableTypes),
defaultValue: true,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.InlineTypeHints.ForImplicitVariableTypes"));
public static readonly PerLanguageOption2<bool> ForLambdaParameterTypes =
new(nameof(InlineHintsOptions),
nameof(ForLambdaParameterTypes),
defaultValue: true,
storageLocations: new RoamingProfileStorageLocation("TextEditor.%LANGUAGE%.Specific.InlineTypeHints.ForLambdaParameterTypes"));
}
[ExportOptionProvider, Shared]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册