Add command ein:notebook-worksheet-open-prev

This commit is contained in:
Takafumi Arakaki 2012-09-02 00:14:21 +02:00
parent e9fc021c74
commit 44b042eb7a

View file

@ -681,6 +681,18 @@ given."
(when show (when show
(funcall show (ein:worksheet-buffer next))))) (funcall show (ein:worksheet-buffer next)))))
(defun* ein:notebook-worksheet--open-new
(notebook new &optional (adj "next") show)
(when new
(if (ein:worksheet-has-buffer-p new)
(ein:log 'verbose "The worksheet already has a buffer.")
(ein:log 'info "Rendering %s worksheet..." adj)
(ein:notebook--worksheet-render notebook new)
(ein:log 'info "Rendering %s worksheet... Done." adj)))
(when show
(assert (ein:worksheet-p new) nil "No %s worksheet." adj)
(funcall show (ein:worksheet-buffer new))))
(defun ein:notebook-worksheet-open-next (notebook ws &optional show) (defun ein:notebook-worksheet-open-next (notebook ws &optional show)
"Open next worksheet. "Open next worksheet.
@ -700,17 +712,22 @@ given."
for current in worksheets for current in worksheets
for next in (cdr worksheets) for next in (cdr worksheets)
when (eq current ws) return next)))) when (eq current ws) return next))))
(when next (ein:notebook-worksheet--open-new notebook next "next" show)
(if (ein:worksheet-has-buffer-p next)
(ein:log 'verbose "Next worksheet already has a buffer.")
(ein:log 'info "Rendering next worksheet...")
(ein:notebook--worksheet-render notebook next)
(ein:log 'info "Rendering next worksheet... Done.")))
(when show
(assert (ein:worksheet-p next) nil "No next worksheet.")
(funcall show (ein:worksheet-buffer next)))
next)) next))
(defun ein:notebook-worksheet-open-prev (notebook ws &optional show)
"Open previous worksheet.
See also `ein:notebook-worksheet-open-next'."
(interactive (list (ein:notebook--get-nb-or-error)
(ein:worksheet--get-ws-or-error)
#'switch-to-buffer))
(let ((prev (if (ein:scratchsheet-p ws)
(car (last (ein:$notebook-worksheets notebook)))
(loop for (prev current) on (ein:$notebook-worksheets notebook)
when (eq current ws) return prev))))
(ein:notebook-worksheet--open-new notebook prev "previous" show)
prev))
(defun ein:notebook-worksheet-insert-new (notebook ws &optional render show (defun ein:notebook-worksheet-insert-new (notebook ws &optional render show
inserter) inserter)
(let ((new (ein:notebook--worksheet-new notebook))) (let ((new (ein:notebook--worksheet-new notebook)))