Add short_item_threshold
config option
Allow custom short item threshold values via config
This commit is contained in:
parent
e41329ce87
commit
0dba01aee1
@ -2200,6 +2200,40 @@ specific version of rustfmt is used in your CI, use this option.
|
||||
- **Possible values**: any published version (e.g. `"0.3.8"`)
|
||||
- **Stable**: No (tracking issue: [#3386](https://github.com/rust-lang/rustfmt/issues/3386))
|
||||
|
||||
## `short_array_element_width_threshold`
|
||||
|
||||
The width threshold for an array element to be considered "short".
|
||||
|
||||
The layout of an array is dependent on the length of each of its elements.
|
||||
If the length of every element in an array is below this threshold (all elements are "short") then the array can be formatted in the mixed/compressed style, but if any one element has a length that exceeds this threshold then the array elements will have to be formatted vertically.
|
||||
|
||||
- **Default value**: `10`
|
||||
- **Possible values**: any positive integer that is less than or equal to the value specified for [`max_width`](#max_width)
|
||||
- **Stable**: Yes
|
||||
|
||||
#### `10` (default):
|
||||
```rust
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
||||
```
|
||||
#### `20`:
|
||||
```rust
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
||||
```
|
||||
See also [`max_width`](#max_width).
|
||||
|
||||
## `skip_children`
|
||||
|
||||
Don't reformat out of line modules
|
||||
|
@ -106,6 +106,8 @@ create_config! {
|
||||
// Misc.
|
||||
remove_nested_parens: bool, true, true, "Remove nested parens";
|
||||
combine_control_expr: bool, true, false, "Combine control expressions with function calls";
|
||||
short_array_element_width_threshold: usize, 10, true,
|
||||
"Width threshold for an array element to be considered short";
|
||||
overflow_delimited_expr: bool, false, false,
|
||||
"Allow trailing bracket/brace delimited expressions to overflow";
|
||||
struct_field_align_threshold: usize, 0, false,
|
||||
@ -591,6 +593,7 @@ spaces_around_ranges = false
|
||||
binop_separator = "Front"
|
||||
remove_nested_parens = true
|
||||
combine_control_expr = true
|
||||
short_array_element_width_threshold = 10
|
||||
overflow_delimited_expr = false
|
||||
struct_field_align_threshold = 0
|
||||
enum_discrim_align_threshold = 0
|
||||
|
@ -26,8 +26,6 @@ use crate::spanned::Spanned;
|
||||
use crate::types::{can_be_overflowed_type, SegmentParam};
|
||||
use crate::utils::{count_newlines, extra_offset, first_line_width, last_line_width, mk_sp};
|
||||
|
||||
const SHORT_ITEM_THRESHOLD: usize = 10;
|
||||
|
||||
/// A list of `format!`-like macros, that take a long format string and a list of arguments to
|
||||
/// format.
|
||||
///
|
||||
@ -572,7 +570,12 @@ impl<'a> Context<'a> {
|
||||
if one_line {
|
||||
tactic = DefinitiveListTactic::SpecialMacro(num_args_before);
|
||||
};
|
||||
} else if is_every_expr_simple(&self.items) && no_long_items(list_items) {
|
||||
} else if is_every_expr_simple(&self.items)
|
||||
&& no_long_items(
|
||||
list_items,
|
||||
self.context.config.short_array_element_width_threshold(),
|
||||
)
|
||||
{
|
||||
tactic = DefinitiveListTactic::Mixed;
|
||||
}
|
||||
}
|
||||
@ -755,9 +758,9 @@ fn shape_from_indent_style(
|
||||
}
|
||||
}
|
||||
|
||||
fn no_long_items(list: &[ListItem]) -> bool {
|
||||
fn no_long_items(list: &[ListItem], short_array_element_width_threshold: usize) -> bool {
|
||||
list.iter()
|
||||
.all(|item| item.inner_as_ref().len() <= SHORT_ITEM_THRESHOLD)
|
||||
.all(|item| item.inner_as_ref().len() <= short_array_element_width_threshold)
|
||||
}
|
||||
|
||||
/// In case special-case style is required, returns an offset from which we start horizontal layout.
|
||||
|
@ -0,0 +1,11 @@
|
||||
// rustfmt-short_array_element_width_threshold: 10
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
// rustfmt-short_array_element_width_threshold: 20
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
// rustfmt-max_width: 20
|
||||
// rustfmt-short_array_element_width_threshold: 30
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
// rustfmt-short_array_element_width_threshold: 10
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
// rustfmt-short_array_element_width_threshold: 20
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
// rustfmt-max_width: 20
|
||||
// rustfmt-short_array_element_width_threshold: 30
|
||||
|
||||
fn main() {
|
||||
pub const FORMAT_TEST: [u64; 5] = [
|
||||
0x0000000000000000,
|
||||
0xaaaaaaaaaaaaaaaa,
|
||||
0xbbbbbbbbbbbbbbbb,
|
||||
0xcccccccccccccccc,
|
||||
0xdddddddddddddddd,
|
||||
];
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user