Comments (6)
Just some additional insight into why it may be helpful to indent case statements:
// without braces for case
const val = 'bar';
switch (val) {
case 'foo':
const b = 'bar';
break;
case 'bar':
const b = 'baz'; // SyntaxError: Identifier 'b' has already been declared
console.log(b);
break;
} // looks okay
// with braces for each case, no indentation
const val = 'bar';
switch (val) {
case 'foo': {
const b = 'bar';
break;
}
case 'bar': {
const b = 'baz'; // works!
console.log(b);
break;
}
} // two braces in a row at the same indent looks odd
// with braces for each case, with indentation
const val = 'bar';
switch (val) {
case 'foo': {
const b = 'bar';
break;
}
case 'bar': {
const b = 'baz'; // works!
console.log(b);
break;
}
} // looks "normal" to me
from prettier.
I was about to raise a bug that case
have an extra indenting level and found that this issue is actually producing this "bug" 😄
Is there an available option to get back to the switch
to be aligned with case
?
I'm used to this convention and I thought it was standard? ESlint complaints that the switch
is supposed to be aligned with case
.
There is a whole debate on internet about this, so I guess it should be made an option?
from prettier.
My opinion is that due to case
ending in a :
, it should be treated the same as a label, and not indented.
from prettier.
Yeah, this is annoying (but still, worth it 'cause Prettier is excellent) - I have to run it, then go re-un-indent the case statement, then save the file every time.
Seeing as the original Prettier behavior was "correct" then "fixed" in a PR because of someone's personal preference - it feels like this should be an option.
from prettier.
You can configure eslint to match prettier.
I strongly suspect the style prettier currently produces is by far the more common, and that most people will not refuse to use prettier because it enforces this style (although of course some people will). It is, for example, the style recommended by AirBnB, Google, and standard-js. As such, this seems like a textbook case where prettier should resist adding configuration. Remember, prettier is supposed to be opinionated!
Try this style; I bet you'll get used to it quick.
from prettier.
I could get used to ANY style quickly if I had to - but personally ESLint is my boss and I have to make my tools work around it. I agree it doesn't have to be an option but it should be opinionated that case statements are labels and shouldn't be indented, just as the original author made it.
It's not a big deal though - I try not to use switch statements too often, so it's easy to fix them each time.
from prettier.
Related Issues (20)
- Ugly logical expression break in Vue `v-if`
- [bug] [yaml] list indent fix can result in invalid yaml or change the meaning of existing yaml
- HTML 'strict' whitespace sometimes injecting a '>'
- Bug with type assertion around yield expression
- Prettier breaks Markdown alert syntax
- Prettier changes meaning of HTML+JS code when using tags that look like self-closing HOT 3
- Comment in last line of YAML files gets leading newline trimmed HOT 1
- Typescript: Prettier incorrectly breaks up constructor properties from modifiers when there is a decorator and comment before it HOT 1
- [Documentation] Pre-Commit Hook Usage case caveat
- Still the error "Error: Comment "Hello" was not printed. Please report this error!" even though I have added a comment in the Doc. HOT 1
- [JavaScript] Comments between ternary operator formatting result is ugly HOT 2
- Prettier wrong formatting of Angular flow HOT 3
- Markdown undesirable formatting behaviour when new text added to paragraph HOT 2
- Error when file names HOT 4
- Can we have a CLI flag that allows ignoring .gitignore and/or .prettierignore please? HOT 2
- Unstable block comment for implemented interfaces (TypeScript) (moved and non-idempotent)
- Markdown lists with extra indent lead to unstable formatting behavior
- [SCSS] Put unary boolean operator in front of expression when wrapping HOT 3
- Incorrect JavaScript configuration caching behavior
- Omitting a key does not does not work on the Config type
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from prettier.