fix(plantuml): {org-,}plantuml-jar-path resolution
- Ensures `org-plantuml-jar-path` is less likely to be overwritten if the user changes it. - Sets `org-plantuml-jar-path` and `plantuml-default-exec-mode` after calling `plantuml-download-jar`, so things Just Work™️ without needing the user to know to update these variables. Close: #7992
This commit is contained in:
parent
9ebd9cb734
commit
d309dcad27
1 changed files with 22 additions and 7 deletions
|
@ -3,15 +3,24 @@
|
||||||
(use-package! plantuml-mode
|
(use-package! plantuml-mode
|
||||||
:commands plantuml-download-jar
|
:commands plantuml-download-jar
|
||||||
:init
|
:init
|
||||||
(setq plantuml-jar-path (concat doom-data-dir "plantuml.jar")
|
(setq plantuml-jar-path (concat doom-data-dir "plantuml.jar"))
|
||||||
org-plantuml-jar-path plantuml-jar-path)
|
|
||||||
:config
|
:config
|
||||||
(set-popup-rule! "^\\*PLANTUML" :size 0.4 :select nil :ttl 0)
|
(set-popup-rule! "^\\*PLANTUML" :size 0.4 :select nil :ttl 0)
|
||||||
|
|
||||||
(setq plantuml-default-exec-mode
|
(setq plantuml-default-exec-mode
|
||||||
(cond ((file-exists-p plantuml-jar-path) 'jar)
|
(cond ((file-exists-p plantuml-jar-path) 'jar)
|
||||||
((executable-find "plantuml") 'executable)
|
((executable-find plantuml-executable-path) 'executable)
|
||||||
(plantuml-default-exec-mode))))
|
(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
|
(use-package! flycheck-plantuml
|
||||||
|
@ -25,7 +34,13 @@
|
||||||
|
|
||||||
|
|
||||||
(after! ob-plantuml
|
(after! ob-plantuml
|
||||||
;; HACK Force ob-plantuml to use `plantuml-mode''s building mechanism, which
|
;; 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.
|
;; is more sophisticated.
|
||||||
(advice-add #'org-babel-execute:plantuml
|
(advice-add #'org-babel-execute:plantuml
|
||||||
:override #'+plantuml-org-babel-execute:plantuml-a)
|
:override #'+plantuml-org-babel-execute:plantuml-a)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue