From 4e854974be9788f029f2d73f829c4d51d2b83faf Mon Sep 17 00:00:00 2001 From: Henrik Koschitzki Date: Sat, 17 Aug 2019 14:26:26 +0200 Subject: [PATCH] ob-plantuml: Allow different @start-/@end clauses * lisp/ob-plantuml (org-babel-plantuml-make-body) Do not insert @startuml and @enduml if body already starts with "@start". PlantUML supports non-UML diagrams that have to be enclosed with @startgantt/@endgantt for example. The code for these diagrams can contain the proper clauses without being enclosed additionally with @startuml/@enduml. --- lisp/ob-plantuml.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/ob-plantuml.el b/lisp/ob-plantuml.el index 5d7b15903..09c9a3334 100644 --- a/lisp/ob-plantuml.el +++ b/lisp/ob-plantuml.el @@ -60,16 +60,19 @@ are expected to be scalar variables." (defun org-babel-plantuml-make-body (body params) "Return PlantUML input string. + BODY is the content of the source block and PARAMS is a property list of source block parameters. This function relies on the `org-babel-expand-body:generic' function to extract `:var' entries from PARAMS and on the `org-babel-variable-assignments:plantuml' -function to convert variables to PlantUML assignments." - (concat - "@startuml\n" - (org-babel-expand-body:generic - body params (org-babel-variable-assignments:plantuml params)) - "\n@enduml")) +function to convert variables to PlantUML assignments. + +If BODY does not contain @startXXX ... @endXXX clauses, @startuml +... @enduml will be added." + (let ((assignments (org-babel-variable-assignments:plantuml params))) + (if (string-prefix-p "@start" body t) assignments + (format "@startuml\n%s\n@enduml" + (org-babel-expand-body:generic body params assignments))))) (defun org-babel-execute:plantuml (body params) "Execute a block of plantuml code with org-babel.