yucatio@システムエンジニア

趣味で作ったものいろいろ

複数行の式とRubyMineのフォーマッタとの相性が悪いのでIssueをあげました

こちらの記事を書いてる最中に、複数行の式とRubyMineのフォーマッタの相性が悪いと気づきました。

yucatio.hatenablog.com

算術オペレータを最後に置いて改行する場合

算術オペレータを最後に置く方法だと、フォーマットをかけた際に、RubyMineは4個のスペースを入れるのに対し、RuboCopは、オペランド(=足されている数)を揃えるようにと警告が出ます。

フォーマットかける前↓(オペランドが揃っていて、RuboCopの警告は出ない)

f:id:yucatio:20180628123856p:plain

フォーマッタをかけた後↓(インデントが崩れ、RuboCopの警告が出る)

f:id:yucatio:20180628123413p:plain

バックスラッシュを用いて改行する場合

一方、バックスラッシュを用いる場合は、フォーマットをかけるたびに続く行がどんどん後ろへとずれていく現象が起こります。

フォーマットかける前↓

f:id:yucatio:20180628125116p:plain

フォーマット1回かけた後↓

f:id:yucatio:20180628125151p:plain

さらに4回フォーマットをかけたとき↓

f:id:yucatio:20180628125414p:plain

さらに5回フォーマットをかけたとき↓

f:id:yucatio:20180628125435p:plain

全てのバックスラッシュを用いた改行でこの現象が起こるわけではなく、ある特定の条件の場合のみのようですが、どのような条件で起きるかは定かではありません。

Issueをあげておきました

JetBrainsのバグトラックシステムにissueをあげました。

Reformat CodeするとRubocopの警告でる : https://youtrack.jetbrains.com/issue/RUBY-21925

Reformat Codeのたびに空白が足される : https://youtrack.jetbrains.com/issue/RUBY-21927

環境