61
votes

How can I set up that the code is reformatted automatically on saving?

So I don't always have to press Ctrl + Alt + L.

6
The accepted answer is fine, but probably better for most people to use the save actions plugin stackoverflow.com/questions/946993/…CodeMonkey

6 Answers

132
votes

Actually it is possible.
The idea is to record a very simple macro that selects all the lines (Ctrl+A), formats (Ctrl+Alt+L), deselect all (Up and Down arrow) and saves a file (Ctrl+S), and bind this macro to Ctrl+S.

Free Ctrl+S changing keyboard shortcut for "Save all"

  1. open File > Settings;
  2. search for "keymap" and open it;
  3. search "Save All" and double click the action "Save all";
  4. select "Remove Ctrl+S";
  5. double click "Save All" again and select "Add Keyboard Shortcut";
  6. select "Ctrl+Alt+Shift+S" as first stroke.
  7. Confirm and exit from Settings.

Record the macro

  1. Edit > Macros > Start Macro recording
  2. Press Ctrl+A, then Ctrl+Alt+L, then Up arrow, then Down arrow, and finally then Ctrl+Alt+Shift+S
  3. Stop recording the macro clicking on the Stop button on the bottom right of the page.
  4. Give this macro a name like "Format and Save"

Assign Ctrl+S to "Format and Save"

  1. open File > Settings;
  2. search for "keymap" and open it;
  3. search "Format and Save" and double click the action "Format and Save";
  4. select "Add Keyboard Shortcut";
  5. select "Ctrl+S" as first stroke.
  6. Confirm and exit from Settings.

Finally, enjoy PhpStorm!

6
votes

Another thing that I found very helpful in combination with this macro is the

Show Reformat File Dialog.

In case you want to only reformat the code you just changed, you can set the option:

Only VCS changed text

The dialog can be opened through the following shortcut: CTRL+ALT+SHIFT+L

0
votes

From v2017.2.4 CTRL + ALT + L doesn't work. Use alt + F8 instead.

Solution: Use: ALT + F8 to format the code.

When creating a macro as described by Luca Mastrostefano, use: alt + F8 to format and then ctrl + alt + s to save.

0
votes

Checked on PHPStorm 2020 & greater versions and found a plugin named Save Action. But make sure you configure for new and exisiting projects.

You can also export your PHPStorm settings and then unzip & replace/create the following :-

  1. Macro File under Settings/Option/macro.xml
    <application>
    <component name="ActionMacroManager">
    <macro name="Format & Save">
    <action id="ReformatCode"/>
    <action id="SaveAll"/>
    </macro>
    </component>
    </application>
  1. Settings/Keymaps/Default Copy.xml
    <keymap version="1" name="Default copy" parent="Default for XWin">
    <action id="DBNavigator.Actions.SourceEditor.Save"/>
    <action id="Macro.Format & Save">
    <keyboard-shortcut first-keystroke="ctrl s"/>
    </action>
    <action id="SaveAll">
    <keyboard-shortcut first-keystroke="shift ctrl alt s"/>
    </action>
    </keymap>

Now Zip it back & import it & whenever you press ctrl+s - Auto Code Format will be done.

0
votes

Settings -> Tools -> Action on Save -> Reformat code