Commit graph

1520 commits

Author SHA1 Message Date
Michael Killough
7a4955f705 Add methods to serialize Config to TOML.
Two different modes:

 - Serialize the full Config object. This is useful as
   `Config::default().to_toml()` to output a rustfmt.toml with defaults
   (#317).
 - Serialize only the options that have been accessed. This could be
   useful to output a minimal rustfmt.toml for a project. (If the
   default value of any unused config item changes, you'll then get the
   new default when you come to use it).

This commit doesn't expose this anywhere - deciding a sensible CLI is a
bit trickier.

This commit also has very simple error reporting (Result<String,
String>) - once the CLI is decided, a more sensible method of reporting
errors might become obvious.
2017-05-16 18:08:24 +07:00
Michael Killough
4d879662a9 Track which config items are accessed.
Required by #865. This doesn't introduce any method to view which
parameters are accessed.

We record which config items are accessed even if we don't intend to
output them, as we assume it will be a relatively cheap operation.
2017-05-16 18:05:40 +07:00
Michael Killough
dcd3c0ed2e Add test for issue #1366.
As the comments in the issue state: it appears to work now, so this test
should just stop any regressions.

The second example in the issue description will format to the first,
which is then a fixed-point.
2017-05-16 16:17:46 +07:00
Michael Killough
c0bdbfa531 Switch to accessing config items via method.
Preparation for #865, which proposes adding a flag which outputs which
config options are used during formatting.

This PR should not make any difference to functionality. A lot of this
was search-and-replace.

Some areas worthy of review/discussion:

 - The method for each config item returns a clone of the underlying
   value. We can't simply return an immutable reference, as lots of
   places in the code expect to be able to pass the returned value as
   `bool` (not `&bool). It would be nice if the `bool` items could
   return a copy, but the more complex types a borrowed reference... but
   unfortunately, I couldn't get the macro to do this.
 - A few places (mostly tests and `src/bin/rustfmt.rs`) were overriding
   config items by modifying the fields of the `Config` struct directly.
   They now use the existing `override_value()` method, which has been
   modified to return a `Result` for use by `src/bin/rustfmt.rs`. This
   benefits of this are that the complex `file_lines` and `write_mode`
   strings are now parsed in one place (`Config.override_value`) instead
   of multiple. The disadvantages are that it moves the compile-time
   checks for config names to become run-time checks.
2017-05-16 15:47:09 +07:00
Nick Cameron
09e5051dee Merge pull request #1556 from topecongiro/issue-1555
Only add offset for unary op
2017-05-16 09:55:07 +12:00
Seiichi Uchida
762db5138e Format source codes 2017-05-15 22:55:45 +09:00
Seiichi Uchida
79ba34c607 Use offset_left for rewrite_unary_prefix 2017-05-15 22:55:01 +09:00
Nick Cameron
d1682b3473 Merge pull request #1510 from fintelia/better-filelines
Better file_lines
2017-05-15 09:19:18 +12:00
Nick Cameron
ebb26db68b Merge pull request #1551 from topecongiro/else-if-early-line-break
Forbid early line breaks inside else if
2017-05-15 08:59:03 +12:00
Nick Cameron
0ebd5775d7 Merge pull request #1550 from topecongiro/issue-1547
Prevent rewriting closure block to expr inside macro
2017-05-15 08:46:14 +12:00
Nick Cameron
65e151279d Merge pull request #1552 from guanqun/give-specific-errors
add more specific reason why it fails to parse
2017-05-14 18:08:27 +12:00
Guanqun Lu
7783b4c0b6 add more specific reason why it fails to parse 2017-05-14 13:19:06 +08:00
Jonathan Behrens
4d2f6a29a7
Add and improve tests of file_lines 2017-05-13 13:45:35 -04:00
Jonathan Behrens
9f83f29187
Refactor file range checking 2017-05-13 13:14:24 -04:00
Seiichi Uchida
5383b6cc17 Format source code 2017-05-13 21:08:10 +09:00
Seiichi Uchida
819a13030f Use precise width when rewriting else if 2017-05-13 21:07:36 +09:00
Seiichi Uchida
7ec78711f2 Prevent rewriting closure block to expr inside macro 2017-05-13 18:32:25 +09:00
Seiichi Uchida
d0a094eefb Merge pull request #1546 from topecongiro/bug/range-full
Add a missing trailing comma before elipses
2017-05-13 17:40:47 +09:00
topecongiro
4aa64674c9 Add a missing trailing comma before elipses 2017-05-13 07:23:34 +09:00
Nick Cameron
d7ed9b50d1 Merge pull request #1530 from azyobuzin/vscodeextlink
Change the link of Visual Studio Code extension
2017-05-13 09:54:09 +12:00
Seiichi Uchida
56515dd4d6 Merge pull request #1543 from topecongiro/field-attr
Support struct_field_attributes
2017-05-12 20:08:36 +09:00
azyobuzin
39bdd3d24f Add a link of rls_vscode 2017-05-12 20:06:28 +09:00
topecongiro
744fa427e2 Support struct_field_attributes 2017-05-12 17:58:38 +09:00
Nick Cameron
80503e3da0 Merge pull request #1540 from topecongiro/fn_call_width
Use vertical layout when args len is larger than fn_call_width
2017-05-12 20:49:58 +12:00
topecongiro
384ce46eef Use vertical layout when args len is larger than fn_call_width 2017-05-12 16:30:26 +09:00
Nick Cameron
88250c4af2 Merge pull request #1529 from topecongiro/issue-1528
Use newline only when fn_call_style is Block
2017-05-12 15:04:01 +12:00
topecongiro
ba1a7b9e7f Try multi-line only when fn_call_style is Block and rewriting function call 2017-05-12 10:33:05 +09:00
azyobuzin
40651a4054 Change the link of Visual Studio Code extension
RustyCode is no longer maintained.
2017-05-11 18:55:05 +09:00
Nick Cameron
18070f4041 bump version (0.8.4) and cargo update 2017-05-10 10:43:34 +12:00
Nick Cameron
1eec103516 Merge pull request #1523 from topecongiro/poor-formatting/fn_call_style
Use multiline when args exceeds max_width in fn_call_style = "block"
2017-05-10 08:27:24 +12:00
Nick Cameron
4194d0f194 Merge pull request #1522 from topecongiro/poor-formatting/if-else
Inherit alignment to 'else'
2017-05-10 08:20:24 +12:00
topecongiro
30a8050559 Use multiline when args exceeds max_width in fn_call_style = "block" 2017-05-10 00:27:57 +09:00
topecongiro
9d96c33d59 Inherit alignment to last else 2017-05-09 17:33:45 +09:00
topecongiro
ac6e6dfd5d Refactor rewrite_pat_expr 2017-05-09 17:33:28 +09:00
Nick Cameron
35e1ca73fc Merge pull request #1519 from topecongiro/poor-formatting/if-else
Remove visual_indent when rewriting else block
2017-05-09 15:21:29 +12:00
Nick Cameron
da261ef9d3 Merge pull request #1520 from topecongiro/allow-match
Apply closure exception to match in args
2017-05-09 15:21:06 +12:00
topecongiro
0248e9869d Apply closure exception to match in args 2017-05-09 08:28:05 +09:00
topecongiro
f36411c339 Remove visual_indent when rewriting else block 2017-05-09 08:11:05 +09:00
Nick Cameron
56bd0662c1 Merge pull request #1516 from topecongiro/remove-try
Replace 'try!' with '?'
2017-05-08 16:32:05 +12:00
topecongiro
2776615dc9 Replace 'try!' with '?' 2017-05-08 13:14:23 +09:00
Nick Cameron
35150ed7ad Merge pull request #1506 from topecongiro/issue-1351
Use block indent if visual indent exceeds max_width when rewriting block
2017-05-08 13:37:01 +12:00
topecongiro
d062d79fb5 Use block indent when visual indent failed 2017-05-08 08:07:18 +09:00
Nick Cameron
459b4449a6 Merge pull request #1442 from topecongiro/poor-formatting/trailing-comma
Remove comma from function definition with a single argument
2017-05-08 10:45:03 +12:00
Nick Cameron
e5f8a725db Merge pull request #1511 from topecongiro/bug/closure-fallback
Add fallback path inside rewrite_closure
2017-05-08 10:30:49 +12:00
Nick Cameron
2d88c7569f Merge pull request #1513 from topecongiro/refactoring
Add methods to Shape
2017-05-08 10:29:02 +12:00
topecongiro
4a28be486e Refactor Shape 2017-05-08 07:24:32 +09:00
topecongiro
e923df4146 Add indented and with_max_width 2017-05-08 07:24:12 +09:00
Nick Cameron
7799e07ea2 Merge pull request #1512 from topecongiro/config-path
Allow config-path to point to a file
2017-05-08 10:15:41 +12:00
topecongiro
5e832acdc4 Allow config-path to point to a file 2017-05-08 07:02:23 +09:00
topecongiro
2ee8e730a6 Add fallback path 2017-05-07 13:13:44 +09:00