diff --git a/modules/lang/plantuml/config.el b/modules/lang/plantuml/config.el index 64ff4ed13..0d76e7887 100644 --- a/modules/lang/plantuml/config.el +++ b/modules/lang/plantuml/config.el @@ -3,15 +3,24 @@ (use-package! plantuml-mode :commands plantuml-download-jar :init - (setq plantuml-jar-path (concat doom-data-dir "plantuml.jar") - org-plantuml-jar-path plantuml-jar-path) + (setq plantuml-jar-path (concat doom-data-dir "plantuml.jar")) :config (set-popup-rule! "^\\*PLANTUML" :size 0.4 :select nil :ttl 0) - (setq plantuml-default-exec-mode (cond ((file-exists-p plantuml-jar-path) 'jar) - ((executable-find "plantuml") 'executable) - (plantuml-default-exec-mode)))) + ((executable-find plantuml-executable-path) 'executable) + (plantuml-default-exec-mode))) + ;; HACK: If plantuml-jar-path is missing at startup, then plantuml-mode will + ;; operate in another `plantuml-default-exec-mode'. After using + ;; plantuml-download-jar, we change it to `jar' just for this session. + (defadvice! +plantuml--use-downloaded-jar-a (fn &rest args) + "Configure plantuml-mode to use the downloaded jar for this session." + :around #'plantuml-download-jar + (let ((downloaded? (not (file-exists-p plantuml-jar-path)))) + (prog1 (apply fn args) + (when (and downloaded? (file-exists-p plantuml-jar-path)) + (setq org-plantuml-jar-path plantuml-jar-path + plantuml-default-exec-mode 'jar)))))) (use-package! flycheck-plantuml @@ -25,8 +34,14 @@ (after! ob-plantuml - ;; HACK Force ob-plantuml to use `plantuml-mode''s building mechanism, which - ;; is more sophisticated. + ;; The nested `after!' is needed to ensure `org-plantuml-jar-path's new + ;; default without overwriting any user config. + (after! plantuml-mode + (when (equal org-plantuml-jar-path "") + (setq org-plantuml-jar-path plantuml-jar-path))) + + ;; HACK: Force ob-plantuml to use `plantuml-mode''s building mechanism, which + ;; is more sophisticated. (advice-add #'org-babel-execute:plantuml :override #'+plantuml-org-babel-execute:plantuml-a) (add-to-list 'org-babel-default-header-args:plantuml