Skip to content

Commit 62142ee

Browse files
Add setting to control references code lens (#1900)
* Add setting to control references code lens * Set `EnableReferencesCodeLens` default to true. Which, being the existing default behavior, fixes the tests. Co-authored-by: Andy Jordan <[email protected]>
1 parent ca8ea82 commit 62142ee

File tree

4 files changed

+31
-11
lines changed

4 files changed

+31
-11
lines changed

src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ internal class ReferencesCodeLensProvider : ICodeLensProvider
3131
private readonly SymbolsService _symbolsService;
3232
private readonly WorkspaceService _workspaceService;
3333

34+
public static string Id => nameof(ReferencesCodeLensProvider);
35+
3436
/// <summary>
3537
/// Specifies a unique identifier for the feature provider, typically a
3638
/// fully-qualified name like "Microsoft.PowerShell.EditorServices.MyProvider"
3739
/// </summary>
38-
public string ProviderId => nameof(ReferencesCodeLensProvider);
40+
public string ProviderId => Id;
3941

4042
/// <summary>
4143
/// Construct a new ReferencesCodeLensProvider for a given EditorSession.

src/PowerShellEditorServices/Services/Symbols/SymbolsService.cs

+23-8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.Extensions.Logging;
1717
using Microsoft.PowerShell.EditorServices.CodeLenses;
1818
using Microsoft.PowerShell.EditorServices.Logging;
19+
using Microsoft.PowerShell.EditorServices.Services.Configuration;
1920
using Microsoft.PowerShell.EditorServices.Services.PowerShell;
2021
using Microsoft.PowerShell.EditorServices.Services.PowerShell.Runspace;
2122
using Microsoft.PowerShell.EditorServices.Services.PowerShell.Utility;
@@ -66,17 +67,15 @@ public SymbolsService(
6667
_workspaceService = workspaceService;
6768

6869
_codeLensProviders = new ConcurrentDictionary<string, ICodeLensProvider>();
69-
ICodeLensProvider[] codeLensProviders = new ICodeLensProvider[]
70+
if (configurationService.CurrentSettings.EnableReferencesCodeLens)
7071
{
71-
new ReferencesCodeLensProvider(_workspaceService, this),
72-
new PesterCodeLensProvider(configurationService)
73-
};
74-
75-
foreach (ICodeLensProvider codeLensProvider in codeLensProviders)
76-
{
77-
_codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider);
72+
ReferencesCodeLensProvider referencesProvider = new(_workspaceService, this);
73+
_codeLensProviders.TryAdd(referencesProvider.ProviderId, referencesProvider);
7874
}
7975

76+
PesterCodeLensProvider pesterProvider = new(configurationService);
77+
_codeLensProviders.TryAdd(pesterProvider.ProviderId, pesterProvider);
78+
8079
_documentSymbolProviders = new ConcurrentDictionary<string, IDocumentSymbolProvider>();
8180
IDocumentSymbolProvider[] documentSymbolProviders = new IDocumentSymbolProvider[]
8281
{
@@ -671,5 +670,21 @@ public static FunctionDefinitionAst GetFunctionDefinitionAtLine(
671670

672671
return functionDefinitionAst as FunctionDefinitionAst;
673672
}
673+
674+
internal void OnConfigurationUpdated(object _, LanguageServerSettings e)
675+
{
676+
if (e.EnableReferencesCodeLens)
677+
{
678+
if (_codeLensProviders.ContainsKey(ReferencesCodeLensProvider.Id))
679+
{
680+
return;
681+
}
682+
683+
TryRegisterCodeLensProvider(new ReferencesCodeLensProvider(_workspaceService, this));
684+
return;
685+
}
686+
687+
DeregisterCodeLensProvider(ReferencesCodeLensProvider.Id);
688+
}
674689
}
675690
}

src/PowerShellEditorServices/Services/Workspace/Handlers/ConfigurationHandler.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,21 @@ internal class PsesConfigurationHandler : DidChangeConfigurationHandlerBase
2424
private readonly WorkspaceService _workspaceService;
2525
private readonly ConfigurationService _configurationService;
2626
private readonly ILanguageServerFacade _languageServer;
27-
2827
public PsesConfigurationHandler(
2928
ILoggerFactory factory,
3029
WorkspaceService workspaceService,
3130
AnalysisService analysisService,
3231
ConfigurationService configurationService,
33-
ILanguageServerFacade languageServer)
32+
ILanguageServerFacade languageServer,
33+
SymbolsService symbolsService)
3434
{
3535
_logger = factory.CreateLogger<PsesConfigurationHandler>();
3636
_workspaceService = workspaceService;
3737
_configurationService = configurationService;
3838
_languageServer = languageServer;
3939

4040
ConfigurationUpdated += analysisService.OnConfigurationUpdated;
41+
ConfigurationUpdated += symbolsService.OnConfigurationUpdated;
4142
}
4243

4344
public override async Task<Unit> Handle(DidChangeConfigurationParams request, CancellationToken cancellationToken)

src/PowerShellEditorServices/Services/Workspace/LanguageServerSettings.cs

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ internal class LanguageServerSettings
2222
public CodeFoldingSettings CodeFolding { get; set; }
2323
public PesterSettings Pester { get; set; }
2424
public string Cwd { get; set; }
25+
public bool EnableReferencesCodeLens { get; set; } = true;
2526

2627
public LanguageServerSettings()
2728
{
@@ -46,6 +47,7 @@ public void Update(
4647
CodeFolding.Update(settings.CodeFolding, logger);
4748
Pester.Update(settings.Pester, logger);
4849
Cwd = settings.Cwd;
50+
EnableReferencesCodeLens = settings.EnableReferencesCodeLens;
4951
}
5052
}
5153
}

0 commit comments

Comments
 (0)