実践している人も多いだろうけど一応ポストしておく。
コードのsave時に自動的にコードフォーマッティングしてほしいが、Reformat CodeとSave Allのショートカットキーがバッティングするため、その一連の操作をマクロにして、そのショートカットキーを登録することで実現している。
方法
やり方はStackoverflowに書いてあるとおり。
- Edit -> Macros -> Start Macro Recording
- Code -> Reformat Code
- File -> Save all
- Edit -> Macros -> Stop Macro Recording
- マクロに名前をつける ("formatted save"とか)
- Preferences -> Keymap
- そのマクロを検索し、キーボードショートカットを追加する(CMD+Sなど。
Save All
を上書きしてしまうと良い)。
個人的にはコミットするコードは全てフォーマットされていて欲しいし、コードのSave操作時に自動的にそうなるのが一番手間がかからないのでこうしている。
ただ、minifyされた既存のJSなどのコードでうっかりCMD+Sしてしまうとせっかくminifyされたコードが嬉しくないフォーマッティングになってしまうのでそこだけ注意する。npmなどのパッケージ管理ツールを使っていればほぼ気にする必要はないだろう。
dartfmtを組み込む
さらに、Dartにおいてはdartfmtという標準のフォーマッティングツールがある。gofmtのDart版であり、Dartのコードはこのツールを使って統一されたスタイルになっているべきである。dartfmtは改善が重ねられ、リーズナブルで信頼できるので最近は必ずこれを走らせるようにしている。WebStormにおいてはReformat with Dart Sytle
およびSort Members in Dart Style
がデフォルトでメニューに存在しているので、それもsave時のマクロに組み込むといい。(Update: Sort Members in Dart Style
は鬱陶しかったら外したらいいかもしれない。まは、まだbugがあるかもしれない)
最終的には
- Reformat Code
- Reformat with Dart Sytle
- Sort Members in Dart Style
- Save All
の4つのコマンドをマクロにし、reformat_code_then_dart_fmt_then_save
とでも名前をつけ、CMD+Sのショートカットキーを割り当てている。.html、.(s)css、.js、.dart等々、intelijが対応しているコードならばsave時に自動的にフォーマッティングがかかるようになる。便利。応答速度の低下も特に気にならないレベル。それが気になるレベルならばコードの行数が長すぎる疑いがありファイルを分割するべきか検討するタイミングかと思う。