Как некоторые из вас, кто использует GNU / Emacs для разработки под Android, вы наверняка знаете, что в новейших инструментах Android есть новый XML-форматер . Я использую превосходный nxml-режим для редактирования xml, так как… я редактирую xml файлы;) и я очень доволен этим, НО… поскольку я могу настроить переменную Inxribute Indent Nxml, документация гласит:
Indentation for the attributes of an element relative to the start-tag. Hide
This only applies when the first attribute of a tag starts a line.
In other cases, the first attribute on one line is indented the same
as the first attribute on the previous line.
Важно то, что существует запасной вариант, для которого автономный атрибут выравнивается по первому атрибуту, когда он находится на той же строке, что и элемент.
Можно ли изменить это поведение, чтобы получить совместимый с Android Tools отступ? Я просто ничего не нашел в документации и погуглил не удалось ...
Обновление:
Комментарий помогает мне понять, что я не ясен. Таким образом, вот пример того, что nxml-режим делает по умолчанию:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.foo.bar"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity
android:name="Foo"
android:label="@string/foo" />
<activity android:name="Bar"
android:label="@string/bar" />
</application>
</manifest>
Что бы я хотел получить:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.foo.bar"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity
android:name="Foo"
android:label="@string/foo" />
<activity android:name="Bar"
android:label="@string/bar" />
</application>
</manifest>
Первый случай (поведение отступа в режиме nxml по умолчанию):
- атрибут
package
элемента manifest
выровнен с xmlns:android decl
- атрибут
android:label
элемента Bar activity
выровнен с элементом android:name
.
Второй случай (ожидаемый результат):
- атрибут
package
элемента manifest
выровнен с родительским элементом manifest
плюс настраиваемое количество пробелов
- атрибут
android:label
элемента Bar activity
выравнивается по родительскому элементу плюс настраиваемое количество пробелов
Я просмотрел исходный код в режиме nxml и поведение отступа начинается с nxml-indent-line
, но мне не удалось проследить за многими подпозвонками, чтобы увидеть, что defun
следует настроить ... из-за отсутствия у меня знаний о lisp.
Вы могли видеть, что второй атрибут manifest
не выровнен с первым
Приветствия
Renaud (с трудом справляется с огромной головной болью, чтобы соответствовать правилам кодирования и форматирования Android)