mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-06 01:21:38 -05:00
Trigger ein:notebook-empty-undo-maybe via event
Previous tests were failed because undo was not reset after the execution callbacks modified the buffer. This is fixed by calling ein:notebook-empty-undo-maybe via event in all the callbacks.
This commit is contained in:
parent
0c13bc4234
commit
6b5b54c965
4 changed files with 18 additions and 9 deletions
16
ein-cell.el
16
ein-cell.el
|
@ -794,12 +794,15 @@ Called from ewoc pretty printer via `ein:cell-insert-output'."
|
||||||
(defmethod ein:cell--handle-execute-reply ((cell ein:codecell) content)
|
(defmethod ein:cell--handle-execute-reply ((cell ein:codecell) content)
|
||||||
(ein:cell-set-input-prompt cell (plist-get content :execution_count))
|
(ein:cell-set-input-prompt cell (plist-get content :execution_count))
|
||||||
(ein:cell-running-set cell nil)
|
(ein:cell-running-set cell nil)
|
||||||
(ein:events-trigger
|
(let ((events (oref cell :events)))
|
||||||
(oref cell :events) 'set_dirty.Notebook '(:value t)))
|
(ein:events-trigger events 'set_dirty.Notebook '(:value t))
|
||||||
|
(ein:events-trigger events 'maybe_reset_undo.Notebook)))
|
||||||
|
|
||||||
(defmethod ein:cell--handle-set-next-input ((cell ein:codecell) text)
|
(defmethod ein:cell--handle-set-next-input ((cell ein:codecell) text)
|
||||||
(ein:events-trigger
|
(let ((events (oref cell :events)))
|
||||||
(oref cell :events) 'set_next_input.Notebook (list :cell cell :text text)))
|
(ein:events-trigger events 'set_next_input.Notebook
|
||||||
|
(list :cell cell :text text))
|
||||||
|
(ein:events-trigger events 'maybe_reset_undo.Notebook)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -826,7 +829,7 @@ Called from ewoc pretty printer via `ein:cell-insert-output'."
|
||||||
(plist-put json :traceback (plist-get content :traceback))))
|
(plist-put json :traceback (plist-get content :traceback))))
|
||||||
(ein:cell-append-output cell json t)
|
(ein:cell-append-output cell json t)
|
||||||
;; (oset cell :dirty t)
|
;; (oset cell :dirty t)
|
||||||
))
|
(ein:events-trigger (oref cell :events) 'maybe_reset_undo.Notebook)))
|
||||||
|
|
||||||
|
|
||||||
(defun ein:output-area-convert-mime-types (json data)
|
(defun ein:output-area-convert-mime-types (json data)
|
||||||
|
@ -848,7 +851,8 @@ Called from ewoc pretty printer via `ein:cell-insert-output'."
|
||||||
(ein:cell-clear-output cell
|
(ein:cell-clear-output cell
|
||||||
(plist-get content :stdout)
|
(plist-get content :stdout)
|
||||||
(plist-get content :stderr)
|
(plist-get content :stderr)
|
||||||
(plist-get content :other)))
|
(plist-get content :other))
|
||||||
|
(ein:events-trigger (oref cell :events) 'maybe_reset_undo.Notebook))
|
||||||
|
|
||||||
|
|
||||||
;;; Misc.
|
;;; Misc.
|
||||||
|
|
|
@ -62,7 +62,9 @@
|
||||||
When EVENT-TYPE is triggered on the event handler EVENTS,
|
When EVENT-TYPE is triggered on the event handler EVENTS,
|
||||||
CALLBACK is called. CALLBACK must take two arguments:
|
CALLBACK is called. CALLBACK must take two arguments:
|
||||||
ARG as the first argument and DATA, which is passed via
|
ARG as the first argument and DATA, which is passed via
|
||||||
`ein:events-trigger', as the second."
|
`ein:events-trigger', as the second. When calling the function,
|
||||||
|
current buffer is set to the configured buffer. `ein:events-new'
|
||||||
|
is used to configure the buffer."
|
||||||
(assert (symbolp event-type))
|
(assert (symbolp event-type))
|
||||||
(let* ((table (oref events :callbacks))
|
(let* ((table (oref events :callbacks))
|
||||||
(cbs (gethash event-type table)))
|
(cbs (gethash event-type table)))
|
||||||
|
|
|
@ -356,6 +356,10 @@ See `ein:notebook-open' for more information."
|
||||||
(setf (ein:$notebook-dirty notebook)
|
(setf (ein:$notebook-dirty notebook)
|
||||||
(plist-get data :value)))
|
(plist-get data :value)))
|
||||||
notebook)
|
notebook)
|
||||||
|
(ein:events-on events
|
||||||
|
'maybe_reset_undo.Notebook
|
||||||
|
(lambda (&rest -ignore-)
|
||||||
|
(ein:notebook-empty-undo-maybe)))
|
||||||
;; Bind events for sub components:
|
;; Bind events for sub components:
|
||||||
(mapc (lambda (cell) (oset cell :events (ein:$notebook-events notebook)))
|
(mapc (lambda (cell) (oset cell :events (ein:$notebook-events notebook)))
|
||||||
(ein:notebook-get-cells notebook))
|
(ein:notebook-get-cells notebook))
|
||||||
|
|
|
@ -49,8 +49,7 @@
|
||||||
(with-current-buffer (ein:notebook-request-open-callback
|
(with-current-buffer (ein:notebook-request-open-callback
|
||||||
(ein:notebook-new "DUMMY-URL" notebook-id)
|
(ein:notebook-new "DUMMY-URL" notebook-id)
|
||||||
:data (ein:json-read-from-string json-string))
|
:data (ein:json-read-from-string json-string))
|
||||||
(let ((events (ein:events-new (current-buffer))))
|
(let ((events (ein:$notebook-events ein:notebook)))
|
||||||
(setf (ein:$notebook-events ein:notebook) events)
|
|
||||||
(setf (ein:$notebook-kernel ein:notebook)
|
(setf (ein:$notebook-kernel ein:notebook)
|
||||||
(ein:kernel-new 8888 "/kernels" events)))
|
(ein:kernel-new 8888 "/kernels" events)))
|
||||||
(current-buffer))))
|
(current-buffer))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue