Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"braces" rule breaks indentation in mixed PHP and HTML files #6788

Closed
Quintrillium opened this issue Feb 21, 2023 · 1 comment
Closed

"braces" rule breaks indentation in mixed PHP and HTML files #6788

Quintrillium opened this issue Feb 21, 2023 · 1 comment

Comments

@Quintrillium
Copy link

Bug report

The rule "braces" breaks indentation of mixed PHP and HTML files.

Description

"braces" rule breaks indentation in mixed PHP and HTML files

Runtime version

3.14.4

Used command

vendor/bin/php-cs-fixer fix

Configuration file

Ruleset used:

   'array_syntax' => ['syntax' => 'short'],
    'binary_operator_spaces' => [
        'default' => 'align_single_space_minimal',
    ],
    'blank_line_after_namespace' => true,
    'blank_line_after_opening_tag' => true,
    'blank_line_before_statement' => [
        'statements' => ['return']
    ],
    'braces' => true,
    'cast_spaces' => true,
    'class_attributes_separation' => [
        'elements' => [
            'method' => 'one',
            'trait_import' => 'none'
        ]
    ],
    'class_definition' => true,
    'concat_space' => [
        'spacing' => 'one'
    ],
    'declare_equal_normalize' => true,
    'elseif' => true,
    'encoding' => true,
    'full_opening_tag' => true,
    'fully_qualified_strict_types' => true,
    'function_declaration' => true,
    'function_typehint_space' => true,
    'heredoc_to_nowdoc' => true,
    'include' => true,
    'increment_style' => ['style' => 'post'],
    'indentation_type' => true,
    'linebreak_after_opening_tag' => true,
    'line_ending' => true,
    'lowercase_cast' => true,
    'constant_case' => true,
    'lowercase_keywords' => true,
    'lowercase_static_reference' => true,
    'magic_method_casing' => true,
    'magic_constant_casing' => true,
    'method_argument_space' => true,
    'native_function_casing' => true,
    'no_extra_blank_lines' => [
        'tokens' => [
            'extra',
            'throw',
            'use'
        ]
    ],
    'no_blank_lines_after_class_opening' => true,
    'no_blank_lines_after_phpdoc' => true,
    'no_closing_tag' => true,
    'no_empty_phpdoc' => true,
    'no_empty_statement' => true,
    'no_leading_import_slash' => true,
    'no_leading_namespace_whitespace' => true,
    'no_mixed_echo_print' => [
        'use' => 'echo'
    ],
    'no_multiline_whitespace_around_double_arrow' => true,
    'multiline_whitespace_before_semicolons' => [
        'strategy' => 'no_multi_line'
    ],
    'no_short_bool_cast' => true,
    'no_singleline_whitespace_before_semicolons' => true,
    'no_spaces_after_function_name' => true,
    'no_spaces_around_offset' => true,
    'no_spaces_inside_parenthesis' => true,
    'no_trailing_comma_in_singleline' => true,
    'no_trailing_whitespace' => true,
    'no_trailing_whitespace_in_comment' => true,
    'no_unneeded_control_parentheses' => true,
    'no_useless_return' => true,
    'no_whitespace_before_comma_in_array' => true,
    'no_whitespace_in_blank_line' => true,
    'normalize_index_brace' => true,
    'not_operator_with_successor_space' => false,
    'object_operator_without_whitespace' => true,
    'ordered_imports' => ['sort_algorithm' => 'alpha'],
    'phpdoc_indent' => true,
    'general_phpdoc_tag_rename' => true,
    'phpdoc_inline_tag_normalizer' => true,
    'phpdoc_tag_type' => true,
    'phpdoc_no_access' => true,
    'phpdoc_no_package' => true,
    'phpdoc_no_useless_inheritdoc' => true,
    'phpdoc_scalar' => true,
    'phpdoc_single_line_var_spacing' => true,
    'phpdoc_summary' => true,
    'phpdoc_to_comment' => true,
    'phpdoc_trim' => true,
    'phpdoc_types' => true,
    'phpdoc_var_without_name' => true,
    'short_scalar_cast' => true,
    'simplified_null_return' => false,
    'single_blank_line_at_eof' => true,
    'single_blank_line_before_namespace' => true,
    'single_class_element_per_statement' => true,
    'single_import_per_statement' => true,
    'single_line_after_imports' => true,
    'single_line_comment_style' => [
        'comment_types' => ['hash']
    ],
    'single_quote' => true,
    'space_after_semicolon' => true,
    'standardize_not_equals' => true,
    'switch_case_semicolon_to_colon' => true,
    'switch_case_space' => true,
    'ternary_operator_spaces' => true,
    'trailing_comma_in_multiline' => true,
    'trim_array_spaces' => true,
    'unary_operator_spaces' => true,
    'visibility_required' => [
        'elements' => ['method', 'property']
    ],
    'whitespace_after_comma_in_array' => true,
    'no_unused_imports' => true,

Code snippet that reproduces the problem

<body <?php body_class(); ?>>
  <div>
      <?php

      get_bloginfo('name');

      $hovno = 'test';
      
      if ($hovno) {
          echo 'test';
      }
      
      ?>
  </div>
  <?php wp_footer(); ?>
</body>

expected no changes, but fixes to this:

<body <?php body_class(); ?>>
    <div>
        <?php

        get_bloginfo('name');

$hovno = 'test';

if ($hovno) {
    echo 'test';
}

?>
    </div>
    <?php wp_footer(); ?>
</body>

-->

@keradus
Copy link
Member

keradus commented Feb 21, 2023

Hey. thanks for your report!
I understand this is not best outcome for you, but core team will not put effort to fix this issue - I will also close it now [but feel free to continue discussion with anyone interested]

The braces fixer is deprecated and it will get removed in favour of other fixers, you may slowly stop using it.

The HTML support will be revoked as it was never supposed to be officially supported. If you mix PHP with any other language, we consider it as bad practice and encourage to separate your logic from your view, and if you need code-support in view like for templating, we suggest to use one of templating engines.

If you want to still rely on Fixer for HTML-mixed files, till it's officially dropped, and you want to have bug you noticed fixed, I do encourage you to run PR with the fix. It will be recognised and merged with same flow as any other ticket - only difference is that the fix need to come from interested ppl [and not from core team]

You may take a look at search feature looking for HTML keyword to get extra context.

Big thanks for understanding!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants