breakが崩れる
breakを使うとインデントが崩れた。。 下記は公式のissueでまだcloseされていない。 そもそも公式の見解としては致命的な問題があるので、vscodeの設定で保存時自動フォーマットの設定をONにしていると、フォーマットが機能しないようになっている。 それでもフォーマット使いたかったので、一旦自動保存フォーマットの設定をOFFにしてみたが、案の定問題に遭遇したという経緯
The 'break' keyword causes problems when formatting · Issue #477 · qjebbs/vscode-plantuml · GitHub
issueによると、以下のようで解決が難しそう。 breakの代案としてlabelを使ってみたが、うまくいかない場合が多いので断念。
アクティビティ図のbreakが崩れる例についてはチケットを参考に。
Before formatting:
@startuml start repeat if (Abort?) then (yes) :Cleanup; break endif :Do Something; repeat while (Completed?) is (no) stop @enduml
After formatting:
@startuml start repeat if (Abort?) then (yes) :Cleanup; break endif :Do Something; repeat while (Completed?) is (no) stop @enduml
ソースコードの「FormatRules.ts」を少し確認しました。 この問題は、PlantUMLの「break」キーワードがシーケンス図ではブロックキーワードであるが、アクティビティ図ではブロックキーワードではないことが原因です。 しかし、キーワードベースのフォーマッタでは、同じキーワードを異なるコンテキストとして考慮する必要があるため、この問題を解決するのは簡単ではないようです。
while(名前)が崩れる
before
while(フラグがtrueになるまで)
:処理;
endwhile
after
while
(フラグがtrueになるまで)
:処理;
endwhile
別の記事でも崩れる事例あり
別の日本の記事でもフォーマットが崩れる事案があった。
VS CodeでPlantUMLのフォーマットを行うとインデントが崩れる場合の回避方法
結論
おとなしくフォーマッタを切るしかないのかな。。。。。。。。。。