public async Task StartAsync()

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;
        }