diff --git a/plantuml-mode.el b/plantuml-mode.el index e40ba0d..caa978c 100644 --- a/plantuml-mode.el +++ b/plantuml-mode.el @@ -589,6 +589,7 @@ or it is followed by line end.") (defvar plantuml-indent-regexp-newif-start "^\s*\\(?:else\\)?if\s+(.*)\s+then\s*.*$") (defvar plantuml-indent-regexp-loop-start "^\s*\\(?:repeat\s*\\|while\s+(.*).*\\)$") (defvar plantuml-indent-regexp-fork-start "^\s*\\(?:fork\\|split\\)\\(?:\s+again\\)?\s*$") + (defvar plantuml-indent-regexp-case-start "^\s*\\(?:switch\\|case\\)\s-*(.*)\s*$") (defvar plantuml-indent-regexp-macro-start "^\s*!definelong.*$") (defvar plantuml-indent-regexp-user-control-start "^.*'.*\s*PLANTUML_MODE_INDENT_INCREASE\s*.*$") (defvar plantuml-indent-regexp-start (list plantuml-indent-regexp-block-start @@ -601,6 +602,7 @@ or it is followed by line end.") plantuml-indent-regexp-newif-start plantuml-indent-regexp-loop-start plantuml-indent-regexp-fork-start + plantuml-indent-regexp-case-start plantuml-indent-regexp-title-start plantuml-indent-regexp-header-start plantuml-indent-regexp-footer-start @@ -621,6 +623,7 @@ or it is followed by line end.") (defvar plantuml-indent-regexp-newif-end "^\s*\\(endif\\|elseif\\|else\\)\s*.*$") (defvar plantuml-indent-regexp-loop-end "^\s*\\(repeat\s*while\\|endwhile\\)\s*.*$") (defvar plantuml-indent-regexp-fork-end "^\s*\\(\\(fork\\|split\\)\s+again\\|end\s+\\(fork\\|split\\)\\)\s*$") + (defvar plantuml-indent-regexp-case-end "^\s*\\(case\s-*(.*)\\|endswitch\\)\s*\\('.*\\)?$") (defvar plantuml-indent-regexp-macro-end "^\s*!enddefinelong\s*\\('.*\\)?$") (defvar plantuml-indent-regexp-user-control-end "^.*'.*\s*PLANTUML_MODE_INDENT_DECREASE\s*.*$") (defvar plantuml-indent-regexp-end (list plantuml-indent-regexp-block-end @@ -633,6 +636,7 @@ or it is followed by line end.") plantuml-indent-regexp-newif-end plantuml-indent-regexp-loop-end plantuml-indent-regexp-fork-end + plantuml-indent-regexp-case-end plantuml-indent-regexp-title-end plantuml-indent-regexp-header-end plantuml-indent-regexp-footer-end diff --git a/test/plantuml-indentation-activity-new-test.el b/test/plantuml-indentation-activity-new-test.el index 98f6e2d..176b01e 100644 --- a/test/plantuml-indentation-activity-new-test.el +++ b/test/plantuml-indentation-activity-new-test.el @@ -384,6 +384,82 @@ stop @enduml")) +(ert-deftest plantuml-test-indentation/activity-new/switch-1 () + "Test correct indentation of plantuml activity-new complete example +These code examples are taken from www.plantuml.com" + (plantuml-test-indent-block + "@startuml +start +switch (test?) +case ( condition A ) +:Text 1; +case ( condition B ) +:Text 2; +case ( condition C ) +:Text 3; +case ( condition D ) +:Text 4; +case ( condition E ) +:Text 5; +endswitch +stop +@enduml" + + "@startuml +start +switch (test?) +case ( condition A ) + :Text 1; +case ( condition B ) + :Text 2; +case ( condition C ) + :Text 3; +case ( condition D ) + :Text 4; +case ( condition E ) + :Text 5; +endswitch +stop +@enduml")) + +(ert-deftest plantuml-test-indentation/activity-new/switch-2 () + "Test correct indentation of plantuml activity-new complete example +These code examples are taken from www.plantuml.com" + (plantuml-test-indent-block + "@startuml +start +switch (test? (is it?)) +case ( condition (A) ) +:Text 1; +case ( condition B (we do not care whether parentheses match or not) +:Text 2; +case ( condition C ))) +:Text 3; +case ( condition D ) +:Text 4; +case ( condition E ) +:Text 5; +endswitch +stop +@enduml" + + "@startuml +start +switch (test? (is it?)) +case ( condition (A) ) + :Text 1; +case ( condition B (we do not care whether parentheses match or not) + :Text 2; +case ( condition C ))) + :Text 3; +case ( condition D ) + :Text 4; +case ( condition E ) + :Text 5; +endswitch +stop +@enduml")) + (provide 'plantuml-indentation-activity-new-test) ;;; plantuml-indentation-activity-old-test.el ends here