Шаблон стиля кода IntelliJ для Android с Android Studio удаляет пробелы, предшествующие множественному числу в строках
Я применил шаблон стиля кода IntelliJ для Android к проекту OneBusAway Android с открытым исходным кодом, используя Android Studio, чтобы стандартизировать стиль и форматирование кода.
Проблема в том, что применение шаблона подталкивает <xliff:g>
теги в strings.xml
на новую строку и удаляет завершающий пробел из предыдущей строки. Это эффективно предотвращает ввод любого интервала до значения множественного числа.
ДО применения шаблона стиля:
<plurals name="stop_info_no_additional_data_hours_minutes">
<item quantity="one">No additional arrivals in the next 1 hour and %1$d minutes.</item>
<item quantity="other">No additional arrivals in the next <xliff:g id="count">%2$d</xliff:g> hours and %1$d minutes.</item>
</plurals>
.. это создает правильную строку:
No additional arrivals in the next 2 hours and 35 minutes.
ПОСЛЕ применения шаблона, он обрезает пространство, предшествующее значению множественного числа:
<plurals name="stop_info_no_additional_data_hours_minutes">
<item quantity="one">No additional arrivals in the next 1 hour and %1$d minutes.</item>
<item quantity="other">No additional arrivals in the next
<xliff:g id="count">%2$d</xliff:g>
hours and %1$d minutes.
</item>
</plurals>
... что приводит к строке:
No additional arrivals in the next2 hours and 35 minutes.
Я посмотрел на Android Open Source Project, чтобы увидеть, как они справляются с этим, и кажется, что тег XML остается в одной строке: https://github.com/android/platform_packages_apps_mms/blob/master/res/values/strings.xml#L690 https://github.com/android/platform_packages_apps_contacts/blob/master/res/values/strings.xml#L568
Два исключения AOSP для ограничения линии здесь не применяются.
Мои варианты кажутся следующими:
- Измените шаблон стиля, чтобы разрешить начальное или конечное пустое пространство (я бы предпочел избегать этого, чтобы шаблон оставался идентичным AOSP)
- Игнорируйте шаблон для этих строк, расширяя их за пределы 100 символов или добавляя начальный пробел внутри
<xliff:g>
тег (я бы предпочел, чтобы весь шаблон находился под шаблоном, поэтому кто-то не переформатирует и не вызовет эту проблему снова в будущем).
Я что-то пропустил? Есть ли другой способ ввести пробел здесь (например, используя специальные / закодированные символы)?
Я также отслеживаю это как проблему для OneBusAway Android на Github, где есть скриншоты и дополнительные ссылки, если кому-то интересно.
ОБНОВЛЕНИЕ: я попытался отформатировать тот же самый XML в Eclipse, используя Шаблон Android для Eclipse, и это не вызывает этой проблемы. Другими словами, нет никаких изменений в XML после применения шаблона. Похоже, это либо ошибка в Android Studio, либо проблема с шаблоном IntelliJ. Я предполагаю, что именно поэтому линии AOSP не повреждены.
РЕДАКТИРОВАТЬ: эта проблема была исправлена в Android Studio 0.4.4, но вновь появилась в 0.8.9. См. AOSP Issue 65394 для более подробной информации.
1 ответ
Это ошибка IntelliJ/Studio, которая будет исправлена в Android Studio 0.4.4: https://code.google.com/p/android/issues/detail?id=65394
(Спасибо за регистрацию этого вопроса!)