Skip to content

Commit 5f1253e

Browse files
Fix unicode character uri bug (#1143)
* Handle Uris better for unicode characters * delete commented out code * rob's nit
1 parent edcfd75 commit 5f1253e

20 files changed

+139
-110
lines changed

src/PowerShellEditorServices/PowerShellEditorServices.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
3131
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="3.1.0" />
3232
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.0" />
33-
<PackageReference Include="OmniSharp.Extensions.LanguageServer" Version="0.14.0" />
33+
<PackageReference Include="OmniSharp.Extensions.LanguageServer" Version="0.14.1" />
3434
<PackageReference Include="PowerShellStandard.Library" Version="5.1.1" />
3535
<PackageReference Include="Serilog" Version="2.9.0" />
3636
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
@@ -40,6 +40,6 @@
4040
<PackageReference Include="System.Security.Principal" Version="4.3.0" />
4141
<PackageReference Include="System.Security.Principal.Windows" Version="4.7.0" />
4242
<PackageReference Include="UnixConsoleEcho" Version="0.1.0" />
43-
<PackageReference Include="OmniSharp.Extensions.DebugAdapter.Server" Version="0.14.0" />
43+
<PackageReference Include="OmniSharp.Extensions.DebugAdapter.Server" Version="0.14.1" />
4444
</ItemGroup>
4545
</Project>

src/PowerShellEditorServices/Server/PsesLanguageServer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public async Task StartAsync()
101101
// Grab the workspace path from the parameters
102102
if (request.RootUri != null)
103103
{
104-
workspaceService.WorkspacePath = workspaceService.ResolveFilePath(request.RootUri.ToString());
104+
workspaceService.WorkspacePath = workspaceService.ResolveFileUri(request.RootUri).OriginalString;
105105
}
106106

107107
// Set the working directory of the PowerShell session to the workspace path

src/PowerShellEditorServices/Services/PowerShellContext/EditorOperationsService.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public async Task SetSelectionAsync(BufferRange selectionRange)
8585
public EditorContext ConvertClientEditorContext(
8686
ClientEditorContext clientContext)
8787
{
88-
ScriptFile scriptFile = _workspaceService.CreateScriptFileFromFileBuffer(
88+
ScriptFile scriptFile = _workspaceService.GetFileBuffer(
8989
clientContext.CurrentFilePath,
9090
clientContext.CurrentFileContent);
9191

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void SetCapability(CodeActionCapability capability)
5555

5656
public async Task<CommandOrCodeActionContainer> Handle(CodeActionParams request, CancellationToken cancellationToken)
5757
{
58-
IReadOnlyDictionary<string, MarkerCorrection> corrections = await _analysisService.GetMostRecentCodeActionsForFileAsync(request.TextDocument.Uri.ToString());
58+
IReadOnlyDictionary<string, MarkerCorrection> corrections = await _analysisService.GetMostRecentCodeActionsForFileAsync(request.TextDocument.Uri.OriginalString);
5959

6060
if (corrections == null)
6161
{

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ CodeLensRegistrationOptions IRegistration<CodeLensRegistrationOptions>.GetRegist
6161

6262
public Task<CodeLensContainer> Handle(CodeLensParams request, CancellationToken cancellationToken)
6363
{
64-
ScriptFile scriptFile = _workspaceService.GetFile(
65-
request.TextDocument.Uri.ToString());
64+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
6665

6766
CodeLens[] codeLensResults = ProvideCodeLenses(scriptFile);
6867

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ public async Task<CompletionList> Handle(CompletionParams request, CancellationT
6565
int cursorLine = (int) request.Position.Line + 1;
6666
int cursorColumn = (int) request.Position.Character + 1;
6767

68-
ScriptFile scriptFile =
69-
_workspaceService.GetFile(
70-
request.TextDocument.Uri.ToString());
68+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
7169

7270
CompletionResults completionResults =
7371
await GetCompletionsInFileAsync(

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
5252

5353
public async Task<LocationOrLocationLinks> Handle(DefinitionParams request, CancellationToken cancellationToken)
5454
{
55-
ScriptFile scriptFile =
56-
_workspaceService.GetFile(
57-
request.TextDocument.Uri.ToString());
55+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
5856

5957
SymbolReference foundSymbol =
6058
_symbolsService.FindSymbolAtLocation(

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public Task<DocumentHighlightContainer> Handle(
5656
DocumentHighlightParams request,
5757
CancellationToken cancellationToken)
5858
{
59-
ScriptFile scriptFile = _workspaceService.GetFile(PathUtils.FromUri(request.TextDocument.Uri));
59+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
6060

6161
IReadOnlyList<SymbolReference> symbolOccurrences = _symbolsService.FindOccurrencesInFile(
6262
scriptFile,

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
6060

6161
public Task<SymbolInformationOrDocumentSymbolContainer> Handle(DocumentSymbolParams request, CancellationToken cancellationToken)
6262
{
63-
ScriptFile scriptFile =
64-
_workspaceService.GetFile(
65-
request.TextDocument.Uri.ToString());
63+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
6664

6765
IEnumerable<SymbolReference> foundSymbols =
6866
this.ProvideDocumentSymbols(scriptFile);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public Task<Container<FoldingRange>> Handle(FoldingRangeRequestParam request, Ca
5454
// Perhaps a better option would be to parse the contents of the document as a string
5555
// as opposed to reading a file but the scenario of "no backing file" probably doesn't
5656
// warrant the extra effort.
57-
if (!_workspaceService.TryGetFile(request.TextDocument.Uri.ToString(), out ScriptFile scriptFile)) { return null; }
57+
if (!_workspaceService.TryGetFile(request.TextDocument.Uri, out ScriptFile scriptFile)) { return null; }
5858

5959
var result = new List<FoldingRange>();
6060

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
4646

4747
public async Task<TextEditContainer> Handle(DocumentFormattingParams request, CancellationToken cancellationToken)
4848
{
49-
var scriptFile = _workspaceService.GetFile(request.TextDocument.Uri.ToString());
49+
var scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
5050
var pssaSettings = _configurationService.CurrentSettings.CodeFormatting.GetPSSASettingsHashtable(
5151
(int)request.Options.TabSize,
5252
request.Options.InsertSpaces);
@@ -124,7 +124,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
124124

125125
public async Task<TextEditContainer> Handle(DocumentRangeFormattingParams request, CancellationToken cancellationToken)
126126
{
127-
var scriptFile = _workspaceService.GetFile(request.TextDocument.Uri.ToString());
127+
var scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
128128
var pssaSettings = _configurationService.CurrentSettings.CodeFormatting.GetPSSASettingsHashtable(
129129
(int)request.Options.TabSize,
130130
request.Options.InsertSpaces);

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
5454

5555
public async Task<Hover> Handle(HoverParams request, CancellationToken cancellationToken)
5656
{
57-
ScriptFile scriptFile =
58-
_workspaceService.GetFile(
59-
request.TextDocument.Uri.ToString());
57+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
6058

6159
SymbolDetails symbolDetails =
6260
await _symbolsService.FindSymbolDetailsAtLocationAsync(

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ public TextDocumentRegistrationOptions GetRegistrationOptions()
4848

4949
public async Task<LocationContainer> Handle(ReferenceParams request, CancellationToken cancellationToken)
5050
{
51-
ScriptFile scriptFile =
52-
_workspaceService.GetFile(
53-
request.TextDocument.Uri.ToString());
51+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
5452

5553
SymbolReference foundSymbol =
5654
_symbolsService.FindSymbolAtLocation(

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ public SignatureHelpRegistrationOptions GetRegistrationOptions()
5858

5959
public async Task<SignatureHelp> Handle(SignatureHelpParams request, CancellationToken cancellationToken)
6060
{
61-
ScriptFile scriptFile =
62-
_workspaceService.GetFile(
63-
request.TextDocument.Uri.ToString());
61+
ScriptFile scriptFile = _workspaceService.GetFile(request.TextDocument.Uri);
6462

6563
ParameterSetSignatures parameterSets =
6664
await _symbolsService.FindParameterSetsInFileAsync(

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

+4-6
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public TextDocumentHandler(
5151

5252
public Task<Unit> Handle(DidChangeTextDocumentParams notification, CancellationToken token)
5353
{
54-
ScriptFile changedFile = _workspaceService.GetFile(notification.TextDocument.Uri.ToString());
54+
ScriptFile changedFile = _workspaceService.GetFile(notification.TextDocument.Uri);
5555

5656
// A text change notification can batch multiple change requests
5757
foreach (TextDocumentContentChangeEvent textChange in notification.ContentChanges)
@@ -85,7 +85,7 @@ public Task<Unit> Handle(DidOpenTextDocumentParams notification, CancellationTok
8585
{
8686
ScriptFile openedFile =
8787
_workspaceService.GetFileBuffer(
88-
notification.TextDocument.Uri.ToString(),
88+
notification.TextDocument.Uri,
8989
notification.TextDocument.Text);
9090

9191
// TODO: Get all recently edited files in the workspace
@@ -106,7 +106,7 @@ TextDocumentRegistrationOptions IRegistration<TextDocumentRegistrationOptions>.G
106106
public Task<Unit> Handle(DidCloseTextDocumentParams notification, CancellationToken token)
107107
{
108108
// Find and close the file in the current session
109-
var fileToClose = _workspaceService.GetFile(notification.TextDocument.Uri.ToString());
109+
var fileToClose = _workspaceService.GetFile(notification.TextDocument.Uri);
110110

111111
if (fileToClose != null)
112112
{
@@ -120,9 +120,7 @@ public Task<Unit> Handle(DidCloseTextDocumentParams notification, CancellationTo
120120

121121
public async Task<Unit> Handle(DidSaveTextDocumentParams notification, CancellationToken token)
122122
{
123-
ScriptFile savedFile =
124-
_workspaceService.GetFile(
125-
notification.TextDocument.Uri.ToString());
123+
ScriptFile savedFile = _workspaceService.GetFile(notification.TextDocument.Uri);
126124

127125
if (savedFile != null)
128126
{

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

-9
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,6 @@ private bool IsQueryMatch(string query, string symbolName)
9090
return symbolName.IndexOf(query, StringComparison.OrdinalIgnoreCase) >= 0;
9191
}
9292

93-
private static string GetFileUri(string filePath)
94-
{
95-
// If the file isn't untitled, return a URI-style path
96-
return
97-
!filePath.StartsWith("untitled") && !filePath.StartsWith("inmemory")
98-
? new Uri("file://" + filePath).AbsoluteUri
99-
: filePath;
100-
}
101-
10293
private static Range GetRangeFromScriptRegion(ScriptRegion scriptRegion)
10394
{
10495
return new Range

0 commit comments

Comments
 (0)