perltidy formatting complex if

perl, perl-tidy

Solution

The default style of perltidy is to follow the Perl Style Guide where possible. Which results in this output:

if (   ( 'this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6 )
    or ( 'hello world' =~ /world/ and 6 == 3 * 2 * 1 ) )
{
    print "hello\n";
}

You can control the curly braces whether they're on a new line or not. You can control the tightness of the parentheses. You cannot, however, control the new lines for parentheses in code blocks.

The default style is as close as you're going to get to your desired output.

Problem

How can I configure perltidy to format long if statements like this: ``` if ( ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or ('hello world' =~ /world/ and 6 = 3 * 2 * 1) ) { print "hello\n"; } ``` or like this ``` if ( ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or ('hello world' =~ /world/ and 6 == 3 * 2 * 1) ) { print "hello\n"; } ``` Edit1: perltidyrc ``` --maximum-line-length=100 --indent-columns=4 --default-tabsize=4 --continuation-indentation=4 --closing-token-indentation=0 --no-indent-closing-brace --paren-tightness=2 --square-bracket-tightness=2 --block-brace-tightness=0 --trim-qw --nospace-terminal-semicolon --nospace-for-semicolon --indent-spaced-block-comments --ignore-side-comment-lengths --cuddled-else --no-opening-brace-on-new-line --no-opening-sub-brace-on-new-line --no-opening-anonymous-sub-brace-on-new-line --no-brace-left-and-indent --blanks-before-comments --blank-lines-before-subs=1 --blanks-before-blocks --maximum-consecutive-blank-lines=1 ``` Edit2: The idea is to have a new line after the first `(` and also the last `)` to be on a new line with `{`. If this is not possible, any other suggestions for better formatting will be appreciated.

Original source