Merge pull request #2847 from mbebenita/max-width
Add max_width option for all heuristics.
This commit is contained in:
commit
1b0efd99e6
5 changed files with 75 additions and 1 deletions
|
@ -276,7 +276,7 @@ fn lorem<Ipsum, Dolor, Sit, Amet>() -> T
|
|||
Whether to use different formatting for items and expressions if they satisfy a heuristic notion of 'small'.
|
||||
|
||||
- **Default value**: `Default`
|
||||
- **Possible values**: `Default`, `Off`
|
||||
- **Possible values**: `Default`, `Off`, `Max`
|
||||
- **Stable**: Yes
|
||||
|
||||
#### `Default` (default):
|
||||
|
@ -337,6 +337,24 @@ fn main() {
|
|||
}
|
||||
```
|
||||
|
||||
#### `Max`:
|
||||
|
||||
```rust
|
||||
enum Lorem {
|
||||
Ipsum,
|
||||
Dolor(bool),
|
||||
Sit { amet: Consectetur, adipiscing: Elit },
|
||||
}
|
||||
|
||||
fn main() {
|
||||
lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing");
|
||||
|
||||
let lorem = Lorem { ipsum: dolor, sit: amet };
|
||||
|
||||
let lorem = if ipsum { dolor } else { sit };
|
||||
}
|
||||
```
|
||||
|
||||
## `binop_separator`
|
||||
|
||||
Where to put a binary operator when a binary expression goes multiline.
|
||||
|
|
|
@ -403,6 +403,9 @@ macro_rules! create_config {
|
|||
if self.use_small_heuristics.2 == Heuristics::Default {
|
||||
let max_width = self.max_width.2;
|
||||
self.set().width_heuristics(WidthHeuristics::scaled(max_width));
|
||||
} else if self.use_small_heuristics.2 == Heuristics::Max {
|
||||
let max_width = self.max_width.2;
|
||||
self.set().width_heuristics(WidthHeuristics::set(max_width));
|
||||
} else {
|
||||
self.set().width_heuristics(WidthHeuristics::null());
|
||||
}
|
||||
|
|
|
@ -154,6 +154,8 @@ configuration_option_enum! { TypeDensity:
|
|||
configuration_option_enum! { Heuristics:
|
||||
// Turn off any heuristics
|
||||
Off,
|
||||
// Turn on max heuristics
|
||||
Max,
|
||||
// Use Rustfmt's defaults
|
||||
Default,
|
||||
}
|
||||
|
@ -257,6 +259,17 @@ impl WidthHeuristics {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn set(max_width: usize) -> WidthHeuristics {
|
||||
WidthHeuristics {
|
||||
fn_call_width: max_width,
|
||||
struct_lit_width: max_width,
|
||||
struct_variant_width: max_width,
|
||||
array_width: max_width,
|
||||
chain_width: max_width,
|
||||
single_line_if_else_max_width: max_width,
|
||||
}
|
||||
}
|
||||
|
||||
// scale the default WidthHeuristics according to max_width
|
||||
pub fn scaled(max_width: usize) -> WidthHeuristics {
|
||||
const DEFAULT_MAX_WIDTH: usize = 100;
|
||||
|
|
25
tests/source/configs/use_small_heuristics/max.rs
Normal file
25
tests/source/configs/use_small_heuristics/max.rs
Normal file
|
@ -0,0 +1,25 @@
|
|||
// rustfmt-use_small_heuristics: Max
|
||||
|
||||
enum Lorem {
|
||||
Ipsum,
|
||||
Dolor(bool),
|
||||
Sit {
|
||||
amet: Consectetur,
|
||||
adipiscing: Elit,
|
||||
},
|
||||
}
|
||||
|
||||
fn main() {
|
||||
lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing");
|
||||
|
||||
let lorem = Lorem {
|
||||
ipsum: dolor,
|
||||
sit: amet,
|
||||
};
|
||||
|
||||
let lorem = if ipsum {
|
||||
dolor
|
||||
} else {
|
||||
sit
|
||||
};
|
||||
}
|
15
tests/target/configs/use_small_heuristics/max.rs
Normal file
15
tests/target/configs/use_small_heuristics/max.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
// rustfmt-use_small_heuristics: Max
|
||||
|
||||
enum Lorem {
|
||||
Ipsum,
|
||||
Dolor(bool),
|
||||
Sit { amet: Consectetur, adipiscing: Elit },
|
||||
}
|
||||
|
||||
fn main() {
|
||||
lorem("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing");
|
||||
|
||||
let lorem = Lorem { ipsum: dolor, sit: amet };
|
||||
|
||||
let lorem = if ipsum { dolor } else { sit };
|
||||
}
|
Loading…
Reference in a new issue