Шаблон стиля кода 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 для ограничения линии здесь не применяются.

Мои варианты кажутся следующими:

  1. Измените шаблон стиля, чтобы разрешить начальное или конечное пустое пространство (я бы предпочел избегать этого, чтобы шаблон оставался идентичным AOSP)
  2. Игнорируйте шаблон для этих строк, расширяя их за пределы 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

(Спасибо за регистрацию этого вопроса!)

Другие вопросы по тегам