LoginSignup
14
10

More than 5 years have passed since last update.

Intelij IDEAのMacroでコードのsave時に自動的にコードフォーマッティングする

Last updated at Posted at 2016-03-19

実践している人も多いだろうけど一応ポストしておく。

コードのsave時に自動的にコードフォーマッティングしてほしいが、Reformat CodeとSave Allのショートカットキーがバッティングするため、その一連の操作をマクロにして、そのショートカットキーを登録することで実現している。

方法

やり方はStackoverflowに書いてあるとおり。

  1. Edit -> Macros -> Start Macro Recording
  2. Code -> Reformat Code
  3. File -> Save all
  4. Edit -> Macros -> Stop Macro Recording
  5. マクロに名前をつける ("formatted save"とか)
  6. Preferences -> Keymap
  7. そのマクロを検索し、キーボードショートカットを追加する(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があるかもしれない)

最終的には

  1. Reformat Code
  2. Reformat with Dart Sytle
  3. Sort Members in Dart Style
  4. Save All

の4つのコマンドをマクロにし、reformat_code_then_dart_fmt_then_saveとでも名前をつけ、CMD+Sのショートカットキーを割り当てている。.html、.(s)css、.js、.dart等々、intelijが対応しているコードならばsave時に自動的にフォーマッティングがかかるようになる。便利。応答速度の低下も特に気にならないレベル。それが気になるレベルならばコードの行数が長すぎる疑いがありファイルを分割するべきか検討するタイミングかと思う。

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10