Extraído de #1297.
wrap_attributes
:
auto
- habilita el ajuste de atributos.force
: el primer atributo permanece, los demás se envuelven con "wrap_attributes_indent_size"force-aligned
- el primer atributo permanece, otros envueltos y alineados con el primeroforce-expand-multiline
: si hay más de 1 atributo, TODOS los atributos se envuelven sin importar qué y se sangran con "wrap_attributes_indent_size". Y: el cierre '>' de la etiqueta de apertura también está en la nueva línea. Este modo está actualmente roto, produce archivos mal sangrados :(También hay múltiples esfuerzos para proporcionar algunos modos adicionales que se ocupan de la envoltura de elementos html largos con múltiples atributos: #1285 y #1262.
Creo que hay múltiples preocupaciones (ortogonales) aquí y ponerlas todas en un solo valor crearía más confusión y una explosión de nombres de opciones extraños si vamos a manejar todos los casos.
Entonces, separemos el ajuste, la alineación y la cantidad de atributos por línea, etc.
wrap_attributes_mode
:
none
: simplemente no envolvemos los atributos, punto. (¿necesario?)auto
- Ajuste de atributo normal, este debería ser el predeterminado, probablemente, como el caso más lógico. Cuando la línea es demasiado grande, envolvemos. Si todos los atributos pueden caber en una sola línea, permanecen en la misma línea, sin envolver. (Por defecto.)force
- Envolvemos a la fuerza si hay más de 1 atributo presente, de lo contrario, automático.Cuando el envoltorio está en acción, las siguientes propiedades están en juego. Si no se envuelve, no juegan ningún papel.
wrapped_attributes_per_line
:
multiple
- Envoltura blanda, por defecto . Ajuste tantos atributos por línea como sea posible.single
- El primer atributo permanece en la primera línea, los demás están en líneas separadas.single-all
- Todos los atributos, incluido el primero, colocados en líneas separadas. Por lo tanto, cada atributo está en una línea separada y al elemento/etiqueta no le quedan atributos.wrapped_attributes_indent
:
wrap_attributes_indent_size
, por defecto .wrapped_attributes_per_line
), entonces usamos wrap_attributes_indent_size
para calcular la sangría.wrapped_attributes_end
:
auto
- predeterminadomultiline
- el cierre >
está en la línea separada.wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = auto
wrapped_attributes_end = auto
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
wrap_attributes_mode = auto
wrapped_attributes_per_line = single
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
force-expand-multiline
: fuerce el ajuste si hay más de 1 atributo, con un atributo por línea y con un final de varias líneas, colocando el cierre >
en la nueva línea.wrap_attributes_mode = force
wrapped_attributes_per_line = single-all
wrapped_attributes_indent = auto
wrapped_attributes_end = multiline
@vvs
¡Genial gracias!
Parece que hay una superposición entre force
y multiple
, pero es probable que algún conflicto sea inevitable debido a la complejidad de la configuración.
Como dije, me gustan los nombres de valor que ha elegido en general. Creo que cambiaría wrapped_attributes_end
a expand-multiline
, porque solo se expande cuando el elemento es un elemento multilínea.
Parece que se opondría a usar una lista de valores separados por comas como lo hace brace-style
( [collapse|expand|end-expand|none][,preserve-inline]
). Solo pregunto porque no me gusta tener más campos de opciones cuando uno solo puede funcionar.
Hola @bitwiseman. Sí, hay un poco de superposición entre force
y multiple
. Básicamente, "forzar" los múltiples atributos equivale a auto
:)
También estoy bien con expand-multiline
.
Parece que se opondría a usar un valor separado por comas
Personalmente, puedo vivir con cualquier cosa, ¡incluso si las configuraciones son valores codificados en BASE64! Lo principal es que puedo ajustar el comportamiento de formato a las necesidades de mi equipo (que actualmente están en línea con el n.º 1262).
Pero como una cuestión de preferencia, tener "grupos de opciones" separados es mejor para poder modificarlos de forma independiente y pensar en diferentes preocupaciones (ortogonales) de forma independiente. Y, sobre todo, hace mucho más fácil documentar las configuraciones por separado en comparación con una enorme lista de todas las combinaciones posibles.
@vvs
Buen punto sobre tener configuraciones separadas para comportamientos distintos.
Me gusta tu propuesta, y creo que una implementación aún más simple que podría resolver muchos problemas para algunas personas, sería la opción de configurar el punto en el que "force" usa auto. Por ejemplo, poder decir, si tiene menos de X atributos, use automático, de lo contrario, fuerce el ajuste.
Me gustaría usar "múltiple alineado" si uso <= 3 atributos, de lo contrario, "alineado forzado". ¿Es esto posible en este momento?
@otonielguajardo
No existe actualmente.
Lo que está pidiendo es similar al n. ° 1262, que es básicamente "Permitir atributos en una línea a menos que se vayan a ajustar, en cuyo caso alinéelos".
Parece que @Adondriel también solicitó algo como lo que desea (según el recuento de atributos) en ese problema.
algun avance?
¿Algún plan para volver a visitar esto?
@notiv-nt @Drumstix42
Con mi tiempo disponible limitado, he estado solucionando otros errores.
Todavía vale la pena hacerlo, pero requiere que alguien se tome el tiempo para terminar el diseño e implementarlo.
Comentario más útil
Me gusta tu propuesta, y creo que una implementación aún más simple que podría resolver muchos problemas para algunas personas, sería la opción de configurar el punto en el que "force" usa auto. Por ejemplo, poder decir, si tiene menos de X atributos, use automático, de lo contrario, fuerce el ajuste.