Commit Graph

1733 Commits (1d4848b37c36985947cb39a20c9e8b35dccaa601)

Author SHA1 Message Date
Will Binns-Smith d5e5d66407 Add option to require @prettier or @format pragma (#2772)
* Add option to require @prettier or @format pragma

Fixes #2397.

Inspired by `eslint-plugin-prettier` and the discussion in #2397, this
implements requiring a special comment pragma to be present in a file's
first comment in order to be formatted.

This will help large codebases gradually transition to prettier over
time without tons of churn or large code reviews.

I implemented this as a standard prettier "option", not just a typical
`argv` flag, as it is relevant in both the cli and the api. This way it
can be provided programmatically, on the command line, or standardized
in a prettierrc file so like the style options, every user can use this
setting consistently and only apply prettier to relevant files, no
mattier their editor integration.

This requires the pragma begin with `@` (in fact it's inserted if the
user doesn't provide it). Currently the usage implies it must be
"prettier" or "format", but it can technically be any value other than
"none", which is similar to the `trailingCommas` option.

cc @vjeux

* Don't quote anything in runPrettier; this is usually handled by a shell

* Make --require-pragma a boolean option

* Use jest-docblock to find pragmas without parsing the ast

* Clarify docs

* includes -> indexOf

* Move test out of integration
2017-09-13 09:03:18 -07:00
Simon Lydell cf9d52e9f3 Hide ast and doc editors while loading the playground 2017-09-13 16:47:21 +02:00
Simon Lydell 709e271051 Improve CLI usage summary and fix typo 2017-09-13 18:21:04 +08:00
Simon Lydell 45d200a06d Improve option categorization and usage summary
- Move the very important options --write and --list-different to the
  top, in the new Output category. It could be argued that --help and
  --version also belong there, but I don't think they deserve such a
  prominent position, so they are left in the Other category.
  --find-config-path could also be considered an Output option, but I
  think it fits better in the Config category.
- Now that there's an Output category, should there also be an Input
  category? I thought about that, but the only candidates for such a
  category are --stdin and --stdin-filepath and I don't think they are
  important enough to have their own category, so they stay in Other.
- Move --cursor-offset, --range-end and --range-start to a new Editor
  category, since they are mainly for editor integrations.
- Document how Prettier deals with input and output by default.
2017-09-13 18:21:04 +08:00
Simon Lydell 32dfb80c86 Remove unnecessary fall-through comment 2017-09-13 18:21:04 +08:00
Simon Lydell be65370301 Remove reassignment in createOptionUsage 2017-09-13 18:21:04 +08:00
Simon Lydell 5d435abe0a Tweak option categories
- Move Format options first, since they feel the most important.
- Move --find-config-path to the Config category.
- Merge Command into Other. It wasn't clear what "Command" options are,
  and the Other category isn't too long anyway.
- Move --range-end and --range-start into Other. The aren't Format
  options.
2017-09-13 18:21:04 +08:00
Simon Lydell c99f7e2e38 Tweak option descriptions 2017-09-13 18:21:04 +08:00
Simon Lydell 602c2a2774 Rename detailOptions to detailedOptions 2017-09-13 18:21:04 +08:00
Simon Lydell 661c029036 Make createUsage a bit easier to read 2017-09-13 18:21:04 +08:00
Simon Lydell 4e5c808730 Fix typo in option description 2017-09-13 18:21:04 +08:00
Simon Lydell e060406df1 Update options config comment 2017-09-13 18:21:04 +08:00
Simon Lydell 2b9e1f80c5 Refactor option category grouping 2017-09-13 18:21:04 +08:00
Simon Lydell c2847d90cd Make ESLint catch category typos 2017-09-13 18:21:04 +08:00
Simon Lydell f53eab9b8d Make cli-util.js a bit more readable 2017-09-13 18:21:04 +08:00
Simon Lydell e192279218 Remove the other .splice in cli-util.js 2017-09-13 18:21:04 +08:00
Simon Lydell 1c6a881ed9 Remove one .splice in cli-util.js 2017-09-13 18:21:04 +08:00
Simon Lydell 79eaa5a6e1 Remove reassignment in createUsage 2017-09-13 18:21:04 +08:00
Simon Lydell 72132b4e97 Remove trailing whitespace in cli-constant.js 2017-09-13 18:21:04 +08:00
Stepan Burguchev fd937ec334 fix webstorm integration guide (#2796) 2017-09-13 12:06:49 +02:00
Simon Lydell 8ba2acadbb Make sure that shown playground Prettier version always is in sync 2017-09-12 22:17:06 +02:00
Simon Lydell 951aed47f6 Print playground AST with Prettier to make it easier to read 2017-09-12 22:17:06 +02:00
Simon Lydell 482a1d8311 Improve doc and ast editor appearance 2017-09-12 22:17:06 +02:00
Simon Lydell c08b70a0da Update playground service worker script caching 2017-09-12 08:03:10 +02:00
Lucas Azzola 3f74c45b91 Support graphql(schema, `query`) (#2781) 2017-09-11 20:18:11 +02:00
Simon Lydell d6eeaae29b Fix some playground HTML errors and warnings 2017-09-11 19:59:03 +02:00
Simon Lydell cdb7c0d4e3 Set playground Codemirror mode based on parser 2017-09-11 19:55:15 +02:00
Simon Lydell a768740945 Update issue template 2017-09-11 19:28:17 +02:00
Simon Lydell 1827d65d93 Add a "Copy as markdown" button to the playground 2017-09-11 19:27:56 +02:00
Lucas Duailibe f51929e262 Lint fix 2017-09-10 15:00:52 -06:00
Lucas Duailibe 902f7f0339 Use same logic for binary chain 2017-09-10 15:00:52 -06:00
Lucas Duailibe 1b2127efb6 Update snapshot 2017-09-10 15:00:52 -06:00
Lucas Duailibe bd78572b19 Break closing paren of ConditionalExpression in member chains 2017-09-10 15:00:52 -06:00
ikatyang 2ec2ff9f9d refactor: replace `getDetailOption()` with `detailOptionMap` 2017-09-11 00:48:05 +08:00
ikatyang a62be6a1d5 refactor: add `getDetailOption()` 2017-09-11 00:45:07 +08:00
ikatyang b4ed4d1ffb refactor: remove `hidden`, display option usage only if (opposite-)description existed 2017-09-11 00:24:03 +08:00
长天之云 df5482008e fix(prettierignore): support absolute filename (#2783) 2017-09-10 18:21:56 +02:00
ikatyang d6a1474901 refactor: replace `no-option` with `oppositeDescription` 2017-09-11 00:09:14 +08:00
Ika 8b02f702d5 fix(build): update ISSUE_TEMPLATE version regex to work as intended (#2785) 2017-09-10 17:37:07 +02:00
Lucas Duailibe 955a2c1472 Keep conditional expressions in one line on method chains (#2784)
Fixes #2775.

This commit will make conditional expressions to match the behavior of
logical expression in method chains:

```js
(a ? b : c).map()

// if the conditional fits in oneline
(a ? b : c)
  .map()

// if the conditional doesn't fit
(a
  ? b
  : c)
  .map()
```
2017-09-10 08:34:55 -07:00
ikatyang 3fa11984e9 refactor: use standard `// fall through` 2017-09-10 23:26:13 +08:00
Lucas Duailibe bba7dcf498 Fix break on conditional expressions inside return
Fixes #2777

Since we can't break after `return` and don't add `()` around
ConditionalExpressions' tests, we end up with some weird indentation when
breaking.
2017-09-10 04:13:47 -06:00
ikatyang 4c9763c530 docs: fix typo 2017-09-10 16:39:43 +08:00
ikatyang 1a4aac8f9b refactor: put `no-option` after `option` 2017-09-10 14:10:42 +08:00
ikatyang 0c3fe2bc9f refactor: sort category 2017-09-10 13:45:18 +08:00
ikatyang b9bc54aab6 refactor: adjust category 2017-09-10 13:37:21 +08:00
ikatyang b51135d9fd refactor: add explaining for each of the properties 2017-09-10 13:29:18 +08:00
ikatyang 0f9bb5b971 refactor: rename `formatOption` with `forwardToApi` 2017-09-10 12:32:15 +08:00
ikatyang eaafbb77aa refactor: adjust warning message 2017-09-10 12:17:33 +08:00
ikatyang 46a4cac617 refactor: pick format option from detailOptions 2017-09-10 12:11:32 +08:00