diff --git a/src/PowerShellEditorServices/Extensions/Api/WorkspaceService.cs b/src/PowerShellEditorServices/Extensions/Api/WorkspaceService.cs
index 3cb5635b5..5647f1a59 100644
--- a/src/PowerShellEditorServices/Extensions/Api/WorkspaceService.cs
+++ b/src/PowerShellEditorServices/Extensions/Api/WorkspaceService.cs
@@ -93,7 +93,7 @@ internal EditorScriptFile(
ScriptFile scriptFile)
{
_scriptFile = scriptFile;
- Uri = new Uri(scriptFile.DocumentUri);
+ Uri = scriptFile.DocumentUri.ToUri();
Lines = _scriptFile.FileLines.AsReadOnly();
}
diff --git a/src/PowerShellEditorServices/Extensions/FileContext.cs b/src/PowerShellEditorServices/Extensions/FileContext.cs
index 1276726ea..1b563f148 100644
--- a/src/PowerShellEditorServices/Extensions/FileContext.cs
+++ b/src/PowerShellEditorServices/Extensions/FileContext.cs
@@ -50,7 +50,7 @@ public sealed class FileContext
///
/// Gets the URI of the file.
///
- public Uri Uri { get; }
+ public Uri Uri { get; }
///
/// Gets the parsed token list for the file.
@@ -96,7 +96,7 @@ internal FileContext(
this.editorContext = editorContext;
this.editorOperations = editorOperations;
this.Language = language;
- this.Uri = new Uri(scriptFile.DocumentUri);
+ this.Uri = scriptFile.DocumentUri.ToUri();
}
#endregion
@@ -230,7 +230,7 @@ public void InsertText(
public void InsertText(string textToInsert, IFileRange insertRange)
{
this.editorOperations
- .InsertTextAsync(this.scriptFile.ClientFilePath, textToInsert, insertRange.ToBufferRange())
+ .InsertTextAsync(this.scriptFile.DocumentUri.ToString(), textToInsert, insertRange.ToBufferRange())
.Wait();
}
diff --git a/src/PowerShellEditorServices/Hosting/EditorServicesServerFactory.cs b/src/PowerShellEditorServices/Hosting/EditorServicesServerFactory.cs
index 472d1157e..cfb49699b 100644
--- a/src/PowerShellEditorServices/Hosting/EditorServicesServerFactory.cs
+++ b/src/PowerShellEditorServices/Hosting/EditorServicesServerFactory.cs
@@ -13,7 +13,7 @@
using Microsoft.PowerShell.EditorServices.Services;
using Serilog;
using Serilog.Events;
-using OmniSharp.Extensions.LanguageServer.Server;
+using OmniSharp.Extensions.LanguageServer.Protocol.Server;
#if DEBUG
using Serilog.Debugging;
@@ -126,7 +126,7 @@ public PsesDebugServer CreateDebugServerForTempSession(Stream inputStream, Strea
.AddPsesLanguageServices(hostStartupInfo)
// For a Temp session, there is no LanguageServer so just set it to null
.AddSingleton(
- typeof(OmniSharp.Extensions.LanguageServer.Protocol.Server.ILanguageServer),
+ typeof(ILanguageServer),
_ => null)
.BuildServiceProvider();
diff --git a/src/PowerShellEditorServices/PowerShellEditorServices.csproj b/src/PowerShellEditorServices/PowerShellEditorServices.csproj
index c49159cc9..7e28c7d94 100644
--- a/src/PowerShellEditorServices/PowerShellEditorServices.csproj
+++ b/src/PowerShellEditorServices/PowerShellEditorServices.csproj
@@ -40,6 +40,7 @@
+
@@ -49,7 +50,6 @@
-
diff --git a/src/PowerShellEditorServices/Server/PsesLanguageServer.cs b/src/PowerShellEditorServices/Server/PsesLanguageServer.cs
index ff94ecad7..8a3818dd5 100644
--- a/src/PowerShellEditorServices/Server/PsesLanguageServer.cs
+++ b/src/PowerShellEditorServices/Server/PsesLanguageServer.cs
@@ -10,6 +10,7 @@
using Microsoft.PowerShell.EditorServices.Handlers;
using Microsoft.PowerShell.EditorServices.Hosting;
using Microsoft.PowerShell.EditorServices.Services;
+using OmniSharp.Extensions.LanguageServer.Protocol.Server;
using OmniSharp.Extensions.LanguageServer.Server;
using Serilog;
@@ -68,23 +69,23 @@ public async Task StartAsync()
.AddSerilog(Log.Logger)
.AddLanguageServer(_minimumLogLevel)
.SetMinimumLevel(_minimumLogLevel))
- .WithHandler()
- .WithHandler()
+ .WithHandler()
+ .WithHandler()
.WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
.WithHandler()
- .WithHandler()
- .WithHandler()
+ .WithHandler()
+ .WithHandler()
.WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
- .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
+ .WithHandler()
.WithHandler()
.WithHandler()
.WithHandler()
diff --git a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs
index 858441fa8..de4bcf01e 100644
--- a/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs
+++ b/src/PowerShellEditorServices/Services/Analysis/AnalysisService.cs
@@ -9,7 +9,6 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -18,6 +17,7 @@
using Microsoft.PowerShell.EditorServices.Services.Configuration;
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
using OmniSharp.Extensions.LanguageServer.Protocol;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
@@ -136,8 +136,7 @@ public AnalysisService(
/// A cancellation token to cancel this call with.
/// A task that finishes when script diagnostics have been published.
public void RunScriptDiagnostics(
- ScriptFile[] filesToAnalyze,
- CancellationToken cancellationToken)
+ ScriptFile[] filesToAnalyze)
{
if (_configurationService.CurrentSettings.ScriptAnalysis.Enable == false)
{
@@ -146,10 +145,8 @@ public void RunScriptDiagnostics(
EnsureEngineSettingsCurrent();
- // Create a cancellation token source that will cancel if we do or if the caller does
- var cancellationSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
-
// If there's an existing task, we want to cancel it here;
+ var cancellationSource = new CancellationTokenSource();
CancellationTokenSource oldTaskCancellation = Interlocked.Exchange(ref _diagnosticsCancellationTokenSource, cancellationSource);
if (oldTaskCancellation != null)
{
@@ -420,9 +417,9 @@ private void PublishScriptDiagnostics(ScriptFile scriptFile, IReadOnlyList(diagnostics)
});
}
diff --git a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs
index 557f43e9f..e6e025286 100644
--- a/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs
+++ b/src/PowerShellEditorServices/Services/CodeLens/PesterCodeLensProvider.cs
@@ -55,7 +55,7 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile
Data = JToken.FromObject(new {
Uri = scriptFile.DocumentUri,
ProviderId = nameof(PesterCodeLensProvider)
- }),
+ }, Serializer.Instance.JsonSerializer),
Command = new Command()
{
Name = "PowerShell.RunPesterTests",
@@ -66,8 +66,7 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile
false /* No debug */,
pesterSymbol.TestName,
pesterSymbol.ScriptRegion?.StartLineNumber
- },
- Serializer.Instance.JsonSerializer)
+ }, Serializer.Instance.JsonSerializer)
}
},
@@ -77,7 +76,7 @@ private CodeLens[] GetPesterLens(PesterSymbolReference pesterSymbol, ScriptFile
Data = JToken.FromObject(new {
Uri = scriptFile.DocumentUri,
ProviderId = nameof(PesterCodeLensProvider)
- }),
+ }, Serializer.Instance.JsonSerializer),
Command = new Command()
{
Name = "PowerShell.RunPesterTests",
diff --git a/src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs b/src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs
index edf5c7cff..82ae08b1a 100644
--- a/src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs
+++ b/src/PowerShellEditorServices/Services/CodeLens/ReferencesCodeLensProvider.cs
@@ -68,7 +68,7 @@ public CodeLens[] ProvideCodeLenses(ScriptFile scriptFile)
{
Uri = scriptFile.DocumentUri,
ProviderId = nameof(ReferencesCodeLensProvider)
- }),
+ }, Serializer.Instance.JsonSerializer),
Range = sym.ScriptRegion.ToRange()
});
}
diff --git a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/BreakpointHandlers.cs b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/BreakpointHandlers.cs
index f50221c92..a1c7a030a 100644
--- a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/BreakpointHandlers.cs
+++ b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/BreakpointHandlers.cs
@@ -87,7 +87,7 @@ public SetExceptionBreakpointsHandler(
DebugService debugService,
DebugStateService debugStateService)
{
- _logger = loggerFactory.CreateLogger();
+ _logger = loggerFactory.CreateLogger();
_debugService = debugService;
_debugStateService = debugStateService;
}
@@ -133,7 +133,7 @@ public SetBreakpointsHandler(
DebugStateService debugStateService,
WorkspaceService workspaceService)
{
- _logger = loggerFactory.CreateLogger();
+ _logger = loggerFactory.CreateLogger();
_debugService = debugService;
_debugStateService = debugStateService;
_workspaceService = workspaceService;
diff --git a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/ConfigurationDoneHandler.cs b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/ConfigurationDoneHandler.cs
index 118f0a925..12e77552e 100644
--- a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/ConfigurationDoneHandler.cs
+++ b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/ConfigurationDoneHandler.cs
@@ -37,7 +37,7 @@ public ConfigurationDoneHandler(
PowerShellContextService powerShellContextService,
WorkspaceService workspaceService)
{
- _logger = loggerFactory.CreateLogger();
+ _logger = loggerFactory.CreateLogger();
_jsonRpcServer = jsonRpcServer;
_debugService = debugService;
_debugStateService = debugStateService;
@@ -106,7 +106,7 @@ private async Task LaunchScriptAsync(string scriptToLaunch)
// By doing this, we light up the ability to debug Untitled files with breakpoints.
// This is only possible via the direct usage of the breakpoint APIs in PowerShell because
// Set-PSBreakpoint validates that paths are actually on the filesystem.
- ScriptBlockAst ast = Parser.ParseInput(untitledScript.Contents, untitledScript.DocumentUri, out Token[] tokens, out ParseError[] errors);
+ ScriptBlockAst ast = Parser.ParseInput(untitledScript.Contents, untitledScript.DocumentUri.ToString(), out Token[] tokens, out ParseError[] errors);
// This seems to be the simplest way to invoke a script block (which contains breakpoint information) via the PowerShell API.
var cmd = new PSCommand().AddScript(". $args[0]").AddArgument(ast.GetScriptBlock());
diff --git a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/VariablesHandler.cs b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/VariablesHandler.cs
index 5854d7a58..4528981ba 100644
--- a/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/VariablesHandler.cs
+++ b/src/PowerShellEditorServices/Services/DebugAdapter/Handlers/VariablesHandler.cs
@@ -25,7 +25,7 @@ public VariablesHandler(
ILoggerFactory loggerFactory,
DebugService debugService)
{
- _logger = loggerFactory.CreateLogger();
+ _logger = loggerFactory.CreateLogger();
_debugService = debugService;
}
diff --git a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetVersionHandler.cs b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetVersionHandler.cs
index 47b397400..93d8888cf 100644
--- a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetVersionHandler.cs
+++ b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/GetVersionHandler.cs
@@ -10,10 +10,10 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.PowerShell.EditorServices.Services;
-using Microsoft.PowerShell.EditorServices.Services.PowerShellContext;
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
+using OmniSharp.Extensions.LanguageServer.Protocol.Window;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
@@ -96,7 +96,7 @@ private async Task CheckPackageManagement()
}
var takeActionText = "Yes";
- MessageActionItem messageAction = await _languageServer.Window.ShowMessage(new ShowMessageRequestParams
+ MessageActionItem messageAction = await _languageServer.Window.ShowMessageRequest(new ShowMessageRequestParams
{
Message = "You have an older version of PackageManagement known to cause issues with the PowerShell extension. Would you like to update PackageManagement (You will need to restart the PowerShell extension after)?",
Type = MessageType.Warning,
diff --git a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/PSHostProcessAndRunspaceHandlers.cs b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/PSHostProcessAndRunspaceHandlers.cs
index 1b6ccc8f0..580045ce6 100644
--- a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/PSHostProcessAndRunspaceHandlers.cs
+++ b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/PSHostProcessAndRunspaceHandlers.cs
@@ -17,12 +17,12 @@ namespace Microsoft.PowerShell.EditorServices.Handlers
internal class PSHostProcessAndRunspaceHandlers : IGetPSHostProcessesHandler, IGetRunspaceHandler
{
- private readonly ILogger _logger;
+ private readonly ILogger _logger;
private readonly PowerShellContextService _powerShellContextService;
public PSHostProcessAndRunspaceHandlers(ILoggerFactory factory, PowerShellContextService powerShellContextService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_powerShellContextService = powerShellContextService;
}
diff --git a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/TemplateHandlers.cs b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/TemplateHandlers.cs
index 646c79358..4d31d79d5 100644
--- a/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/TemplateHandlers.cs
+++ b/src/PowerShellEditorServices/Services/PowerShellContext/Handlers/TemplateHandlers.cs
@@ -14,14 +14,14 @@ namespace Microsoft.PowerShell.EditorServices.Handlers
{
internal class TemplateHandlers : IGetProjectTemplatesHandler, INewProjectFromTemplateHandler
{
- private readonly ILogger _logger;
+ private readonly ILogger _logger;
private readonly TemplateService _templateService;
public TemplateHandlers(
ILoggerFactory factory,
TemplateService templateService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_templateService = templateService;
}
diff --git a/src/PowerShellEditorServices/Services/PowerShellContext/PowerShellContextService.cs b/src/PowerShellEditorServices/Services/PowerShellContext/PowerShellContextService.cs
index e4508d13f..fbbfbc9dc 100644
--- a/src/PowerShellEditorServices/Services/PowerShellContext/PowerShellContextService.cs
+++ b/src/PowerShellEditorServices/Services/PowerShellContext/PowerShellContextService.cs
@@ -32,7 +32,7 @@ namespace Microsoft.PowerShell.EditorServices.Services
/// Handles nested PowerShell prompts and also manages execution of
/// commands whether inside or outside of the debugger.
///
- internal class PowerShellContextService : IDisposable, IHostSupportsInteractiveSession
+ internal class PowerShellContextService : IHostSupportsInteractiveSession
{
private static readonly string s_commandsModulePath = Path.GetFullPath(
Path.Combine(
@@ -1402,11 +1402,12 @@ private void ResumeDebugger(DebuggerResumeAction resumeAction, bool shouldWaitFo
}
///
- /// Disposes the runspace and any other resources being used
+ /// Closes the runspace and any other resources being used
/// by this PowerShellContext.
///
- public void Dispose()
+ public void Close()
{
+ logger.LogDebug("Closing PowerShellContextService...");
this.PromptNest.Dispose();
this.SessionState = PowerShellContextState.Disposed;
diff --git a/src/PowerShellEditorServices/Services/Symbols/Vistors/FindDeclarationVisitor.cs b/src/PowerShellEditorServices/Services/Symbols/Vistors/FindDeclarationVisitor.cs
index 91f3671ff..3ef4fc1ed 100644
--- a/src/PowerShellEditorServices/Services/Symbols/Vistors/FindDeclarationVisitor.cs
+++ b/src/PowerShellEditorServices/Services/Symbols/Vistors/FindDeclarationVisitor.cs
@@ -50,7 +50,8 @@ public override AstVisitAction VisitFunctionDefinition(FunctionDefinitionAst fun
StartLineNumber = functionDefinitionAst.Extent.StartLineNumber,
StartColumnNumber = startColumnNumber,
EndLineNumber = functionDefinitionAst.Extent.StartLineNumber,
- EndColumnNumber = startColumnNumber + functionDefinitionAst.Name.Length
+ EndColumnNumber = startColumnNumber + functionDefinitionAst.Name.Length,
+ File = functionDefinitionAst.Extent.File
};
if (symbolRef.SymbolType.Equals(SymbolType.Function) &&
diff --git a/src/PowerShellEditorServices/Services/Symbols/Vistors/FindSymbolsVisitor.cs b/src/PowerShellEditorServices/Services/Symbols/Vistors/FindSymbolsVisitor.cs
index b8444fc64..63e6003d6 100644
--- a/src/PowerShellEditorServices/Services/Symbols/Vistors/FindSymbolsVisitor.cs
+++ b/src/PowerShellEditorServices/Services/Symbols/Vistors/FindSymbolsVisitor.cs
@@ -129,7 +129,8 @@ public override AstVisitAction VisitHashtable(HashtableAst hashtableAst)
StartLineNumber = kvp.Item1.Extent.StartLineNumber,
EndLineNumber = kvp.Item2.Extent.EndLineNumber,
StartColumnNumber = kvp.Item1.Extent.StartColumnNumber,
- EndColumnNumber = kvp.Item2.Extent.EndColumnNumber
+ EndColumnNumber = kvp.Item2.Extent.EndColumnNumber,
+ File = hashtableAst.Extent.File
};
SymbolType symbolType = SymbolType.HashtableKey;
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeActionHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeActionHandler.cs
index a054dbdf1..fc57045dd 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeActionHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeActionHandler.cs
@@ -14,12 +14,12 @@
using Microsoft.PowerShell.EditorServices.Utility;
using Newtonsoft.Json.Linq;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class CodeActionHandler : ICodeActionHandler
+ internal class PsesCodeActionHandler : ICodeActionHandler
{
private static readonly CodeActionKind[] s_supportedCodeActions = new[]
{
@@ -36,9 +36,9 @@ internal class CodeActionHandler : ICodeActionHandler
private CodeActionCapability _capability;
- public CodeActionHandler(ILoggerFactory factory, AnalysisService analysisService, WorkspaceService workspaceService)
+ public PsesCodeActionHandler(ILoggerFactory factory, AnalysisService analysisService, WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_analysisService = analysisService;
_workspaceService = workspaceService;
_registrationOptions = new CodeActionRegistrationOptions
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs
index 334b4b913..a43dac341 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CodeLensHandlers.cs
@@ -17,12 +17,12 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class CodeLensHandlers : ICodeLensHandler, ICodeLensResolveHandler
+ internal class PsesCodeLensHandlers : ICodeLensHandler, ICodeLensResolveHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
@@ -30,9 +30,9 @@ internal class CodeLensHandlers : ICodeLensHandler, ICodeLensResolveHandler
private CodeLensCapability _capability;
- public CodeLensHandlers(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService, ConfigurationService configurationService)
+ public PsesCodeLensHandlers(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService, ConfigurationService configurationService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_workspaceService = workspaceService;
_symbolsService = symbolsService;
}
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CompletionHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CompletionHandler.cs
index f01073733..421f766a3 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/CompletionHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/CompletionHandler.cs
@@ -16,12 +16,12 @@
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class CompletionHandler : ICompletionHandler, ICompletionResolveHandler
+ internal class PsesCompletionHandler : ICompletionHandler, ICompletionResolveHandler
{
const int DefaultWaitTimeoutMilliseconds = 5000;
private readonly SemaphoreSlim _completionLock = AsyncUtils.CreateSimpleLockingSemaphore();
@@ -41,12 +41,12 @@ internal class CompletionHandler : ICompletionHandler, ICompletionResolveHandler
private CompletionCapability _capability;
- public CompletionHandler(
+ public PsesCompletionHandler(
ILoggerFactory factory,
PowerShellContextService powerShellContextService,
WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_powerShellContextService = powerShellContextService;
_workspaceService = workspaceService;
}
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DefinitionHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DefinitionHandler.cs
index 744b14128..25c384620 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DefinitionHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DefinitionHandler.cs
@@ -13,12 +13,12 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class DefinitionHandler : IDefinitionHandler
+ internal class PsesDefinitionHandler : IDefinitionHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
@@ -26,12 +26,12 @@ internal class DefinitionHandler : IDefinitionHandler
private DefinitionCapability _capability;
- public DefinitionHandler(
+ public PsesDefinitionHandler(
ILoggerFactory factory,
SymbolsService symbolsService,
WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_symbolsService = symbolsService;
_workspaceService = workspaceService;
}
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentHighlightHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentHighlightHandler.cs
index 6a57948d3..5daa111f5 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentHighlightHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentHighlightHandler.cs
@@ -9,15 +9,15 @@
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class DocumentHighlightHandler : IDocumentHighlightHandler
+ internal class PsesDocumentHighlightHandler : IDocumentHighlightHandler
{
private static readonly DocumentHighlightContainer s_emptyHighlightContainer = new DocumentHighlightContainer();
@@ -29,12 +29,12 @@ internal class DocumentHighlightHandler : IDocumentHighlightHandler
private DocumentHighlightCapability _capability;
- public DocumentHighlightHandler(
+ public PsesDocumentHighlightHandler(
ILoggerFactory loggerFactory,
WorkspaceService workspaceService,
SymbolsService symbolService)
{
- _logger = loggerFactory.CreateLogger();
+ _logger = loggerFactory.CreateLogger();
_workspaceService = workspaceService;
_symbolsService = symbolService;
_logger.LogInformation("highlight handler loaded");
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentSymbolHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentSymbolHandler.cs
index 743b721d3..bbf5d3109 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentSymbolHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/DocumentSymbolHandler.cs
@@ -18,12 +18,12 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class DocumentSymbolHandler : IDocumentSymbolHandler
+ internal class PsesDocumentSymbolHandler : IDocumentSymbolHandler
{
private readonly ILogger _logger;
private readonly WorkspaceService _workspaceService;
@@ -32,9 +32,9 @@ internal class DocumentSymbolHandler : IDocumentSymbolHandler
private DocumentSymbolCapability _capability;
- public DocumentSymbolHandler(ILoggerFactory factory, ConfigurationService configurationService, WorkspaceService workspaceService)
+ public PsesDocumentSymbolHandler(ILoggerFactory factory, ConfigurationService configurationService, WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_workspaceService = workspaceService;
_providers = new IDocumentSymbolProvider[]
{
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/FoldingRangeHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/FoldingRangeHandler.cs
index aafee5b36..1a9da9eae 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/FoldingRangeHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/FoldingRangeHandler.cs
@@ -12,11 +12,11 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
+using OmniSharp.Extensions.LanguageServer.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class FoldingRangeHandler : IFoldingRangeHandler
+ internal class PsesFoldingRangeHandler : IFoldingRangeHandler
{
private readonly ILogger _logger;
private readonly ConfigurationService _configurationService;
@@ -24,7 +24,7 @@ internal class FoldingRangeHandler : IFoldingRangeHandler
private FoldingRangeCapability _capability;
- public FoldingRangeHandler(ILoggerFactory factory, ConfigurationService configurationService, WorkspaceService workspaceService)
+ public PsesFoldingRangeHandler(ILoggerFactory factory, ConfigurationService configurationService, WorkspaceService workspaceService)
{
_logger = factory.CreateLogger();
_configurationService = configurationService;
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/FormattingHandlers.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/FormattingHandlers.cs
index 060f9c6c9..a229fbea9 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/FormattingHandlers.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/FormattingHandlers.cs
@@ -10,13 +10,14 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
// TODO: Add IDocumentOnTypeFormatHandler to support on-type formatting.
- internal class DocumentFormattingHandlers : IDocumentFormattingHandler, IDocumentRangeFormattingHandler
+ internal class PsesDocumentFormattingHandlers : IDocumentFormattingHandler, IDocumentRangeFormattingHandler
{
private readonly ILogger _logger;
private readonly AnalysisService _analysisService;
@@ -26,13 +27,13 @@ internal class DocumentFormattingHandlers : IDocumentFormattingHandler, IDocumen
private DocumentFormattingCapability _documentFormattingCapability;
private DocumentRangeFormattingCapability _documentRangeFormattingCapability;
- public DocumentFormattingHandlers(
+ public PsesDocumentFormattingHandlers(
ILoggerFactory factory,
AnalysisService analysisService,
ConfigurationService configurationService,
WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_analysisService = analysisService;
_configurationService = configurationService;
_workspaceService = workspaceService;
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/HoverHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/HoverHandler.cs
index 2d3065906..ad2174487 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/HoverHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/HoverHandler.cs
@@ -12,12 +12,12 @@
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class HoverHandler : IHoverHandler
+ internal class PsesHoverHandler : IHoverHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
@@ -25,12 +25,12 @@ internal class HoverHandler : IHoverHandler
private HoverCapability _capability;
- public HoverHandler(
+ public PsesHoverHandler(
ILoggerFactory factory,
SymbolsService symbolsService,
WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_symbolsService = symbolsService;
_workspaceService = workspaceService;
}
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/ReferencesHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/ReferencesHandler.cs
index 61ba070e0..18b7b34ca 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/ReferencesHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/ReferencesHandler.cs
@@ -13,21 +13,21 @@
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- class ReferencesHandler : IReferencesHandler
+ class PsesReferencesHandler : IReferencesHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
private readonly WorkspaceService _workspaceService;
private ReferenceCapability _capability;
- public ReferencesHandler(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService)
+ public PsesReferencesHandler(ILoggerFactory factory, SymbolsService symbolsService, WorkspaceService workspaceService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_symbolsService = symbolsService;
_workspaceService = workspaceService;
}
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/SignatureHelpHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/SignatureHelpHandler.cs
index 31ae18368..688e5aba7 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/SignatureHelpHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/SignatureHelpHandler.cs
@@ -12,12 +12,12 @@
using Microsoft.PowerShell.EditorServices.Services.TextDocument;
using Microsoft.PowerShell.EditorServices.Utility;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class SignatureHelpHandler : ISignatureHelpHandler
+ internal class PsesSignatureHelpHandler : ISignatureHelpHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
@@ -26,13 +26,13 @@ internal class SignatureHelpHandler : ISignatureHelpHandler
private SignatureHelpCapability _capability;
- public SignatureHelpHandler(
+ public PsesSignatureHelpHandler(
ILoggerFactory factory,
SymbolsService symbolsService,
WorkspaceService workspaceService,
PowerShellContextService powerShellContextService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_symbolsService = symbolsService;
_workspaceService = workspaceService;
_powerShellContextService = powerShellContextService;
diff --git a/src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs b/src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs
index c5b9f861e..e5961c9a8 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/Handlers/TextDocumentHandler.cs
@@ -13,13 +13,13 @@
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
using OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities;
using Microsoft.PowerShell.EditorServices.Utility;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- class TextDocumentHandler : ITextDocumentSyncHandler
+ class PsesTextDocumentHandler : ITextDocumentSyncHandler
{
private static readonly Uri s_fakeUri = new Uri("Untitled:fake");
@@ -31,13 +31,13 @@ class TextDocumentHandler : ITextDocumentSyncHandler
public TextDocumentSyncKind Change => TextDocumentSyncKind.Incremental;
- public TextDocumentHandler(
+ public PsesTextDocumentHandler(
ILoggerFactory factory,
AnalysisService analysisService,
WorkspaceService workspaceService,
RemoteFileManagerService remoteFileManagerService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_analysisService = analysisService;
_workspaceService = workspaceService;
_remoteFileManagerService = remoteFileManagerService;
@@ -58,7 +58,7 @@ public Task Handle(DidChangeTextDocumentParams notification, CancellationT
// Kick off script diagnostics without blocking the response
// TODO: Get all recently edited files in the workspace
- _analysisService.RunScriptDiagnostics(new ScriptFile[] { changedFile }, token);
+ _analysisService.RunScriptDiagnostics(new ScriptFile[] { changedFile });
return Unit.Task;
}
@@ -91,7 +91,7 @@ public Task Handle(DidOpenTextDocumentParams notification, CancellationTok
{
// Kick off script diagnostics if we got a PowerShell file without blocking the response
// TODO: Get all recently edited files in the workspace
- _analysisService.RunScriptDiagnostics(new ScriptFile[] { openedFile }, token);
+ _analysisService.RunScriptDiagnostics(new ScriptFile[] { openedFile });
}
_logger.LogTrace("Finished opening document.");
diff --git a/src/PowerShellEditorServices/Services/TextDocument/ScriptFile.cs b/src/PowerShellEditorServices/Services/TextDocument/ScriptFile.cs
index 50775a579..8a40b04e7 100644
--- a/src/PowerShellEditorServices/Services/TextDocument/ScriptFile.cs
+++ b/src/PowerShellEditorServices/Services/TextDocument/ScriptFile.cs
@@ -11,6 +11,7 @@
using System.Management.Automation.Language;
using Microsoft.PowerShell.EditorServices.Services.Symbols;
using Microsoft.PowerShell.EditorServices.Utility;
+using OmniSharp.Extensions.LanguageServer.Protocol;
namespace Microsoft.PowerShell.EditorServices.Services.TextDocument
{
@@ -48,24 +49,10 @@ public string Id
///
public string FilePath { get; private set; }
- ///
- /// Gets the path which the editor client uses to identify this file.
- ///
- public string ClientFilePath { get; private set; }
-
///
/// Gets the file path in LSP DocumentUri form. The ClientPath property must not be null.
///
- public string DocumentUri
- {
- get
- {
- // TODO: Have this be a DocumentUri type and stop having it be computed every time.
- return this.ClientFilePath == null
- ? string.Empty
- : OmniSharp.Extensions.LanguageServer.Protocol.DocumentUri.FromFileSystemPath(ClientFilePath)?.ToString();
- }
- }
+ public DocumentUri DocumentUri { get; set; }
///
/// Gets or sets a boolean that determines whether
@@ -151,11 +138,11 @@ public string[] ReferencedFiles
/// Creates a new ScriptFile instance by reading file contents from
/// the given TextReader.
///
- /// The System.Uri of the file.
+ /// The System.Uri of the file.
/// The TextReader to use for reading the file's contents.
/// The version of PowerShell for which the script is being parsed.
internal ScriptFile(
- Uri fileUri,
+ DocumentUri docUri,
TextReader textReader,
Version powerShellVersion)
{
@@ -163,16 +150,16 @@ internal ScriptFile(
// so that other operations know it's untitled/in-memory
// and don't think that it's a relative path
// on the file system.
- this.FilePath = fileUri.IsFile
- ? fileUri.LocalPath
- : fileUri.OriginalString;
- this.ClientFilePath = fileUri.OriginalString;
- this.IsAnalysisEnabled = true;
- this.IsInMemory = !fileUri.IsFile;
+ IsInMemory = !docUri.ToUri().IsFile;
+ FilePath = IsInMemory
+ ? docUri.ToString()
+ : docUri.GetFileSystemPath();
+ DocumentUri = docUri;
+ IsAnalysisEnabled = true;
this.powerShellVersion = powerShellVersion;
// SetFileContents() calls ParseFileContents() which initializes the rest of the properties.
- this.SetFileContents(textReader.ReadToEnd());
+ SetFileContents(textReader.ReadToEnd());
}
///
@@ -182,7 +169,7 @@ internal ScriptFile(
/// The initial contents of the script file.
/// The version of PowerShell for which the script is being parsed.
internal ScriptFile(
- Uri fileUri,
+ DocumentUri fileUri,
string initialBuffer,
Version powerShellVersion)
: this(
@@ -633,7 +620,7 @@ private void ParseFileContents()
// Discussed in https://github.com/PowerShell/PowerShellEditorServices/pull/815.
// Rather than working hard to enable things for untitled files like a phantom directory,
// users should save the file.
- if (IsUntitledPath(this.FilePath))
+ if (IsInMemory)
{
// Need to initialize the ReferencedFiles property to an empty array.
this.ReferencedFiles = Array.Empty();
diff --git a/src/PowerShellEditorServices/Services/Workspace/Handlers/ConfigurationHandler.cs b/src/PowerShellEditorServices/Services/Workspace/Handlers/ConfigurationHandler.cs
index b77b327ca..bf39a1f3f 100644
--- a/src/PowerShellEditorServices/Services/Workspace/Handlers/ConfigurationHandler.cs
+++ b/src/PowerShellEditorServices/Services/Workspace/Handlers/ConfigurationHandler.cs
@@ -13,11 +13,11 @@
using MediatR;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
+using OmniSharp.Extensions.LanguageServer.Protocol.Workspace;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class ConfigurationHandler : IDidChangeConfigurationHandler
+ internal class PsesConfigurationHandler : IDidChangeConfigurationHandler
{
private readonly ILogger _logger;
private readonly WorkspaceService _workspaceService;
@@ -27,14 +27,14 @@ internal class ConfigurationHandler : IDidChangeConfigurationHandler
private bool _profilesLoaded;
private bool _consoleReplStarted;
- public ConfigurationHandler(
+ public PsesConfigurationHandler(
ILoggerFactory factory,
WorkspaceService workspaceService,
AnalysisService analysisService,
ConfigurationService configurationService,
PowerShellContextService powerShellContextService)
{
- _logger = factory.CreateLogger();
+ _logger = factory.CreateLogger();
_workspaceService = workspaceService;
_configurationService = configurationService;
_powerShellContextService = powerShellContextService;
diff --git a/src/PowerShellEditorServices/Services/Workspace/Handlers/WorkspaceSymbolsHandler.cs b/src/PowerShellEditorServices/Services/Workspace/Handlers/WorkspaceSymbolsHandler.cs
index c35989a24..642a13dc4 100644
--- a/src/PowerShellEditorServices/Services/Workspace/Handlers/WorkspaceSymbolsHandler.cs
+++ b/src/PowerShellEditorServices/Services/Workspace/Handlers/WorkspaceSymbolsHandler.cs
@@ -15,19 +15,19 @@
using OmniSharp.Extensions.LanguageServer.Protocol;
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
-using OmniSharp.Extensions.LanguageServer.Protocol.Server;
+using OmniSharp.Extensions.LanguageServer.Protocol.Workspace;
namespace Microsoft.PowerShell.EditorServices.Handlers
{
- internal class WorkspaceSymbolsHandler : IWorkspaceSymbolsHandler
+ internal class PsesWorkspaceSymbolsHandler : IWorkspaceSymbolsHandler
{
private readonly ILogger _logger;
private readonly SymbolsService _symbolsService;
private readonly WorkspaceService _workspaceService;
private WorkspaceSymbolCapability _capability;
- public WorkspaceSymbolsHandler(ILoggerFactory loggerFactory, SymbolsService symbols, WorkspaceService workspace) {
- _logger = loggerFactory.CreateLogger();
+ public PsesWorkspaceSymbolsHandler(ILoggerFactory loggerFactory, SymbolsService symbols, WorkspaceService workspace) {
+ _logger = loggerFactory.CreateLogger();
_symbolsService = symbols;
_workspaceService = workspace;
}
diff --git a/src/PowerShellEditorServices/Services/Workspace/WorkspaceService.cs b/src/PowerShellEditorServices/Services/Workspace/WorkspaceService.cs
index d75766bb5..44f8b8820 100644
--- a/src/PowerShellEditorServices/Services/Workspace/WorkspaceService.cs
+++ b/src/PowerShellEditorServices/Services/Workspace/WorkspaceService.cs
@@ -154,7 +154,7 @@ public ScriptFile GetFile(DocumentUri documentUri)
{
scriptFile =
new ScriptFile(
- documentUri.ToUri(),
+ documentUri,
streamReader,
this.powerShellVersion);
@@ -274,7 +274,7 @@ public ScriptFile GetFileBuffer(DocumentUri documentUri, string initialBuffer)
{
scriptFile =
new ScriptFile(
- documentUri.ToUri(),
+ documentUri,
initialBuffer,
this.powerShellVersion);
diff --git a/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs b/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs
index b59101e87..11ea4a49a 100644
--- a/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs
+++ b/test/PowerShellEditorServices.Test.E2E/LSPTestsFixures.cs
@@ -2,12 +2,19 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using OmniSharp.Extensions.LanguageServer.Client;
-using OmniSharp.Extensions.LanguageServer.Client.Processes;
+using OmniSharp.Extensions.LanguageServer.Protocol;
+using OmniSharp.Extensions.LanguageServer.Protocol.Client;
+using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
+using OmniSharp.Extensions.LanguageServer.Protocol.Document;
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
+using OmniSharp.Extensions.LanguageServer.Protocol.Window;
+using OmniSharp.Extensions.LanguageServer.Protocol.Workspace;
+using Xunit.Abstractions;
namespace PowerShellEditorServices.Test.E2E
{
@@ -15,22 +22,53 @@ public class LSPTestsFixture : TestsFixture
{
public override bool IsDebugAdapterTests => false;
- public LanguageClient LanguageClient { get; private set; }
+ public ILanguageClient PsesLanguageClient { get; private set; }
public List Diagnostics { get; set; }
+ public ITestOutputHelper Output { get; set; }
+
public async override Task CustomInitializeAsync(
ILoggerFactory factory,
- StdioServerProcess process)
+ Stream inputStream,
+ Stream outputStream)
{
- LanguageClient = new LanguageClient(factory, process);
-
+ Diagnostics = new List();
DirectoryInfo testdir =
Directory.CreateDirectory(Path.Combine(s_binDir, Path.GetRandomFileName()));
- await LanguageClient.Initialize(testdir.FullName);
+ PsesLanguageClient = LanguageClient.PreInit(options =>
+ {
+ options
+ .WithInput(inputStream)
+ .WithOutput(outputStream)
+ .WithRootUri(DocumentUri.FromFileSystemPath(testdir.FullName))
+ .OnPublishDiagnostics(diagnosticParams =>
+ {
+ Diagnostics.AddRange(diagnosticParams.Diagnostics.Where(d => d != null));
+ })
+ .OnLogMessage(logMessageParams =>
+ {
+ Output?.WriteLine($"{logMessageParams.Type.ToString()}: {logMessageParams.Message}");
+ });
+
+ // Enable all capabilities this this is for testing.
+ // This will be a built in feature of the Omnisharp client at some point.
+ var capabilityTypes = typeof(ICapability).Assembly.GetExportedTypes()
+ .Where(z => typeof(ICapability).IsAssignableFrom(z))
+ .Where(z => z.IsClass && !z.IsAbstract);
+ foreach (Type capabilityType in capabilityTypes)
+ {
+ options.WithCapability(Activator.CreateInstance(capabilityType, Array.Empty