mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-06 01:21:38 -05:00
Event notification using header-line
This commit is contained in:
parent
dcfbacf857
commit
70866498af
3 changed files with 46 additions and 3 deletions
|
@ -25,11 +25,48 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(require 'ein-log)
|
||||
(require 'ein-utils)
|
||||
|
||||
(defvar ein:header-line-format '(:eval (ein:header-line)))
|
||||
|
||||
(defun ein:header-line ()
|
||||
(format
|
||||
"IP[y]: %s"
|
||||
(ein:join-str
|
||||
" | "
|
||||
(ein:filter
|
||||
'identity
|
||||
(list (ein:events-header-message-notebook)
|
||||
(ein:events-header-message-kernel))))))
|
||||
|
||||
(ein:deflocal ein:events-status-notebook nil)
|
||||
(ein:deflocal ein:events-status-kernel nil)
|
||||
|
||||
(defun ein:events-header-message-notebook ()
|
||||
(case ein:events-status-notebook
|
||||
(notebook_saving.Notebook "Saving Notebook...")
|
||||
(notebook_saved.Notebook "Notebook is saved")
|
||||
(notebook_save_failed.Notebook "Failed to save Notebook!")))
|
||||
|
||||
(defun ein:events-header-message-kernel ()
|
||||
(case ein:events-status-kernel
|
||||
(status_idle.Kernel nil)
|
||||
(status_busy.Kernel "Kernel is busy...")))
|
||||
|
||||
(defun ein:events-trigger (event)
|
||||
;; FIXME: implement event handling
|
||||
(ein:log 'info "Event: %s" event))
|
||||
(ein:log 'debug "Event: %s" event)
|
||||
(case event
|
||||
((status_busy.Kernel status_idle.Kernel)
|
||||
(setq ein:events-status-kernel event))
|
||||
((notebook_saving.Notebook
|
||||
notebook_saved.Notebook
|
||||
notebook_save_failed.Notebook)
|
||||
(setq ein:events-status-notebook event))
|
||||
(t
|
||||
(ein:log 'info "Unknown event: %s" event))))
|
||||
|
||||
(provide 'ein-events)
|
||||
|
||||
|
|
|
@ -205,6 +205,7 @@ the time of execution."
|
|||
(ein:notebook-from-json ein:notebook (ein:$notebook-data ein:notebook))
|
||||
(setq buffer-undo-list nil) ; clear undo history
|
||||
(ein:notebook-mode)
|
||||
(setq header-line-format ein:header-line-format)
|
||||
(ein:notebook-start-kernel)
|
||||
(ein:log 'info "Notebook %s is ready"
|
||||
(ein:$notebook-notebook-name ein:notebook)))
|
||||
|
@ -773,7 +774,7 @@ Do not clear input prompts when the prefix argument is given."
|
|||
;; This is for putting read-only text properties to the newlines.
|
||||
(setf (ein:$notebook-ewoc notebook)
|
||||
(ewoc-create 'ein:notebook-pp
|
||||
(ein:propertize-read-only "IPython notebook\n\n")
|
||||
(ein:propertize-read-only "\n")
|
||||
nil t))
|
||||
(mapc (lambda (cell-data)
|
||||
(ein:cell-enter-last
|
||||
|
|
|
@ -195,6 +195,11 @@ Adapted from twittering-mode.el's `case-string'."
|
|||
if key-p do (setq key p)
|
||||
else collect `(,key . ,p)))
|
||||
|
||||
(defun ein:filter (predicate sequence)
|
||||
(loop for item in sequence
|
||||
when (funcall predicate item)
|
||||
collect item))
|
||||
|
||||
(defun ein:get-value (obj)
|
||||
"Get value from obj if it is a variable or function."
|
||||
(cond
|
||||
|
|
Loading…
Add table
Reference in a new issue