Georgii Dolzhykov
b3adb46ba9
Keep parens around non-null assertions for new-expressions only ( #6140 )
2019-05-22 19:01:47 -03:00
Lucas Duailibe
7e47b4ea26
Preserve parens around expressions in default export declaration that start with function or class ( #6133 )
2019-05-20 09:31:38 -03:00
Rich Hong
906d33749b
Add support for styled-jsx external styles ( #6089 )
2019-05-19 13:26:30 -03:00
Sosuke Suzuki
3b3c411642
TypeScript: Keep parentheses around a function called with non-null assertion. ( #6136 )
2019-05-19 13:15:02 -03:00
Sosuke Suzuki
4c64f13ef4
[TS] keep a pair of parentheses where there extra pairs. ( #6131 )
2019-05-17 18:13:40 -03:00
Lucas Duailibe
eca23e111f
Stop converting empty JSX elements to self-closing elements ( #6127 )
...
Co-Authored-By: Simon Lydell <simon.lydell@gmail.com>
2019-05-16 15:14:35 -03:00
Lucas Duailibe
df258d6d7e
Add parens in JSX spread element with expressions ( #6130 )
2019-05-16 15:06:41 -03:00
Evilebot Tnawi
7a76e5d08e
fix(javascript): correctly handle comments in empty arrow function expressions ( #6086 )
2019-05-15 12:46:12 -03:00
Evilebot Tnawi
2cebeecb4f
fix(javascript): do not hug sequence expression in object properties ( #6088 )
2019-05-15 12:29:45 -03:00
Lucas Duailibe
012b7a653e
Prevent adding unnecessary quotes when a computed key exists ( #6119 )
2019-05-14 19:41:49 -03:00
Mykola Bilochub
c95b81dd3d
fix(markdown): correctly determine count of backticks in inline code ( #6110 )
2019-05-14 12:51:31 -03:00
Brian Kim
48d542ec1e
TypeScript: Don’t breakup call expressions when the last argument is an arrow function with a simple return type ( #6106 )
2019-05-14 10:57:42 -03:00
Justin Ridgewell
4fda7af783
Fix closure type cast without spaces ( #6116 )
...
* Fix closure type cast without spaces
Closure typecasts don't require a space between the `@type` and opening `{`.
* More tests, and add a changelog entry
2019-05-14 10:14:52 -03:00
Sosuke Suzuki
e3b2f4adb4
Keep a trailing comma in type parameter in .tsx files ( #6115 )
2019-05-13 14:53:45 -03:00
jwbay
6cee80b5b5
Don't break simple template literals ( #5979 )
...
A simple template literal is initially defined as a literal wherein all the expressions are identifiers or member access expressions where all parts are identifiers. We print these expressions into strings with infinite print width before printing the template.
2019-05-08 13:14:55 -03:00
Yang Su
54b7655dab
Improved multiline closure comment detection ( #6070 )
2019-05-07 07:30:07 -03:00
mathieulj
26183e5be2
Use same print width for range formatting as normal formatting. ( #6050 )
...
* Use same print width for range formatting as normal formatting.
Fixes an issue were a file would end up formatted differently
with ranged formatting (--range-start & --range-end) versus
normal whole file formatting.
* Document range bugfix in changelog.
2019-05-04 10:18:55 -04:00
Cyrille David
84cc273c7d
fix(glimmer): {{else}}{{#if}} into {{else if}} merging ( #6080 )
2019-05-02 16:26:26 +03:00
Evilebot Tnawi
157b020de6
fix(javascript): correctly handle comments in empty arrow function expressions ( #6087 )
2019-04-30 14:25:20 +03:00
Justin Ridgewell
c085aeb152
Fix closure compiler type casts ( #5947 )
...
* Fix closure compiler type casts
This fixes casts when they are followed by a closing parenthesis, eg:
```js
foo( /** @type {!Array} */(arrOrString).length );
```
The old code would see the `CallExpresion`'s closing `)` and assume the typecast belonged to the `MemberExpression`, not the `arrOrString` `Identifier`.
This would be easier to accomplish if every AST would tell us if the expression were parenthesized. If they did, we could check that the node were parenthesized and either it or an ancestor has a typecast, stopping when we find an ancestor is itself parenthesized.
* More tests, and changelog
* Fix while loop
* Update changelog
* Update CHANGELOG.unreleased.md
* Use babel's parenthesized information
* Cleanup call
2019-04-26 13:05:57 -04:00
Lucas Duailibe
ff79721397
Bump Prettier dependency to 1.17.0
2019-04-12 17:44:48 -03:00
Evilebot Tnawi
dcaed91518
fix: respect newlines in parameters ( #5836 )
2019-04-04 09:50:07 -03:00
Adrian Zgorzałek
9cb50add5e
graphql: Support variable directives. ( #6020 )
2019-04-04 09:47:05 -03:00
Adrian Zgorzałek
7c9823fcba
Teach prettier/graphql about formatting fragment variables. ( #6016 )
...
Fragment variables are an experimental extension to GraphQL schema.
Formatting should follow the same rules as formatting an OperationDefinition node,
hence code is the same.
2019-04-04 09:44:52 -03:00
Noah Sugarman
0b07e10833
fix multiline dynamic import comments ( #6025 )
2019-04-02 12:35:03 -07:00
Kevin Gibbons
1e471a0079
Add parentheses for immediately-constructed fn/class ( #5996 )
2019-03-28 21:06:39 +03:00
Zaven Muradyan
887f800651
fix(angular): don't add unnecessary parentheses to pipes ( #5929 )
2019-03-13 09:02:36 +08:00
Lucas Azzola
f32b289032
Support shared Prettier configuration ( #5963 )
...
* Support external configuration
* Document changes
* Update existing snapshots
* Update existing snapshots (2)
* Fix typo in docs
* Add example config repo
2019-03-13 09:34:51 +11:00
Hugo Alliaume
b38319740a
feat: autoload plugins that are located in `@*/prettier-plugin-* ( #5945 )
...
* add tests
* implement the feature
* update docs
* update changelog
* typo
2019-03-10 20:34:04 +11:00
Lucas Azzola
f526c47b1e
Add an option to modify when Prettier quotes object properties ( #5934 )
...
* Implement quote-props=preserve
* Implement quote-props=consistent
* Add tests
* Enable quoteProps in playground
* Add documentation
* Cache objectHasStringProp calculations
* Fixup changelog
2019-03-06 20:33:08 +11:00
Warren Seine
3a9006659e
Fix trailing comment output when the printer returns a doc instead of a string. ( #5930 )
...
Previously, Prettier printed `[Object object]` in that situation.
2019-03-03 11:15:08 -08:00
fisker Cheung
9352331f1a
Remove duplicated getLast ( #5889 )
2019-02-21 12:03:35 -03:00
Julien Marchand
ed1db90c68
Honor stdin-filepath when outputting error messages. ( #5878 )
2019-02-20 08:39:25 -05:00
Yang Su
71b815f583
JavaScript: Fix parens logic for optional chaining expressions and closure type casts ( #5843 )
2019-02-11 13:33:56 -02:00
Maël Nison
9793154833
Tweak the plugin directory search ( #5819 )
...
* Update load-plugins.js
* Update load-plugins.js
* Adds a test
* Fixes lint
2019-02-05 07:47:55 -05:00
Lucas Azzola
2982dcd897
Fixup getSupportInfo for babylon parser prior to 1.16.0 ( #5826 )
...
This undoes an accidental breaking change where `prettier.getSupportInfo('1.0.0')` would report supporting the `babel` parser instead of `babylon`.
Fixes #5822
2019-02-03 21:57:59 +11:00
Nathan Totten
a093bb3f7b
Adds LWC Parser to support unquoted interop attributes ( #5800 )
...
This pull requests adds a new parser option `lwc`. This is the same as the HTML parser, but it adds support for unquoted HTML attributes per the needs of LWC. See: #5627
2019-02-01 13:58:50 +08:00
陈帅
a9d2c41464
feat(markdown): do not align table contents if it exceeds the print width and `--prose-wrap never` is set ( #5701 )
...
Fixes #5651
2019-01-30 12:24:21 -05:00
Yang Su
47da0804a9
JavaScript: fix edge cases in type cast comment detection regex ( #5793 )
...
Fix edge cases involving {...} ([record @type](http://usejsdoc.org/tags-type.html )) and newlines in prettier's detection code for type cast comments
2019-01-30 15:24:34 +08:00
Ika
847a78e8e9
fix(html): do not format non-normal whitespaces as normal whitespaces ( #5797 )
2019-01-30 14:30:10 +08:00
Alexander Kachkaev
36aeb4ce4f
Fix CI detection to avoid unwanted TTY behavior ( #5804 )
2019-01-30 14:08:03 +08:00
James Henry
1143619600
chore: update typescript-estree to new package name ( #5799 )
2019-01-28 19:46:51 -05:00
Ika
153d2d0570
fix(typescript): stable parens for function type in arrow return type ( #5790 )
2019-01-22 21:07:10 +08:00
Ika
1061be0702
fix(mdx): correctly recognize inline JSX ( #5783 )
2019-01-22 12:02:30 +08:00
Ika
2002ce0453
fix(javascript): add necessary parentheses for decorators ( #5785 )
2019-01-22 00:54:41 +08:00
Simen Bekkhus
565731668f
fix: do not format callbacks with arguments as React hooks ( #5778 )
...
Ref: https://github.com/prettier/prettier/pull/5608#issuecomment-455860396
2019-01-22 00:26:39 +08:00
Ika
a9fd8e2cf4
fix(api): do not report the same deprecation warning more than once ( #5774 )
...
A quick fix for suppressing duplicate deprecation warnings.
2019-01-20 15:38:19 +08:00
Ika
42f7b6025e
fix(javascript): remove unnecessary linebreaks from html templates ( #5771 )
2019-01-20 11:15:18 +08:00
Wenlu Wang
1dea4ef6f2
fix: allow plugin instance ( #5760 ) ( #5763 )
2019-01-18 12:40:18 -02:00
James Henry
8ac0a731a4
chore: update typescript-estree to 18.0.0 ( #5750 )
2019-01-12 17:02:16 -05:00
James Henry
ef6386015d
fix: update typescript and typescript-estree to latest ( #5728 )
2019-01-12 11:10:52 +08:00
makepost
94eab666c4
fix(javascript): skip .connect() method when composing fun ( #5739 )
2019-01-10 12:20:15 -07:00
Jarda Snajdr
5847c168e4
Fix formatting of lists in SCSS property/variable values ( #5710 )
2019-01-10 00:08:34 +08:00
Phil
30979ed104
typescript: remove unneeded parentheses around type annotation ( #5724 )
...
* Remove unnecessary parentheses from annotations
* add test for ts parentheses bug
2019-01-07 09:19:41 -03:00
Ika
63999c74eb
fix(mdx): handle inline html correctly ( #5704 )
2019-01-03 10:46:11 +08:00
Ika
3de36e3a2b
fix(ng,vue): add parens to avoid unexpected `}}` in interpolations ( #5657 )
2018-12-30 23:03:42 +08:00
Ika
7c4cebeaa5
feat: add babel-flow ( #5685 )
2018-12-29 21:35:47 +08:00
Wei-Wei Wu
91c20f7fbe
Rename "babylon" with "babel" ( #5647 )
2018-12-27 21:05:19 +08:00
Ika
65a9d3b8cc
fix(flow,ts): format `/* HTML */` templates ( #5658 )
2018-12-19 23:00:18 +08:00
Alexander Kachkaev
711c6d78a8
Add --check option ( #5629 )
2018-12-19 22:03:30 +08:00
mattia richetto
031f6e860f
Update string-width to support emoji natively ( #5646 )
...
the `string-width` package v3 now supports emoji width https://github.com/sindresorhus/string-width/pull/17
2018-12-18 08:13:12 +08:00
lhchavez
911d6c88e5
Fix formatting with --range-start / --range-end ( #5632 )
...
This change avoids collapsing an already-formatted range into a single
overlong line when --range-start / --range-end are provided.
Fixes : #4923
2018-12-17 10:59:20 -02:00
Dmitriy Sharshakov aka. sh7dm
6a45924379
fix(printer-postcss): ignore escape \ and escaped / in Less ( #5597 )
...
Avoid messing up Less files containing \\/ (escaped /).
Ignore escape \ and escaped / in Less.
2018-12-17 08:28:48 +08:00
Ika
cbf06bf388
feat(html): format script with "application/ld+json" ( #5642 )
2018-12-16 16:21:10 +08:00
Brian Ng
8e612f05a0
Add support for class private methods ( #5637 )
2018-12-14 09:45:26 -06:00
Ika
ffc8482458
fix(vue): tag names are case-sensitive ( #5606 )
2018-12-13 10:31:48 +08:00
Ika
419559e964
fix(javascript): correct indentation for expression in root template ( #5607 )
2018-12-12 09:52:23 +08:00
Jed Fox
b74f94d6dd
Remove the dynamic `require()` call in the standalone bundle ( #5612 )
...
* Remove the dynamic `require()` call in the standalone bundle
* Liiiint
* Just use `replaceStrings`
* Reword error message
2018-12-11 05:59:59 -05:00
Ika
d97fe0a1e0
feat(html): preserve surrounding linebreaks ( #5596 )
2018-12-11 12:43:53 +08:00
Jed Fox
fa7eafaa6d
Add support for the React `useEffect` hook ( #5608 )
...
* Add support for the React `useEffect` hook
* Format
* Format
* [Refactor] remove unnecessary condition
`canHaveTrailingComma` is defined as `I(lastElem && ...)`, which will always be true when `lastElem === null`.
* Use a hacky method to allow the array to break
* Revert "[Refactor] remove unnecessary condition"
This reverts commit 91906ba22438afa0fe5e10c64a1fcf3cfa484ff3.
* Add tests for `React.useEffect` form
2018-12-10 06:09:20 -05:00
Ika
952bc0cc03
fix: get rid of CRLF ( #5494 )
2018-12-08 18:28:29 +08:00
Laurin Quast
9d1fb93e86
feat: add mjml extension to html language ( #5505 )
2018-12-07 21:01:40 +08:00
Ika
cd28c22dbe
feat(html): smart quote for attributes ( #5590 )
2018-12-05 11:15:09 +08:00
Ika
3cd1d003c0
fix(typescript): do not throw errors on bigint keyword ( #5577 )
...
- fix `Error: unknown type: "TSBigIntKeyword"`
- bump typescript to stable version
2018-11-30 10:12:32 +08:00
Ika
2247ce1aab
feat(angular): support interpolation in attributes ( #5573 )
2018-11-30 09:28:54 +08:00
Ika
3fcf69a7d5
fix(api): normalize file path for `getFileInfo` ( #5570 )
2018-11-29 11:04:44 +08:00
Ika
28b938da97
feat(html): update angular-html-parser ( #5565 )
...
- support [`htm`](https://github.com/developit/htm ) (`<${Component}>content<//>`, `<div />`)
- preserve [bogus comments](https://www.w3.org/TR/html5/syntax.html#bogus-comment-state ) (`<! ... >`, `<? ... >`)
2018-11-29 11:03:22 +08:00
Ika
1ecd2228b4
fix(vue): group slot-scope correctly ( #5563 )
2018-11-29 10:09:38 +08:00
Ika
0534735c2f
fix(vue): tweak semicolon for single expression in event bindings ( #5519 )
2018-11-29 09:28:35 +08:00
Christopher Chedeau
0af81c7695
Improve union types with leading comments ( #5575 )
...
We're running into this issue at Facebook because `// flowfixme` ignores the very next line, but in this case an empty line is added in-between which breaks the fixme.
Ideally the solution is to avoid adding a newline and we'd call it a day. Unfortunately it is tricky to implement in this particular case. The comment is already printed, including its \n. Yet, we want to indent the block and the only way to convince the doc printer to do so is to add an indent group --before-- the \n is printed, otherwise it's just going to indent on the next \n.
So this PR changes the output from one bad way to another, but the new way has the benefit of not breaking flow for Facebook, which makes our internal teams happier.
Note that the way we print the same construct with `&` is broken in the same way as with this PR. https://prettier.io/playground/#N4Igxg9gdgLgprEAuc0DOMAEBbAngNQEMAbAVzkwF5MAKME4+4xhpl5tmgDgHYA2LgE5+g3gP5CRY6cL6iJE2fL4BKJAB0ombTt17tAegOYAwhGzYEMTftu7oFAGSYYAdwjOYACwBOTzABWACYA1gAeXgBmxCFowVEA5jEBaEGJyV6pIdEBCZkhQQGJIcQpXkGRCSFFWaWRXlWlaOWVwZElCUUlAZgqANwgADQgEAAOMACW6MighD4+EK4ACnMIaMgghABuEBNBQyAARj6EYCFwMADKo6cTUAnIMD7kw14w2MQA6l4T8Gg3YDglzWvwmW1+uA2YDQ62GdzQcB8MCWJwS2EIyEiJARwxSYQAQiczhdLoRLAAZO5wTHYuC4tBhS53JJwACKpAg8BpxBxIBuPgRPg2h0Ih1wxGgB1GPjuME+e28yC4AAZhtKIAjPidRhtpXBBVtqcM-ABHUgTPwowhojFILE8ukgBHYCaPZ6OtDM4hsjlcu204YwUXyoKKpAAJkDJwmxGZZgstpAUAcB1ICIAKqL1v6HQBfXNAA
Fixes #5572
2018-11-28 10:30:51 -08:00
Ika
4dd7c79bbf
fix(html): correct column for error code frame ( #5553 )
...
- before
```html
[error] test.html: SyntaxError: Unexpected character "/" (1:26)
[error] > 1 | <div>footer content here<//>
[error] | ^
```
- after
```html
[error] test.html: SyntaxError: Unexpected character "/" (1:27)
[error] > 1 | <div>footer content here<//>
[error] | ^
```
2018-11-27 17:45:17 +08:00
Ika
05ad885c3c
feat(typescript): support BigInt ( #5546 )
2018-11-27 16:53:34 +08:00
Ika
3a5bbf5fd2
fix(typescript): do not change `module` into `namespace` and break/hug their body correctly ( #5551 )
2018-11-26 13:34:35 +08:00
Ika
a7528ebea4
fix(ng,vue): do not normalize attribute names ( #5549 )
2018-11-26 12:09:19 +08:00
Ika
66ada24961
feat(angular): do not print colon for ngIf ( #5542 )
2018-11-25 15:43:40 +08:00
Ika
b6a04ab8ba
fix(html-in-js): do not add quotes for interpolation-only attributes ( #5544 )
2018-11-25 15:04:02 +08:00
Ika
c788842fea
fix(javascript): add missing parens for binary in optionalMember ( #5543 )
2018-11-25 11:42:06 +08:00
Ika
ab7f46bf40
feat(yaml): preserve the first document head end marker ( #5502 )
2018-11-25 10:30:25 +08:00
evelyn masso
e12cd17be2
ensure --list-different + --write reports status code 0 ( #5512 )
...
* change exit code for list different and write
* update existing tests
2018-11-23 10:42:29 -05:00
Ika
7da4ed76ad
fix(html): do not touch comments ( #5525 )
2018-11-23 21:25:58 +08:00
Ika
228a8b0782
fix(html): do not add extra indent for js template in script ( #5527 )
2018-11-23 15:20:30 +08:00
Ika
cdac9552ef
fix(vue,ng): do not normalize tag names ( #5526 )
2018-11-23 13:12:43 +08:00
Ika
b2eadd234b
fix(vue): preserve custom block ( #5458 )
2018-11-23 12:33:48 +08:00
Ika
6ee2f464ac
feat(javascript): enable logical assignment ( #5489 )
2018-11-18 16:38:35 +08:00
Ika
043a937de6
fix(markdown): do not trim content in inline-math ( #5485 )
2018-11-16 00:17:20 +08:00
Ika
668e049a5e
feat(html): support ie conditional start/end comment ( #5470 )
2018-11-15 12:35:28 +08:00
Ika
4f63be05e8
fix(html): leading space for leading interpolation in textarea is sensitive ( #5468 )
2018-11-15 10:34:42 +08:00
Ika
c00dcb97b0
fix(html): preserve content for element in `<pre>` correctly ( #5473 )
2018-11-15 10:34:27 +08:00
Huáng Jùnliàng
d86f39cb83
fix(markdown): add more category to CJK regex ( #5480 )
...
The following characters should be treated as CJK character
```
3099..309A ; Hira Kana # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
309B..309C ; Hira Kana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
```
Here is the [playground link](https://deploy-preview-5402--prettier.netlify.com/playground/#N4Igxg9gdgLgprEAuEhqhkFkMhahnYeoZ2EaGdQZoZ1AzBkEyGVczcnco8gHSmcGkGQEwZTB7BkHuGQGQjAdgw9AgAyAHhmGBHhmGAnhkDWDIEH7QJ0OgJIZAG3KB1BlIACANoA3ALpbAz+nLAFhGA-50CaDIGiGQMoMgCwZAEP89A2Qxj3E99NeBIf8BBDHyA8QyAMQyA+gyAMgzCgABygDRBgCFuslyAVgyAkQzJrIDGDGGAQAzMzCAANCAQAA4wAJbQAM7IoACGAE6NEADuAApNCLUo9XoQFQAmRSAARo31YADWcDAAyqWTFVAA5sgwjQCucMUAFjAAtgA2AOq7FfDVi2Bwc90XFXoXAJ7I4NW1xcvVcI0w7RMVgd6sgAGb1I4-YoAK2qAA8AEITaazOb1A5wAAyyzgYIhUJAsLhc2WKyOcAAipsIPA8ZCdiBFo0fo03sDGlNBm0oCNSi0ficJqU3ny4Cy9Ljio04ABHTYVaUA+pAkFIcH04o-A4VdZbBnVUnkqk03Fq-EMmD1UYnIYwXbIABMxQ29QqR1JAGEIAdgW8oNBJSBNj8ACpWnrqgl85YwG2DO3IADsAAYAL6poA ) to show that current `prettier` adds redundant whitespaces around the characters.
The testcase text are copied from [半濁点 - Wikipedia](https://ja.wikipedia.org/wiki/%E5%8D%8A%E6%BF%81%E7%82%B9 ) and [ヴ - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%B4 ) respectively.
2018-11-15 00:10:50 +08:00
Ika
5c479cc55f
fix(typescript): do not add invalid semi for construct in interface with prettier-ignore ( #5469 )
2018-11-14 21:35:37 +08:00