Skip to content

Commit e145a79

Browse files
committed
Determine if a source block is called due to reference resolution
The older way was ambiguous. * ob-jupyter.el (org-babel-jupyter-resolving-reference-p): New variable, let bound when `org-babel-ref-resolve` is called. (org-babel-jupyter--indicate-resolve): Function that sets the variable. * jupyter-org-client.el (jupyter-org-execute-async-p): Use the variable.
1 parent 1920567 commit e145a79

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

jupyter-org-client.el

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -128,26 +128,15 @@ See also the docstring of `org-image-actual-width' for more details."
128128
async-p
129129
overlay)
130130

131+
(defvar org-babel-jupyter-resolving-reference-p)
132+
131133
(defun jupyter-org-execute-async-p (params)
132134
"Return non-nil if an execution should be asynchronous based on PARAMS.
133135
134136
PARAMS are the source block arguments as returned by,
135137
e.g. `org-babel-get-src-block-info'."
136138
(and (member (alist-get :async params) '("yes" nil))
137-
;; When computing results but not doing anything with them, it
138-
;; typically signifies that a reference to this source block is
139-
;; being resolved (`org-babel-ref-resolve').
140-
;;
141-
;; TODO Although if a source block had
142-
;;
143-
;; :results none :async yes
144-
;;
145-
;; as header arguments it would still make sense to execute it
146-
;; asynchronously when executing it manually instead of through
147-
;; a reference so there needs to be a way to determine if an
148-
;; execution of a source block is occurring due to resolution
149-
;; of a reference.
150-
(not (member "none" (alist-get :result-params params)))))
139+
(not org-babel-jupyter-resolving-reference-p)))
151140

152141
;;; `jupyter-kernel-client' interface
153142

ob-jupyter.el

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,16 @@ return nil."
240240
(insert (org-babel-expand-body:jupyter (org-babel-chomp body) params))
241241
(current-buffer))))
242242

243+
(defvar org-babel-jupyter-resolving-reference-p nil
244+
"Non-nil if a reference is being resolved.")
245+
246+
(defun org-babel-jupyter--indicate-resolve (&rest args)
247+
"Set `org-babel-jupyter-resolving-referece-p', apply ARGS."
248+
(let ((org-babel-jupyter-resolving-reference-p t))
249+
(apply args)))
250+
251+
(advice-add #'org-babel-ref-resolve :around #'org-babel-jupyter--indicate-resolve)
252+
243253
;;;; Initializing session clients
244254

245255
(cl-defstruct (org-babel-jupyter-session

0 commit comments

Comments
 (0)