lang/org: refactor babel loaders & fix jupyter loader #2198

This commit is contained in:
Henrik Lissner 2019-12-18 10:18:58 -05:00
parent c483a7f7bd
commit af948ca390
No known key found for this signature in database
GPG Key ID: 5F6C0EA160557395
2 changed files with 17 additions and 7 deletions

View File

@ -214,12 +214,17 @@ background (and foreground) match the current theme."
(defun +org-init-babel-lazy-loader-h ()
"Load babel libraries lazily when babel blocks are executed."
(defun +org--babel-lazy-load (lang)
(cl-check-type lang symbol)
(or (run-hook-with-args-until-success '+org-babel-load-functions lang)
(require (intern-soft (format "ob-%s" lang)) nil t)
(require lang nil t)))
(defadvice! +org--src-lazy-load-library-a (lang)
"Lazy load a babel package to ensure syntax highlighting."
:before #'org-src--get-lang-mode
(or (cdr (assoc lang org-src-lang-modes))
(fboundp (intern-soft (format "%s-mode" lang)))
(require (intern-soft (format "ob-%s" lang)) nil t)))
(+org--babel-lazy-load lang)))
(defadvice! +org--babel-lazy-load-library-a (info)
"Load babel libraries lazily when babel blocks are executed."
@ -231,8 +236,7 @@ background (and foreground) match the current theme."
lang)))
(when (and lang
(not (cdr (assq lang org-babel-load-languages)))
(or (run-hook-with-args-until-success '+org-babel-load-functions lang)
(require (intern (format "ob-%s" lang)) nil t)))
(+org--babel-lazy-load lang))
(when (assq :async (nth 2 info))
;; ob-async has its own agenda for lazy loading packages (in the
;; child process), so we only need to make sure it's loaded.
@ -988,6 +992,7 @@ compelling reason, so..."
(if (featurep! +dragndrop) (load! "contrib/dragndrop"))
(if (featurep! +ipython) (load! "contrib/ipython"))
(if (featurep! +journal) (load! "contrib/journal"))
(if (featurep! +jupyter) (load! "contrib/jupyter"))
(if (featurep! +pomodoro) (load! "contrib/pomodoro"))
(if (featurep! +present) (load! "contrib/present"))

View File

@ -1,7 +1,7 @@
;;; lang/org/contrib/jupyter.el -*- lexical-binding: t; -*-
;;;###if (featurep! +jupyter)
(use-package! jupyter
(use-package! ob-jupyter
:defer t
:init
(after! ob-async
@ -9,5 +9,10 @@
(add-hook! '+org-babel-load-functions
(defun +org-babel-load-jupyter-h (lang)
(and (string-prefix-p "jupyter-" (symbol-name lang))
(require lang nil t)))))
(when (string-prefix-p "jupyter-" (symbol-name lang))
(let ((lang (string-remove-prefix "jupyter-" (symbol-name lang))))
(unless (assoc lang org-src-lang-modes)
(require (intern (format "ob-%s" lang))
nil t)))
(with-demoted-errors "Jupyter: %s"
(require 'ob-jupyter nil t))))))