ob-ein: expander prolly not right idea

This commit is contained in:
dickmao 2020-01-22 23:08:20 -05:00
parent 943409e34e
commit 52c7ae1b74

View file

@ -58,6 +58,7 @@
(autoload 'ein:kernel-live-p "ein-kernel") (autoload 'ein:kernel-live-p "ein-kernel")
(autoload 'ein:query-singleton-ajax "ein-query") (autoload 'ein:query-singleton-ajax "ein-query")
(autoload 'ein:output-area-case-type "ein-output-area") (autoload 'ein:output-area-case-type "ein-output-area")
(autoload 'ein:log "ein-log")
(defvar *ob-ein-sentinel* "[....]" (defvar *ob-ein-sentinel* "[....]"
"Placeholder string replaced after async cell execution") "Placeholder string replaced after async cell execution")
@ -159,19 +160,27 @@ Based on ob-ipython--configure-kernel."
`(lambda (body params) `(lambda (body params)
(require (quote ,(intern (format "ob-%s" lang-mode))) nil t) (require (quote ,(intern (format "ob-%s" lang-mode))) nil t)
(custom-set-variables '(python-indent-guess-indent-offset-verbose nil)) (custom-set-variables '(python-indent-guess-indent-offset-verbose nil))
(let* ((parser (let ((parser
(quote (quote
,(intern ,(intern (format "org-babel-variable-assignments:%s" lang-mode))))
(format "org-babel-variable-assignments:%s" lang-mode)))) (expander
(assignments (if (fboundp parser) (quote
(funcall (symbol-function parser) params) ,(intern (format "org-babel-expand-body:%s" lang-mode)))))
(ein:log 'verbose "%s: No suitable ob-%s module" (ob-ein--execute-body
(concat "org-babel-execute:" ,lang-name) (cond ((fboundp expander)
(quote ,lang-mode)) (funcall (symbol-function expander)
nil))) (encode-coding-string body 'utf-8)
(ob-ein--execute-body body params assignments))))) params))
((fboundp parser)
(org-babel-expand-body:generic
body params (funcall (symbol-function parser) params)))
(t (ein:log 'verbose "%s: No org-babel-expand-body:%s"
(concat "org-babel-execute:" ,lang-name)
(quote ,lang-mode))
nil))
params)))))
(defun ob-ein--execute-body (body params assignments) (defun ob-ein--execute-body (body params)
(let* ((buffer (current-buffer)) (let* ((buffer (current-buffer))
(processed-params (org-babel-process-params params)) (processed-params (org-babel-process-params params))
(result-params (cdr (assq :result-params params))) (result-params (cdr (assq :result-params params)))
@ -186,14 +195,10 @@ Based on ob-ipython--configure-kernel."
(error "ob-ein--execute-body: %s not among %s" (error "ob-ein--execute-body: %s not among %s"
lang (mapcar #'car org-src-lang-modes))))) lang (mapcar #'car org-src-lang-modes)))))
(name (ob-ein--get-name-create (org-babel-get-src-block-info))) (name (ob-ein--get-name-create (org-babel-get-src-block-info)))
(full-body (org-babel-expand-body:generic
(encode-coding-string body 'utf-8)
params
assignments))
(callback (lambda (notebook) (callback (lambda (notebook)
(ob-ein--execute-async (ob-ein--execute-async
buffer buffer
full-body body
(ein:$notebook-kernel notebook) (ein:$notebook-kernel notebook)
processed-params processed-params
result-params result-params