in src/PortingAssistantExtensionServer/PortingAssistantLanguageServer.cs [42:82]
public async Task StartAsync()
{
_portingAssistantServer = await LanguageServer.From(options =>
{
options
.WithInput(_input)
.WithOutput(_output)
.WithServices(service =>
{
service.AddAssessment(_configuration.PortingAssistantConfiguration);
service.AddSingleton<AnalysisService>();
service.AddSingleton<PortingService>();
})
.WithHandler<PortingAssistantTextSyncHandler>()
.WithHandler<PortingAssistantCodeActionHandler>()
.WithHandler<SolutionAssessmentHandler>()
.WithHandler<PortingHandler>()
.WithHandler<UpdateSettingsHandler>()
.WithMaximumRequestTimeout(TimeSpan.FromHours(2))
.ConfigureLogging(_logConfiguration)
.OnInitialize((server, request, ct) =>
{
if (request?.InitializationOptions is JObject initOption)
{
var settings = initOption?["paSettings"].ToObject<UpdateSettingsRequest>();
settings.UpdateSetting();
}
return Task.CompletedTask;
})
.OnInitialized((instance, client, server, ct) =>
{
if (server?.Capabilities?.CodeActionProvider?.Value?.CodeActionKinds != null)
{
server.Capabilities.CodeActionProvider.Value.CodeActionKinds = server.Capabilities.CodeActionProvider.Value.CodeActionKinds.ToImmutableArray().Remove(CodeActionKind.Empty).ToArray();
}
Console.WriteLine("Initialized !");
return Task.CompletedTask;
});
}).ConfigureAwait(false);
_started = true;
}