Eclipse - как расширить HTML-редактор для добавления пользовательских тегов?

Я пишу приложение и внутри HTML-кода. У меня есть пользовательские теги (разумеется, эти теги разбираются на стороне сервера, а конечный пользователь получает их как допустимый HTML-код). Пример использования пользовательских тегов:

<html>
<body>
...
    <Gallery type="grid" title="My Gallery" />
...
</body>
</html>

1.) Как я могу заставить eclipse распознать мои пользовательские теги внутри HTML-кода и добавить к ним подсветку синтаксиса?
2.) Как добавить автоматические предложения в свои собственные теги? Например, если я набираю "< Галерея", нажмите "Ctrl + Space" - в списке доступных атрибутов он показывает мне "тип" и "название", и если я нахожу "< Галерея type =", нажмите "Ctrl + Space" Я бы увидел список доступных значений только для тега "Галерея" и его атрибута "Тип".

Спасибо заранее!

Ответ 1

К сожалению, нет простого способа: для этого вам нужно развернуть свой собственный синтаксический анализатор, а затем добавить к нему как свои дополнительные элементы, так и базовую грамматику (HTML).

Если у вас есть ваш синтаксический анализатор, вы можете использовать его для выделения синтаксиса (строго говоря, для этого простого лексинга достаточно); и хороший синтаксический анализатор может поддерживать поддержку контента (авто-предложения в вашей терминологии).

Предостережения:

  • Создание парсера для HTML - непростая задача. Возможно, возможно, нацеливаясь на более часто используемое подмножество.
  • Если существует синтаксический анализатор, части редактора по-прежнему трудно получить.

Некоторая помощь с другой стороны: вы можете использовать некоторые генераторы текстовых редакторов, чтобы облегчить вашу работу:

  • Eclipse IMP http://www.eclipse.org/imp/ может теоретически обрабатывать любой тип синтаксического анализатора, но в настоящее время он наиболее оптимизирован для LPG. Документация скудна, но разработчики полезны на форумах.
  • Xtext http://www.eclipse.org/Xtext/ получил довольно шумиху для создания текстовых редакторов для DSL. Сгенерированные редакторы довольно хороши из коробки, но это не лучшее решение для больших файлов. Имеет действительно полезное сообщество разработчиков.
  • EMFText http://www.emftext.org/index.php/EMFText - это менее известный объект - я не знаю его подробно, но, я думаю, он похож на Xtext.

Ответ 2

Не то, что вы хотите, но, может быть, это вам поможет:

  • Вы можете попробовать Aptana Plug-in для Eclipse. Это позволяет написать собственное регулярное выражение для проверки HTML, поэтому пользовательский тег будет проигнорирован валидатором. Например:.

    .gallery.

  • Eclipse позволяет добавлять простые автоматические предложения с помощью Шаблонов. На Eclipse 3.7.1 (Indigo) + PHP Dev Tools (PDT) 3.0.0: Окно > Настройки > Веб > HTML файлы > Редактоp > Шаблоны

Ответ 3

Я нахожу, что шаблоны являются альтернативой ok, но давайте посмотрим, можем ли мы поощрять более надежное решение; пожалуйста, уделите время и проголосуйте за это: https://bugs.eclipse.org/bugs/show_bug.cgi?id=422584

Ответ 4

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

Итак, при использовании Eclipse (выпуск Mars.1 (4.5.1) - и, возможно, раньше - я не проверял).

Перейдите к Window - Prefrences
Затем в открывшемся диалоговом окне перейдите к Web - HTML Files - Editor - Validation.
Справа:

  • под Ignore specified element names in validation и введите список пользовательских элементов, которые вы используете. (например, Gallery,tab,tabset,my-element-directives-*)
  • вы также можете перейти в Ignore specified attribute names in validation сделать то же самое для своих пользовательских атрибутов (например, ng-*,my-attr-directives-*)

Следует отметить две вещи:

  • После того, как eclipse выполнит полную проверку, вы также должны закрыть файл и снова открыть его, чтобы удалить предупреждения из исходного кода.
  • Использование этого метода будет игнорировать эти атрибуты под любым элементом. Я не думаю, что есть простой способ сказать ему игнорировать some-attribute только если его дочерний элемент some-element.

Ответ 5

Вам нужно добавить новый HTML-шаблон. Чтобы добавить новый шаблон, выполните следующие действия:

1) В меню "Окно" выберите "Настройки".

2) На странице настроек выберите Веб и XML > HTML файлы > Шаблоны HTML.

3) Нажмите "Создать".

4) Введите новое имя шаблона и краткое описание шаблона.

5) В раскрывающемся списке "Контекст" укажите контекст, в котором доступен шаблон.

6) В поле "Шаблон" введите соответствующие теги, атрибуты или значения атрибутов (содержимое шаблона), которые нужно вставить с помощью поддержки содержимого.

7) Если вы хотите вставить переменную, нажмите кнопку "Переменная" и выберите переменную, которую нужно вставить. Например, переменная word_selection указывает слово, которое выбрано в начале вставки шаблона, а переменная курсора определяет, где будет курсор после того, как шаблон будет вставлен в документ HTML.

8) Нажмите "ОК", чтобы сохранить новый шаблон.

Вы можете редактировать, удалять, импортировать или экспортировать шаблон, используя ту же страницу настроек.

Ссылка: http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.wst.sse.doc.user%2Ftopics%2Ftsrcedt024.html