Skip to content

Commit e3356b9

Browse files
shalom938MykolaYaremchuk
authored andcommitted
Fix logic for CodeObjectsHighlighter
1 parent 0f2d77b commit e3356b9

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

rider/Digma.Rider.Plugin/Digma.Rider/Highlighting/CodeLensProviderFactory.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ public class CodeLensProviderFactory
1616
private readonly CodeLensMethodInsightsProvider3 _codeLensMethodInsightsProvider3;
1717
private readonly CodeLensMethodInsightsProvider4 _codeLensMethodInsightsProvider4;
1818
private readonly CodeLensMethodInsightsProvider5 _codeLensMethodInsightsProvider5;
19-
private readonly List<string> _registeredProviders = new();
2019
private readonly Dictionary<string, BaseMethodInsightsProvider> _genericProvidersMap = new();
2120

2221
public CodeLensProviderFactory(
@@ -43,7 +42,7 @@ CodeLensMethodInsightsProvider5 codeLensMethodInsightsProvider5
4342
InitializeGenericProvidersMap();
4443
}
4544

46-
public BaseMethodInsightsProvider GetFactory(string lensTitle)
45+
public BaseMethodInsightsProvider GetProvider(string lensTitle, List<string> usedGenericProviders)
4746
{
4847
if (lensTitle != null)
4948
{
@@ -64,17 +63,22 @@ public BaseMethodInsightsProvider GetFactory(string lensTitle)
6463
return _slowEndpointMethodInsightsProvider;
6564
}
6665
}
67-
return GetNotUsedGenericMethodInsightsProvider();
66+
return GetNotUsedGenericMethodInsightsProvider(usedGenericProviders);
6867
}
6968

70-
private BaseMethodInsightsProvider GetNotUsedGenericMethodInsightsProvider()
69+
private BaseMethodInsightsProvider GetNotUsedGenericMethodInsightsProvider(ICollection<string> usedGenericProviders)
7170
{
7271
var availableProvidersKeys = _genericProvidersMap.Where(p =>
73-
_registeredProviders.All(p2 => !p2.Equals(p.Key)))
72+
usedGenericProviders.All(p2 => !p2.Equals(p.Key)))
7473
.Select(x => x.Key).ToList();
7574

75+
if (availableProvidersKeys.Count == 0)
76+
{
77+
// skip the code lens if all 5 generic available providers are used already
78+
return null;
79+
}
7680
var availableProviderKey = availableProvidersKeys.Count > 0 ? availableProvidersKeys[0] : _genericProvidersMap.First().Key;
77-
_registeredProviders.Add(availableProviderKey);
81+
usedGenericProviders.Add(availableProviderKey);
7882
return _genericProvidersMap[availableProviderKey];
7983
}
8084

rider/Digma.Rider.Plugin/Digma.Rider/Highlighting/CodeObjectsHighlighter.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using Digma.Rider.Discovery;
34
using Digma.Rider.Protocol;
45
using JetBrains.ProjectModel;
@@ -42,12 +43,14 @@ protected override void Run(ICSharpFunctionDeclaration functionDeclaration,
4243
var methodCodeLenses = _codeObjectsHost.GetRiderCodeLensInfo(methodFqn);
4344
if (methodCodeLenses is { Count: > 0 })
4445
{
46+
47+
List<string> usedGenericProviders = new();
4548
Log(_logger, "Found {0} code lens for method {1}", methodCodeLenses.Count, methodFqn);
4649
foreach (var riderCodeLensInfo in methodCodeLenses)
4750
{
4851
Log(_logger, "Installing code lens for code method {0}: {1}", methodFqn, riderCodeLensInfo);
4952
var codeLensMethodInsightsProvider =
50-
_codeLensProviderFactory.GetFactory(riderCodeLensInfo.LensTitle);
53+
_codeLensProviderFactory.GetProvider(riderCodeLensInfo.LensTitle,usedGenericProviders);
5154

5255
highlightingConsumer.AddHighlighting(
5356
new CodeInsightsHighlighting(

0 commit comments

Comments
 (0)