How do I get IntelliJ IDEA to align adjacent variable assignments on the "=" sign?
Environment is IntelliJ IDEA 12.
I've got Wrapping and Braces > Assignment Statement > Align when multiline
ticked. When I have adjacent properties, they're aligned correctly:
private final CustomerFactory customerFactory = FactoryBuilder.getDefaultCustomerFactory ( );
private final RepFactory repFactory = FactoryBuilder.getDefaultRepFactory ( );
private final WarehouseFactory warehouseFactory = FactoryBuilder.getDefaultWarehouseFactory ( );
but when I've got adjacent variable assignments, they're not:
final Integer account30 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_1 ) );
final Integer account60 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_2 ) );
final Integer account90 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_3 ) );
final Integer account120 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_4 ) );
final Integer priceNumber = parseInteger ( fields.get ( FIELD_PRICE_NUMBER ), 1 );
This is minor but it annoys me. Can anyone tell me what I can do to get these adjacent variable declarations aligned? What I want is:
final Integer account30 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_1 ) );
final Integer account60 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_2 ) );
final Integer account90 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_3 ) );
final Integer account120 = parseCurrency ( fields.get ( FIELD_OVERDUE_BALANCE_4 ) );
final Integer priceNumber = parseInteger ( fields.get ( FIELD_PRICE_NUMBER ), 1 );
You can also do this using built-in key bindings without any changes to Intellij options:
How this is done:
Use the following (or equivalent) GNOME
key bindings:
- Highlight the first
=
(or any delimiter of your choosing) - Press Alt+j once for each additional = to
Add Selection for Next Occurrence
- Press Left once then make room by pressing Tab per the above GIF
- Press Alt+Shift+Insert to enter
Column Selection mode
- Press Alt+Shift+Insert again to exit
Column Selection mode
(notice selection is aligned). - Press Left twice then presss Ctrl+Shift+Right to select all white space to each =
- Press Shift+Left to exclude
=
from selection - Press Backspace and that will cause all of the uneven whitespace to truncate
After backspacing to where you want the columns aligned, you should now have something like:
someVar = someVal
someOtherVar = someVal
someOtherOtherVar = someVal
The nice thing about this approach is it's general purpose; The above steps will align any text within whitespace so long as you choose a distinct delimiter each line contains only once, such as =
in the example given.
As noted previously, this example was performed using GNOME
key bindings. You are free to pick a different scheme in Settings
> Keymap
:
I think you should be using the Field groups => Align in columns
Align when multiline has some other effect that doesn't apply here.
Under "Code Style"->"Java" in the Tab "Wrapping and Braces" find following entry and tick "Align Variable in columns". Done!
To align adjacent variable assignments on the “=” sign, do this: