Skip to content

Commit 708d980

Browse files
committed
Get it building again
By searching OmniSharp's diff for what changed, whee.
1 parent 3138f8a commit 708d980

File tree

6 files changed

+29
-49
lines changed

6 files changed

+29
-49
lines changed

src/PowerShellEditorServices/Services/TextDocument/FoldingReference.cs

+6-10
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,18 @@ public int CompareTo(FoldingReference that)
5858
if (EndCharacter > that.EndCharacter) { return 1; }
5959

6060
// They're the same range, but what about kind
61-
if (Kind == null)
61+
if (Kind == that.Kind)
6262
{
63-
if (that.Kind == null)
64-
{
65-
return 0;
66-
}
67-
// that has a kind but this doesn't.
68-
return 1;
63+
return 0;
6964
}
7065

71-
if (that.Kind != null)
66+
// That has a kind but this doesn't.
67+
if (Kind is null && that.Kind is not null)
7268
{
73-
return that.Kind.Value - Kind.Value;
69+
return 1;
7470
}
7571

76-
// this has a kind but that doesn't.
72+
// This has a kind but that doesn't.
7773
return -1;
7874
}
7975

src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentSymbolHandler.cs

+7-22
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22
// Licensed under the MIT License.
33

44
using System.Collections.Generic;
5-
using System.IO;
65
using System.Threading;
76
using System.Threading.Tasks;
87
using Microsoft.Extensions.Logging;
98
using Microsoft.PowerShell.EditorServices.Services;
109
using Microsoft.PowerShell.EditorServices.Services.Symbols;
1110
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
1211
using Microsoft.PowerShell.EditorServices.Utility;
13-
using OmniSharp.Extensions.LanguageServer.Protocol;
1412
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
1513
using OmniSharp.Extensions.LanguageServer.Protocol.Document;
1614
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
@@ -48,7 +46,6 @@ public override async Task<SymbolInformationOrDocumentSymbolContainer> Handle(Do
4846
_logger.LogDebug($"Handling document symbols for {request.TextDocument.Uri}");
4947

5048
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
51-
string containerName = Path.GetFileNameWithoutExtension(scriptFile.FilePath);
5249
List<SymbolInformationOrDocumentSymbol> symbols = new();
5350

5451
foreach (SymbolReference r in ProvideDocumentSymbols(scriptFile))
@@ -70,27 +67,15 @@ public override async Task<SymbolInformationOrDocumentSymbolContainer> Handle(Do
7067
continue;
7168
}
7269

73-
// TODO: This should be a DocumentSymbol now as SymbolInformation is deprecated. But
74-
// this requires figuring out how to populate `children`. Once we do that, the range
75-
// can be NameRegion.
76-
//
77-
// symbols.Add(new SymbolInformationOrDocumentSymbol(new DocumentSymbol
78-
// {
79-
// Name = SymbolTypeUtils.GetDecoratedSymbolName(r),
80-
// Kind = SymbolTypeUtils.GetSymbolKind(r.SymbolType),
81-
// Range = r.ScriptRegion.ToRange(),
82-
// SelectionRange = r.NameRegion.ToRange()
83-
// }));
84-
symbols.Add(new SymbolInformationOrDocumentSymbol(new SymbolInformation
70+
// TODO: This now needs the Children property filled out to support hierarchical
71+
// symbols, and we don't have the information nor algorithm to do that currently.
72+
// OmniSharp was previously doing this for us based on the range, perhaps we can
73+
// find that logic and reuse it.
74+
symbols.Add(new SymbolInformationOrDocumentSymbol(new DocumentSymbol
8575
{
86-
ContainerName = containerName,
8776
Kind = SymbolTypeUtils.GetSymbolKind(r.Type),
88-
Location = new Location
89-
{
90-
Uri = DocumentUri.From(r.FilePath),
91-
// Jump to name start, but keep whole range to support symbol tree in outline
92-
Range = new Range(r.NameRegion.ToRange().Start, r.ScriptRegion.ToRange().End)
93-
},
77+
Range = r.ScriptRegion.ToRange(),
78+
SelectionRange = r.NameRegion.ToRange(),
9479
Name = r.Name
9580
}));
9681
}

src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public override Task<Unit> Handle(DidChangeTextDocumentParams notification, Canc
6161
return Unit.Task;
6262
}
6363

64-
protected override TextDocumentSyncRegistrationOptions CreateRegistrationOptions(SynchronizationCapability capability, ClientCapabilities clientCapabilities)
64+
protected override TextDocumentSyncRegistrationOptions CreateRegistrationOptions(TextSynchronizationCapability capability, ClientCapabilities clientCapabilities)
6565
{
6666
_isFileWatcherSupported = clientCapabilities.Workspace.DidChangeWatchedFiles.IsSupported;
6767
return new TextDocumentSyncRegistrationOptions()

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

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace Microsoft.PowerShell.EditorServices.Handlers
1919
{
2020
internal class PsesWorkspaceSymbolsHandler : WorkspaceSymbolsHandlerBase
2121
{
22-
private static readonly Container<SymbolInformation> s_emptySymbolInformationContainer = new();
22+
private static readonly Container<WorkspaceSymbol> s_emptySymbolInformationContainer = new();
2323
private readonly ILogger _logger;
2424
private readonly SymbolsService _symbolsService;
2525
private readonly WorkspaceService _workspaceService;
@@ -33,12 +33,12 @@ public PsesWorkspaceSymbolsHandler(ILoggerFactory loggerFactory, SymbolsService
3333

3434
protected override WorkspaceSymbolRegistrationOptions CreateRegistrationOptions(WorkspaceSymbolCapability capability, ClientCapabilities clientCapabilities) => new() { };
3535

36-
public override async Task<Container<SymbolInformation>> Handle(WorkspaceSymbolParams request, CancellationToken cancellationToken)
36+
public override async Task<Container<WorkspaceSymbol>> Handle(WorkspaceSymbolParams request, CancellationToken cancellationToken)
3737
{
3838
_logger.LogDebug($"Handling workspace symbols request for query {request.Query}");
3939

4040
await _symbolsService.ScanWorkspacePSFiles(cancellationToken).ConfigureAwait(false);
41-
List<SymbolInformation> symbols = new();
41+
List<WorkspaceSymbol> symbols = new();
4242

4343
foreach (ScriptFile scriptFile in _workspaceService.GetOpenedFiles())
4444
{
@@ -84,8 +84,7 @@ public override async Task<Container<SymbolInformation>> Handle(WorkspaceSymbolP
8484
Range = symbol.NameRegion.ToRange()
8585
};
8686

87-
// TODO: This should be a WorkplaceSymbol now as SymbolInformation is deprecated.
88-
symbols.Add(new SymbolInformation
87+
symbols.Add(new WorkspaceSymbol
8988
{
9089
ContainerName = containerName,
9190
Kind = SymbolTypeUtils.GetSymbolKind(symbol.Type),

src/PowerShellEditorServices/Utility/LspUtils.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ namespace Microsoft.PowerShell.EditorServices.Utility
77
{
88
internal static class LspUtils
99
{
10-
public static DocumentSelector PowerShellDocumentSelector => new(
11-
DocumentFilter.ForLanguage("powershell"),
12-
DocumentFilter.ForLanguage("pwsh"),
10+
public static TextDocumentSelector PowerShellDocumentSelector => new(
11+
TextDocumentFilter.ForLanguage("powershell"),
12+
TextDocumentFilter.ForLanguage("pwsh"),
1313

1414
// The vim extension sets all PowerShell files as language "ps1" so this
1515
// makes sure we track those.
16-
DocumentFilter.ForLanguage("ps1"),
17-
DocumentFilter.ForLanguage("psm1"),
18-
DocumentFilter.ForLanguage("psd1"),
16+
TextDocumentFilter.ForLanguage("ps1"),
17+
TextDocumentFilter.ForLanguage("psm1"),
18+
TextDocumentFilter.ForLanguage("psd1"),
1919

2020
// Also specify the file extensions to be thorough
2121
// This won't handle untitled files which is why we have to do the ones above.
22-
DocumentFilter.ForPattern("**/*.ps*1")
22+
TextDocumentFilter.ForPattern("**/*.ps*1")
2323
);
2424
}
2525
}

test/PowerShellEditorServices.Test.E2E/LanguageServerProtocolMessageTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -122,16 +122,16 @@ function CanSendWorkspaceSymbolRequest {
122122
}
123123
");
124124

125-
Container<SymbolInformation> symbols = await PsesLanguageClient
125+
Container<WorkspaceSymbol> symbols = await PsesLanguageClient
126126
.SendRequest(
127127
"workspace/symbol",
128128
new WorkspaceSymbolParams
129129
{
130130
Query = "CanSendWorkspaceSymbolRequest"
131131
})
132-
.Returning<Container<SymbolInformation>>(CancellationToken.None).ConfigureAwait(true);
132+
.Returning<Container<WorkspaceSymbol>>(CancellationToken.None).ConfigureAwait(true);
133133

134-
SymbolInformation symbol = Assert.Single(symbols);
134+
WorkspaceSymbol symbol = Assert.Single(symbols);
135135
Assert.Equal("function CanSendWorkspaceSymbolRequest ()", symbol.Name);
136136
}
137137

@@ -420,7 +420,7 @@ await PsesLanguageClient
420420
Assert.Collection(symbolInformationOrDocumentSymbols,
421421
symInfoOrDocSym =>
422422
{
423-
Range range = symInfoOrDocSym.SymbolInformation.Location.Range;
423+
Range range = symInfoOrDocSym.DocumentSymbol.Range;
424424

425425
Assert.Equal(1, range.Start.Line);
426426
Assert.Equal(9, range.Start.Character);

0 commit comments

Comments
 (0)