Refactor jupyter-start-new-kernel

This commit is contained in:
Nathaniel Nicandro 2018-02-03 18:45:17 -06:00
parent 8627c4892a
commit aa054178b7

View file

@ -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)