Skip to content

Commit 0f2e659

Browse files
captbaritoneIVIURRAY
authored andcommitted
Add config option generated_file_header_size to specify how many lines to look at when checking for @generated
1 parent 6356fca commit 0f2e659

File tree

4 files changed

+16
-5
lines changed

4 files changed

+16
-5
lines changed

Configurations.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,15 +1050,23 @@ Max width for code snippets included in doc comments. Only used if [`format_code
10501050

10511051
## `format_generated_files`
10521052

1053-
Format generated files. A file is considered generated
1054-
if any of the first five lines contain a `@generated` comment marker.
1053+
Format generated files. A file is considered generated if any of the first several lines contain a `@generated` comment marker. The number of lines to check is configured by `generated_file_header_size`.
1054+
10551055
By default, generated files are reformatted, i. e. `@generated` marker is ignored.
10561056
This option is currently ignored for stdin (`@generated` in stdin is ignored.)
10571057

10581058
- **Default value**: `true`
10591059
- **Possible values**: `true`, `false`
10601060
- **Stable**: No (tracking issue: [#5080](https://github.com/rust-lang/rustfmt/issues/5080))
10611061

1062+
## `generated_file_header_size`
1063+
1064+
Number of lines to check for a `@generated` pragma header when `format_generated_files` is enabled. When `format_generated_files` is disabled, this option has no effect.
1065+
1066+
- **Default value**: `5`
1067+
- **Possible values**: any positive integer
1068+
- **Stable**: No (tracking issue: [#5080](https://github.com/rust-lang/rustfmt/issues/5080))
1069+
10621070
## `format_macro_matchers`
10631071

10641072
Format the metavariable matching patterns in macros.

src/config/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ create_config! {
151151
"Write an item and its attribute on the same line \
152152
if their combined width is below a threshold";
153153
format_generated_files: bool, true, false, "Format generated files";
154+
generated_file_header_size: usize, 5, false, "Number of lines to check for a `@generated` \
155+
marker when `format_generated_files` is enabled";
154156

155157
// Options that can change the source code beyond whitespace/blocks (somewhat linty things)
156158
merge_derives: bool, true, true, "Merge multiple `#[derive(...)]` into a single one";
@@ -680,6 +682,7 @@ edition = "2015"
680682
version = "One"
681683
inline_attribute_width = 0
682684
format_generated_files = true
685+
generated_file_header_size = 5
683686
merge_derives = true
684687
use_try_shorthand = false
685688
use_field_init_shorthand = false

src/formatting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn should_skip_module<T: FormatHandler>(
8282
let source_file = context.parse_session.span_to_file_contents(module.span);
8383
let src = source_file.src.as_ref().expect("SourceFile without src");
8484

85-
if is_generated_file(src) {
85+
if is_generated_file(src, config.generated_file_header_size()) {
8686
return true;
8787
}
8888
}

src/formatting/generated.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/// Returns `true` if the given span is a part of generated files.
2-
pub(super) fn is_generated_file(original_snippet: &str) -> bool {
2+
pub(super) fn is_generated_file(original_snippet: &str, header_size: usize) -> bool {
33
original_snippet
44
.lines()
5-
.take(5) // looking for marker only in the beginning of the file
5+
.take(header_size) // looking for marker only in the beginning of the file
66
.any(|line| line.contains("@generated"))
77
}

0 commit comments

Comments
 (0)