internal virtual async Task InitializeLanguageServerAsync() { if (ContentType == null) { Debug.Fail("ContentType should have been set before evaluator initialization."); return; } await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var evaluator = _window.Evaluator as PythonCommonInteractiveEvaluator; if (evaluator == null && _window.Evaluator is SelectableReplEvaluator selEvaluator) { evaluator = selEvaluator.Evaluator as PythonCommonInteractiveEvaluator; } // Activation will now be automatic, but we'll still need to maintain a ReplDocument if (evaluator != null) { await PythonLanguageClient.ReadyTask; var client = _serviceProvider.GetPythonToolsService().LanguageClient; if (client != null) { client.AddClientContext(new PythonLanguageClientContextRepl(evaluator)); // Don't fire a settings change. This can crash node for some reason Document = new ReplDocument(_serviceProvider, _window, client); await Document.InitializeAsync(); } } }
internal async Task RestartLanguageServerAsync() { if (ContentType != null) { // TODO: Pylance //PythonLanguageClient.DisposeLanguageClient(ContentType.TypeName); Document?.Dispose(); Document = null; } await InitializeLanguageServerAsync(); }