diff --git a/Configurations.md b/Configurations.md index 5de757a9168..29d3753710c 100644 --- a/Configurations.md +++ b/Configurations.md @@ -1069,6 +1069,10 @@ fn dolor() -> usize {} fn adipiscing() -> usize {} ``` +## `imported_names_layout` + +XXX TBD. + ## `reorder_imported_names` Reorder lists of names in import statements alphabetically diff --git a/src/config.rs b/src/config.rs index bc00fd176cf..8f39dc8ebac 100644 --- a/src/config.rs +++ b/src/config.rs @@ -561,6 +561,8 @@ create_config! { reorder_imports_in_group: bool, false, "Reorder import statements in group"; reorder_imported_names: bool, false, "Reorder lists of names in import statements alphabetically"; + imported_names_layout: ListTactic, ListTactic::Mixed, + "Layout of lists of names in import statements"; single_line_if_else_max_width: usize, 50, "Maximum line length for single line if-else \ expressions. A value of zero means always break \ if-else expressions."; diff --git a/src/imports.rs b/src/imports.rs index 8ded75a9576..c2a15565a75 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -374,7 +374,7 @@ pub fn rewrite_use_list( let tactic = definitive_tactic( &items[first_index..], - ::lists::ListTactic::Mixed, + context.config.imported_names_layout(), remaining_width, ); diff --git a/tests/source/configs-imported_names_layout-default.rs b/tests/source/configs-imported_names_layout-default.rs new file mode 100644 index 00000000000..d3453216c9d --- /dev/null +++ b/tests/source/configs-imported_names_layout-default.rs @@ -0,0 +1,6 @@ +// Default rustfmt-imported_names_layout +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/source/configs-imported_names_layout-horizontal.rs b/tests/source/configs-imported_names_layout-horizontal.rs new file mode 100644 index 00000000000..9fd1b60c090 --- /dev/null +++ b/tests/source/configs-imported_names_layout-horizontal.rs @@ -0,0 +1,6 @@ +// rustfmt-imported_names_layout: Horizontal +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; +// Horizontal mode should not exceed length of 100 +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaar}; diff --git a/tests/source/configs-imported_names_layout-horizontal_vertical.rs b/tests/source/configs-imported_names_layout-horizontal_vertical.rs new file mode 100644 index 00000000000..2914f3ef78c --- /dev/null +++ b/tests/source/configs-imported_names_layout-horizontal_vertical.rs @@ -0,0 +1,6 @@ +// rustfmt-imported_names_layout: HorizontalVertical +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/source/configs-imported_names_layout-mixed.rs b/tests/source/configs-imported_names_layout-mixed.rs new file mode 100644 index 00000000000..45c68927bfe --- /dev/null +++ b/tests/source/configs-imported_names_layout-mixed.rs @@ -0,0 +1,6 @@ +// rustfmt-imported_names_layout: Mixed +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/source/configs-imported_names_layout-vertical.rs b/tests/source/configs-imported_names_layout-vertical.rs new file mode 100644 index 00000000000..61415454bf9 --- /dev/null +++ b/tests/source/configs-imported_names_layout-vertical.rs @@ -0,0 +1,6 @@ +// rustfmt-imported_names_layout: Vertical +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/target/configs-imported_names_layout-default.rs b/tests/target/configs-imported_names_layout-default.rs new file mode 100644 index 00000000000..23ef278c664 --- /dev/null +++ b/tests/target/configs-imported_names_layout-default.rs @@ -0,0 +1,7 @@ +// Default rustfmt-imported_names_layout +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/target/configs-imported_names_layout-horizontal.rs b/tests/target/configs-imported_names_layout-horizontal.rs new file mode 100644 index 00000000000..9fd1b60c090 --- /dev/null +++ b/tests/target/configs-imported_names_layout-horizontal.rs @@ -0,0 +1,6 @@ +// rustfmt-imported_names_layout: Horizontal +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; +// Horizontal mode should not exceed length of 100 +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaar}; diff --git a/tests/target/configs-imported_names_layout-horizontal_vertical.rs b/tests/target/configs-imported_names_layout-horizontal_vertical.rs new file mode 100644 index 00000000000..0124be1995d --- /dev/null +++ b/tests/target/configs-imported_names_layout-horizontal_vertical.rs @@ -0,0 +1,12 @@ +// rustfmt-imported_names_layout: HorizontalVertical +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, + baaaaar, + baaaaaaaaar, + baaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/target/configs-imported_names_layout-mixed.rs b/tests/target/configs-imported_names_layout-mixed.rs new file mode 100644 index 00000000000..eccdd7c71c7 --- /dev/null +++ b/tests/target/configs-imported_names_layout-mixed.rs @@ -0,0 +1,7 @@ +// rustfmt-imported_names_layout: Mixed +// Layout of imported names + +use super::{foo, foooooo, foooooooooo, foooooooooooooo}; + +use super::{bar, baaaaar, baaaaaaaaar, baaaaaaaaaaaaar, baaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaar, baaaaaaaaaaaaaaaaaaaaaaaaar}; diff --git a/tests/target/configs-imported_names_layout-vertical.rs b/tests/target/configs-imported_names_layout-vertical.rs new file mode 100644 index 00000000000..822e3fbea58 --- /dev/null +++ b/tests/target/configs-imported_names_layout-vertical.rs @@ -0,0 +1,15 @@ +// rustfmt-imported_names_layout: Vertical +// Layout of imported names + +use super::{foo, + foooooo, + foooooooooo, + foooooooooooooo}; + +use super::{bar, + baaaaar, + baaaaaaaaar, + baaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaar, + baaaaaaaaaaaaaaaaaaaaaaaaar};