refactor(org): +jupyter: loader & ob-async blacklist

This commit is contained in:
Henrik Lissner
2025-09-16 11:42:25 -04:00
parent fd03386f6d
commit 979b3aa8c1

View File

@@ -32,30 +32,20 @@
(use-package! ob-jupyter (use-package! ob-jupyter
:defer t :defer t
:init :init
(after! ob-async ;; HACK: ob-juypter don't support ob-async and handles async itself, so
(pushnew! ob-async-no-async-languages-alist ;; piggyback off of `org-babel-jupyter-make-language-alias' to disable it
"jupyter-python" ;; for every current and future kernel language.
"jupyter-julia" (defadvice! +org-jupyter--suppress-ob-async-a (fn _kernel lang)
"jupyter-R")) :before #'org-babel-jupyter-make-language-alias
(with-eval-after-load 'ob-async
(after! org-src (add-to-list 'ob-async-no-async-languages-alist (concat "jupyter-" lang))))
(dolist (lang '(python julia R))
(cl-pushnew (cons (format "jupyter-%s" lang) lang)
org-src-lang-modes :key #'car)))
(add-hook! '+org-babel-load-functions (add-hook! '+org-babel-load-functions
(defun +org-babel-load-jupyter-h (lang) (defun +org-babel-load-jupyter-h (lang)
(when (string-prefix-p "jupyter-" (symbol-name lang)) (and (string-prefix-p "jupyter-" (symbol-name lang))
(require 'jupyter) (require 'ob-jupyter nil t)
(let* ((lang-name (symbol-name lang)) (org-babel-jupyter-make-local-aliases))))
(lang-tail (string-remove-prefix "jupyter-" lang-name)))
(and (not (assoc lang-tail org-src-lang-modes))
(require (intern (format "ob-%s" lang-tail))
nil t)
(add-to-list 'org-src-lang-modes (cons lang-name (intern lang-tail)))))
(with-demoted-errors "Jupyter: %s"
(require lang nil t)
(require 'ob-jupyter nil t)))))
:config :config
(defadvice! +org--ob-jupyter-initiate-session-a (&rest _) (defadvice! +org--ob-jupyter-initiate-session-a (&rest _)
:after #'org-babel-jupyter-initiate-session :after #'org-babel-jupyter-initiate-session