mirror of
https://github.com/vale981/emacs-ipython-notebook
synced 2025-03-05 09:01:40 -05:00
ob-ein: Bring back old functionality.
Bring back some old features to babel edit buffers while trying to respect recent addition of polymode support.
This commit is contained in:
parent
fbf6664c33
commit
9c74e83d1b
1 changed files with 43 additions and 1 deletions
|
@ -115,6 +115,7 @@
|
||||||
(loop for o in outputs
|
(loop for o in outputs
|
||||||
collecting (ob-ein--return-mime-type o file)))))
|
collecting (ob-ein--return-mime-type o file)))))
|
||||||
|
|
||||||
|
|
||||||
(defun ob-ein--get-name-create (src-block-info)
|
(defun ob-ein--get-name-create (src-block-info)
|
||||||
"Get the name of a src block or add a uuid as the name."
|
"Get the name of a src block or add a uuid as the name."
|
||||||
(if-let ((name (fifth src-block-info)))
|
(if-let ((name (fifth src-block-info)))
|
||||||
|
@ -214,7 +215,7 @@ Based on ob-ipython--configure-kernel."
|
||||||
buffer params result-params name))
|
buffer params result-params name))
|
||||||
|
|
||||||
(defun ob-ein--execute-async (buffer body kernel params result-params name)
|
(defun ob-ein--execute-async (buffer body kernel params result-params name)
|
||||||
"As `ein:shared-output-get-cell' is a singleton, ob-ein can only execute blocks
|
"As `ein:shared-output-get-cell' is a singleton, ob-ein can only execute blocks
|
||||||
one at a time. Further, we do not order the queued up blocks!"
|
one at a time. Further, we do not order the queued up blocks!"
|
||||||
(deferred:$
|
(deferred:$
|
||||||
(deferred:next
|
(deferred:next
|
||||||
|
@ -315,6 +316,47 @@ if necessary. Install CALLBACK (i.e., cell execution) upon notebook retrieval."
|
||||||
(t (url-port parsed-url)))))))
|
(t (url-port parsed-url)))))))
|
||||||
(t (ein:notebooklist-login url-or-port callback-login)))))
|
(t (ein:notebooklist-login url-or-port callback-login)))))
|
||||||
|
|
||||||
|
(defun ob-ein--edit-ctrl-c-ctrl-c ()
|
||||||
|
"C-c C-c mapping in ein:connect-mode-map."
|
||||||
|
(interactive)
|
||||||
|
(org-edit-src-save)
|
||||||
|
(when (boundp 'org-src--beg-marker)
|
||||||
|
(let* ((beg org-src--beg-marker)
|
||||||
|
(buf (marker-buffer beg)))
|
||||||
|
(with-current-buffer buf
|
||||||
|
(save-excursion
|
||||||
|
(goto-char beg)
|
||||||
|
(org-ctrl-c-ctrl-c))))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-babel-edit-prep:ein (babel-info)
|
||||||
|
(if ein:polymode
|
||||||
|
(progn
|
||||||
|
(use-local-map (copy-keymap python-mode-map))
|
||||||
|
(local-set-key "\C-c\C-c" 'ob-ein--edit-ctrl-c-ctrl-c))
|
||||||
|
(let* ((buffer (current-buffer))
|
||||||
|
(processed-params (org-babel-process-params babel-info))
|
||||||
|
(session (or (ein:aand (cdr (assoc :session processed-params))
|
||||||
|
(unless (string= "none" it)
|
||||||
|
(format "%s" it)))
|
||||||
|
ein:url-localhost))
|
||||||
|
(lang (nth 0 (org-babel-get-src-block-info)))
|
||||||
|
(kernelspec (or (cdr (assoc :kernelspec processed-params))
|
||||||
|
(ein:aif (cdr (assoc lang org-src-lang-modes))
|
||||||
|
(cons 'language (format "%s" it))
|
||||||
|
(error "ob-ein--execute-body: %s not among %s"
|
||||||
|
lang (mapcar #'car org-src-lang-modes))))))
|
||||||
|
(ob-ein--initiate-session
|
||||||
|
session
|
||||||
|
kernelspec
|
||||||
|
(lambda (notebook)
|
||||||
|
(ein:connect-buffer-to-notebook notebook buffer t)
|
||||||
|
(use-local-map (copy-keymap ein:connect-mode-map))
|
||||||
|
(local-set-key "\C-c\C-c" 'ob-ein--edit-ctrl-c-ctrl-c))))))
|
||||||
|
|
||||||
|
(defun org-babel-edit-prep:ein-python (babel-info)
|
||||||
|
(org-babel-edit-prep:ein babel-info))
|
||||||
|
|
||||||
(loop for (lang . mode) in ob-ein-languages
|
(loop for (lang . mode) in ob-ein-languages
|
||||||
do (ob-ein--babelize-lang lang mode))
|
do (ob-ein--babelize-lang lang mode))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue