Автор Тема: xmltools из npp  (Прочитано 12994 раз)

Eugene

  • Newbie
  • *
  • Сообщений: 5
xmltools из npp
« : Мая 21, 2013, 14:21:53 »
Приветствую!

Постепенно пытаюсь пересесть с npp на st2. Наверное многим знаком плагин xmltools в npp. Так вот хотелось бы чего-то подобного в st2, а именно, чтобы плагин реализовывал следующий функционал: автозавершение тегов, pretty print (xml), linearize (xml), и самое главное автовалидация xml и выдача ошибки при сохранении с указанием номера строки.
Мне удалось добиться автовалидации, но с подсветкой строки, это очень неудобно, поскольку крутить 1000-строчный xml для того, чтобы найти оранжевый кружок на боковой панели не очень удобно, плюс при сохранении st2 в этом случае не уведомляет об ошибке.
Я думаю, что решения точно есть, также был бы благодарен за советы по работе с xml в st2. Спасибо!

Loac

  • Administrator
  • Hero Member
  • *
  • Сообщений: 612
Re: xmltools из npp
« Ответ #1 : Мая 21, 2013, 14:46:47 »
Попробуй Tag. У него есть авторасстановка отступов, подсветка незакрытых тегов, удаление ненужных атрибутов.

Как ты настроил валидацию? Если при помощи SublimeLinter, то у него есть хоткеи, для перехода к ошибке.

next: Control+Alt+E
prev: Control+Alt+Shift+E

Eugene

  • Newbie
  • *
  • Сообщений: 5
Re: xmltools из npp
« Ответ #2 : Мая 21, 2013, 15:01:54 »
Спасибо за быстрый ответ!
Как раз плагин SublimeLinter осуществляет подсветку строки с ошибкой, но делает он это в скрытом для пользователя режиме. Невозможно понять в любой момент времени валиден ли xml. В npp при сохранении файла идет автоматическая валидация и уведомление о некорректности xml. То есть в sp2 после сохранения я должен нажать для текущего документа Control+Alt+E, чтобы определить есть ошибка или нет?
Tag обязательно попробую.
А что насчет автозавершения, pretty print (xml), linearize (xml)? Никто не использует данный функционал?)

Loac

  • Administrator
  • Hero Member
  • *
  • Сообщений: 612
Re: xmltools из npp
« Ответ #3 : Мая 21, 2013, 16:11:04 »
Попробуй опцию для 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. В целом он для HTML/CSS, но возможно, подойдет и для XML.

Eugene

  • Newbie
  • *
  • Сообщений: 5
Re: xmltools из npp
« Ответ #4 : Мая 21, 2013, 17:41:14 »
Попробуй опцию для 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. В целом он для HTML/CSS, но возможно, подойдет и для XML.

Огромное спасибо за участие! Все советы помогли.
При сохранении невалидного xml теперь вываливается лог ошибок.
Автозавершение тега - гораздо лучше, но все равно немного неудобно, так как автозакрытие отсутcвует, но терпимо.
Pretty print отлично работает, правда по дефолту на него отсутствует комбинация клавиш (Auto-format Tags on Document). Как это можно сделать?
Linearize немного кривоват, так как отсутствует функция Auto-linearize Tags on Document, приходится Control+A  и Control+J, но работает.

Попробую Emmet. Возможно он исправит часть задач.

Loac

  • Administrator
  • Hero Member
  • *
  • Сообщений: 612
Re: xmltools из npp
« Ответ #5 : Мая 21, 2013, 19:58:09 »
Цитировать
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 и другие вкусности.
« Последнее редактирование: Мая 21, 2013, 20:16:34 от Loac »

Eugene

  • Newbie
  • *
  • Сообщений: 5
Re: xmltools из npp
« Ответ #6 : Мая 21, 2013, 20:45:57 »
Цитировать
Цитировать
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 и другие вкусности.

Уже попробовал. Отличный плагин для верстки! Но нужно подпривыкнуть к собственному синтаксису.

Loac

  • Administrator
  • Hero Member
  • *
  • Сообщений: 612
Re: xmltools из npp
« Ответ #7 : Мая 21, 2013, 21:00:44 »
Цитировать
Помогло! А как можно узнать название команды? Это на будущее.

Из документации или из кода.

Preferences > Browse Packages...

Откроется папка с плагинами. Все команды, доступные из меню, находятся в файле Main.sublime-menu, сочетания клавиш в файлах *.sublime-keymap.
« Последнее редактирование: Мая 21, 2013, 21:04:59 от Loac »

Eugene

  • Newbie
  • *
  • Сообщений: 5
Re: xmltools из npp
« Ответ #8 : Мая 21, 2013, 21:50:17 »
Отлично. Тему можно закрывать.