Add a version option

This commit is contained in:
Nick Cameron 2018-11-27 14:04:48 +13:00
parent 460925261c
commit 378994b858
8 changed files with 41 additions and 16 deletions

View File

@ -4,7 +4,7 @@ name = "rustfmt-nightly"
version = "1.0.0"
authors = ["Nicholas Cameron <ncameron@mozilla.com>", "The Rustfmt developers"]
description = "Tool to find and fix Rust formatting issues"
repository = "https://github.com/rust-lang-nursery/rustfmt"
repository = "https://github.com/rust-lang/rustfmt"
readme = "README.md"
license = "Apache-2.0/MIT"
build = "build.rs"

View File

@ -2367,6 +2367,22 @@ If you want to format code that requires edition 2018, add the following to your
edition = "2018"
```
## `version`
Which version of the formatting rules to use. `Version::One` is backwards-compatible
with Rustfmt 1.0. Other versions are only backwards compatible within a major
version number.
- **Default value**: `One`
- **Possible values**: `One`, `Two`
- **Stable**: No
### Example
```toml
version = "Two"
```
## `normalize_doc_attributes`
Convert `#![doc]` and `#[doc]` attributes to `//!` and `///` doc comments.

View File

@ -2,8 +2,8 @@
There are many ways to contribute to Rustfmt. This document lays out what they
are and has information for how to get started. If you have any questions about
contributing or need help with anything, please ping nrc on irc, #rust-dev-tools
on irc.mozilla.org is probably the best channel. Feel free to also ask questions
contributing or need help with anything, please ask in the WG-Rustfmt channel
on [Discord](https://discordapp.com/invite/rust-lang). Feel free to also ask questions
on issues, or file new issues specifically to get help.
All contributors are expected to follow our [Code of
@ -14,14 +14,6 @@ Conduct](CODE_OF_CONDUCT.md).
It would be really useful to have people use rustfmt on their projects and file
issues where it does something you don't expect.
A really useful thing to do that on a crate from the Rust repo. If it does
something unexpected, file an issue; if not, make a PR to the Rust repo with the
reformatted code. We hope to get the whole repo consistently rustfmt'ed and to
replace `make tidy` with rustfmt as a medium-term goal. Issues with stack traces
for bugs and/or minimal test cases are especially useful.
See this [blog post](http://ncameron.org/blog/rustfmt-ing-rust/) for more details.
## Create test cases
@ -66,11 +58,14 @@ example, the `issue-1111.rs` test file is configured by the file
## Debugging
Some `rewrite_*` methods use the `debug!` macro for printing useful information. These messages can be printed by using the environment variable `RUST_LOG=rustfmt=DEBUG`. These traces can be helpful in understanding which part of the code was used and get a better grasp on the execution flow.
Some `rewrite_*` methods use the `debug!` macro for printing useful information.
These messages can be printed by using the environment variable `RUST_LOG=rustfmt=DEBUG`.
These traces can be helpful in understanding which part of the code was used
and get a better grasp on the execution flow.
## Hack!
Here are some [good starting issues](https://github.com/rust-lang-nursery/rustfmt/issues?q=is%3Aopen+is%3Aissue+label%3Agood-first-issue).
Here are some [good starting issues](https://github.com/rust-lang/rustfmt/issues?q=is%3Aopen+is%3Aissue+label%3Agood-first-issue).
If you've found areas which need polish and don't have issues, please submit a
PR, don't feel there needs to be an issue.
@ -86,6 +81,12 @@ Talking of tests, if you add a new feature or fix a bug, please also add a test.
It's really easy, see above for details. Please run `cargo test` before
submitting a PR to ensure your patch passes all tests, it's pretty quick.
Rustfmt is post-1.0 and within major version releases we strive for backwards
compatibility (at least when using the default options). That means any code
which changes Rustfmt's output must be guarded by either an option or a version
check. The latter is implemented as an option called `option`. See the section on
[configuration](#Configuration) below.
Please try to avoid leaving `TODO`s in the code. There are a few around, but I
wish there weren't. You can leave `FIXME`s, preferably with an issue number.

View File

@ -1,4 +1,4 @@
# rustfmt [![Build Status](https://travis-ci.org/rust-lang-nursery/rustfmt.svg)](https://travis-ci.org/rust-lang-nursery/rustfmt) [![Build Status](https://ci.appveyor.com/api/projects/status/github/rust-lang-nursery/rustfmt?svg=true)](https://ci.appveyor.com/project/nrc/rustfmt) [![crates.io](https://img.shields.io/crates/v/rustfmt-nightly.svg)](https://crates.io/crates/rustfmt-nightly) [![Travis Configuration Status](https://img.shields.io/travis/davidalber/rustfmt-travis.svg?label=travis%20example)](https://travis-ci.org/davidalber/rustfmt-travis)
# rustfmt [![Build Status](https://travis-ci.org/rust-lang/rustfmt.svg)](https://travis-ci.org/rust-lang/rustfmt) [![Build Status](https://ci.appveyor.com/api/projects/status/github/rust-lang/rustfmt?svg=true)](https://ci.appveyor.com/project/nrc/rustfmt) [![crates.io](https://img.shields.io/crates/v/rustfmt-nightly.svg)](https://crates.io/crates/rustfmt-nightly) [![Travis Configuration Status](https://img.shields.io/travis/davidalber/rustfmt-travis.svg?label=travis%20example)](https://travis-ci.org/davidalber/rustfmt-travis)
A tool for formatting Rust code according to style guidelines.

View File

@ -113,6 +113,7 @@ create_config! {
blank_lines_lower_bound: usize, 0, false,
"Minimum number of blank lines which must be put between items";
edition: Edition, Edition::Edition2015, true, "The edition of the parser (RFC 2052)";
version: Version, Version::One, false, "Version of formatting rules";
// Options that can change the source code beyond whitespace/blocks (somewhat linty things)
merge_derives: bool, true, true, "Merge multiple `#[derive(...)]` into a single one";

View File

@ -291,6 +291,13 @@ configuration_option_enum! { Color:
Auto,
}
configuration_option_enum! { Version:
// 1.x.y
One,
// 2.x.y
Two,
}
impl Color {
/// Whether we should use a coloured terminal.
pub fn use_colored_tty(self) -> bool {

View File

@ -1,6 +1,6 @@
// rustfmt-indent_style: Block
// rustfmt-combine_control_expr: false
// Combining openings and closings. See https://github.com/rust-lang-nursery/fmt-rfcs/issues/61.
// Combining openings and closings. See https://github.com/rust-lang/fmt-rfcs/issues/61.
fn main() {
// Call

View File

@ -1,6 +1,6 @@
// rustfmt-indent_style: Block
// rustfmt-combine_control_expr: true
// Combining openings and closings. See https://github.com/rust-lang-nursery/fmt-rfcs/issues/61.
// Combining openings and closings. See https://github.com/rust-lang/fmt-rfcs/issues/61.
fn main() {
// Call