Извлечено из № 1297.
wrap_attributes
:
auto
- включает перенос атрибутов.force
- первый атрибут остается, остальные завернуты в "wrap_attributes_indent_size"force-aligned
- первый атрибут остается, остальные завернуты и выровнены с первымforce-expand-multiline
- Если имеется более 1 атрибута, ВСЕ атрибуты, несмотря ни на что, переносятся с отступом "wrap_attributes_indent_size". И: закрывающий '>' открывающего тега также находится на новой строке. Этот режим в настоящее время не работает, создает файлы с неправильным отступом :(Также предпринимаются многочисленные попытки предоставить некоторые дополнительные режимы, которые имеют дело с переносом длинных html-элементов с несколькими атрибутами: #1285 и #1262.
Я думаю, что здесь есть несколько (ортогональных) проблем, и объединение их всех в одно значение приведет к еще большей путанице и взрыву странных имен опций, если мы хотим обрабатывать все случаи.
Итак, давайте разделим обтекание, выравнивание и количество атрибутов в строке и т.д.
wrap_attributes_mode
:
none
— мы просто не переносим атрибуты, и точка. (нужный?)auto
- Нормальная упаковка атрибутов, это должно быть по умолчанию, наверное, как наиболее логичный случай. Когда линия слишком большая, мы заворачиваем. Если все атрибуты помещаются в одну строку, они остаются на одной строке, без переноса. (По умолчанию.)force
— Мы принудительно переносим, если присутствует более 1 атрибута, в противном случае автоматически.Когда оболочка работает, в игру вступают следующие свойства. Если обертывания не происходит, они не играют никакой роли.
wrapped_attributes_per_line
:
multiple
— Мягкая упаковка, по умолчанию . Поместите столько атрибутов в строку, сколько разрешено.single
— первый атрибут остается в первой строке, остальные — в отдельных строках.single-all
- Все атрибуты, включая первый, вынесены на отдельные строки. Таким образом, каждый атрибут находится на отдельной строке, а в строке элемента/тега атрибутов не осталось.wrapped_attributes_indent
:
wrap_attributes_indent_size
, по умолчанию .wrapped_attributes_per_line
), то мы используем wrap_attributes_indent_size
для вычисления отступа.wrapped_attributes_end
:
auto
— по умолчаниюmultiline
- закрывающий >
на отдельной строке.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
: принудительный перенос, если имеется более 1 атрибута, с одним атрибутом в строке и с многострочным окончанием, с размещением закрывающего >
на новой строке.wrap_attributes_mode = force
wrapped_attributes_per_line = single-all
wrapped_attributes_indent = auto
wrapped_attributes_end = multiline
@vvs
Потрясающе спасибо!
Похоже, что есть совпадение между force
и multiple
, но некоторый конфликт, вероятно, неизбежен из-за сложности настроек.
Как я уже сказал, мне нравятся имена значений, которые вы выбрали в целом. Я думаю, что я бы изменил wrapped_attributes_end
на expand-multiline
, потому что он расширяется только тогда, когда элемент является многострочным.
Похоже, вы были бы против использования списка значений, разделенных запятыми, как это делает brace-style
( [collapse|expand|end-expand|none][,preserve-inline]
). Я спрашиваю только потому, что мне не нравится иметь больше полей опций, когда одно может работать.
Привет @bitwiseman. Да, между force
и multiple
есть некоторое совпадение. По сути, «принудительное» использование нескольких атрибутов равно auto
:)
Я также в порядке с expand-multiline
.
Похоже, вы были бы против использования значения, разделенного запятыми
Лично я могу жить с чем угодно, даже если настройки представляют собой значения в кодировке BASE64! Главное, что я могу настроить поведение форматирования в соответствии с моими/командными потребностями (которые в настоящее время соответствуют #1262).
Но с точки зрения предпочтений лучше иметь отдельные «группы опций», чтобы я мог независимо модифицировать их и думать о разных (ортогональных) проблемах независимо. И, самое главное, намного проще документировать настройки по отдельности, чем огромный список всех возможных комбинаций.
@vvs
Хороший момент о том, чтобы иметь отдельные настройки для разных поведений.
Мне нравится ваше предложение, и я думаю, что еще более простой реализацией, которая могла бы решить множество проблем для некоторых людей, была бы возможность настроить точку, в которой «сила» использует auto. Например, можно сказать, что если у него меньше X атрибутов, использовать auto, в противном случае — принудительный перенос.
Я хотел бы использовать «выровненное-множественное» при использовании <= 3 атрибутов, в противном случае «принудительное выравнивание». Возможно ли это на данный момент?
@otonielguajardo
В настоящее время его не существует.
То, что вы просите, похоже на # 1262, что в основном означает «Разрешить атрибутам одну строку, если они не собираются переноситься, и в этом случае выровняйте их».
Похоже, что @Adondriel запросил что-то вроде того, что вы хотите (на основе количества атрибутов) и в этой проблеме.
какие-то авансы?
Есть ли планы пересмотреть это?
@notiv-nt @Drumstix42
Имея ограниченное время, я исправлял другие ошибки.
Это все еще стоит сделать, но требует, чтобы кто-то нашел время, чтобы закончить дизайн и реализовать его.
Самый полезный комментарий
Мне нравится ваше предложение, и я думаю, что еще более простой реализацией, которая могла бы решить множество проблем для некоторых людей, была бы возможность настроить точку, в которой «сила» использует auto. Например, можно сказать, что если у него меньше X атрибутов, использовать auto, в противном случае — принудительный перенос.