Execute oinfo requests only when kernel is python.

Otherwise we will try to execute python code in a non-python environment. This
doesn't break anythng, but can fill the log with many, many errors.

In the future might be interesting to add language-dependent methods of
generating object information.
This commit is contained in:
John Miller 2019-12-29 16:03:07 -07:00
parent 728ee7c191
commit 18d329eaad
3 changed files with 16 additions and 10 deletions

View file

@ -168,9 +168,10 @@ previous value."
(defun ein:get-mode-for-kernel (kernelspec) (defun ein:get-mode-for-kernel (kernelspec)
(if (null kernelspec) (if (null kernelspec)
'python ;; FIXME 'python ;; FIXME
(ein:case-equal (ein:$kernelspec-language kernelspec) (intern (ein:$kernelspec-language kernelspec))))
(("julia" "python" "R") (intern (ein:$kernelspec-language kernelspec))) ;; (ein:case-equal (ein:$kernelspec-language kernelspec)
(t 'python)))) ;; (("julia" "python" "R") )
;; (t 'python))))
(defun ein:edit-src-continue (e) (defun ein:edit-src-continue (e)
(interactive "e") (interactive "e")

View file

@ -115,13 +115,15 @@
(defun ein:completions--get-oinfo (objs) (defun ein:completions--get-oinfo (objs)
(let ((d (deferred:new #'identity)) (let ((d (deferred:new #'identity))
(kernel (ein:get-kernel))) (kernel (ein:get-kernel)))
(if (ein:kernel-live-p kernel) (ein:case-equal (ein:kernel-language kernel)
(ein:kernel-execute (("python")
kernel (if (ein:kernel-live-p kernel)
(format "__ein_generate_oinfo_data(%s, locals())" objs) (ein:kernel-execute
(list kernel
:output `(,(lambda (d* &rest args) (deferred:callback-post d* args)) . ,d))) (format "__ein_generate_oinfo_data(%s, locals())" objs)
(deferred:callback-post d "kernel not live")) (list
:output `(,(lambda (d* &rest args) (deferred:callback-post d* args)) . ,d)))
(deferred:callback-post d "kernel not live"))))
d)) d))
(defvar ein:oinfo-chunk-size 50) (defvar ein:oinfo-chunk-size 50)

View file

@ -85,6 +85,9 @@
"Destructor for `ein:$kernel'." "Destructor for `ein:$kernel'."
(ein:kernel-disconnect kernel)) (ein:kernel-disconnect kernel))
(defun ein:kernel-language (kernel)
"Return a string naming the language used by kernel `kernel'. Typical return values might be 'python', or 'julia', or 'R' (among others)."
(ein:$kernelspec-language (ein:$kernel-kernelspec kernel)))
(defun ein:kernel--get-msg (kernel msg-type content) (defun ein:kernel--get-msg (kernel msg-type content)
(list (list