diff --git a/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj b/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj
+++ b/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj b/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj
index e01b9d25..04950c9d 100644
--- a/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj
+++ b/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj b/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj
+++ b/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj b/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj
+++ b/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj b/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj
+++ b/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj b/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj
+++ b/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj b/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj
+++ b/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj b/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj
+++ b/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj b/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj
index 002983f8..e35afb8b 100644
--- a/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj
+++ b/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj b/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj
index 985e25b0..18f436f9 100644
--- a/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj
+++ b/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj
@@ -6,7 +6,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj b/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj
index c527401d..df68b7ff 100644
--- a/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj
+++ b/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj
@@ -14,9 +14,9 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs b/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs
index 94a663fa..41a744a4 100644
--- a/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs
+++ b/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Runtime.InteropServices;
using JetBrains.Application.Progress;
using JetBrains.DocumentManagers.impl;
using JetBrains.ProjectModel;
@@ -14,7 +13,7 @@
namespace AgentMulder.ReSharper.Plugin.Components
{
[SolutionComponent]
- public class PatternManagerCache : IPatternManager, ICache
+ public class PatternManagerCache : IPatternManager, IPsiSourceFileCache
{
private readonly object lockObject = new object();
private readonly JetHashSet dirtyFiles = new JetHashSet();
@@ -32,7 +31,7 @@ public PatternManagerCache(SolutionAnalyzer solutionAnalyzer, PsiProjectFileType
public IEnumerable GetRegistrationsForFile(IPsiSourceFile sourceFile)
{
- if (!((ICache)this).UpToDate(sourceFile))
+ if (!((IPsiSourceFileCache)this).UpToDate(sourceFile))
{
Merge(sourceFile, ProcessSourceFile(sourceFile));
}
@@ -50,12 +49,12 @@ public void Refresh()
lock (lockObject)
{
var list = this.ProcessSourceFile(file).ToList();
- ((ICache)this).Merge(file, list);
+ ((IPsiSourceFileCache)this).Merge(file, list);
}
}
}
- object ICache.Build(IPsiSourceFile sourceFile, bool isStartup)
+ object IPsiSourceFileCache.Build(IPsiSourceFile sourceFile, bool isStartup)
{
var registrationInfos = ProcessSourceFile(sourceFile).ToList();
Merge(sourceFile, registrationInfos);
@@ -79,7 +78,7 @@ void ICache.Save(IProgressIndicator progress, bool enablePersistence)
Save?.Invoke(this, EventArgs.Empty);
}
- void ICache.MarkAsDirty(IPsiSourceFile sourceFile)
+ void IPsiSourceFileCache.MarkAsDirty(IPsiSourceFile sourceFile)
{
MarkAsDirty(sourceFile);
}
@@ -92,7 +91,7 @@ private void MarkAsDirty(IPsiSourceFile sourceFile)
}
}
- void ICache.Merge(IPsiSourceFile sourceFile, object builtPart)
+ void IPsiSourceFileCache.Merge(IPsiSourceFile sourceFile, object builtPart)
{
if (builtPart == null)
{
@@ -102,7 +101,7 @@ void ICache.Merge(IPsiSourceFile sourceFile, object builtPart)
Merge(sourceFile, (IEnumerable)builtPart);
}
- void ICache.Drop(IPsiSourceFile sourceFile)
+ void IPsiSourceFileCache.Drop(IPsiSourceFile sourceFile)
{
RemoveFileItems(sourceFile);
}
@@ -140,7 +139,7 @@ private void RemoveFileItems(IPsiSourceFile sourceFile)
}
}
- void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type)
+ void IPsiSourceFileCache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type)
{
var sourceFile = elementContainingChanges?.GetSourceFile();
if (sourceFile == null)
@@ -154,12 +153,12 @@ void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementTyp
}
}
- void ICache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change)
+ void IPsiSourceFileCache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change)
{
MarkAsDirty(sourceFile);
}
- void ICache.SyncUpdate(bool underTransaction)
+ void IPsiSourceFileCache.SyncUpdate(bool underTransaction)
{
lock (lockObject)
{
@@ -167,7 +166,7 @@ void ICache.SyncUpdate(bool underTransaction)
{
foreach (var psiSourceFile in dirtyFiles.ToList()) // ToList to prevent InvalidOperation while enumerating
{
- ((ICache)this).Merge(psiSourceFile, ProcessSourceFile(psiSourceFile));
+ ((IPsiSourceFileCache)this).Merge(psiSourceFile, ProcessSourceFile(psiSourceFile));
}
dirtyFiles.Clear();
@@ -175,7 +174,7 @@ void ICache.SyncUpdate(bool underTransaction)
}
}
- bool ICache.UpToDate(IPsiSourceFile sourceFile)
+ bool IPsiSourceFileCache.UpToDate(IPsiSourceFile sourceFile)
{
lock (lockObject)
{
@@ -208,7 +207,7 @@ public IEnumerable GetAllRegistrations()
{
if (HasDirtyFiles)
{
- ((ICache)this).SyncUpdate(false);
+ ((IPsiSourceFileCache)this).SyncUpdate(false);
}
lock (lockObject)
diff --git a/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs b/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs
index 0f5c1e2f..4e7f4b58 100644
--- a/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs
+++ b/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs
@@ -21,7 +21,7 @@ namespace AgentMulder.ReSharper.Plugin.Components
///
/// This is constructed and injected automatically by the runtime.
[SolutionComponent]
- public sealed class RegisteredTypeCollector : IRegisteredTypeCollector, ICache
+ public sealed class RegisteredTypeCollector : IRegisteredTypeCollector, IPsiSourceFileCache
{
private readonly ConcurrentDictionary dirtyFiles = new ConcurrentDictionary();
private readonly PsiProjectFileTypeCoordinator projectFileTypeCoordinator;
@@ -45,7 +45,7 @@ public RegisteredTypeCollector(PsiProjectFileTypeCoordinator projectFileTypeCoor
/// A read-only collection of type declarations and registration information.
public IEnumerable> GetRegisteredTypes()
{
- ((ICache)this).SyncUpdate(false);
+ ((IPsiSourceFileCache)this).SyncUpdate(false);
// this cache stores declared types for each source file
// when a source file changes, types in that file are recalculated
@@ -58,7 +58,7 @@ public IEnumerable> GetRegisteredType
return types;
}
- object ICache.Build(IPsiSourceFile sourceFile, bool isStartup)
+ object IPsiSourceFileCache.Build(IPsiSourceFile sourceFile, bool isStartup)
{
if (sourceFile.Properties.IsGeneratedFile || sourceFile.Properties.IsNonUserFile)
{
@@ -69,12 +69,12 @@ object ICache.Build(IPsiSourceFile sourceFile, bool isStartup)
// this is because to collect registered types, we first need the pattern manager cache to be completely populated
// that will only happen later - see Refresh()
var list = new List();
- ((ICache)this).Merge(sourceFile, list);
+ ((IPsiSourceFileCache)this).Merge(sourceFile, list);
return list;
}
- void ICache.MarkAsDirty(IPsiSourceFile sf)
+ void IPsiSourceFileCache.MarkAsDirty(IPsiSourceFile sf)
{
dirtyFiles.AddOrUpdate(sf, _ => null, (file, current) => null);
}
@@ -95,7 +95,7 @@ void ICache.Save(IProgressIndicator progress, bool enablePersistence)
// we do not persist this cache
}
- bool ICache.UpToDate(IPsiSourceFile sourceFile)
+ bool IPsiSourceFileCache.UpToDate(IPsiSourceFile sourceFile)
{
if (dirtyFiles.ContainsKey(sourceFile))
{
@@ -116,7 +116,7 @@ bool ICache.UpToDate(IPsiSourceFile sourceFile)
return !languageType.IsNullOrUnknown() && projectFileTypeCoordinator.TryGetService(languageType) != null;
}
- void ICache.Merge(IPsiSourceFile sourceFile, object data)
+ void IPsiSourceFileCache.Merge(IPsiSourceFile sourceFile, object data)
{
// merges the provided data into the cache
// this is usually called after Build
@@ -131,7 +131,7 @@ void ICache.Merge(IPsiSourceFile sourceFile, object data)
dirtyFiles.TryRemove(sourceFile, out _);
}
- void ICache.Drop(IPsiSourceFile sourceFile)
+ void IPsiSourceFileCache.Drop(IPsiSourceFile sourceFile)
{
// removes the specified file from the cache
if (!matchingTypes.ContainsKey(sourceFile))
@@ -142,7 +142,7 @@ void ICache.Drop(IPsiSourceFile sourceFile)
matchingTypes.TryRemove(sourceFile, out _);
}
- void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type)
+ void IPsiSourceFileCache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type)
{
if (type == PsiChangedElementType.Whitespaces)
{
@@ -158,13 +158,13 @@ void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementTyp
dirtyFiles.AddOrUpdate(sourceFile, _ => null, (file, current) => null);
}
- void ICache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change)
+ void IPsiSourceFileCache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change)
{
// marks the document as dirty
- ((ICache)this).MarkAsDirty(sourceFile);
+ ((IPsiSourceFileCache)this).MarkAsDirty(sourceFile);
}
- void ICache.SyncUpdate(bool underTransaction)
+ void IPsiSourceFileCache.SyncUpdate(bool underTransaction)
{
if (underTransaction)
{
@@ -181,14 +181,14 @@ void ICache.SyncUpdate(bool underTransaction)
{
foreach (var psiSourceFile in dirtyFiles.Keys.ToList()) // ToList to prevent InvalidOperation while enumerating
{
- ((ICache)this).Merge(psiSourceFile, CollectTypes(psiSourceFile));
+ ((IPsiSourceFileCache)this).Merge(psiSourceFile, CollectTypes(psiSourceFile));
}
dirtyFiles.Clear();
}
}
- void ICache.Dump(TextWriter writer, IPsiSourceFile sourceFile)
+ void IPsiSourceFileCache.Dump(TextWriter writer, IPsiSourceFile sourceFile)
{
// this is just a debugging facility
}
@@ -213,7 +213,7 @@ public void Refresh()
foreach (var file in matchingTypes.Keys.ToList())
{
var list = CollectTypes(file);
- ((ICache)this).Merge(file, list);
+ ((IPsiSourceFileCache)this).Merge(file, list);
}
}
diff --git a/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs b/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs
index a92e229b..74fe6a24 100644
--- a/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs
+++ b/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs
@@ -1,5 +1,5 @@
using System.Collections.Generic;
-using AgentMulder.ReSharper.Plugin.Highlighting;
+using System.Linq;
using JetBrains.Application.UI.Controls.BulbMenu.Anchors;
using JetBrains.Application.UI.Controls.BulbMenu.Items;
using JetBrains.ProjectModel;
@@ -7,12 +7,12 @@
using JetBrains.ReSharper.Feature.Services.Resources;
using JetBrains.ReSharper.Resources.Shell;
using JetBrains.TextControl.DocumentMarkup;
-
-[assembly: RegisterHighlighter("Container Registration", EffectType = EffectType.GUTTER_MARK, GutterMarkType = typeof(ContainerGutterMark), Layer = 2001)]
+using JetBrains.UI.RichText;
namespace AgentMulder.ReSharper.Plugin.Highlighting
{
- public class ContainerGutterMark : IconGutterMark
+ [RegisterHighlighter("Container Registration", EffectType = EffectType.GUTTER_MARK, GutterMarkType = typeof(ContainerGutterMark), Layer = 2001)]
+ public class ContainerGutterMark : IconGutterMarkType
{
public ContainerGutterMark()
: base(AlteringFeatuThemedIcons.GeneratedMembers.Id)
@@ -33,7 +33,9 @@ public override IEnumerable GetBulbMenuItems(IHighlighter highligh
var clickable = solution?.GetComponent().GetHighlighting(highlighter) as IClickableGutterHighlighting;
clickable?.OnClick();
- }), highlighter.ToolTip, IconId, BulbMenuAnchors.PermanentBackgroundItems, true);
+ }),
+ (highlighter.TryGetTooltip(HighlighterTooltipKind.GutterMark) ?? (RichTextBlock)"The item has no text").Lines.Aggregate((a, b) => a.Append(" ", TextStyle.Default).Append(b)),
+ IconId, BulbMenuAnchors.PermanentBackgroundItems, true);
}
}
}
\ No newline at end of file
diff --git a/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs b/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs
index 8f519412..5b72884e 100644
--- a/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs
+++ b/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs
@@ -7,7 +7,7 @@
namespace AgentMulder.ReSharper.Plugin.Highlighting
{
- [StaticSeverityHighlighting(Severity.INFO, "GutterMarks", OverlapResolve = OverlapResolveKind.NONE, AttributeId = "Container Registration", ShowToolTipInStatusBar = false)]
+ [StaticSeverityHighlighting(Severity.INFO, typeof(HighlightingGroupIds.GutterMarks), OverlapResolve = OverlapResolveKind.NONE, AttributeId = "Container Registration", ShowToolTipInStatusBar = false)]
public class RegisteredByContainerHighlighting : IClickableGutterHighlighting
{
private readonly RegistrationInfo registrationInfo;
diff --git a/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj b/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj
index e076589d..e9db378d 100644
--- a/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj
+++ b/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj
@@ -5,18 +5,19 @@
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/src/AgentMulder.nuspec b/src/AgentMulder.nuspec
index a2dd9133..c4390774 100644
--- a/src/AgentMulder.nuspec
+++ b/src/AgentMulder.nuspec
@@ -13,7 +13,7 @@
Copyright © 2012-2019 Igal Tabachnik, ERNI Community
https://raw.githubusercontent.com/ERNICommunity/AgentMulder/master/logo.png
-• Compatibility with ReSharper 2019.1
+• Compatibility with ReSharper 2021.1
resharper agent mulder agentmulder ioc di windsor castle autofac ninject structuremap unity simpleinjector aspnetcore lightinject
diff --git a/src/Test/Data/NuGet.config b/src/Test/Data/NuGet.config
index a2a298d7..89a201c1 100644
--- a/src/Test/Data/NuGet.config
+++ b/src/Test/Data/NuGet.config
@@ -1,6 +1,7 @@
+