-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add "collapse-one-line" option for non-collapse brace styles #487
Comments
a === 1 && a++; :) |
Interesting idea, but it isn't high on our list of requests. |
+1 Not just for if-else, but it'd be useful for small objects
|
Similar to #315 |
This some forms of this may be covered by 1.6.0, but it has not been fully tested. |
hmm just pulled the latest but these are still the same:
|
If you set `brace_style=collapse-preserve-inline" and provide the inline versions as inputs these work: if (a == 1) { a++; }
a = { a: a };
UserDB.findOne({ username: 'xyz' }, function(err, user) {});
import { fs } from 'fs'; |
Thank you for working on this. Unfortunately, the result does not work for me because it's implemented as a new brace-style I use the The current solution only works for a very small subset of users who actually prefer the Also, there is another issue in that the new // input sample (want to keep this formatting)
if (a == 1) {a++;}
else if (a == 2) {
a++;
b++;
}
// using collapse-preserve-inline.
// this is very undesirable... now my control statements are on the same line
if (a == 1) { a++; } else if (a == 2) {
a++;
b++;
} If the above ideas were implemented (and the bug fixed), then we would likely have a working solution. The 'perfect' solution would require a lot of work (and is likely not going to happen): |
Thank you for following up and continuing to provide feedback. When I was implementing the preserve-inline, I considered that people my want expand with preserved inline blocks and then thought "Nah, why would anyone do that?" 😄 And as usual, I was wrong. What you describe as a bug in What you're talking about for perfect solution would require full parsing of the javascript (see #200). And you're also talking about the difference between formatting in the editor vs formatting of a whole file. And yes much more work to implement, and then the combinatorial problem of testing the interactions between all those options. There are other projects that are attempting to provide this level of granularity, but it isn't a goal of this project. I'll reopen this, but we are again back to low priority. I would welcome a pull request that added `expand-preserve-inline' and 'end-expand-preserve-inline' (or even one that moved the preserve inline to a separate setting), assuming it included tests and the python port. Just for reference, the main change for preserving inline is here: It might not be that hard to add the functionality you're suggesting. |
@sevin7676 - please see 1.6.6 and #1052 . I think this issue is addressed. Please reopen if it is not. |
pkgsrc changes: - Use ALTERNATIVES in order to permit multi-pkgs to coexists and adjust PLIST and introduce Makefile post-install target accordingly Changes: * CSS: Preserve Newlines ([#537](beautifier/js-beautify#537)) Reverted #1117 - Preserve newlines broken * On beautify, new line before next CSS selector ([#1142](beautifier/js-beautify#1142)) Added `preserver_newlines` to css beautifier * Fixed html formatting issue with attribute wrap (Thanks, @HookyQR!) * Fixed python package publishing * Wrong HTML beautification starting with v1.6.5 ([#1115](beautifier/js-beautify#1115)) * Ignore linebreak when meet handlebar ([#1104](beautifier/js-beautify#1104)) * Lines are not un-indented correctly when attributes are wrapped ([#1103](beautifier/js-beautify#1103)) * force-aligned is not aligned when indenting with tabs ([#1102](beautifier/js-beautify#1102)) * Python package fails to publish ([#1101](beautifier/js-beautify#1101)) * Explaination of 'operator_position' is absent from README.md ([#1047](beautifier/js-beautify#1047)) * Fixed a batch of comment and semicolon-less code bugs * Incorrect indentation after loop with comment ([#1090](beautifier/js-beautify#1090)) * Extra newline is inserted after beautifying code with anonymous function ([#1085](beautifier/js-beautify#1085)) * end brace with next comment line make bad indent ([#1043](beautifier/js-beautify#1043)) * Javascript comment in last line doesn't beautify well ([#964](beautifier/js-beautify#964)) * indent doesn't work with comment (jsdoc) ([#913](beautifier/js-beautify#913)) * Wrong indentation, when new line between chained methods ([#892](beautifier/js-beautify#892)) * Comments in a non-semicolon style have extra indent ([#815](beautifier/js-beautify#815)) * [bug] Incorrect indentation due to commented line(s) following a function call with a function argument. ([#713](beautifier/js-beautify#713)) * Wrong indent formatting ([#569](beautifier/js-beautify#569)) Added `content_unformatted` option (Thanks @arai-a) * HTML pre code indentation ([#928](beautifier/js-beautify#928)) * Beautify script/style tags but ignore their inner JS/CSS content ([#906](beautifier/js-beautify#906)) * Added support for editorconfig from stdin * Added js-beautify to cdnjs * Fixed CRLF to LF for HTML and CSS on windows * Added inheritance/overriding to config format (Thanks @DaniGuardiola and @HookyQR) * Added `force-align` to `wrap-attributes` (Thanks @LukinoS) * Added `force-expand-multiline` to `wrap-attributes` (Thanks @tobias-zucali) * Added `preserve-inline` as independent brace setting (Thanks @Coburn37) * Fixed handlebars with angle-braces (Thanks @mmsqe) * Wrong indentation for comment after nested unbraced control constructs ([#1079](beautifier/js-beautify#1079)) * Should prefer breaking the line after operator ? instead of before operator < ([#1073](beautifier/js-beautify#1073)) * New option "force-expand-multiline" for "wrap_attributes" ([#1070](beautifier/js-beautify#1070)) * Breaks if html file starts with comment ([#1068](beautifier/js-beautify#1068)) * collapse-preserve-inline restricts users to collapse brace_style ([#1057](beautifier/js-beautify#1057)) * Parsing failure on numbers with "e" ([#1054](beautifier/js-beautify#1054)) * Issue with Browser Instructions ([#1053](beautifier/js-beautify#1053)) * Add preserve inline function for expand style braces ([#1052](beautifier/js-beautify#1052)) * Update years in LICENSE ([#1038](beautifier/js-beautify#1038)) * JS. Switch with template literals. Unexpected indentation. ([#1030](beautifier/js-beautify#1030)) * The object with spread object formatted not correctly ([#1023](beautifier/js-beautify#1023)) * Bad output generator function in class ([#1013](beautifier/js-beautify#1013)) * Support editorconfig for stdin ([#1012](beautifier/js-beautify#1012)) * Publish to cdnjs ([#992](beautifier/js-beautify#992)) * breaks if handlebars comments contain handlebars tags ([#930](beautifier/js-beautify#930)) * Using jsbeautifyrc is broken ([#929](beautifier/js-beautify#929)) * Option to put HTML attributes on their own lines, aligned ([#916](beautifier/js-beautify#916)) * Erroneously changes CRLF to LF on Windows in HTML and CSS ([#899](beautifier/js-beautify#899)) * Weird space in {get } vs { normal } ([#888](beautifier/js-beautify#888)) * Bad for-of formatting with constant Array ([#875](beautifier/js-beautify#875)) * Problems with filter property in css and scss ([#755](beautifier/js-beautify#755)) * Add "collapse-one-line" option for non-collapse brace styles ([#487](beautifier/js-beautify#487))
Would it be possible to add an option that makes brackets stay on the same line after a conditional statement IF there is only one line of code after the conditional?
Example:
right now this gets turned into:
or (depending on options):
Using brackets for a single line after a conditional is good practice as it prevents ambiguity and stupid mistakes for what is going to execute after the conditional. However, reading code that requires either 3 or 4 lines (depending on current options) for a single line conditional and single line result is tedious as it takes up far too much space.
The text was updated successfully, but these errors were encountered: