-
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
HTML: Proposal to organize the attribute-wrapping settings #1404
Comments
@vvs It looks like there's an overlap between As I said, I like the value names you've chosen in general. I think I'd change It sounds like you'd be opposed to using a comma-separated value list the way |
Hi @bitwiseman. Yeah, there is a bit of overlap between I am also OK with
Personally, I can live with anything, even if the settings are BASE64 encoded values! The main thing is that I am able to adjust the formatting behavior to my/team needs (which currently are in line with #1262). But as a matter of preference, having separate "option groups" is better so that I could modify them independently and think about different (orthogonal) concerns independently. And, most of all, it makes much easier to document the settings separately as compared to a huge list of all possible combinations. |
@vvs |
I like your proposal, and I think an even simpler implementation that could solve a lot of problems for some people, would be the option to configure the point at which "force" uses auto. For example, being able to say, if it has less than X attributes, use auto, otherwise, force wrap. |
I'd like to use "aligned-multiple" if using <= 3 attributes, otherwise "force-aligned". Is this possible at the moment? |
It does not exist currently. What you're asking for is similar to #1262, which is basically "Allow attributes one line unless they are going to wrap, in which case align them." |
any advances? |
Any plans to revisit this? |
@notiv-nt @Drumstix42 |
Bumping for interest… can't for the life of me figure out a way to have one attribute per line only if the single-line version would exceed the line length limit. |
I went for Prettier/PrettierX for now since it will do that. But know it does handle some other formatting slightly differently, and you may or may not like it. Check it out. |
I'm using Prettier for now and it is better than the janky stuff that was happening w/ jsbeautify, but I don't see any way to configure it within the UI in VS Code. Any thoughts on that? |
Extracted from #1297.
What we have
wrap_attributes
:auto
- enables wrapping of attributes.force
- first attribute stays, others wrapped with "wrap_attributes_indent_size"force-aligned
- the first attribute stays, others wrapped and aligned with the first oneforce-expand-multiline
- If there are more than 1 atribute, ALL attributes are wrapped no matter what and indented with "wrap_attributes_indent_size". AND: the closing '>' of the opening tag is also on the new line. This mode is currently broken, produces wrongly indented files :(There are also multiple effort to provide some additional modes that deal with wrapping of long html elements with multiple attributes: #1285 and #1262.
I think that there are multiple (orthogonal) concerns here and putting them all into single value would create more confusion and weird option names explosion if we are to handle all cases.
So, let's separate wrapping, aligning and number of attributes per line, etc.
Proposal
wrap_attributes_mode
:none
- We just don't wrap attributes, period. (needed?)auto
- Normal attribute wrapping, this should be the default, probably, as the most logical case. When the line is too big, we wrap. If all attributes can fit into a single line, they stay on the single line, no wrapping. (Default.)force
- We forcefully wrap if there are more than 1 attribute present, otherwise auto.When the wrapping is in action, the following properties are in play. If no wrapping happens, they don't play any role.
wrapped_attributes_per_line
:multiple
- Soft wrapping, default. Fit as many attrs per line as allowed.single
- The first attribute stays on the first line, others are on separate lines.single-all
- All attributes, including the first one, placed on separate lines. So, every attribute is on a separate line, and the element/tag line has no attributes left.wrapped_attributes_indent
:wrap_attributes_indent_size
, default.wrapped_attributes_per_line
), then we usewrap_attributes_indent_size
to calculate the indent.wrapped_attributes_end
:auto
- defaultmultiline
- the closing>
is on the separate line.Examples
force-expand-multiline
case: Force wrapping if there are more than 1 attribute, with one attribute per line, and with multi-line ending, placing the closing>
on the new line.The text was updated successfully, but these errors were encountered: