X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=Configurations.md;h=07a336d93fa9a5e405d6312293c7c293cdd63c2a;hb=1c1763c7ae2deb740dd58d5832ccb5c2c6c54472;hp=18e57e1983a227f1672de522795a0dfed3508838;hpb=42af13245f972d7e9efbeb090dbde17e3ecfaf20;p=rust.git diff --git a/Configurations.md b/Configurations.md index 18e57e1983a..07a336d93fa 100644 --- a/Configurations.md +++ b/Configurations.md @@ -6,7 +6,7 @@ A possible content of `rustfmt.toml` or `.rustfmt.toml` might look like this: ```toml indent_style = "Block" -reorder_imported_names = true +reorder_imports = false ``` Each configuration option is either stable or unstable. @@ -64,7 +64,12 @@ fn main() { ```rust fn main() { - if lorem_ipsum && dolor_sit && amet_consectetur && lorem_sit && dolor_consectetur && amet_ipsum + if lorem_ipsum + && dolor_sit + && amet_consectetur + && lorem_sit + && dolor_consectetur + && amet_ipsum && lorem_consectetur { // ... @@ -76,7 +81,12 @@ fn main() { ```rust fn main() { - if lorem_ipsum && dolor_sit && amet_consectetur && lorem_sit && dolor_consectetur && amet_ipsum + if lorem_ipsum + && dolor_sit + && amet_consectetur + && lorem_sit + && dolor_consectetur + && amet_ipsum && lorem_consectetur { // ... @@ -342,7 +352,8 @@ fn main() { let or = foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo || barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbar; - let sum = 123456789012345678901234567890 + 123456789012345678901234567890 + let sum = 123456789012345678901234567890 + + 123456789012345678901234567890 + 123456789012345678901234567890; let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -357,7 +368,8 @@ fn main() { let or = foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo || barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbar; - let sum = 123456789012345678901234567890 + 123456789012345678901234567890 + + let sum = 123456789012345678901234567890 + + 123456789012345678901234567890 + 123456789012345678901234567890; let range = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.. @@ -579,24 +591,26 @@ Don't reformat anything ## `error_on_line_overflow` -Error if unable to get all lines within `max_width` +Error if Rustfmt is unable to get all lines within `max_width`, except for comments and string +literals. If this happens, then it is a bug in Rustfmt. You might be able to work around the bug by +refactoring your code to avoid long/complex expressions, usually by extracting a local variable or +using a shorter name. -- **Default value**: `true` +- **Default value**: `false` - **Possible values**: `true`, `false` - **Stable**: No See also [`max_width`](#max_width). -## `error_on_line_overflow_comments` +## `error_on_unformatted` -Error if unable to get all comment lines within `comment_width`. +Error if unable to get comments or string literals within `max_width`, or they are left with +trailing whitespaces. -- **Default value**: `true` +- **Default value**: `false` - **Possible values**: `true`, `false` - **Stable**: No -See also [`comment_width`](#comment_width). - ## `fn_args_density` Argument density in functions @@ -890,7 +904,7 @@ See also [`control_brace_style`](#control_brace_style). ## `where_single_line` -To force single line where layout +Forces the `where` clause to be laid out on a single line. - **Default value**: `false` - **Possible values**: `true`, `false` @@ -1040,8 +1054,10 @@ Item layout inside a imports block ```rust use foo::{xxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz}; -use foo::{aaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb, cccccccccccccccccc, dddddddddddddddddd, - eeeeeeeeeeeeeeeeee, ffffffffffffffffff}; +use foo::{ + aaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbb, cccccccccccccccccc, dddddddddddddddddd, + eeeeeeeeeeeeeeeeee, ffffffffffffffffff, +}; ``` #### `"Horizontal"`: @@ -1059,27 +1075,55 @@ use foo::{aaa, bbb, ccc, ddd, eee, fff}; ```rust use foo::{xxxxxxxxxxxxxxxxxx, yyyyyyyyyyyyyyyyyy, zzzzzzzzzzzzzzzzzz}; -use foo::{aaaaaaaaaaaaaaaaaa, - bbbbbbbbbbbbbbbbbb, - cccccccccccccccccc, - dddddddddddddddddd, - eeeeeeeeeeeeeeeeee, - ffffffffffffffffff}; +use foo::{ + aaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbb, + cccccccccccccccccc, + dddddddddddddddddd, + eeeeeeeeeeeeeeeeee, + ffffffffffffffffff, +}; ``` #### `"Vertical"`: ```rust -use foo::{xxx, - yyy, - zzz}; +use foo::{ + xxx, + yyy, + zzz, +}; -use foo::{aaa, - bbb, - ccc, - ddd, - eee, - fff}; +use foo::{ + aaa, + bbb, + ccc, + ddd, + eee, + fff, +}; +``` + +## `merge_imports` + +Merge multiple imports into a single nested import. + +- **Default value**: `false` +- **Possible values**: `true`, `false` +- **Stable**: No + +#### `false` (default): + +```rust +use foo::{a, c, d}; +use foo::{b, g}; +use foo::{e, f}; +``` + +#### `true`: + +```rust +use foo::{a, b, c, d, e, f, g}; ``` @@ -1238,46 +1282,39 @@ fn dolor() -> usize {} fn adipiscing() -> usize {} ``` -## `reorder_imported_names` +## `remove_nested_parens` -Reorder lists of names in import statements alphabetically +Remove nested parens. -- **Default value**: `false` +- **Defalut value**: `false`, - **Possible values**: `true`, `false` - **Stable**: No #### `false` (default): - ```rust -use super::{lorem, ipsum, dolor, sit}; +fn main() { + ((((foo())))); +} ``` #### `true`: - ```rust -use super::{dolor, ipsum, lorem, sit}; +fn main() { + (foo()); +} ``` -See also [`reorder_imports`](#reorder_imports). ## `reorder_imports` -Reorder import statements alphabetically +Reorder import and extern crate statements alphabetically in groups (a group is +separated by a newline). -- **Default value**: `false` +- **Default value**: `true` - **Possible values**: `true`, `false` - **Stable**: No -#### `false` (default): - -```rust -use lorem; -use ipsum; -use dolor; -use sit; -``` - -#### `true`: +#### `true` (default): ```rust use dolor; @@ -1286,98 +1323,86 @@ use lorem; use sit; ``` -See also [`reorder_imported_names`](#reorder_imported_names), [`reorder_imports_in_group`](#reorder_imports_in_group). - -## `reorder_imports_in_group` - -Reorder import statements in group - -- **Default value**: `false` -- **Possible values**: `true`, `false` -- **Stable**: No - -**Note:** This option takes effect only when [`reorder_imports`](#reorder_imports) is set to `true`. - -#### `false` (default): +#### `false`: ```rust -use std::mem; -use std::io; - use lorem; use ipsum; use dolor; use sit; ``` -#### `true`: - -```rust -use std::io; -use std::mem; -use dolor; -use ipsum; -use lorem; -use sit; -``` +## `reorder_modules` -See also [`reorder_imports`](#reorder_imports). - -## `reorder_extern_crates` - -Reorder `extern crate` statements alphabetically +Reorder `mod` declarations alphabetically in group. - **Default value**: `true` - **Possible values**: `true`, `false` - **Stable**: No -#### `true` (default): +#### `true` (default) ```rust -extern crate dolor; -extern crate ipsum; -extern crate lorem; -extern crate sit; +mod a; +mod b; + +mod dolor; +mod ipsum; +mod lorem; +mod sit; ``` -#### `false`: +#### `false` ```rust -extern crate lorem; -extern crate ipsum; +mod b; +mod a; -extern crate dolor; -extern crate sit; +mod lorem; +mod ipsum; +mod dolor; +mod sit; ``` -See also [`reorder_extern_crates_in_group`](#reorder_extern_crates_in_group). +**Note** `mod` with `#[macro_export]` will not be reordered since that could change the semantic +of the original source code. -## `reorder_extern_crates_in_group` +## `reorder_impl_items` -Reorder `extern crate` statements in group +Reorder impl items. `type` and `const` are put first, then macros and methods. -- **Default value**: `true` +- **Default value**: `false` - **Possible values**: `true`, `false` - **Stable**: No -#### `true` (default): - -**Note:** This only takes effect when [`reorder_extern_crates`](#reorder_extern_crates) is set to `true`. +#### `false` (default) ```rust -extern crate a; -extern crate b; +struct Dummy; -extern crate dolor; -extern crate ipsum; -extern crate lorem; -extern crate sit; +impl Iterator for Dummy { + fn next(&mut self) -> Option { + None + } + + type Item = i32; +} ``` -#### `false`: +#### `true` + +```rust +struct Dummy; + +impl Iterator for Dummy { + type Item = i32; -This value has no influence beyond the effect of the [`reorder_extern_crates`](#reorder_extern_crates) option. Set [`reorder_extern_crates`](#reorder_extern_crates) to `false` if you do not want `extern crate` groups to be collapsed and ordered. + fn next(&mut self) -> Option { + None + } +} +``` ## `report_todo` @@ -1654,7 +1679,8 @@ Number of spaces per tab fn lorem() { let ipsum = dolor(); let sit = vec![ - "amet consectetur adipiscing elit amet consectetur adipiscing elit amet consectetur.", + "amet consectetur adipiscing elit amet", + "consectetur adipiscing elit amet consectetur.", ]; } ``` @@ -1665,7 +1691,8 @@ fn lorem() { fn lorem() { let ipsum = dolor(); let sit = vec![ - "amet consectetur adipiscing elit amet consectetur adipiscing elit amet consectetur.", + "amet consectetur adipiscing elit amet", + "consectetur adipiscing elit amet consectetur.", ]; } ``` @@ -2008,3 +2035,123 @@ fn bar() { println!("c"); } ``` + +## `remove_blank_lines_at_start_or_end_of_block` + +Remove blank lines at the start or the end of a block. + +- **Default value**: `true` +- **Possible values**: `true`, `false` +- **Stable**: No + +#### `true` + +```rust +fn foo() { + let msg = { + let mut str = String::new(); + str.push_str("hello, "); + str.push_str("world!"); + str + }; + println!("{}", msg); +} +``` + +#### `false` + +```rust +fn foo() { + + let msg = { + + let mut str = String::new(); + str.push_str("hello, "); + str.push_str("world!"); + str + + }; + println!("{}", msg); + +} +``` + +## `required_version` + +Require a specific version of rustfmt. If you want to make sure that the +specific version of rustfmt is used in your CI, use this option. + +- **Default value**: `CARGO_PKG_VERSION` +- **Possible values**: any published version (e.g. `"0.3.8"`) +- **Stable**: No + +## `hide_parse_errors` + +Do not show parse errors if the parser failed to parse files. + +- **Default value**: `false` +- **Possible values**: `true`, `false` +- **Stable**: No + +## `color` + +Whether to use colored output or not. + +- **Default value**: `"Auto"` +- **Possible values**: "Auto", "Always", "Never" +- **Stable**: No + +## `unstable_features` + +Enable unstable features on stable channel. + +- **Default value**: `false` +- **Possible values**: `true`, `false` +- **Stable**: Yes + +## `license_template_path` + +Check whether beginnings of files match a license template. + +- **Default value**: `""`` +- **Possible values**: path to a license template file +- **Stable**: No + +A license template is a plain text file which is matched literally against the +beginning of each source file, except for `{}`-delimited blocks, which are +matched as regular expressions. The following license template therefore +matches strings like `// Copyright 2017 The Rust Project Developers.`, `// +Copyright 2018 The Rust Project Developers.`, etc.: + +``` +// Copyright {\d+} The Rust Project Developers. +``` + +`\{`, `\}` and `\\` match literal braces / backslashes. + +## `ignore` + +Skip formatting the specified files and directories. + +- **Default value**: format every files +- **Possible values**: See an example below +- **Stable**: No + +### Example + +If you want to ignore specific files, put the following to your config file: + +```toml +ignore = [ + "src/types.rs", + "src/foo/bar.rs", +] +``` + +If you want to ignore every file under `examples/`, put the following to your config file: + +```toml +ignore [ + "examples", +] +```