Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHPStorm. Reformat code. Chained method call wrapping

I have some questions regards to phpstorm code reformat.

I have long line and single line.

$this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

I want to configure setting:

Code style / PHP / Wrapping and Braces / Chained method calls

This setting has 4 variants:

Do not wrap (1)
Wrap if long (2)
Crop down if long (3)
Wrap always (4)

When I choose 2 or 3 I have following:

    $this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join(
        'some_code_here'
    )->join('some_code_here');
    $this->getSelect()->join('some_code_here')->join('some_code_here');

When I choose 4th, I have:

    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here');
    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here');

My question is:

Is there any possibility wrap every call from new line, only if method is very long (more than 120 symbols).

Expected result:

    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here');
    $this->getSelect()->join('some_code_here')->join('some_code_here');
like image 564
zhartaunik Avatar asked Jul 01 '15 07:07

zhartaunik


1 Answers

To get the desired auto-formatting use the following settings:

  1. Editor > Code Style - Right margin (columns) - 120 [screenshot]
  2. Editor > Code Style > PHP > Wrapping and Braces (tab) - Chained method calls - Chop down if long [screenshot]

Note: To get the desired auto-formatting like this:

$this->getSelect()
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

you should start with a chained method calls longer than your right margin (i.e. 120 in your example):

$this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

If you auto-format with a chained method calls with length less than 120 columns the rule will not trigger i.e. this

$this->getSelect()
    ->join('some_code_here')->join('some_code_here')->join('some_code_here')
    ->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

will not trigger the auto-formatting rule since the chained method calls does not exceed 120 columns

like image 162
svet Avatar answered Nov 03 '22 02:11

svet