Skip to content

Commit e6222af

Browse files
committed
CoverageLineGlyphTaggerProvider to prepare coverage colours
1 parent e3e0ff9 commit e6222af

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

SharedProject/Impl/CoverageLineGlyphTagger.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,28 @@
55
using Microsoft.VisualStudio.Text.Tagging;
66
using FineCodeCoverage.Engine.Model;
77
using System.Linq;
8-
using Microsoft.VisualStudio.Shell;
98

109
namespace FineCodeCoverage.Impl
1110
{
1211
internal class CoverageLineGlyphTagger : ITagger<CoverageLineGlyphTag>
1312
{
1413
private readonly ITextBuffer _textBuffer;
1514
private readonly IFCCEngine fccEngine;
16-
private readonly ICoverageColoursProvider coverageColoursProvider;
1715

1816
public event EventHandler<SnapshotSpanEventArgs> TagsChanged;
1917

20-
public CoverageLineGlyphTagger(ITextBuffer textBuffer, IFCCEngine fccEngine, ICoverageColoursProvider coverageColoursProvider)
18+
public CoverageLineGlyphTagger(ITextBuffer textBuffer, IFCCEngine fccEngine)
2119
{
2220
_textBuffer = textBuffer;
2321
this.fccEngine = fccEngine;
24-
this.coverageColoursProvider = coverageColoursProvider;
2522
fccEngine.UpdateMarginTags += FCCEngine_UpdateMarginTags;
2623
}
2724

2825
private void FCCEngine_UpdateMarginTags(UpdateMarginTagsEventArgs e)
2926
{
30-
#pragma warning disable VSTHRD102 // Implement internal logic asynchronously
31-
ThreadHelper.JoinableTaskFactory.Run(async () =>
32-
#pragma warning restore VSTHRD102 // Implement internal logic asynchronously
33-
{
34-
await coverageColoursProvider.PrepareAsync();
35-
var span = new SnapshotSpan(_textBuffer.CurrentSnapshot, 0, _textBuffer.CurrentSnapshot.Length);
36-
var spanEventArgs = new SnapshotSpanEventArgs(span);
37-
TagsChanged?.Invoke(this, spanEventArgs);
38-
});
39-
27+
var span = new SnapshotSpan(_textBuffer.CurrentSnapshot, 0, _textBuffer.CurrentSnapshot.Length);
28+
var spanEventArgs = new SnapshotSpanEventArgs(span);
29+
TagsChanged?.Invoke(this, spanEventArgs);
4030
}
4131

4232
IEnumerable<ITagSpan<CoverageLineGlyphTag>> ITagger<CoverageLineGlyphTag>.GetTags(NormalizedSnapshotSpanCollection spans)

SharedProject/Impl/CoverageLineGlyphTaggerProvider.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.ComponentModel.Composition;
44
using Microsoft.VisualStudio.Text.Tagging;
55
using FineCodeCoverage.Engine;
6+
using Microsoft.VisualStudio.Shell;
67

78
namespace FineCodeCoverage.Impl
89
{
@@ -16,14 +17,29 @@ internal class CoverageLineGlyphTaggerProvider : ITaggerProvider
1617
private readonly ICoverageColoursProvider coverageColoursProvider;
1718

1819
[ImportingConstructor]
19-
public CoverageLineGlyphTaggerProvider(IFCCEngine fccEngine, ICoverageColoursProvider coverageColoursProvider)
20+
public CoverageLineGlyphTaggerProvider(
21+
IFCCEngine fccEngine,
22+
ICoverageColoursProvider coverageColoursProvider)
2023
{
2124
this.fccEngine = fccEngine;
25+
fccEngine.UpdateMarginTags += FccEngine_UpdateMarginTags;
2226
this.coverageColoursProvider = coverageColoursProvider;
2327
}
24-
public ITagger<T> CreateTagger<T>(ITextBuffer textBuffer) where T : ITag
28+
29+
private void FccEngine_UpdateMarginTags(UpdateMarginTagsEventArgs e)
30+
{
31+
#pragma warning disable VSTHRD102 // Implement internal logic asynchronously
32+
ThreadHelper.JoinableTaskFactory.Run(async () =>
33+
#pragma warning restore VSTHRD102 // Implement internal logic asynchronously
34+
{
35+
await coverageColoursProvider.PrepareAsync();
36+
});
37+
38+
}
39+
40+
public ITagger<T> CreateTagger<T>(ITextBuffer textBuffer) where T : ITag
2541
{
26-
return new CoverageLineGlyphTagger(textBuffer, fccEngine, coverageColoursProvider) as ITagger<T>;
42+
return new CoverageLineGlyphTagger(textBuffer, fccEngine) as ITagger<T>;
2743
}
2844
}
2945
}

0 commit comments

Comments
 (0)