Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 ); 
like image 871
Andrew Avatar asked Apr 29 '13 07:04

Andrew


1 Answers

You can also do this using built-in key bindings without any changes to Intellij options:

How to align any text using keyboard strokes in Intelli

How this is done:

Use the following (or equivalent) GNOME key bindings:

  1. Highlight the first = (or any delimiter of your choosing)
  2. Press Alt+j once for each additional = to Add Selection for Next Occurrence
  3. Press Left once then make room by pressing Tab per the above GIF
  4. Press Alt+Shift+Insert to enter Column Selection mode
  5. Press Alt+Shift+Insert again to exit Column Selection mode (notice selection is aligned).
  6. Press Left twice then presss Ctrl+Shift+Right to select all white space to each =
  7. Press Shift+Left to exclude = from selection
  8. 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: enter image description here

like image 97
ecoe Avatar answered Oct 02 '22 00:10

ecoe