@@ -303,12 +303,14 @@ will be updated with kernel's cwd."
303303 (with-current-buffer (ein:notebook-buffer notebook*)
304304 (ein:worksheet-focus-cell))
305305 (pop-to-buffer (ein:notebook-buffer notebook*))
306- (ein:aif (ein:$notebook-kernelspec notebook*)
307- (progn
308- (setf (ein:$notebook-metadata notebook*)
309- (plist-put (ein:$notebook-metadata notebook*)
310- :kernelspec (ein:kernelspec-for-nb-metadata it)))
311- (ein:notebook-save-notebook notebook*)))
306+ (when (null (plist-member (ein:$notebook-metadata notebook*)
307+ :kernelspec ))
308+ (ein:aif (ein:$notebook-kernelspec notebook*)
309+ (progn
310+ (setf (ein:$notebook-metadata notebook*)
311+ (plist-put (ein:$notebook-metadata notebook*)
312+ :kernelspec (ein:kernelspec-for-nb-metadata it)))
313+ (ein:notebook-save-notebook notebook*))))
312314 (when callback*
313315 (funcall callback* notebook* created)))
314316 notebook (not existing) callback))
@@ -408,45 +410,54 @@ of minor mode."
408410(defun ein:notebook-enable-autosaves (notebook )
409411 " Enable automatic, periodic saving for notebook."
410412 (interactive
411- (let* ((notebook (or (ein:get-notebook)
412- (completing-read
413- " Select notebook [URL-OR-PORT/NAME]: "
414- (ein:notebook-opened-buffer-names)))))
415- (list notebook)))
416- (if (stringp notebook)
417- (error " Fix me! " )) ; ; FIXME
418- (setf (ein:$notebook-autosave-timer notebook)
419- (run-at-time 0 ein:notebook-autosave-frequency #'ein:notebook-maybe-save-notebook notebook 0 ))
420- (ein:log 'verbose " Enabling autosaves for %s with frequency %s seconds."
421- (ein:$notebook-notebook-name notebook)
422- ein:notebook-autosave-frequency))
413+ (list (or (ein:get-notebook)
414+ (ein:aand (ein:notebook-opened-buffer-names)
415+ (with-current-buffer (ido-completing-read
416+ " Notebook: " it nil t )
417+ (ein:get-notebook))))))
418+ (if (> ein:notebook-autosave-frequency 0 )
419+ (if notebook
420+ (progn (setf (ein:$notebook-autosave-timer notebook)
421+ (run-at-time ein:notebook-autosave-frequency
422+ ein:notebook-autosave-frequency
423+ #'ein:notebook-maybe-save-notebook
424+ notebook))
425+ (ein:log 'verbose " Enabling autosaves for %s with frequency %s seconds."
426+ (ein:$notebook-notebook-name notebook)
427+ ein:notebook-autosave-frequency))
428+ (message " Open notebook first " ))
429+ (message " ein:notebook-autosave-frequency is %d " ein:notebook-autosave-frequency)))
423430
424431(defun ein:notebook-disable-autosaves (notebook )
425432 " Disable automatic, periodic saving for current notebook."
426433 (interactive
427- (let* ((notebook (or (ein:get-notebook)
428- (completing-read
429- " Select notebook [URL-OR-PORT/NAME]: "
430- (ein:notebook-opened-buffer-names)))))
431- (list notebook)))
432- (when (ein:$notebook-autosave-timer notebook)
433- (ein:log 'info " Disabling auto checkpoints for notebook %s" (ein:$notebook-notebook-name notebook))
434- (cancel-timer (ein:$notebook-autosave-timer notebook))))
434+ (list (or (ein:get-notebook)
435+ (ein:aand (ein:notebook-opened-buffer-names)
436+ (with-current-buffer (ido-completing-read
437+ " Notebook: " it nil t )
438+ (ein:get-notebook))))))
439+ (if (and notebook (ein:$notebook-autosave-timer notebook))
440+ (progn
441+ (ein:log 'verbose " Disabling auto checkpoints for notebook %s" (ein:$notebook-notebook-name notebook))
442+ (cancel-timer (ein:$notebook-autosave-timer notebook)))))
435443
436444(defun ein:notebook-update-autosave-frequency (new-frequency notebook )
437445 " Change the autosaves frequency for the current notebook, or
438446for a notebook selected by the user if not currently inside a
439447notebook buffer."
440- (interactive )
441- (let* ((new-frequency (read-number " New autosaves frequency (0 to disable): " ))
442- (notebook (or (ein:get-notebook)
443- (completing-read
444- " Select notebook [URL-OR-PORT/NAME]: "
445- (ein:notebook-opened-buffer-names)))))
446- (when notebook
447- (setq ein:notebook-autosave-frequency new-frequency)
448- (ein:notebook-disable-autosaves notebook)
449- (ein:notebook-enable-autosaves notebook))))
448+ (interactive
449+ (list (read-number " New autosaves frequency (0 to disable): " )
450+ (or (ein:get-notebook)
451+ (ein:aand (ein:notebook-opened-buffer-names)
452+ (with-current-buffer (ido-completing-read
453+ " Notebook: " it nil t )
454+ (ein:get-notebook))))))
455+ (if notebook
456+ (progn
457+ (setq ein:notebook-autosave-frequency new-frequency)
458+ (ein:notebook-disable-autosaves notebook)
459+ (ein:notebook-enable-autosaves notebook))
460+ (message " Open notebook first " )))
450461
451462(defun ein:notebook-bind-events (notebook events )
452463 " Bind events related to PAGER to the event handler EVENTS."
0 commit comments