Определение списка символов для XML - PullRequest
0 голосов
/ 26 июня 2018

Используя Sublime Text 3, я работал над получением списка символов для файлов XML, который выглядит хорошо.

До сих пор я достиг чего-то работоспособного.Для этого примера XML:

<?xml version="1.0" encoding="UTF-8"?>
<definition assembly="com.bla" version="1.0">
    <string name="parent"/>
        <child name="child" />
    </string>
</definition>

Я могу получить:

Symbols

Использование:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Symbol List:</string>
    <key>scope</key>
    <string>text.xml meta.tag.xml</string>
    <key>settings</key>
    <dict>
        <key>showInIndexedSymbolList</key>
        <integer>1</integer>
        <key>showInSymbolList</key>
        <integer>1</integer>
    </dict>
</dict>
</plist>

Однако я хотел бы сделать отступ для дочернего элемента под родительским, а также удалить закрывающие теги.Это возможно?

1 Ответ

0 голосов
/ 26 июня 2018

Вам потребуется определение синтаксиса XML, чтобы по-разному закрывать теги , чтобы иметь возможность исключать их из списка символов, так как логика, которая определяет, что помещается в список символов, основана исключительно на областяхназначается определением синтаксиса.т. е. предполагая, что вы изменили определение синтаксиса , чтобы закрывающие теги области видились как meta.tag.xml.closing, ваш селектор области действия мог бы выглядеть как <string>text.xml meta.tag.xml - meta.tag.xml.closing</string>, и вы получите только открывающие (и самозакрывающиеся) теги.


Что касается отступов, это обычно делается с помощью преобразований регулярных выражений , которые на самом деле не предназначены для рекурсивного вложения, так как обычно для доступа к заменам регулярных выражений недостаточно контекста.

Один из обходных путей заключается в том, чтобы снова изменить определение синтаксиса для применения метаобласти к содержимому каждого тега и иметь несколько файлов tmPreferences, каждый из которых работает с более конкретной вложенностью, чем предыдущий, и простожестко закодируйте отступ, но это будет ограничено тем, сколько файлов вы создаете, сколько вложений обрабатывается правильно, но это будет работать независимо от макета XML-файла.

Если ваши XML-файлы хорошиуже с отступом (- и есть плагины для этого, если нет -), то вы можете достичь того, что вы хотитеизменив определение синтаксиса, чтобы ограничить пробелы перед открытыми тегами.Определение его как meta.tag может мешать некоторым встроенным командам ST, которые полагаются на эту область, поэтому, возможно, было бы лучше добавить отдельную область, которая покрывает пробел и сам тег, оставив исходные области действия meta.tag без изменений.Используя этот подход, символ уже будет содержать такой же отступ из файла, и вы можете потенциально преобразовать 4 пробела в 1, например, чтобы индекс символа не выглядел так же, как отступ основного документа.

...