Кодовый шаблон XHTML / JSF в Emacs
Я использую Emacs для написания страниц XHTML в проекте JSF, и объем стандартного кода, который должен идти в заголовке каждого файла XHTML, является трудным для ввода, уродливым и подверженным ошибкам. Например:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
Каков был бы "способ emacs" справиться с этим? Я читал о режиме nXhtml, но не пробовал его и не знаю, выполняет ли он автозаполнение, как описано выше, или просто предлагает более элементарный синтаксис проверки / завершения XML. Во всяком случае, я хотел бы сначала оценить более легкие альтернативы.
1 ответ
Поиск "шаблон Emacs". https://www.google.com/search?q=template+engine+emacs
Вот хороший обзор: http://www.emacswiki.org/emacs/CategoryTemplates.
Я использую defaultcontent.el, который является одним из вариантов, перечисленных на этой странице. Defaultcontent.el заполняет новые файлы шаблоном в зависимости от совпадения шаблона в имени файла. Все.html файлы могут получить определенный шаблон. Вы можете сделать более сложное сопоставление шаблонов с файлами; defaultcontent.el использует alist, и вы можете указать любое регулярное выражение для имени файла, которое вам нравится.
Шаблон, который помещается в новый файл, может динамически расширять различные вещи, включая имя файла, имя базового файла, дату / время, переменные среды. В более сложных сценариях шаблон может запускать предоставленный вами код elisp.
Это хороший компаньон для yasnippet, который я использую для необязательных фрагментов кода в файле. Например, мой базовый шаблон.htm (вставленный defaultcontent.el) не содержит ссылку на скрипт для jquery. Но у меня есть yasnippet для jquery, поэтому, когда я печатаю (jquery[TAB]), я получаю полное расширение
<script type='text/javascript'
src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js'>
</script>
defaultcontent.el использует find-file-hooks и вставляет содержимое шаблона только при первоначальном создании файла.
Я использую его практически для всех форматов файлов.