ein-notebooklist: New function ein:notebooklist-change-url-port

Like `ein:notebook-update-url-or-port', but for all the notebooks opened from the
current notebooklist buffer.

Fix bug in `ein:notebook-update-url-or-port' that was keeping the kernel from
restarting.
This commit is contained in:
John Miller 2017-05-24 09:53:58 -05:00
parent b39634d64a
commit 4a487ab9b8
2 changed files with 21 additions and 1 deletions

View file

@ -314,10 +314,12 @@ jupyter are concerned, 'localhost:8888' and '127.0.0.1:8888' are
(interactive (list
(ein:notebooklist-ask-url-or-port)
(ein:get-notebook-or-error)))
(message "Updating server info and restarting kernel for notebooklist %s"
(ein:$notebook-notebook-name notebook))
(setf (ein:$notebook-url-or-port notebook) new-url-or-port
(ein:$kernel-url-or-port (ein:$notebook-kernel notebook)) new-url-or-port)
(ein:kernel-restart (ein:$notebook-kernel notebook))
(with-current-buffer (ein:notebook-buffer notebook)
(ein:kernel-restart (ein:$notebook-kernel notebook))
(rename-buffer (format ein:notebook-buffer-name-template
(ein:$notebook-url-or-port notebook)
(ein:$notebook-notebook-name notebook)))))

View file

@ -864,9 +864,27 @@ Now you can open notebook list by `ein:notebooklist-open'." url-or-port))
(ein:notebooklist-login--success-1 url-or-port)
(ein:notebooklist-login--error-1 url-or-port)))
;;;###autoload
(defun ein:notebooklist-change-url-port (new-url-or-port)
"Update the ipython/jupyter notebook server URL for all the
notebooks currently opened from the current notebooklist buffer.
This function works by calling `ein:notebook-update-url-or-port'
on all the notebooks opened from the current notebooklist."
(interactive (list (ein:notebooklist-ask-url-or-port)))
(unless (eql major-mode 'ein:notebooklist-mode)
(error "This command needs to be called from within a notebooklist buffer."))
(let* ((current-nblist ein:%notebooklist%)
(open-nb (ein:notebook-opened-notebooks #'(lambda (nb)
(equal (ein:$notebook-url-or-port nb)
(ein:$notebooklist-url-or-port current-nblist))))))
(dolist (nb open-nb)
(ein:notebook-update-url-or-port new-url-or-port nb))))
;;; Generic getter
(defun ein:get-url-or-port--notebooklist ()
(when (ein:$notebooklist-p ein:%notebooklist%)
(ein:$notebooklist-url-or-port ein:%notebooklist%)))