Skip to content

languages: Fix C++ indentation for multi-line declarations and assignments#47447

Merged
smitbarmase merged 5 commits intozed-industries:mainfrom
ozacod:feat/cpp-indent-fix
Feb 16, 2026
Merged

languages: Fix C++ indentation for multi-line declarations and assignments#47447
smitbarmase merged 5 commits intozed-industries:mainfrom
ozacod:feat/cpp-indent-fix

Conversation

@ozacod
Copy link
Copy Markdown
Contributor

@ozacod ozacod commented Jan 23, 2026

Before:
indentation-problem

After:
after

Release Notes:

  • Fixed indentation problem with multi-line declarations and assignments in C++

- Remove (assignment_expression) from generic @indent list
- Add specific rules for declarations with init_declarator
- Add specific rules for expression_statement with assignment_expression
- Use @EnD on semicolons to properly reset indent scope
@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Jan 23, 2026
@ozacod ozacod changed the title languages: fix C++ indentation for multi-line declarations and assignments languages: Fix C++ indentation for multi-line declarations and assignments Jan 23, 2026
@ozacod
Copy link
Copy Markdown
Contributor Author

ozacod commented Feb 11, 2026

The previous CI failed since it was more than 350 commits behind main. Merged main and ready for rerun.

@ozacod
Copy link
Copy Markdown
Contributor Author

ozacod commented Feb 12, 2026

This one failed too.

Run ./script/setup-sccache.ps1
sccache already cached: sccache 0.10.0
Error: R2_ACCOUNT_ID not set, cannot configure sccache
Error: Process completed with exit code 1.

Copy link
Copy Markdown
Member

@smitbarmase smitbarmase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! I think this can be simplified. Just adding (init_declarator) to the existing @indent list is sufficient, no need to restructure the assignment_expression rule:

 [
     (field_expression)
     (assignment_expression)
+    (init_declarator)
     (if_statement)
     (for_statement)
     (while_statement)
     (do_statement)
     (else_clause)
 ] @indent
-
-(declaration
-    declarator: (init_declarator) @indent
-    ";" @end) @indent
-
-(expression_statement
-    (assignment_expression) @indent
-    ";" @end) @indent

Could you also apply the same fix to crates/languages/src/c/indents.scm? It has identical rules.

@ozacod ozacod requested a review from smitbarmase February 16, 2026 18:35
Copy link
Copy Markdown
Member

@smitbarmase smitbarmase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@smitbarmase smitbarmase merged commit 3335a9b into zed-industries:main Feb 16, 2026
27 checks passed
rtfeldman pushed a commit that referenced this pull request Feb 17, 2026
…ments (#47447)

Before:
<img width="726" height="86" alt="indentation-problem"
src="https://github.com/user-attachments/assets/50330c66-26ac-4cb0-9f26-8ee73ec6c64d"
/>

After:
<img width="811" height="102" alt="after"
src="https://github.com/user-attachments/assets/8704bd83-b626-4b6d-8ff9-50edd6f065db"
/>

Release Notes:

- Fixed indentation problem with multi-line declarations and assignments
in C++

---------

Co-authored-by: ozacod <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants