Js-beautify: HTML:组织属性包装设置的建议

创建于 2018-05-31  ·  9评论  ·  资料来源: beautify-web/js-beautify

摘自#1297。

我们有什么

wrap_attributes :

  • auto - 启用属性包装。
  • force - 第一个属性保留,其他属性用“wrap_attributes_indent_size”包裹
  • force-aligned - 第一个属性保持不变,其他属性与第一个属性包装并对齐
  • force-expand-multiline - 如果有超过 1 个属性,则无论如何都会包装所有属性并使用“wrap_attributes_indent_size”缩进。 AND:开始标签的结束“>”也在新行上。 此模式当前已损坏,会生成错误缩进的文件 :(

还有多种努力来提供一些额外的模式来处理具有多个属性的长 html 元素的包装:#1285 和 #1262。

我认为这里有多个(正交)问题,如果我们要处理所有情况,将它们全部放入单个值会造成更多的混乱和奇怪的选项名称爆炸。

所以,让我们分开包装、对齐和每行属性的数量等。

提议

wrap_attributes_mode

  • none - 我们只是不包装属性,句号。 (需要吗?)
  • auto - 普通属性包装,这应该是默认值,可能是最合乎逻辑的情况。 当线太大时,我们换行。 如果所有属性都可以放在一行中,则它们将保留在一行中,不换行。 (默认。)
  • force - 如果存在超过 1 个属性,我们会强制包装,否则自动包装。

当包装在起作用时,以下属性在起作用。 如果没有包装发生,它们就不会发挥任何作用。

wrapped_attributes_per_line :

  • multiple - 软包装,默认。 在允许的范围内,每行适合尽可能多的 attrs。
  • single - 第一个属性位于第一行,其他属性位于不同的行。
  • single-all - 所有属性,包括第一个属性,放在单独的行上。 因此,每个属性都在单独的行上,并且元素/标记行没有任何属性。

wrapped_attributes_indent :

  1. auto - 使用wrap_attributes_indent_size默认
  2. 对齐——所有属性开始与第一个属性对齐。 如果第一个属性在新行上(“单一”模式wrapped_attributes_per_line ),那么我们使用wrap_attributes_indent_size来计算缩进。

wrapped_attributes_end :

  • auto -默认
  • multiline - 结束>在单独的行上。

例子

  1. 默认情况:我们软包装并尝试在每行中容纳尽可能多的属性,但在行长度限制内。
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = auto
wrapped_attributes_end = auto
  1. #1285 案件。 与默认情况非常相似,但我们将包装的属性对齐到与第一个属性相同的缩进级别。
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. #1262 案件。 当我们换行时,我们希望每行有一个属性,与第一个属性对齐。
wrap_attributes_mode = auto
wrapped_attributes_per_line = single
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. 当前force-expand-multiline案例:如果有超过 1 个属性,则强制换行,每行一个属性,并且以多行结尾,将结束>放在新行上。
wrap_attributes_mode = force
wrapped_attributes_per_line = single-all
wrapped_attributes_indent = auto
wrapped_attributes_end = multiline
javascript discussion enhancement

最有用的评论

我喜欢你的建议,我认为一个更简单的实现可以为某些人解决很多问题,可以选择配置“强制”使用自动的点。 例如,可以说,如果它的属性少于 X,则使用 auto,否则,强制换行。

所有9条评论

@vvs
很好,谢谢!

看起来forcemultiple之间存在重叠,但是由于设置的复杂性,一些冲突可能是不可避免的

正如我所说,我喜欢您通常选择的值名称。 我想我会将wrapped_attributes_end更改为expand-multiline - 因为它仅在元素是多行元素时才会扩展。

听起来您会反对像brace-style[collapse|expand|end-expand|none][,preserve-inline] )那样使用逗号分隔的值列表。 我问只是因为我不喜欢在一个可以工作的情况下拥有更多的选项字段。

嗨@bitwiseman。 是的, forcemultiple之间有一些重叠。 基本上,“强制”多个属性等于auto :)

我也可以expand-multiline

听起来您会反对使用逗号分隔值

就个人而言,我可以接受任何事情,即使设置是 BASE64 编码值! 主要的是我能够根据我/团队的需要调整格式化行为(目前符合#1262)。

但作为一个偏好问题,拥有单独的“选项组”更好,这样我就可以独立地修改它们并独立地考虑不同的(正交)问题。 而且,最重要的是,与所有可能组合的庞大列表相比,单独记录设置要容易得多。

@vvs
关于对不同行为进行单独设置的好点。

我喜欢你的建议,我认为一个更简单的实现可以为某些人解决很多问题,可以选择配置“强制”使用自动的点。 例如,可以说,如果它的属性少于 X,则使用 auto,否则,强制换行。

如果使用 <= 3 属性,我想使用“aligned-multiple”,否则使用“force-aligned”。 目前这可能吗?

@otonielguajardo

它目前不存在。

你所要求的类似于#1262,它基本上是“允许属性一行,除非它们要换行,在这种情况下对齐它们。”
看起来@Adondriel在那个问题中也请求了你想要的东西(基于属性计数)。

有什么进步吗?

有没有计划重新审视这个?

@notiv-nt @Drumstix42
由于时间有限,我一直在修复其他错误。
这仍然值得做,但需要有人花时间来完成设计并实现它。

此页面是否有帮助?
0 / 5 - 0 等级