From be1148ff4ad812c6904ba7b43849a7660fdcd8bc Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Fri, 25 May 2012 22:43:56 +0200 Subject: [PATCH] Fix a bug: retrying save saves random texts This is because ein:notebook-to-json touches to current buffer and read the text from there. --- ein-notebook.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ein-notebook.el b/ein-notebook.el index 7605155..b486376 100644 --- a/ein-notebook.el +++ b/ein-notebook.el @@ -740,11 +740,12 @@ Do not clear input prompts when the prefix argument is given." (defun ein:notebook-to-json (notebook) "Return json-ready alist." - (let* ((discard (ein:notebook-discard-output-p notebook)) - (cells (mapcar (lambda (c) (ein:cell-to-json c discard)) - (ein:notebook-get-cells notebook)))) - `((worksheets . [((cells . ,(apply #'vector cells)))]) - (metadata . ,(ein:$notebook-metadata notebook))))) + (with-current-buffer (ein:notebook-buffer notebook) + (let* ((discard (ein:notebook-discard-output-p notebook)) + (cells (mapcar (lambda (c) (ein:cell-to-json c discard)) + (ein:notebook-get-cells notebook)))) + `((worksheets . [((cells . ,(apply #'vector cells)))]) + (metadata . ,(ein:$notebook-metadata notebook)))))) (defun ein:notebook-save-notebook (notebook retry) (let ((data (ein:notebook-to-json notebook))) @@ -794,7 +795,8 @@ Do not clear input prompts when the prefix argument is given." (defun ein:notebook-save-notebook-success (notebook &rest ignore) (ein:log 'info "Notebook is saved.") (setf (ein:$notebook-dirty notebook) nil) - (set-buffer-modified-p nil) + (with-current-buffer (ein:notebook-buffer notebook) + (set-buffer-modified-p nil)) (ein:events-trigger (ein:$notebook-events notebook) '(notebook_saved . Notebook)))