From 6343a4dd930b45bd1b1a02047bcff4bc23015a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Schmelzer?= Date: Fri, 15 Mar 2019 13:03:15 +0100 Subject: [PATCH] indentation support for plantuml macros --- plantuml-mode.el | 6 ++++-- test/plantuml-indentation-commons-test.el | 26 ++++++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/plantuml-mode.el b/plantuml-mode.el index a55c0e4..7d95d89 100644 --- a/plantuml-mode.el +++ b/plantuml-mode.el @@ -362,7 +362,8 @@ or it is followed by line end.") (defvar plantuml-indent-regexp-header-start "^\s*\\(?:\\(?:center\\|left\\|right\\)\s+header\\|header\\)$") (defvar plantuml-indent-regexp-footer-start "^\s*\\(?:\\(?:center\\|left\\|right\\)\s+footer\\|footer\\)$") (defvar plantuml-indent-regexp-legend-start "^\s*\\(?:legend\\|legend\s+\\(?:bottom\\|top\\)\\|legend\s+\\(?:center\\|left\\|right\\)\\|legend\s+\\(?:bottom\\|top\\)\s+\\(?:center\\|left\\|right\\)\\)$") - (defvar plantuml-indent-regexp-oldif-start "^.*if\s+\".*\"\s+then$" "current activity diagram, sometimes already mentioned as deprecated") + (defvar plantuml-indent-regexp-oldif-start "^.*if\s+\".*\"\s+then$" "used in current activity diagram, sometimes already mentioned as deprecated") + (defvar plantuml-indent-regexp-macro-start "^\s*!definelong.*$") (defvar plantuml-indent-regexp-start (list plantuml-indent-regexp-block-start plantuml-indent-regexp-group-start plantuml-indent-regexp-activate-start @@ -374,8 +375,9 @@ or it is followed by line end.") plantuml-indent-regexp-title-start plantuml-indent-regexp-header-start plantuml-indent-regexp-footer-start + plantuml-indent-regexp-macro-start plantuml-indent-regexp-oldif-start)) - (defvar plantuml-indent-regexp-end "^\s*\\(?:}\\|endif\\|else\s*.*\\|end\\|end\s+note\\|endhnote\\|endrnote\\|end\s+box\\|end\s+ref\\|deactivate\s+.+\\|end\s+title\\|endheader\\|endfooter\\|endlegend\\)$") + (defvar plantuml-indent-regexp-end "^\s*\\(?:}\\|endif\\|else\s*.*\\|end\\|end\s+note\\|endhnote\\|endrnote\\|end\s+box\\|end\s+ref\\|deactivate\s+.+\\|end\s+title\\|endheader\\|endfooter\\|endlegend\\|!enddefinelong\\)$") (setq plantuml-font-lock-keywords `( (,plantuml-types-regexp . font-lock-type-face) diff --git a/test/plantuml-indentation-commons-test.el b/test/plantuml-indentation-commons-test.el index 8069098..b824442 100644 --- a/test/plantuml-indentation-commons-test.el +++ b/test/plantuml-indentation-commons-test.el @@ -311,6 +311,30 @@ endlegend legend right left this is no correct legend endlegend -")) +" + )) +(ert-deftest plantuml-test-indentation/commons/multiline-macro () + "Test the indentation of multiline macro elements." + (plantuml-test-indent-block + + " +!define DOUBLE(x) x x +!definelong AUTHEN(x,y) +x -> y : DOUBLE(hello) +y -> x : ok +!enddefinelong + +AUTHEN(Bob,Alice) +" + " +!define DOUBLE(x) x x +!definelong AUTHEN(x,y) + x -> y : DOUBLE(hello) + y -> x : ok +!enddefinelong + +AUTHEN(Bob,Alice) +" + )) ;;; plantuml-indentation-commons-test.el ends here