Русское сообщество Sublime Text
Основной раздел => Дополнения => Тема начата: Eugene от Мая 21, 2013, 14:21:53
-
Приветствую!
Постепенно пытаюсь пересесть с npp на st2. Наверное многим знаком плагин xmltools в npp. Так вот хотелось бы чего-то подобного в st2, а именно, чтобы плагин реализовывал следующий функционал: автозавершение тегов, pretty print (xml), linearize (xml), и самое главное автовалидация xml и выдача ошибки при сохранении с указанием номера строки.
Мне удалось добиться автовалидации, но с подсветкой строки, это очень неудобно, поскольку крутить 1000-строчный xml для того, чтобы найти оранжевый кружок на боковой панели не очень удобно, плюс при сохранении st2 в этом случае не уведомляет об ошибке.
Я думаю, что решения точно есть, также был бы благодарен за советы по работе с xml в st2. Спасибо!
-
Попробуй Tag (https://github.com/SublimeText/Tag). У него есть авторасстановка отступов, подсветка незакрытых тегов, удаление ненужных атрибутов.
Как ты настроил валидацию? Если при помощи SublimeLinter (https://github.com/SublimeLinter/SublimeLinter), то у него есть хоткеи, для перехода к ошибке.
next: Control+Alt+E
prev: Control+Alt+Shift+E
-
Спасибо за быстрый ответ!
Как раз плагин SublimeLinter осуществляет подсветку строки с ошибкой, но делает он это в скрытом для пользователя режиме. Невозможно понять в любой момент времени валиден ли xml. В npp при сохранении файла идет автоматическая валидация и уведомление о некорректности xml. То есть в sp2 после сохранения я должен нажать для текущего документа Control+Alt+E, чтобы определить есть ошибка или нет?
Tag обязательно попробую.
А что насчет автозавершения, pretty print (xml), linearize (xml)? Никто не использует данный функционал?)
-
Попробуй опцию для SublimeLinter – Preferences > Package Settings > SublimeLinter > Settings - User:
// If true, when the file is saved any errors will appear in a popup list
"sublimelinter_popup_errors_on_save": true,
Если я правильно понял, что нужно:
Автозавершение тега – Edit > Tag > Close Tag [Alt+.].
Pretty print – Edit > Tag > Auto-format Tags on Document (нужен плагин Tag).
Linearize – Edit > Line > Join lines [Ctrl + J].
Советую попробовать Emmet (http://emmet.io/). В целом он для HTML/CSS, но возможно, подойдет и для XML.
-
Попробуй опцию для SublimeLinter – Preferences > Package Settings > SublimeLinter > Settings - User:
// If true, when the file is saved any errors will appear in a popup list
"sublimelinter_popup_errors_on_save": true,
Если я правильно понял, что нужно:
Автозавершение тега – Edit > Tag > Close Tag [Alt+.].
Pretty print – Edit > Tag > Auto-format Tags on Document (нужен плагин Tag).
Linearize – Edit > Line > Join lines [Ctrl + J].
Советую попробовать Emmet (http://emmet.io/). В целом он для HTML/CSS, но возможно, подойдет и для XML.
Огромное спасибо за участие! Все советы помогли.
При сохранении невалидного xml теперь вываливается лог ошибок.
Автозавершение тега - гораздо лучше, но все равно немного неудобно, так как автозакрытие отсутcвует, но терпимо.
Pretty print отлично работает, правда по дефолту на него отсутствует комбинация клавиш (Auto-format Tags on Document). Как это можно сделать?
Linearize немного кривоват, так как отсутствует функция Auto-linearize Tags on Document, приходится Control+A и Control+J, но работает.
Попробую Emmet. Возможно он исправит часть задач.
-
Pretty print отлично работает, правда по дефолту на него отсутствует комбинация клавиш (Auto-format Tags on Document). Как это можно сделать?
Добавить бинд на удобное сочетание клавиш.
Preferences > Key Bindings - User:
[
{ "keys": ["ctrl+alt+f"], "command": "tag_indent_document" }
]
Автозавершение тега - гораздо лучше, но все равно немного неудобно, так как автозакрытие отсутcвует, но терпимо
А для чего тебе нужно автозакрытие тега? Ты набираешь код начиная с "<"?
Попробуй с автокомплитом. То есть набираешь имя узла, потом Tab и редактор тебе вставит сразу открывающий и закрывающий теги.
node{Tab} и получишь
<node></node>
А если пользоваться Emmet, то можно сразу строить конструкции вроде:
nodes>node+node{Tab} и на выходе
<nodes>
<node></node>
<node></node>
</nodes>
Можно использовать атрибуты nodes[att="1"]>node+node и другие вкусности.
-
Pretty print отлично работает, правда по дефолту на него отсутствует комбинация клавиш (Auto-format Tags on Document). Как это можно сделать?
Добавить бинд на удобное сочетание клавиш.
Preferences > Key Bindings - User:
[
{ "keys": ["ctrl+alt+f"], "command": "tag_indent_document" }
]
Помогло! А как можно узнать название команды? Это на будущее.
Автозавершение тега - гораздо лучше, но все равно немного неудобно, так как автозакрытие отсутcвует, но терпимо
А для чего тебе нужно автозакрытие тега? Ты набираешь код начиная с "<"?
Попробуй с автокомплитом. То есть набираешь имя узла, потом Tab и редактор тебе вставит сразу открывающий и закрывающий теги.
node{Tab} и получишь
<node></node>
Дело просто в привычке. Например в npp я ввожу <schema>+Enter, автоматически становится следующим образом:
<schema>
</schema>
и курсор становится с отступом между тэгами, то есть не нужно жать ни Tab, ни Alt+., чтобы автоматически закрылся тэг и произошел переход на следующую строку с отступом. Удобно) Но это не критично, можно и так привыкнуть.
Во всяком случае сейчас гораздо лучше, чем утром.
А если пользоваться Emmet, то можно сразу строить конструкции вроде:
nodes>node+node{Tab} и на выходе
<nodes>
<node></node>
<node></node>
</nodes>
Можно использовать атрибуты nodes[att="1"]>node+node и другие вкусности.
Уже попробовал. Отличный плагин для верстки! Но нужно подпривыкнуть к собственному синтаксису.
-
Помогло! А как можно узнать название команды? Это на будущее.
Из документации или из кода.
Preferences > Browse Packages...
Откроется папка с плагинами. Все команды, доступные из меню, находятся в файле Main.sublime-menu, сочетания клавиш в файлах *.sublime-keymap.
-
Отлично. Тему можно закрывать.