From aa054178b722c6b4f8aef3ba429a54a88d1a6ba9 Mon Sep 17 00:00:00 2001 From: Nathaniel Nicandro Date: Sat, 3 Feb 2018 18:45:17 -0600 Subject: [PATCH] Refactor `jupyter-start-new-kernel` --- jupyter-kernel-manager.el | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/jupyter-kernel-manager.el b/jupyter-kernel-manager.el index 8ce2e9f..6de15ed 100644 --- a/jupyter-kernel-manager.el +++ b/jupyter-kernel-manager.el @@ -376,28 +376,28 @@ be set to the kernel manager instance, see (unless (child-of-class-p client-class 'jupyter-kernel-client) (signal 'wrong-type-argument (list '(subclass jupyter-kernel-client) client-class))) - (let (km kc) - (setq km (jupyter-kernel-manager :name kernel-name)) - (setq kc (jupyter-make-client km client-class)) - (condition-case-unless-debug err + (let* ((manager (jupyter-kernel-manager :name kernel-name)) + (client (jupyter-make-client manager client-class))) + (unwind-protect (let (reporter) - (jupyter-start-channels kc) - (jupyter-hb-unpause (oref kc hb-channel)) - (jupyter-start-kernel km 10) - (unless (jupyter--wait-until-startup kc 10) + (jupyter-start-channels client) + (jupyter-hb-unpause (oref client hb-channel)) + (jupyter-start-kernel manager 10) + (unless (jupyter--wait-until-startup client 10) (error "Kernel did not send startup message")) (setq reporter (make-progress-reporter "Requesting kernel info...")) (let* ((jupyter-inhibit-handlers t) (info (jupyter-wait-until-received :kernel-info-reply - (jupyter-kernel-info-request kc) + (jupyter-kernel-info-request client) 2))) - (if info (oset km kernel-info (jupyter-message-content info)) + (if info (oset manager kernel-info (jupyter-message-content info)) (error "Kernel did not respond to kernel-info request")) (progress-reporter-done reporter)) - (cons km kc)) - (error (destructor kc) - (destructor km) - (signal (car err) (cdr err)))))) + (cons manager client)) + (unless (and (slot-boundp manager 'kernel-info) + (oref manager kernel-info)) + (destructor client) + (destructor manager))))) (provide 'jupyter-kernel-manager)