diff --git a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs index cbd7db859..ca988c6f9 100644 --- a/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs +++ b/src/PowerShellEditorServices.Protocol/Server/LanguageServer.cs @@ -653,7 +653,7 @@ await editorSession.LanguageService.GetDefinitionOfSymbol( definitionLocations.Add( new Location { - Uri = new Uri("file://" + definition.FoundDefinition.FilePath).AbsoluteUri, + Uri = GetFileUri(definition.FoundDefinition.FilePath), Range = GetRangeFromScriptRegion(definition.FoundDefinition.ScriptRegion) }); } @@ -692,7 +692,7 @@ await editorSession.LanguageService.FindReferencesOfSymbol( { return new Location { - Uri = new Uri("file://" + r.FilePath).AbsoluteUri, + Uri = GetFileUri(r.FilePath), Range = GetRangeFromScriptRegion(r.ScriptRegion) }; }) @@ -936,7 +936,7 @@ protected async Task HandleDocumentSymbolRequest( Kind = GetSymbolKind(r.SymbolType), Location = new Location { - Uri = new Uri("file://" + r.FilePath).AbsolutePath, + Uri = GetFileUri(r.FilePath), Range = GetRangeFromScriptRegion(r.ScriptRegion) }, Name = GetDecoratedSymbolName(r) @@ -1009,7 +1009,7 @@ protected async Task HandleWorkspaceSymbolRequest( Kind = r.SymbolType == SymbolType.Variable ? SymbolKind.Variable : SymbolKind.Function, Location = new Location { - Uri = new Uri("file://" + r.FilePath).AbsoluteUri, + Uri = GetFileUri(r.FilePath), Range = GetRangeFromScriptRegion(r.ScriptRegion) }, Name = GetDecoratedSymbolName(r) @@ -1194,6 +1194,15 @@ await this.SendEvent( #region Helper Methods + private static string GetFileUri(string filePath) + { + // If the file isn't untitled, return a URI-style path + return + !filePath.StartsWith("untitled") + ? new Uri("file://" + filePath).AbsoluteUri + : filePath; + } + private static Range GetRangeFromScriptRegion(ScriptRegion scriptRegion) { return new Range