Skip to content

Add options blank_lines_{lower|upper}_bound to Configurations.md #2313

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

Merged
merged 1 commit into from
Jan 4, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions Configurations.md
Original file line number Diff line number Diff line change
Expand Up @@ -1815,3 +1815,97 @@ What Write Mode to use when none is supplied: Replace, Overwrite, Display, Diff,
- **Default value**: `"Overwrite"`
- **Possible values**: `"Checkstyle"`, `"Coverage"`, `"Diff"`, `"Display"`, `"Overwrite"`, `"Plain"`, `"Replace"`
- **Stable**: No

## `blank_lines_upper_bound`

Maximum number of blank lines which can be put between items. If more than this number of consecutive empty
lines are found, they are trimmed down to match this integer.

- **Default value**: `1`
- **Possible values**: *unsigned integer*
- **Stable**: No

### Example
Original Code:

```rust
Copy link
Contributor

Choose a reason for hiding this comment

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

This code block will break the unmerged test in #2292 because that test expects all Rust code blocks to be preceded by "## `CONFIG_NAME`" and "#### 'CONFIG_VALUE`", in that order. That's the convention that has been followed to this point, at least.

So we need to either update this documentation to match that convention or I need to update the test in #2292 to have a way to opt Rust code blocks out of verification. Is it feasible to modify this documentation or is the example code before the formatted code preferable for clarity?

Copy link
Member Author

Choose a reason for hiding this comment

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

Mh, I think that these two configurations are different from the other ones in that changing the value is not "bijective": formatting with a decreased blank line bound will lose information, so increasing the blank line bound and formatting it again won't result in the code we started with. So I wouldn't use the convention here, as it would be less clear to the reader.

I am not sure if there should be a special case in your tests for this; it's probably to complicated right now. So you are probably right: opting out of the test for the first code block and still testing the others is probably fine.

But I'm fine with whatever you (all) decide on :)

fn foo() {
println!("a");
}



fn bar() {
println!("b");


println!("c");
}
```

#### `1` (default):
```rust
fn foo() {
println!("a");
}

fn bar() {
println!("b");

println!("c");
}
```

#### `2` (default):
```rust
fn foo() {
println!("a");
}


fn bar() {
println!("b");


println!("c");
}
```

See also: [`blank_lines_lower_bound`](#blank_lines_lower_bound)

## `blank_lines_lower_bound`

Minimum number of blank lines which must be put between items. If two items have fewer blank lines between
them, additional blank lines are inserted.

- **Default value**: `0`
- **Possible values**: *unsigned integer*
- **Stable**: No

### Example
Original Code (rustfmt will not change it with the default value of `0`):

```rust
fn foo() {
println!("a");
}
fn bar() {
println!("b");
println!("c");
}
```

#### `1`
```rust
fn foo() {

println!("a");
}

fn bar() {

println!("b");

println!("c");
}
```